did:compositejwk
is a deterministic transformation of a compositeJwk
into a DID Document.
The compositeJwk
is a new Verification Material property introduced to handle Post-Quantum/Traditinal (PQ/T) hybrid keys.
This object contains the PQ and traditional public keys, both JWK encoded, and the algId string representing the name of algorithms used to generate the hybrid signature.
"compositeJwk": {
"algId": ".. composite key OID ..",
"pqPublicKey": {
".. PQ JWK encoded key .."
},
"traditionalPublicKey": {
".. Traditional JWK encoded key .."
}
}
"compositeJwk": {
"algId": "id-MLDSA44-Ed25519-SHA512",
"pqPublicKey": {
"kty": "ML-DSA",
"alg": "ML-DSA-44",
"kid": ".. key thumbprint ..",
"pub": ".. encoded public key .."
},
"traditionalPublicKey": {
"crv": "Ed25519",
"x": ".. x coordinate ..",
"kty": "OKP",
"kid": ".. key thumbprint .."
}
}
did-compositejwk-format := did:compositejwk:<base64url-value>
base64url-value := [A-Za-z0-9_-]+
The base64url-value
is a base64url encoded compositeJwk
.
- Generate or load a
compositeJwk
- Serialize it into a UTF-8 string
- Encode that string using base64url
- Attach the prefix
did:compositejwk:
The compositeJwk
is used to generate the DID Document in the following form with the base64url encoded value replacing ${base64url-value}
, and the compositeJwk
structure replacing ${composite-jwk}
:
{
"@context": [
"https://www.w3.org/ns/did/v1",
"https://w3id.org/security/suites/jws-2020/v1"
],
"id": "did:compositejwk:${base64url-value}",
"verificationMethod": [
{
"id": "did:compositejwk:${base64url-value}#0",
"type": "CompositeSignaturePublicKey",
"controller": "did:compositejwk:${base64url-value}",
"compositeJwk": "${composite-jwk}"
}
]
}
Since did:compositejwk
only contains a single composite public key (a PQ and a Traditional public key), the DID URL fragment identifier is always a fixed #0
value.
If the PQ and/or Traditional JWK contains a kid
value, it is not used as the reference, #0
is the only valid value.
- Remove the prefix
did:compositejwk:
- Decode the remaining string using base64url
- Parse the decoded string as UTF-8 JSON
- Validate the
compositeJwk
properties - Generate a DID Document using the composite public key
Not supported.
Not supported.
Since the did:compositejwk
method is similar to the did:jwk
method, see also did:jwk
work in progress
Using the same compositeJwk
with several different entities allows them to correlate the use to the same subject.