Wallet2 Integration
Link the Trust Registry to a Wallet2 Service to authenticate signed OpenID4VP Request Objects (x509_hash / x509_san_dns) against relying-party certificates from loaded trust lists. Static PEM pins remain available as break-glass anchors and are unioned with registry-derived certificates.
This is verifier Request Object trust, not credential-issuer trust. Issuer list membership (PID_PROVIDER) is not mixed into JAR PKIX. For credential verification at presentation time, see Verifier Integration.
Architecture
┌─────────────────────────────────────────────────────────────────┐
│ Signed Request Object Auth │
│ │
│ Wallet2 present / resolve / preview / reject │
│ │ │
│ │ PEM pins ∪ RP registry certs │
│ ▼ │
│ InMemoryTrustStore (per request) │
│ ▲ │
│ │ RELYING_PARTY_PROVIDER identities │
│ Trust Registry Service │
│ │ │
│ Loaded Trust Sources (TSL, LoTE) │
└─────────────────────────────────────────────────────────────────┘
Prerequisites
- A Trust Registry Service with at least one trust source that lists relying parties (LoTE type
EUWRPRCProvidersList, or another list whose entities map toRELYING_PARTY_PROVIDER/ACCESS_CERTIFICATE_PROVIDER). See Setup and Trust Source Management. - A Wallet2 Service in the same tenant.
Link Trust Registry to Wallet2
Add the Trust Registry as a dependency of your Wallet2 service:
Endpoint: /v2/{target}/wallet-service-api/dependencies/add
Example Request
curl -X 'POST' \
'https://{orgID}.enterprise-sandbox.waltid.dev/v2/{wallet2Target}/wallet-service-api/dependencies/add' \
-H 'accept: */*' \
-H 'Authorization: Bearer {yourToken}' \
-H 'Content-Type: application/json' \
-d '{
"dependency": "myorg.tenant1.trust-registry"
}'
Path Parameters
orgID: String — Your organization's Base URL prefix.wallet2Target: String — The Wallet2 service path, e.g.myorg.tenant1.wallet1.
Header Parameters
Authorization: String — Bearer token for authentication. Format:Bearer {yourToken}.
Body Parameters
dependency: String — The full path to the Trust Registry service, e.g.myorg.tenant1.trust-registry.
Response Codes
201— Dependency added successfully.
How JAR Trust Is Derived
On each present, resolve, preview, reject, and isolated-flow step, Wallet2 rebuilds ClientIdTrustConfiguration from:
configuration.requestObjectX509Trust.x509TrustAnchorsPem— optional PEM pins.- Certificate identities on the linked Trust Registry whose entity type is
RELYING_PARTY_PROVIDERorACCESS_CERTIFICATE_PROVIDER, whose service status isGRANTED/RECOGNIZED/ACCREDITED/SUPERVISED, and whose sourceassurance.acceptedis true.
When CA certificates are present in that set, they are preferred as PKIX trust anchors. Otherwise the listed service certificates (often RP leaves in a LoTE) are used as anchors.
If the union is empty, x509TrustAnchors is omitted and x509_hash / x509_san_dns fail closed. Linking a Trust Registry that only contains issuer (PID_PROVIDER) identities does not enable signed Request Object authentication.
Wallet2 may only resolve and list through the dependency proxy. Load and refresh trust sources on the Trust Registry service itself.
Related configuration
- Pin extra anchors with
requestObjectX509Truston Wallet2 — see Wallet2 Setup. - Register unsigned
pre-registeredverifiers withpreRegisteredClientsandredirect_urison the same Wallet2 configuration.
