diff --git a/index.html b/index.html index 948f48d..130f273 100644 --- a/index.html +++ b/index.html @@ -940,98 +940,6 @@

COSE Header Parameters and CWT Claims

Key Discovery

- -

- When iss is absent and the issuer - is identified as a DID Subject, - the kid MUST be an absolute DID URL. -

-
-{
-  "issuer": "did:example:123"
-  // ...
-}
-
-
-{
-  "alg": "ES384",
-  "kid": "did:example:123#key-456
-}
-
-

- When iss is absent, and the holder - is identified as a DID Subject, - the kid MUST be an absolute DID URL. -

-
-{
-  "holder": "did:example:abc"
-  // ...
-}
-
-
-{
-  "alg": "ES384",
-  "kid": "did:example:abc#key-456
-}
-
- - -

- When iss is absent, and the issuer is - identified as a [[URL]], - the kid MUST be an absolute [[URL]] to a verification method listed in a controller document. -

- -
-{
-  "issuer": {
-    "id": "https://university.example/issuers/565049"
-  }
-  // ...
-}
-
-
-{
-  "alg": "ES384",
-  "kid": "https://university.example/issuers/565049#key-123
-}
-
- -

- When the holder is identified as a [[URL]], - and iss is absent, - the kid MUST be an absolute [[URL]] to a verification method listed in a controller document. -

-
-{
-  "holder": {
-    "id": "https://university.example/issuers/565049"
-  }
-  // ...
-}
-
-
-{
-  "alg": "ES384",
-  "kid": "https://university.example/issuers/565049#key-123
-}
-
- - - -

- When iss is present and is a [[URL]], - the kid MUST match a key discovered via a JWT Issuer Metadata Request, - as described in [[SD-JWT-VC]]. -

- -

- This normative statement depends on the IETF OAuth working group draft [[SD-JWT-VC]]. - This feature is at risk and will be removed from the specification if at least - two independent, interoperable implementations are not demonstrated. -

-

To complete the verification process, a verifier needs to obtain the cryptographic keys used to @@ -1057,7 +965,7 @@

kid

If kid is present in the JOSE Header or the COSE Header, a verifier can use this parameter - as a hint indicating which key was used to secure the verifiable credential, when performing a + as a hint indicating which key was used to secure the [=verifiable credential=], when performing a verification process as defined in RFC7515.

@@ -1104,48 +1012,142 @@

cnf

verification process.

- Use of a proof-of-possession key provided by the Holder to the Issuer - to establish a cryptographic binding to the Holder in the Verifiable Credential - that is verifiable by the Verifier in the Verifiable Presentation is RECOMMENDED. + Use of a proof-of-possession key provided by the [=Holder=] to the [=Issuer=] + to establish a cryptographic binding to the [=Holder=] in the [=Verifiable Credential=] + that is verifiable by the [=Verifier=] in the [=Verifiable Presentation=] is RECOMMENDED.

Well-Known URIs

+

+ When the [=issuer=] value is a URL using the HTTPS scheme, + [=issuer=] metadata including the [=issuer=]'s [=public keys=] can be retrieved using the mechanism + defined in [[SD-JWT-VC]]. +

-
-

JWT Issuer

-

- When the issuer value is a URL using the HTTPS scheme, - issuer metadata including the issuer's public keys can be retrieved using the mechanism - defined in [[SD-JWT-VC]]. -

+

+ This normative statement depends on the IETF OAuth working group draft [[SD-JWT-VC]]. + This feature is at risk and will be removed from the specification if at least + two independent, interoperable implementations are not demonstrated. +

-

- This normative statement depends on the IETF OAuth working group draft [[SD-JWT-VC]]. - This feature is at risk and will be removed from the specification if at least - two independent, interoperable implementations are not demonstrated. -

-
+
+        {
+          "alg": "EdDSA",
+          "kid": "https://vendor.example/issuers/42/keys/urn:ietf:params:oauth:jwk-thumbprint:sha-256:NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs"
+        }
+        
-

Using Controller Documents

+

Using Controller Documents

When using [=controller documents=] with this specification, the following requirements apply.

The value of the `type` property of the verification method MUST be JsonWebKey. -

-

- Verification material MUST be expressed in the publicKeyJwk property - of a JsonWebKey. This key material is retrieved based on hints in the - JOSE or COSE message envelopes, such as kid or iss. At - the time of writing, there is no standard way to retrieve a public key in JWK format - from a DID URL or controller document. -

+

+

+ Verification material MUST be expressed in the publicKeyJwk property + of a JsonWebKey. This key material is retrieved based on hints in the + JOSE or COSE message envelopes, such as kid or iss. At + the time of writing, there is no standard way to retrieve a public key in JWK format + from a DID URL or [=controller document=]. +

+ +

+ When iss is absent, and the issuer is + identified as a [[URL]], + the kid MUST be an absolute [[URL]] to a + verification method listed in a [=controller document=] or + a DID Document. +

+ +

+ When using [[URL]] identifiers, the kid is RECOMMENDED to be + an absolute [[URL]] that includes a JWK Thumbprint URI + as defined in [[RFC7638]]. For example: + https://vendor.example/issuers/42/keys/urn:ietf:params:oauth:jwk-thumbprint:sha-256:NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs +

+ +
+{
+  "issuer": {
+    "id": "https://university.example/issuers/565049"
+  }
+  // ...
+}
+
+
+{
+  "alg": "ES384",
+  "kid": "https://university.example/issuers/565049#key-123
+}
+
+ +

+ When the holder is + identified as a [[URL]], + and iss is absent, + the kid MUST be an absolute [[URL]] to a + verification method listed in a [=controller document=]. +

+
+{
+  "holder": {
+    "id": "https://university.example/issuers/565049"
+  }
+  // ...
+}
+
+
+{
+  "alg": "ES384",
+  "kid": "https://university.example/issuers/565049#key-123
+}
+
+
+
+

Using DID Documents

+ +

+ When iss is absent and the issuer + is identified as a DID Subject, + the kid MUST be an absolute DID URL. +

+
+{
+  "issuer": "did:example:123"
+  // ...
+}
+
+
+{
+  "alg": "ES384",
+  "kid": "did:example:123#key-456
+}
+
+

+ When iss is absent, and the holder + is identified as a DID Subject, + the kid MUST be an absolute DID URL. +

+
+{
+  "holder": "did:example:abc"
+  // ...
+}
+
+
+{
+  "alg": "ES384",
+  "kid": "did:example:abc#key-456
+}
+
+
@@ -1877,12 +1879,12 @@

Algorithm for Verifying a Credential or Presentation Secured w vp-ld+jwt
  • - inputDocument: the verifiable credential secured as a JWT [[RFC7519]] + inputDocument: the [=verifiable credential=] secured as a JWT [[RFC7519]]
  • - Upon receipt of the verifiable credential or presentation secured as a JWT - [[RFC7519]], the holder or verifier follows this algorithm: + Upon receipt of the [=verifiable credential=] or [=verifiable presentation=] secured as a JWT + [[RFC7519]], the [=holder=] or [=verifier=] follows this algorithm:

    1. @@ -1938,7 +1940,7 @@

      Algorithm for Verifying a Credential or Presentation Secured

    2. - Upon receipt of the verifiable credential or presentation secured with + Upon receipt of the [=verifiable credential=] or [=verifiable presentation=] secured with [[SD-JWT]], the holder or verifier follows this algorithm:

        @@ -1996,13 +1998,13 @@

        Algorithm for Verifying a Credential or Presentation Secured w vp-ld+cose
      1. - inputDocument: the verifiable credential or verifiable presentation + inputDocument: the [=verifiable credential=] or [=verifiable presentation=] secured with [[[RFC9052]]]
      2. - Upon receipt of the verifiable credential or presentation secured with - [[RFC9052]], the holder or verifier follows this algorithm: + Upon receipt of the [=verifiable credential=] or [=verifiable presentation=] secured with + [[RFC9052]], the [=holder=] or [=verifier=] follows this algorithm:

        1. @@ -2054,7 +2056,7 @@

          Validation Algorithm

          All claims expected for the typ MUST be present. - All claims that are understood MUST be evaluated according the verifier's validation policies. + All claims that are understood MUST be evaluated according the [=verifier=]'s validation policies. All claims that are not understood MUST be ignored.

          @@ -2077,11 +2079,11 @@

          Validation Algorithm

          - Based on the validation policy of the verifier, the type of credentials, and + Based on the validation policy of the verifier, the type of [=credentials=], and the type of securing mechanism, additional validation checks MAY be applied. - For example, dependencies between multiple credentials, ordering or timing - information associated with multiple credentials, and/or multiple presentations - could cause an otherwise valid credential or presentation to be considered + For example, dependencies between multiple [=credentials=], ordering or timing + information associated with multiple credentials, and/or multiple [=presentations=] + could cause an otherwise valid [=credential=] or [=presentation=] to be considered invalid.