Skip to content

Commit 3c3a1c9

Browse files
authored
Merge pull request italia#713 from m-basili/status-assertion
Status Assertion alignment
2 parents 8a1d851 + 990cad7 commit 3c3a1c9

File tree

3 files changed

+57
-13
lines changed

3 files changed

+57
-13
lines changed

docs/en/credential-issuer-entity-configuration.rst

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,8 @@ The *openid_credential_issuer* metadata MUST contain the following claims.
9292
- URL of the revocation endpoint. See :rfc:`8414#section-2`.
9393
* - **deferred_credential_endpoint**
9494
- URL of the deferred credential endpoint, as defined in Section 11.2.3 of `OpenID4VCI`_.
95-
* - **status_attestation_endpoint**
96-
- It MUST be an HTTPs URL indicating the endpoint where the Wallet Instances can request Status Assertions. See Section :ref:`credential-revocation:Digital Credential Lifecycle` for more details.
95+
* - **status_assertion_endpoint**
96+
- It MUST be an HTTPs URL indicating the endpoint where the Wallet Instances can request Status Assertions. See Section :ref:`credential-revocation:Digital Credential Lifecycle` for more details. (`OAUTH-STATUS-ASSERTION`_ Section 11.1.).
9797
* - **notification_endpoint**
9898
- It MUST be an HTTPs URL indicating the notification endpoint. See Section 11.2.3 of [`OpenID4VCI`_].
9999
* - **authorization_servers**
@@ -135,10 +135,8 @@ The *openid_credential_issuer* metadata MUST contain the following claims.
135135
- *eudi_wallet*: Member State EUDI Wallet trust framework supported.
136136
* - **evidence_supported**
137137
- JSON array containing all types of identity evidence supported by the Credential Issuer. See `OIDC-IDA`_ Section 8. The supported value is ``vouch``.
138-
* - **status_assertion_endpoint**
139-
- URL of the Status Assertion Endpoint. See `OAUTH-STATUS-ASSERTION`_ Section 11.1.
140138
* - **credential_hash_alg_supported**
141-
- The supported algorithm used by the Wallet Instance to hash the Digital Credential for which the Status Assertion is requested. It is RECOMMENDED to use *sha-256*. See `OAUTH-STATUS-ASSERTION`_ Section 11.1.
139+
- The supported algorithm used by the Wallet Instance to hash the Digital Credential for which the Status Assertion is requested. It is RECOMMENDED to use *sha-256*. (See `OAUTH-STATUS-ASSERTION`_ Section 11.1.).
142140

143141

144142
Example of a (Q)EAA Provider Entity Configuration

docs/en/credential-revocation.rst

Lines changed: 52 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ A Wallet Instance MUST check periodically the validity status of the Digital Cre
327327
328328
**Step 1 (Status Assertion Request)**: The Wallet Instance sends the Status Assertion Request to the Credential Issuer, where:
329329

330-
- The request MUST contain the base64url encoded hash value of the Digital Credential, for which the Status Assertion is requested, and enveloped in a signed Status Assertion Request object.
330+
- The request MUST contain the base64url encoded hash value of the Digital Credential's Issuer signed part, such as the Issuer Signed JWT using :ref:`credential-data-model:SD-JWT-VC Credential Format`, or the Mobile Security Object using :ref:`credential-data-model:mdoc-CBOR Credential Format`, for which the Status Assertion is requested, and enveloped in a signed Status Assertion Request object.
331331
- The Status Assertion Request object MUST be signed with the private key corresponding to the confirmation claim assigned by the Issuer and contained within the Digital Credential.
332332

333333
The Status Assertion HTTP request can be sent to a single Credential Issuer regarding multiple Digital Credentials, and MUST contain a JSON object with the member `status_assertion_requests` as described in Section :ref:`credential-revocation:HTTP Status Assertion Request`.
@@ -341,7 +341,7 @@ The Credential Issuer that receives the Status Assertion Request object MUST:
341341
- creates the corresponding Status Assertion.
342342

343343

344-
**Step 2 (Status Assertion Response)**: The *status_assertion_responses* MUST be a JSON Array containing the *StatusAssertionResponse* and/or the *StatusAssertionErrors* JSON Objects related to the request made by the Wallet Instance.
344+
**Step 2 (Status Assertion Response)**: The *status_assertion_responses* MUST be an array of strings containing the *StatusAssertionResponse* and/or the *StatusAssertionErrors* JSON Objects related to the request made by the Wallet Instance.
345345

346346
The Wallet Instance MUST:
347347

@@ -526,6 +526,12 @@ The Status Assertion MUST contain the parameters and claims defined below
526526
* - **typ**
527527
- It MUST be set to `status-assertion+jwt`.
528528
- [:rfc:`7515`], [:rfc:`7517`], `OAUTH-STATUS-ASSERTION`_.
529+
* - **kid**
530+
- Unique identifier of the Issuer JWK. It is REQUIRED when ``x5c`` is not used.
531+
- [:rfc:`7515`], `OAUTH-STATUS-ASSERTION`_.
532+
* - **x5c**
533+
- X.509 certificate chain about the Issuer. It is REQUIRED when ``kid`` is not used.
534+
- [:rfc:`7515`], `OAUTH-STATUS-ASSERTION`_.
529535

530536
.. list-table::
531537
:class: longtable
@@ -603,8 +609,47 @@ Below a non-normative example of a Status Assertion Response object in JWT forma
603609
604610
The Status Assertion Error object MUST contain the following claims:
605611

606-
- *error*. The error code, as registered in the table below;
607-
- *error_description*. Text in human-readable form providing further details to clarify the nature of the error encountered.
612+
.. list-table::
613+
:class: longtable
614+
:widths: 20 60 20
615+
:header-rows: 1
616+
617+
* - **Header**
618+
- **Description**
619+
- **Reference**
620+
* - **alg**
621+
- A digital signature algorithm identifier such as per IANA "JSON Web Signature and Encryption Algorithms" registry. It MUST be one of the supported algorithms in Section :ref:`Cryptographic Algorithms <algorithms:Cryptographic Algorithms>` and MUST NOT be set to ``none`` or to a symmetric algorithm (MAC) identifier.
622+
- Section 4.1.1 of [:rfc:`7516`].
623+
* - **typ**
624+
- It MUST be set to `status-assertion+jwt`.
625+
- Section 4.1.11 of [:rfc:`7516`].
626+
627+
.. list-table::
628+
:class: longtable
629+
:widths: 20 60 20
630+
:header-rows: 1
631+
632+
* - **Payload**
633+
- **Description**
634+
- **Reference**
635+
* - **iss**
636+
- It MUST be set to the identifier of the Credential Issuer.
637+
- :rfc:`9126` and :rfc:`7519`.
638+
* - **jti**
639+
- Unique identifier for the JWT.
640+
- :rfc:`9126` and :rfc:`7519`.
641+
* - **credential_hash**
642+
- Hash value of the Credential the Status Assertion Error is bound to, it MUST match the one contained in the Status Assertion Request.
643+
- `OAUTH-STATUS-ASSERTION`_.
644+
* - **credential_hash_alg**
645+
- The Algorithm used for hashing the Credential to which the Status Assertion Error is bound, it MUST match the one contained in the Status Assertion Request. The value SHOULD be set to ``sha-256``.
646+
- `OAUTH-STATUS-ASSERTION`_.
647+
* - **error**
648+
- The error code, as registered in the table below.
649+
- Section 4.1.7 of :rfc:`7519`.
650+
* - **error_description**
651+
- Text in human-readable form providing further details to clarify the nature of the error encountered.
652+
- Section 4.1.7 of :rfc:`7519`.
608653

609654
Errors are meant to provide additional information about the failure so that the User can be informed and take the appropriate action.
610655
The `error` claim for the Status Assertion Error object MUST be set with one of the values defined in the table below, in addition to the values specified in :rfc:`6749#section-5.2`:
@@ -619,11 +664,11 @@ The `error` claim for the Status Assertion Error object MUST be set with one of
619664
* - ``invalid_request``
620665
- The request is not valid due to the lack or incorrectness of one or more parameters. (:rfc:`6749#section-5.2`).
621666
* - ``invalid_request_signature``
622-
- The Revocation Assertion Request signature validation has failed. This error type is used when the proof of possession of the Digital Credential is found not valid within the Revocation Assertion Request.
667+
- The Revocation Assertion Request signature validation has failed. This error type is used when the proof of possession of the Digital Credential is found not valid within the Revocation Assertion Request. (Section 9.2 of `OAUTH-STATUS-ASSERTION`_).
623668
* - ``credential_not_found``
624-
- The `credential_hash` value provided in the Revocation Assertion Request doesn't match with any active Digital Credential.
669+
- The `credential_hash` value provided in the Revocation Assertion Request doesn't match with any active Digital Credential. (Section 9.2 of `OAUTH-STATUS-ASSERTION`_).
625670
* - ``unsupported_hash_alg``
626-
- The hash algorithm set in `credential_hash_alg` is not supported.
671+
- The hash algorithm set in `credential_hash_alg` is not supported. (Section 9.2 of `OAUTH-STATUS-ASSERTION`_).
627672

628673
Below a non-normative example of a Revocation Assertion Error object in JWT format, with the headers and payload represented in JSON and without applying the signature.
629674

examples/ec-eaa.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,9 @@
9494
"nonce_endpoint": "https://eaa-provider.example.org/nonce-endpoint",
9595
"deferred_credential_endpoint": "https://eaa-provider.example.org/deferred-credential",
9696
"revocation_endpoint": "https://eaa-provider.example.org/revoke",
97-
"status_attestation_endpoint": "https://eaa-provider.example.org/status",
97+
"status_assertion_endpoint": "https://eaa-provider.example.org/status",
9898
"notification_endpoint": "https://eaa-provider.example.org/notification",
99+
"credential_hash_alg_supported": "sha-256",
99100
"display": [
100101
{
101102
"name": "EAA Provider",

0 commit comments

Comments
 (0)