Skip to content

Trust Checks

Issuance

This section details the trust checks that MUST be performed during the Issuance process.

sequenceDiagram
    participant User
    participant Wallet as Wallet Instance
    participant EAAProvider as Attestation Provider
    participant WRPACLoTE as Provider of WRPAC LoTE
    participant WRPCLoTE as Provider of WRRPC LoTE
    participant WProvider as Wallet Providers LoTE
    participant LoTL as LoTE Provider
    participant TL as TL Provider

    User->>Wallet: 1. Request EAA issuance
    Wallet->>EAAProvider: 2. Fetch Credential Issuer Metadata (OpenID4VCI)
    EAAProvider-->>Wallet: Signed Credential Issuer Metadata

    rect rgb(230, 230, 230)
    Note over Wallet: Verify metadata signature
    Wallet->>WRPACLoTE: 3a. Fetch Provider of WRPAC LoTE
    WRPACLoTE-->>Wallet: Provider of WRPAC LoTE
    Note over Wallet: 3b. Validate LoTE
    Note over Wallet: 3c. Identify the corresponding trusted entity
    Note over Wallet: 3d. Validate the WRPAC
    Note over Wallet: 3e. Validate the metadata signature using the WRPAC
    end

    rect rgb(230, 230, 230)
    Note over Wallet: Verify WRPRC
    Wallet->>WRPCLoTE: 4a. Fetch Provider of WRPRC LoTE
    WRPCLoTE-->>Wallet: Provider of  WRPRC LoTE
    Note over Wallet: 4b. Validate LoTE
    Note over Wallet: 4c. Identify the corresponding trusted entity
    Note over Wallet: 4d. Validate the WRPRC
    Note over Wallet: 4e. Check Provider entitlements
    end

    Note over Wallet: 5. Match WRPAC with WRPRC
    opt applicable to Authorization Code Flow only
        Wallet->>EAAProvider: 6. Send WIA to PAR endpoint (OpenID4VCI)

        rect rgb(230, 230, 230)
        Note over EAAProvider: Verify WIA
        EAAProvider->>WProvider: 7a. Fetch Wallet Providers LoTE
        WProvider-->>EAAProvider: Wallet Providers LoTE
        Note over EAAProvider: 7b. Validate LoTE
        Note over EAAProvider: 7c. Identify the corresponding trusted entity
        Note over EAAProvider: 7d. Validate the WIA signature
        Note over EAAProvider: 7e. Validate the WIA contents
        EAAProvider-->>Wallet: Authorization response (code)
        end
    end

    Wallet->>EAAProvider: 8. Send WIA to Token endpoint (OpenID4VCI)

    rect rgb(230, 230, 230)
    Note over EAAProvider: Verify WIA
    EAAProvider->>WProvider: 7a. Fetch Wallet Providers LoTE
    WProvider-->>EAAProvider: Wallet Providers LoTE
    Note over EAAProvider: 7b. Validate LoTE
    Note over EAAProvider: 7c. Identify the corresponding trusted entity
    Note over EAAProvider: 7d. Validate the WIA signature
    Note over EAAProvider: 7e. Validate the WIA contents
    end
    EAAProvider-->>Wallet: Token response (access token)

    Wallet->>EAAProvider: 9. Send KA to Credential endpoint (OpenID4VCI)

    rect rgb(230, 230, 230)
    Note over EAAProvider: Verify KA
    EAAProvider->>WProvider: 7a. Fetch Wallet Providers LoTE
    WProvider-->>EAAProvider: Wallet Providers LoTE
    Note over EAAProvider: 7b. Validate LoTE
    Note over EAAProvider: 7c. Identify the corresponding trusted entity
    Note over EAAProvider: 10a. Validate the KA signature
    Note over EAAProvider: 10b. Validate the KA contents
    end
    EAAProvider-->>Wallet: Credential response

    rect rgb(230, 230, 230)
    Note over Wallet: Verify Attestation
    Wallet->>LoTL: 11a. Fetch EAA/PID/QEAA/Pub-EAA Provider LoTE
    LoTL-->>Wallet: EAA/PID/QEAA/Pub-EAA Provider LoTE
    Note over Wallet: 11b. Validate LoTE
    Note over Wallet: 11c. Identify the corresponding TL
    Wallet->>TL: 11d. Fetch TL
    TL-->>Wallet: TL
    Note over Wallet: 11e. Validate TL
    Note over Wallet: 11f. Identify the corresponding trusted entity
    Note over Wallet: 11g. Validate the Attestation signature
    end

NOTE 1: Attestation Providers can have a dedicated Authorization server that makes authorization-related endpoints available. That kind of implementation details are hidden in this schema, since the Attestation Provider bears the overall responsibility for responding to the Wallet Instance's requests.

NOTE 2: A nonce endpoint might be necessary as well however that feature does not have an impact on the trust-related checks.

Step-by-step Operations

Step 1: Request EAA Issuance Various flows are possible for this step and this can depend on the wallet implementation. The Wallet Instance can be populated with a pre-defined set of credentials offered by different Attestation Providers or can fetch other offers via different means.

Step 2: Fetch Credential Issuer Metadata (OpenID4VCI) The Wallet Instance retrieves information about the Attestation Provider's technical capabilities, supported attestations, and display information from the Attestation Provider endpoint. This information includes the Provider of WRPRC. In this context it is expected that the metadata is a signed JSON Web Signature (JWS). The JWS also contains the WRPAC in its Protected Header [AUTHZ-ISS-04].

Step 3a: Fetch Provider of WRPAC LoTE The Wallet Instance retrieves the LoTE listing all the WRPAC issuers from a publicly-known URL.

Step 3b: Validate LoTE The Wallet Instance validates the LoTE signature is order to make sure the LoTE is authentic. Extra checks are performed in order to make sure the LoTE is not outdated.

Step 3c: Identify the corresponding trusted entity The Wallet Instance identifies the LoTE trusted entity corresponding to the WRPAC presented in the metadata JWS [AUTHZ-ISS-02].

Step 3d: Validate the WRPAC The Wallet Instance validates the authenticity and integrity of the WRPAC using the trust anchor of the trusted entity identitied in the LoTE.

Step 3e: Validate the metadata signature using the WRPAC The Wallet Instance validates the metadata JWS signature using the WRPAC [AUTHZ-ISS-05].

Step 4a: Fetch Provider of WRPRC LoTE The Wallet Instance retrieves the LoTE listing all the WRPRC issuers from a publicly-known URL [AUTHZ-ISS-07].

Step 4b: Validate LoTE The Wallet Instance validates the LoTE signature is order to make sure the LoTE is authentic. Extra checks are performed in order to make sure the LoTE is not outdated.

Step 4c: Identify the corresponding trusted entity The Wallet Instance identifies the LoTE trusted entity corresponding to the WRPRC presented in the Attestation Provider metadata.

Step 4d: Validate the WRPRC The Wallet Instance validates the authenticity and integrity of the WRPRC using the trust anchor of the trusted entity identitied in the LoTE [AUTHZ-GEN-08].

Step 4e: Check Provider entitlements The Wallet Instance verifies that the entitlement of issuing attestations is present in the WRPRC [AUTHZ-GEN-11, AUTHZ-GEN-13].

Step 5: Match WRPAC with WRPRC The Wallet Instance verifies that both the certificates are related to the same entity [AUTHZ-GEN-09, AUTHZ-GEN-12].

Step 6: Send WIA to PAR endpoint (OpenID4VCI) The Wallet Instance sends the WIA signed by the Wallet Provider, attesting that the Wallet Instance is a valid one.

Step 7a: Fetch Wallet Providers LoTE The Attestation Providers retrieves the LoTE listing all the Wallet Providers from a publicly-known URL. This list is necessary to validate different signed artifacts received from the Wallet Instance in the different requests. Attestation Providers can implement a caching mechanism of the LoTE so that they would not need to retrieve it multiple times in the course of the EAA issuance process. It is up to Attestation Providers to implement this mechanism or not and to decide for how long they would want to cache the list. This implies that in some cases, this step could be skipped.

Step 7b: Validate LoTE The Attestation Provider validates the LoTE signature in order to make sure the LoTE is authentic. Extra checks are performed in order to make sure the LoTE is not outdated.

Step 7c: Identify the corresponding trusted entity The Attestation Provider identifies the LoTE trusted entity corresponding to the WIA presented in the request.

Step 7d: Validate the WIA signature The Attestation Provider checks the WIA integrity and authenticity by validating the JWT signature using the trust anchor of the trusted entity identitied in the LoTE.

Step 7e: Validate the WIA contents The Attestation Provider checks that the Wallet Instance is valid by verifying the status list referenced in the WIA. Extra cheks are performed like WIA validity checks and associated Proof-of-Possession checks.

Step 8: Send WIA to Token endpoint (OpenID4VCI) The Wallet Instance sends the WIA signed by the Wallet Provider, attesting that the Wallet Instance is a valid one.

Step 9: Send KA to Credential endpoint (OpenID4VCI) The Wallet Instance sends the KA signed by the Wallet Provider, attesting information about the security of cryptographic keys stored in the Wallet Unit.

Step 10a: Validate the KA signature The Attestation Provider checks the KA integrity and authenticity by validating the signature using the trust anchor of the trusted entity identitied in the LoTE.

Step 10b: Validate the KA contents The Attestation Provider checks that the cryptographic keys are protected according to its policy if any, and verifies the related Proof-of-Possessions if any.

Step 11a: Fetch EAA/PID/QEAA/Pub-EAA Provider LoTE The Wallet Instance retrieves the LoTE listing all the Providers of the corresponding type.

Step 11b: Validate EAA/PID/QEAA/Pub-EAA Provider LoTE The Wallet Instance validates the LoTE signature in order to make sure the LoTE is authentic. A good practice is to follow the clause 5 of ETSI TS 319 102-1 for validating AdES digital signatures. Extra checks are performed in order to make sure the LoTE is not outdated.

Step 11c: Identify the corresponding TL The Wallet Instance identifies the corresponding national TL needed to validate the Attestation received in the Credential Response.

Step 11d: Fetch TL The Wallet Instance retrieves the national TL listing all the trust services registered in that Member State.

Step 11e: Validate TL The Wallet Instance validates the TL signature in order to make sure the TL is authentic. Extra checks are performed in order to make sure the TL is not outdated.

Step 11f: Identify the corresponding trusted entity The Wallet Instance identifies the TL trusted entity corresponding to the signature of the Attestation issued.

Step 11g: Validate the Attestation signature The Wallet Instance checks the integrity and authenticity of the Attestation by validating the signature using the trust anchor of the trusted entity identitied in the TL. If multiple Attestations were received, they are all validated.

If any of the checks described in the previous steps fail, the process can be aborted either by the Wallet Instance, the user, or the Attestation Provider.

Presentation

This section specifies the trust checks performed during Presentation flows, both:

The objective is to identify:

  1. Which entity performs each check.
  2. Which entity or artefact is being checked.
  3. Which input artefacts are needed.
  4. Which result code or decision is produced.
  5. Whether the result is blocking, advisory, or user-overridable.
  6. How the check can later be converted into RFC003 test cases.

Entities and Artefacts

Main entities

Entity Role in Presentation trust evaluation
Wallet Instance / Wallet Unit (WI/WU) Main trust evaluator. Authenticates the WRP, evaluates authorization evidence, checks scope, evaluates EDPs, and presents results/advisories to the User.
Wallet Relying Party (WRP) Requests attributes / attestations from the Wallet. May act directly or through an intermediary.
Relying Party Intermediary (RPI) Acts on behalf of a final RP. Must be authenticated and bound to the final RP authorization context.
Provider of WRPAC Issues the Wallet-Relying Party Access Certificate used to authenticate the WRP/RPI.
Provider of WRPRC Issues the Wallet-Relying Party Registration Certificate used as authorization evidence.
Registrar / Register Authoritative source of registration data, used as fallback when WRPRC is missing or invalid following TS05.
LoTE / LOTL / EUMS TL Trusted-list infrastructure used to resolve trust anchors for WRPAC providers, WRPRC providers, registrars, and other trust entities.
User Makes the final disclosure decision, after the Wallet displays identity, requested attributes, intended use, policy results and advisories.

Main artefacts

Artefact Used for
WRPAC Authentication of the WRP/RPI and verification of the signed presentation request artefact.
Signed request artefact Remote: signed OpenID4VP Request Object. Proximity: ReaderAuth / mdoc request structure.
WRPRC Authorization evidence for the RP/final RP, including subject, entitlement, intended use, registered credential/claim scope, status, and intermediary relationship where applicable.
Register response Fallback authorization evidence when WRPRC is absent or invalid.
RPRC_19a / request registration data Presentation-request fields carrying RP/final RP information and registry URI (Relying Party Registration / Topic 44)
EDP Embedded Disclosure Policy generated during issuance and stored locally by the Wallet during issuance and evaluated at presentation time.
Requested attributes Remote: DCQL credential_queries.claims. Proximity: docRequest.itemRequest.nameSpaces.

Common Presentation Trust Evaluation Model

The authorization logic is common to Remote and Proximity flows. The differences are limited to the transport, the location and format of the WRPRC, and the way requested attributes are extracted.

flowchart TD
Start([Presentation request received])
Start --> A1[Check 1: Authenticate WRP/RPI using WRPAC]
A1 --> A1D{WRPAC authentication OK?}
A1D -->|No| StopAuth[Stop: authorization process must not start]
A1D -->|Yes| U1{User opted in to RP verification?}
U1 -->|No| SkipReg[Skip registration verification block]
U1 -->|Yes| E1[Check 2: Extract authorization evidence]
E1 --> E2{WRPRC present?}
E2 -->|Yes| W1[Check 3A: Validate WRPRC]
W1 --> W1D{WRPRC valid?}
W1D -->|Yes| B1[Check 4: Binding verification]
W1D -->|No| R1[Check 3B: Query and validate Register data]
E2 -->|No| R1
R1 --> R1D{Register data valid?}
R1D -->|No| AdvNoData[Advisory: RP cannot be fully verified]
R1D -->|Yes| B1
B1 --> B1D{Binding OK?}
B1D -->|No| StopBind[Stop: NOT_AUTHORIZED / binding failure]
B1D -->|Yes| I1{Intermediary scenario?}
I1 -->|Yes| I2[Check 5: Verify intermediary association]
I2 --> I2D{Association OK?}
I2D -->|No| StopInt[Stop: INTERMEDIARY_NOT_AUTHORIZED]
I2D -->|Yes| Ent1[Check 6: Entitlement verification on final RP context]
I1 -->|No| Ent1
Ent1 --> EntD{Service_Provider entitlement present?}
EntD -->|No| AdvEnt[Advisory: wrong entitlement]
EntD -->|Yes| S1[Check 7: Scope comparison]
AdvEnt --> UserReg{User decision on advisory}
AdvNoData --> UserReg
UserReg -->|Deny| Deny1[Deny presentation]
UserReg -->|Proceed| EDP1[Check 8: EDP evaluation]
S1 --> SD{Requested attributes within registered scope?}
SD -->|No| AdvScope[Advisory: over-asking detected]
SD -->|Yes| EDP1
AdvScope --> UserReg
SkipReg --> EDP1
EDP1 --> EDPD{EDP satisfied or no EDP?}
EDPD -->|No| AdvEDP[Advisory: EDP not satisfied]
EDPD -->|Yes| UI1[Check 9: Display trust results and request User approval]
AdvEDP --> UI1
UI1 --> Final{User approves disclosure?}
Final -->|Yes| Present[Present selected attestations]
Final -->|No| Deny2[Deny presentation]
Present --> End([End])
Deny1 --> End
Deny2 --> End
StopAuth --> End
StopBind --> End
StopInt --> End

Flowchart to detailed trust-check index

Section Common Presentation Trust Evaluation Model uses coarse step labels (Check 1Check 9) for control flow. Section Detailed Trust Checks decomposes the same logic into RFC003 test-case identifiers (TC-PRES-001TC-PRES-017). The correspondence is mostly one-to-many: one flowchart label may map to several TC-PRES checks, and some TC-PRES checks have no separate box in the flowchart. Trust-list resolution (TL-PRES-001, Section Trust Anchor and Trusted List Checks) is a cross-cutting dependency of WRPAC, WRPRC, and Register validation rather than its own flowchart step.

Flowchart Trust check(s) Notes
Check 1 — Authenticate WRP/RPI using WRPAC TC-PRES-001 Direct match
U1 — User opted in to RP verification? TC-PRES-002 Same step; not numbered "Check N" in the diagram
Check 2 — Extract authorization evidence TC-PRES-003 Direct match
Check 3A — Validate WRPRC TC-PRES-004, TC-PRES-005 One diagram box; Section Detailed Trust Checks splits format/algorithm validation from signature, chain, trust anchor, temporal validity, and status
Check 3B — Query and validate Register data TC-PRES-006 Direct match; also used when WRPRC is absent or Check 3A fails
Check 4 — Binding verification TC-PRES-007, TC-PRES-010 TC-PRES-007 covers direct RP binding; TC-PRES-010 (final RP context coherence) is not a separate flowchart box
I1 — Intermediary scenario? TC-PRES-008 Intermediary detection; decision diamond, not a “Check N” label
Check 5 — Verify intermediary association TC-PRES-009 Direct match
Check 6 — Entitlement verification TC-PRES-011 Direct match
Check 7 — Scope comparison TC-PRES-012, TC-PRES-013 Diagram merges attribute extraction and scope comparison
Check 8 — EDP evaluation TC-PRES-014, TC-PRES-015, TC-PRES-016 One diagram box; Section Detailed Trust Checks splits presence, Authorized Relying Parties Only, and Specific Root of Trust
Check 9 — Display trust results and User approval TC-PRES-017 Direct match
(implicit in WRPAC / WRPRC / Register validation) TL-PRES-001 LoTE / LOTL / EUMS TL checks (Section Trust Anchor and Trusted List Checks); no dedicated flowchart node

Checks in Section Detailed Trust Checks without a Section Common Presentation Trust Evaluation Model "Check N" label: TC-PRES-008 (intermediary detection, see I1), TC-PRES-010 (intermediated RP context coherence, folded into binding in the diagram), TC-PRES-012 (requested-attribute extraction, prerequisite to Check 7).

Flowchart outcomes (not separate trust checks):

Flowchart node Typical source check
StopAuth TC-PRES-001 failure
AdvNoData TC-PRES-003 / TC-PRES-006 (incomplete evidence or Register validation failed)
StopBind TC-PRES-007 / TC-PRES-010
StopInt TC-PRES-009
AdvEnt TC-PRES-011
AdvScope TC-PRES-013
AdvEDP TC-PRES-014 to TC-PRES-016

Remote Presentation Flow

Remote-specific inputs

Item Remote flow source
Signed request artefact The Remote Presentation request, represented as an OpenID4VP Authorization Request (JWT/JWS). This is the main artifact the Wallet validates before trusting the request. It contains EUDI-specific extensions such as verifier_info.
WRPAC chain The WRPAC authenticates the technical requester (RP/Intermediary) that signed the Request Object. The certificate chain is carried in the JOSE header using x5c. The Wallet uses this chain to validate the signer’s certificate, check that it chains to a trusted root, and confirm that the request was signed by the entity represented by the access certificate.
WRPRC The WRPRC is the Wallet-Relying Party Registration Certificate.This is about registration and authorisation: the RP/service, intended use, and what attributes it is registered to request. The WRPRC is included by value inside verifier_info.
WRPRC format JWT, typ = rc-wrp+jwt
Register fallback URL / RP information Part of verifier_info metadata, under key RPRC_19a. If no usable WRPRC is included, the Wallet still needs enough information to identify the RP/service and find the responsible Register/Registrar. For this reason registrar_url and RP information are included.
Requested attributes DCQL credential_queries[].claims[]

Remote flow trust-check diagram

flowchart LR
RP[Remote RP or RPI] --> Req[Signed OpenID4VP Request Object]
Req --> WRPAC[Check: WRPAC chain in x5c]
Req --> WRPRC[Check: WRPRC from verifier_info]
Req --> RPRC19a[Check: RPRC_19a data / registry URI]
Req --> DCQL[Check: requested claims from DCQL]
WRPAC --> WI[Wallet Instance]
WRPRC --> WI
RPRC19a --> WI
DCQL --> WI
WI --> TA[Resolve trust anchors from LoTE / trusted-list infrastructure]
WI --> Reg[Query Register if WRPRC missing or invalid]
WI --> Eval[Perform binding, entitlement, scope and EDP checks]
Eval --> User[Display results to User]

Proximity Presentation Flow

Proximity-specific inputs

Item Proximity flow source
Signed request artefact The reader sends a DeviceRequest, which contains one or more document requests. The signed/security-relevant part is the ReaderAuth structure
WRPAC chain The certificate chain is presented within the WRP-signed ReaderAuth element of the mdoc request message.
WRPRC The WRPRC is the registration/authorisation evidence of the RP is extracted from the euWrprc member inside requestInfo in the ISO DeviceRequest
WRPRC format CWT, typ = rc-wrp+cwt
Register fallback URL / RP information The Registrar URL should be extracted from requestInfo; if no WRPRC is present or it is invalid, the Wallet applies Register validation using the registry_uri, RP identifier, and intended_use_id from the request extension.
Requested attributes docRequest.itemRequest.nameSpaces

Open point: the current trust specification notes that the mapping of RPRC_19a data in requestInfo is not fully defined in [ETSI TS 119 472-2]. RFC003 should either define an APTITUDE pilot convention for this mapping or mark the related tests as dependent on the final ETSI / APTITUDE profile decision.

Proximity flow trust-check diagram

flowchart LR
Reader[Proximity Reader / RP or RPI] --> DeviceReq[ISO 18013-5 DeviceRequest]
DeviceReq --> ReaderAuth[Check: ReaderAuth signature and WRPAC chain]
DeviceReq --> ReqInfo[Check: requestInfo]
ReqInfo --> EuWrprc[Check: euWrprc WRPRC]
DeviceReq --> Namespaces[Check: requested attributes from namespaces]
ReaderAuth --> WI[Wallet Instance]
EuWrprc --> WI
ReqInfo --> WI
Namespaces --> WI
WI --> TA[Resolve trust anchors from LoTE / trusted-list infrastructure]
WI --> Reg[Query Register if WRPRC missing or invalid]
WI --> Eval[Perform binding, entitlement, scope and EDP checks]
Eval --> User[Display results to User]

Detailed Trust Checks

For the mapping from Section Common Presentation Trust Evaluation Model flowchart labels to the identifiers below, see Flowchart to detailed trust-check index.

TC-PRES-001 — WRP/RPI authentication using WRPAC

Field Description
Performed by Wallet Instance / Wallet Unit
Checked entity Authenticated WRP, which may be the direct RP or an RPI
Input artefacts WRPAC certificate chain, signed request artefact, LoTE trust anchor for Provider of WRPAC
Remote input location WRPAC chain in x5c of signed OpenID4VP Request Object
Proximity input location WRPAC chain in ReaderAuth / mdoc request message
Checks Retrieve trust anchor from the relevant LoTE; construct WRPAC certification path; validate certificate path; validate certificate status where applicable; verify the signature on the request artefact using the WRPAC public key.
Positive result WRP/RPI is authenticated; authorization processing may start.
Negative result Authentication failed. Authorization processing SHALL NOT start.
Test focus Valid chain, invalid chain, unknown trust anchor, expired certificate, revoked certificate, invalid request signature, mismatched signing key.

TC-PRES-002 — User choice to verify RP registration information

Field Description
Performed by Wallet Instance
Checked entity User configuration / Wallet policy
Input artefacts Wallet setting for RP verification
Checks Determine whether the User has opted in to RP verification. The default should be enabled.
Positive result Execute registration verification block: authorization evidence collection, binding, entitlement, and scope comparison.
Negative / disabled result Skip registration verification block and proceed directly to EDP evaluation and User approval.
Test focus Default-enabled setting; enabled path; disabled path; UI indication that registration verification was skipped.

TC-PRES-003 — Authorization evidence extraction

Field Description
Performed by Wallet Instance
Checked entity Presentation request
Input artefacts WRPRC, request registration data, registry URI, RP/final RP identifier, intended use identifier
Remote input location verifier_info in Request Object
Proximity input location euWrprc and related registration data in requestInfo
Checks Extract WRPRC if present. Extract RP/final RP identity, registry URI, and intended_use_id / intended-use reference needed for Register fallback and scope comparison.
Positive result Authorization evidence is available from WRPRC or from request data sufficient to query the Register.
Negative result Evidence cannot be obtained; Wallet records failed verification and proceeds with an advisory to the User, unless a later non-overridable check fails.
Test focus WRPRC present; WRPRC absent but Register URL present; WRPRC absent and Register URL absent; malformed verifier_info; malformed requestInfo; missing intended-use identifier.

TC-PRES-004 — WRPRC format and algorithm validation

Field Description
Performed by Wallet Instance
Checked entity WRPRC
Input artefacts WRPRC from presentation request
Remote rule WRPRC is JWT and typ = rc-wrp+jwt.
Proximity rule WRPRC is CWT and typ = rc-wrp+cwt; signing algorithm is taken from COSE header.
Checks Verify expected type, supported encoding, accepted signature algorithm, no none algorithm, no deprecated or forbidden algorithm.
Positive result Proceed to WRPRC signature and certificate-chain validation.
Negative result WRPRC validation returns CERTIFICATE_INVALID; Wallet falls back to Register validation.
Test focus Correct type; wrong type; unsupported format; none algorithm; deprecated algorithm; malformed JWT/CWT/COSE.

TC-PRES-005 — WRPRC signature, certificate chain, trust anchor, temporal validity and status

Field Description
Performed by Wallet Instance
Checked entity WRPRC and Provider of WRPRCs
Input artefacts WRPRC, WRPRC signing certificate chain, LoTE trust anchor for Provider of WRPRCs, WRPRC iat, exp, and status fields
Checks Verify WRPRC signature; validate certificate chain; resolve trust anchor for Provider of WRPRCs from the relevant LoTE; verify temporal validity; verify status / revocation using the status field; verify coherence between WRPRC subject and scenario context.
Positive result WRPRC becomes authoritative authorization context.
Negative result WRPRC validation returns CERTIFICATE_INVALID; Wallet falls back to Register validation.
Test focus Valid WRPRC; invalid signature; unknown WRPRC provider; expired WRPRC; not-yet-valid WRPRC; revoked WRPRC; subject/context mismatch.

TC-PRES-006 — Register fallback validation

Field Description
Performed by Wallet Instance
Checked entity Registrar / Register response
Input artefacts Registry URI, entity identifier, intended-use identifier, signed Register response, Registrar trust anchor from LoTE
Checks Extract Registrar URL; connect over HTTPS; query by entity identifier and intended_use_id; verify response signature; resolve and validate Registrar trust chain; verify that the response pertains to the relevant authorization subject and intended use; normalize Register-derived data into the same internal model used for WRPRC-derived data.
Positive result Register response becomes authoritative authorization context.
Negative result Register validation returns FAILED; for presentation, this is an advisory to the User and may be overridden.
Test focus Successful Register lookup; unavailable Register; TLS failure; unsigned response; invalid response signature; wrong subject; wrong intended use; unknown Registrar trust anchor; stale or revoked Registrar signing certificate.

TC-PRES-007 — Direct RP binding verification

Field Description
Performed by Wallet Instance
Checked entity Direct RP
Input artefacts Authenticated WRP identifier from WRPAC subject DN, specifically the organizationIdentifier where available; claimed RP identifier from presentation request / RPRC_19a; WRPRC sub and/or Register subject.
Checks For a direct RP scenario, determine that the authenticated WRP identifier and the claimed RP identifier match. Verify that all available identifiers are mutually consistent: WRPAC subject / organizationIdentifier, WRPRC sub, request registration data / RPRC_19a, and Register response if queried. If they do not match, this is an authorization-context integrity failure, not a user choice.
Positive result Direct RP binding is confirmed.
Negative result BINDING_FAILED; non-overridable; presentation must not proceed on that authorization context.
Test focus All identifiers match; WRPRC sub mismatch; request RP identifier mismatch; Register subject mismatch; inconsistent mixed WRPRC/Register data; WRPAC subject DN present but organizationIdentifier absent or malformed.

TC-PRES-008 — Intermediary detection

Field Description
Performed by Wallet Instance
Checked entity Authenticated WRP and claimed final RP
Input artefacts WRPAC subject identifier, claimed RP/final RP identifier from presentation request
Checks Compare authenticated WRP identifier with claimed RP identifier. If they match, treat as direct RP. If they differ, treat as intermediary scenario.
Positive result Scenario type is determined.
Negative result Not applicable as a pass/fail check, but missing final RP information should lead to an intermediary authorization failure.
Test focus Direct RP; valid intermediary; missing final RP identifier; ambiguous identifiers; same trade name but different legal identifier.

TC-PRES-009 — Intermediary association verification

Field Description
Performed by Wallet Instance
Checked entity RPI acting on behalf of final RP
Input artefacts Authenticated intermediary identifier from WRPAC, final RP authorization context from WRPRC or Register, intermediary structure where available
Checks Verify that the authenticated intermediary is authorized to act on behalf of the final RP. If WRPRC is valid, check that the final RP WRPRC contains an intermediary structure and that intermediary.sub matches the authenticated intermediary identifier. If WRPRC is unavailable or invalid, query the Register and verify that the intermediary is listed as authorized for that RP.
Positive result Intermediary relationship is confirmed; subsequent authorization checks use the final RP context, not the intermediary context.
Negative result INTERMEDIARY_NOT_AUTHORIZED; non-overridable.
Test focus Valid intermediary in WRPRC; valid intermediary in Register fallback; intermediary not listed; intermediary listed for different RP; mismatched intermediary.sub; missing final RP info.

TC-PRES-010 — Intermediated RP context coherence

Field Description
Performed by Wallet Instance
Checked entity Final / intermediated RP
Input artefacts Final RP identifier from request, WRPRC sub, Register response subject, intermediary data
Checks Verify that the final RP identifier is consistent across all available sources. Ensure entitlement verification, scope comparison, and EDP evaluation are applied to the final RP context, not the intermediary identity.
Positive result Final RP authorization context is coherent.
Negative result BINDING_FAILED; non-overridable.
Test focus Consistent final RP; final RP mismatch between request and WRPRC; final RP mismatch between request and Register; Wallet incorrectly applies intermediary context to scope or EDP.

TC-PRES-011 — Entitlement verification

Field Description
Performed by Wallet Instance
Checked entity Authorization subject: direct RP or final RP in intermediary scenario
Input artefacts Authorization context from WRPRC or Register, entitlements array
Checks Verify that the authorization subject contains the expected presentation entitlement: https://uri.etsi.org/19475/Entitlement/Service_Provider.
Positive result Entitlement is valid; proceed to scope comparison.
Negative result WRONG_ENTITLEMENT; in presentation this is advisory and user-overridable.
Test focus Correct Service_Provider entitlement; missing entitlement; wrong entitlement such as issuer/provider entitlement; entitlement present only for intermediary but not final RP; malformed URI.

TC-PRES-012 — Requested-attribute extraction

Field Description
Performed by Wallet Instance
Checked entity Presentation request
Input artefacts Requested credential/claim structures
Remote rule Extract from DCQL credential_queries.claims.
Proximity rule Extract from docRequest.itemRequest.nameSpaces.
Checks Build normalized list of requested credential types, document types, namespaces and claim paths for scope comparison and User display.
Positive result Requested attributes are available in normalized form.
Negative result Request cannot be reliably compared to registered scope; Wallet should present advisory or reject according to the profile’s request validation rules.
Test focus Single claim; multiple claims; nested claim path; unknown namespace; duplicate claim; malformed DCQL; malformed mdoc namespace request.

TC-PRES-013 — Scope comparison / over-asking detection

Field Description
Performed by Wallet Instance
Checked entity RP/final RP authorization context and requested attributes
Input artefacts Normalized requested attributes, registered credentials, claim, meta.vct_values, doctype_value from WRPRC or Register
Checks Compare requested attributes against registered scope. Matching is exact and case-sensitive. For SD-JWT VC, compare claim paths and vct_values. For mdoc, compare namespaces/items and doctype_value.
Positive result VERIFICATION_PASSED; requested attributes are within registered scope.
Negative result OVERASKING_DETECTED; advisory and user-overridable. Wallet identifies unregistered attributes.
Test focus Exact match; case mismatch; extra unregistered attribute; registered credential type but unregistered claim; unregistered credential/document type; scope defined through WRPRC; scope defined through Register fallback.

TC-PRES-014 — EDP presence check

Field Description
Performed by Wallet Instance
Checked entity Each matching attestation selected for possible presentation
Input artefacts Locally stored EDP associated with the attestation
Checks Determine whether an EDP exists for the attestation. PIDs are not assumed to have EDPs. EDPs apply to QEAAs, PuB-EAAs, and non-qualified EAAs.
Positive result If no EDP exists, the attestation is allowed subject to User approval. If EDP exists, proceed to EDP policy evaluation.
Negative result Not applicable; absence of EDP is not a failure.
Test focus Attestation with no EDP; attestation with EDP; PID with no EDP; multiple attestations with different EDPs.

TC-PRES-015 — EDP evaluation: Authorized Relying Parties Only

Field Description
Performed by Wallet Instance
Checked entity Direct RP or final RP in intermediary scenario
Input artefacts EDP authorized_parties; direct RP subject DN from WRPAC for direct RP scenarios; final RP identity and entitlements or sub-entitlements from WRPRC/Register for intermediary scenarios.
Checks For direct RP, evaluate the direct RP identity. For intermediary scenario, evaluate the final RP identity and do not use the intermediary identity as a substitute. Match the direct RP subject DN against subject_dn entries where applicable and/or match the RP/final-RP entitlement or sub-entitlement against entitlement_uri entries. A match on either criterion is sufficient if the policy allows it.
Positive result EDP_SATISFIED; attestation may be presented subject to User approval.
Negative result EDP_NOT_SATISFIED; Wallet shows advisory / negative outcome and may allow User override.
Test focus Authorized direct RP by subject DN; authorized final RP behind intermediary; intermediary authorized but final RP not authorized; entitlement match; no match; DN formatting comparison; wallet incorrectly using intermediary identity to satisfy EDP.

TC-PRES-016 — EDP evaluation: Specific Root of Trust

Field Description
Performed by Wallet Instance
Checked entity RP/final RP trust root
Input artefacts EDP trusted_roots; WRPAC chain for direct RP scenarios; Provider-of-WRPRCs root certificate information for the final/intermediated RP where applicable.
Checks For direct RP, extract issuer DN and serial number from the root or intermediate certificates in the WRPAC chain and compare against trusted_roots. For intermediary scenario, retrieve root certificate information of the Provider of WRPRCs for the final RP and compare against trusted_roots. The intermediary trust root must not be used as a substitute for the final RP authorization context.
Positive result EDP_SATISFIED; attestation may be presented subject to User approval.
Negative result EDP_NOT_SATISFIED; Wallet shows advisory / negative outcome and may allow User override.
Test focus Matching trusted root; non-matching root; serial-number mismatch; issuer-DN normalization; direct RP vs intermediary behavior.

TC-PRES-017 — User transparency and final approval

Field Description
Performed by Wallet Instance and User
Checked entity Final presentation decision
Input artefacts Results of authentication, registration verification, binding, intermediary, entitlement, scope, and EDP checks
Checks Wallet displays at least: RP/final RP identity, intermediary identity where applicable, requested attributes, intended-use description, privacy-policy link, support/contact information where available, and advisories. User approves or denies disclosure.
Positive result If User approves and no non-overridable failure exists, selected attestations are presented.
Negative result If User denies, presentation is cancelled. If User denies an attestation affected by EDP, Wallet behaves as if the attestation does not exist.
Test focus Display direct RP identity; display intermediary and final RP identity; display unregistered attributes; display missing verification advisory; display EDP negative result; block continuation after non-overridable failure.

Trust Anchor and Trusted List Checks

The following checks are used by several of the above procedures. They may be tested separately or as dependencies of WRPAC, WRPRC, and Register validation.

flowchart TD
A[Need trust anchor] --> B{Trust anchor type}
B -->|Provider of WRPAC| L1[Check WRPAC Provider LoTE]
B -->|Provider of WRPRC| L2[Check WRPRC Provider LoTE]
B -->|Registrar| L3[Check Registrar LoTE]
B -->|Qualified / TL-based entity| L4[Check LOTL and EUMS TL]
L1 --> V[Validate trusted-list authenticity, integrity, freshness]
L2 --> V
L3 --> V
L4 --> V
V --> TA[Extract trust anchor]
TA --> Use[Use trust anchor in certificate/path validation]

TL-PRES-001 — Trusted-list authenticity, integrity and freshness

Field Description
Performed by Wallet Instance or trust-validation component used by Wallet
Checked entity LoTE, LOTL, EUMS TL, depending on trust anchor type
Input artefacts Trusted list, list signature, signing certificate, list metadata such as NextUpdate
Checks Validate trusted-list signature; verify that the signing certificate is authentic for the list; check list freshness / NextUpdate; extract relevant trusted entity entry and trust anchor.
Positive result Trust anchor can be used for certificate-path validation.
Negative result Trust anchor cannot be used; dependent WRPAC/WRPRC/Register validation fails.
Test focus Valid list; invalid signature; expired list; signer not authorized; missing entity; wrong service type.

Decision and Override Matrix

Check Negative result Effect in Presentation
WRPAC authentication Authentication failed Blocking and non-overridable. Authorization must not start; WRPAC authentication is a precondition to the authorization process.
WRPRC validation CERTIFICATE_INVALID Not final. Triggers Register fallback.
Register validation FAILED Advisory to User; may proceed with warning.
Direct RP binding BINDING_FAILED Blocking; non-overridable.
Intermediary association INTERMEDIARY_NOT_AUTHORIZED Blocking; non-overridable.
Intermediated RP context coherence BINDING_FAILED Blocking; non-overridable.
Entitlement verification WRONG_ENTITLEMENT Advisory; user-overridable in presentation. Non-overridable only for issuance.
Scope comparison OVERASKING_DETECTED Advisory; user-overridable.
EDP evaluation EDP_NOT_SATISFIED Advisory / negative policy result; user-overridable in the current APTITUDE presentation profile.
User final approval User denies Presentation cancelled.

APTITUDE Alignment and Traceability

The TC-PRES identifiers are local test-check identifiers; the authoritative profile requirements remain the APTITUDE AUTHZ requirements and the authorization-process text.

RFC003 check(s) APTITUDE concept / requirement Notes for test matrix
TC-PRES-001 AUTHZ-GEN-01 / AUTHZ-GEN-02 authentication prerequisite Keep WRPAC validation as a precondition; if authentication fails, authorization does not start.
TC-PRES-002 AUTHZ-PRES-04 user setting for RP verification Registration verification is default-enabled but user-optional; EDP evaluation remains always executed.
TC-PRES-003 to TC-PRES-006 AUTHZ-GEN-05 to AUTHZ-GEN-10; WRPRC validation and Register fallback WRPRC validation failure returns CERTIFICATE_INVALID and triggers Register validation; Register FAILED is advisory in presentation.
TC-PRES-007 to TC-PRES-010 AUTHZ-GEN-04, AUTHZ-GEN-11/12, AUTHZ-INT-03/04/06/07 Direct RP binding and intermediary/final-RP coherence are non-overridable. Test final RP context separately from intermediary identity.
TC-PRES-011 AUTHZ-GEN-13; presentation Service_Provider entitlement WRONG_ENTITLEMENT is advisory/user-overridable in presentation.
TC-PRES-012 to TC-PRES-013 AUTHZ-PRES-01 / AUTHZ-PRES-02 scope comparison Exact and case-sensitive comparison; OVERASKING_DETECTED must identify unregistered attributes and is user-overridable.
TC-PRES-014 to TC-PRES-016 AUTHZ-EDP-03 to AUTHZ-EDP-08 EDP must be evaluated for each matching attestation. In intermediary scenarios evaluate the final RP, not the intermediary.
TC-PRES-017 AUTHZ-UI-07 to AUTHZ-UI-12; AUTHZ-INT-05 Display final RP, intermediary where applicable, requested attributes, intended use, privacy-policy link, and advisories before final approval.