Strongly typed reader for the 51Did (51Degrees Identifier) value returned by the 51Degrees Cloud service. Parses the OWID envelope and exposes the Flags, License Id and value (Hash) plus the identifier type. Compare values, never envelopes.
Project description
fiftyone_pipeline_did
Strongly typed Python reader for the 51Did (51Degrees Identifier) returned by
the 51Degrees Cloud service. Mirrors the .NET FiftyOne.Did package.
Terminology
- The 51Did (51Degrees Identifier) is the identifier as a whole.
- The envelope is the data model that carries it: a signed OWID holding the version, domain, date, payload and signature. It changes byte-for-byte every time the cloud issues one.
- The value is the stable, comparable part of the payload after the Flags and License Id: a 32-byte SHA-256 for Probabilistic and HashedEmail identifiers, or 16 GUID bytes for Random.
Comparing two 51Dids means comparing their values, never their envelopes.
Payload layout
| Offset | Length | Field | Type |
|---|---|---|---|
| 0 | 1 | Flags | uint8: bits 0-2 usage, bits 6-7 identifier type |
| 1 | 4 | LicenseId | uint32 (little-endian) |
| 5 | 16/32 | Value | SHA-256 (Probabilistic, HashedEmail) or GUID (Random) |
| Bits 7-6 | IdType |
Value length | Minimum payload |
|---|---|---|---|
00 |
PROBABILISTIC |
32 | 37 |
01 |
RANDOM |
16 | 21 |
10 |
HASHED_EMAIL |
32 | 37 |
11 |
RESERVED |
remainder | 5 |
Identifiers issued before the type tag existed have bits 6-7 zeroed and decode
as PROBABILISTIC.
OWID dependency
FodId builds on the OWID envelope library
(SWAN-community/owid-python,
package owid), consumed via the 51Degrees/owid-python fork (git submodule;
switch to upstream once published). Owid is composed, not subclassed:
FodId holds an Owid and delegates OWID-level concerns to it.
Usage
from fiftyone_pipeline_did import FodId, IdType
fod_id = FodId.from_base64(base64_from_cloud_service)
flags = fod_id.flags
type_ = fod_id.type # IdType.PROBABILISTIC / RANDOM / HASHED_EMAIL
license_id = fod_id.license_id
value = fod_id.hash # SHA-256 or GUID bytes, see type
# Delegated OWID-level fields and operations.
domain = fod_id.domain
verified = fod_id.verify(public_key_pem)
base64 = fod_id.as_base64()
Comparing two 51Dids
a = FodId.from_base64(idprobglobal_a)
b = FodId.from_base64(idprobglobal_b)
# The envelope (date, signature, base64) differs across reissues.
# The value inside the payload is stable - this is what you compare:
same_value = a.hash == b.hash
Non-goals
- No signature verification on construction. Call
verify(public_key_pem)when needed. - No creation of new 51Dids. This is a parser; new 51Dids are issued by the 51Degrees cloud / on-premise hashing engines.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fiftyone_pipeline_did-4.5.6.tar.gz.
File metadata
- Download URL: fiftyone_pipeline_did-4.5.6.tar.gz
- Upload date:
- Size: 10.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
92fd677273aecc21945263be8d45cfd7f19eec319c97e501545c71f20558ed44
|
|
| MD5 |
d4276e0e5dd99927046d68b15598e058
|
|
| BLAKE2b-256 |
badf1f2f8dd37fb70b5316c3bbe242b4ac06aa476c2400d3d50e73613a7cd653
|
File details
Details for the file fiftyone_pipeline_did-4.5.6-py3-none-any.whl.
File metadata
- Download URL: fiftyone_pipeline_did-4.5.6-py3-none-any.whl
- Upload date:
- Size: 8.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c82be38fc33d348b6ff0ea4fb8c655a13b681b5e00e4843f37c5aba83cc777c
|
|
| MD5 |
6002a4796897e9bf5fb3e660189c6954
|
|
| BLAKE2b-256 |
7c5f79d4c09f59ee51483724e367d949eb84f4bcf4bb57fde39a3b965e304458
|