Skip to content

Commit

Permalink
Merge branch 'versione-corrente' into iss-401
Browse files Browse the repository at this point in the history
  • Loading branch information
m-basili committed Oct 10, 2024
2 parents f759636 + 169cbca commit ee079fe
Show file tree
Hide file tree
Showing 6 changed files with 115 additions and 59 deletions.
4 changes: 2 additions & 2 deletions docs/en/pid-eaa-issuance.rst
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ The PID/(Q)EAA Provider performs the following checks upon the receipt of the PA
2. It MUST check that the used algorithm for signing the request in the ``alg`` header is one of the listed within the Section `Cryptographic Algorithms <algorithms.html>`_.
3. It MUST check that the ``client_id`` in the request body of the PAR request matches the ``client_id`` claim included in the Request Object.
4. It MUST check that the ``iss`` claim in the Request Object matches the ``client_id`` claim in the Request Object (:rfc:`9126`, :rfc:`9101`).
5. It MUST check that the ``aud`` claim in the Request Object is equal to the PID/(Q)EAA Provider authorization endpoint uri (:rfc:`9126`, :rfc:`9101`).
5. It MUST check that the ``aud`` claim in the Request Object is equal to the identifier of the PID/(Q)EAA Provider (:rfc:`9126`, :rfc:`9101`).
6. It MUST reject the PAR request, if it contains the ``request_uri`` parameter (:rfc:`9126`).
7. It MUST check that the Request Object contains all the mandatory parameters which values are validated according to :ref:`Table of the HTTP parameters <table_request_object_claim>` [derived from :rfc:`9126`].
8. It MUST check that the Request Object is not expired, checking the ``exp`` claim.
Expand Down Expand Up @@ -943,7 +943,7 @@ The JWT proof type MUST contain the following parameters for the JOSE header and
- The value of this claim MUST be the **client_id** of the Wallet Instance.
- [`OpenID4VCI`_], [:rfc:`7519`, Section 4.1.1].
* - **aud**
- The value of this claim MUST be the identifier URL of the PID/(Q)EAA Issuer.
- It MUST be set to the identifier of the PID/(Q)EAA Provider.
- [`OpenID4VCI`_].
* - **iat**
- UNIX Timestamp with the time of JWT issuance, coded as NumericDate as indicated in :rfc:`7519`.
Expand Down
21 changes: 14 additions & 7 deletions docs/en/remote-flow.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
.. _Trust Model: trust.html



Remote Flow
===========

Expand Down Expand Up @@ -437,7 +436,7 @@ Where the following parameters are used:
* - **vp_token**
- JSON Array containing the Verifiable Presentation(s). There MUST be at least two signed presentations in this Array:

- The requested Digital Credential (one or more, in format of SD-JWT VC or MDOC CBOR)
- The requested Digital Credential (one or more, in format of SD-JWT VC)
- The Wallet Attestation
* - **presentation_submission**
- JSON Object containing the mappings between the requested Verifiable Credentials and where to find them within the returned Verifiable Presentation Token, according to the `Presentation Exchange <https://identity.foundation/presentation-exchange/spec/v2.0.0/>`_. This is expressed via elements in the ``descriptor_map`` array (Input Descriptor Mapping Objects) that contain a field called ``path``, which MUST have the value $ (top level root path) when only one Verifiable Presentation is contained in the VP Token, and MUST have the value $[n] (indexed path from root) when there are multiple Verifiable Presentations, where ``n`` is the index to select. The Relying Party receiving the `presentation_submission` descriptor therefore is able to use the correct method to decode each credential data format provided within the ``vp_token``.
Expand All @@ -446,7 +445,7 @@ Where the following parameters are used:


The items contained in the ``vp_token`` array are Verifiable Presentations of Credentials.
Both SD-JWT and mdoc CBOR provide indications for the presentation, according to their specifications.


SD-JWT Presentation
-------------------
Expand All @@ -460,7 +459,7 @@ by appending the ``KB-JWT`` at the end of the of the SD-JWT, as represented in t
<Issuer-Signed-JWT>~<Disclosure 1>~<Disclosure 2>~...~<Disclosure N>~<KB-JWT>
To validate the signature on the Key Binding JWT, the Verifier MUST use the key material included in the Issuer-Signed-JWT.
The Key Binding JWT MUST specify which key material the Verifier needs to use to validate the Key Binding JWT signature,
The Key Binding JWT (KB-JWT) signature validation MUST use the public key included in the SD-JWT,
using the ``cnf`` parameter contained in the Issuer-Signed-JWT.

When an SD-JWT is presented, its KB-JWT MUST contain the following parameters in the JWS header:
Expand Down Expand Up @@ -495,10 +494,18 @@ When an SD-JWT is presented, its KB-JWT MUST contain the following parameters in
- REQUIRED. The base64url-encoded hash digest over the Issuer-signed JWT and the selected disclosures.


MDOC-CBOR Presentation
----------------------
Revocation Checks
~~~~~~~~~~~~~~~~~

The revocation mechanisms that the Relying Parties MUST implement are defined in the section (:ref:`Revocations <revocation-lists.rst>`).

In the context of Digital Credential evaluation, any Relying Parties (RPs) establishes internal policies that define the meaning and value of presented Credentials. This is particularly important in scenarios where a Credential may be suspended but still holds value for certain purposes. For example, a suspended mobile driving license might still be valid for verifying the age of the holder.

The process begins with the RP requesting specific Credentials from the Holder. This request should align with the Relying Party's requirements and the context in which the Credentials will be used. The Holder then responds by releasing the requested Credentials.

Upon receiving the Credentials, the Relying Party evaluates their validity and value based on its internal policies. This evaluation considers the current status of the Credential (e.g., active, suspended, revoked) and the specific use case for which the Credential is being presented.

TBD.
Relying Parties should develop comprehensive internal policies that outline how different types of Credentials are to be evaluated. These policies should address scenarios where a Credential may be partially valid or have limited applicability. Flexibility in evaluation processes is important to accommodate various use cases. For instance, a Credential that is suspended for driving purposes might still be acceptable for age verification.


Authorization Response Errors
Expand Down
10 changes: 5 additions & 5 deletions docs/en/revocation-lists.rst
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ The request MUST be signed with the private key related to the public key contai
Host: pid-provider.example.org
Content-Type: application/json
revocation_requests : ["${base64url(json({typ: (some pop for revocation-assertion)+jwt, ...}))}.payload.signature", ... ]
revocation_requests : ["${base64url(json({typ: revocation-assertion+jwt, ...}))}.payload.signature", ... ]
Below, is given a non-normative example of a single Revocation Assertion Request object with decoded JWT headers and payload and without signature for better readability:
Expand All @@ -164,7 +164,7 @@ Below, is given a non-normative example of a single Revocation Assertion Request
"credential_hash_alg": "sha-256"
}
**Step 2 (PoP verification)**: The Credential Issuer verifies the proof of possession of the Credential requested to be revoked, using the the confirmation method that was attested in the Credential. If the verification is successful the revocation request is allowed.
**Step 2 (Revocation Assertion Request verification)**: The Credential Issuer verifies the proof of possession of the Credential requested to be revoked, using the the confirmation method that was attested in the Credential. If the verification is successful the revocation request is allowed.

**Step 3 (Credential Revocation)**: The Credential Issuer revokes the Credential provided in the Revocation Request object. After the revocation, the Credential Issuer MAY also send a notification to the User (e.g. using a User's email address, telephone number, or any other verified and secure communication channel), with all needed information related to the Credential revocation status update. This communication is out of scope of the current technical implementation profile.

Expand Down Expand Up @@ -379,15 +379,15 @@ Below a non-normative example representing a Status Assertion Request array with
Content-Type: application/json
{
"status_assertion_requests" : ["${base64url(json({typ: (some pop for status-assertion)+jwt, ...}))}.payload.signature", ... ]
"status_assertion_requests" : ["${base64url(json({typ: status-assertion+jwt, ...}))}.payload.signature", ... ]
}
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`.
The `status_assertion_requests` MUST be set with an array of strings, where each string within the array represents a Digital Credential Status Assertion Request object.

A non-normative example of Credential Proof of Possession is provided :ref:`in the previous section <credential_pop_jwt_ex>`.

**Step 2 (PoP verification)**: The Credential Issuer that receives the Status Assertion Request object MUST validate that the Wallet Instance making the request is authorized to request Status Assertions. Therefore the following requirements MUST be satisfied:
**Step 2 (Status Assertion Request verification)**: The Credential Issuer that receives the Status Assertion Request object MUST validate that the Wallet Instance making the request is authorized to request Status Assertions. Therefore the following requirements MUST be satisfied:

- The Credential Issuer MUST verify the compliance of all elements in the `status_assertion_requests` object using the confirmation method contained within the Digital Credential where the Status Assertion Request object is referred to;

Expand Down Expand Up @@ -605,7 +605,7 @@ The Credential Proof of Possession (**credential_pop**) MUST be a JWT that MUST
- UNIX Timestamp with the time of JWT issuance.
- :rfc:`9126` and :rfc:`7519`.
* - **jti**
- Unique identifier for the PoP proof JWT. The value SHOULD be set using a *UUID v4* value according to [:rfc:`4122`].
- Unique identifier for the proof of possession JWT. The value SHOULD be set using a *UUID v4* value according to [:rfc:`4122`].
- :rfc:`7519#section-4.1.7`.
* - **credential_hash**
- It MUST contain the hash value of a Digital Credential, derived by computing the base64url encoded hash of the Digital Credential.
Expand Down
Loading

0 comments on commit ee079fe

Please sign in to comment.