evidence object under provenance. It preserves the signed proof material behind the verification so you (or an auditor) can verify the result against the signer’s own keys, rather than taking Hopae’s word for it.
Why evidence exists
Because Hopae sits in the middle, a sceptical RP could ask: how do I know Hopae returned the provider’s data faithfully, and didn’t change a name or a birthdate along the way? Evidence answers that. A cryptographic signature travels end-to-end, so the proof you verify was produced by the signer, not fabricated by the gateway. What you can establish depends on the artifact:- A signed assertion (JWS, SAML, COSE, passport SOD, detached signature) gives you integrity, authenticity, and non-repudiation against the signer’s keys.
- Integrator evidence (see below) proves Hopae received and attests to exactly this data: integrity and non-repudiation from Hopae, for providers that issue no signature of their own.
- Opaque companions (such as a Bearer
access_token) and unsigned fields carry no independent proof. Don’t treat them as verification material. - Wallet presentations (mdoc, Verifiable Presentation) carry their own proofs that you validate against the issuer’s trust chain.
Where to find it
Evidence appears per credential, alongside the source’sclaims:
provenance.
Two kinds of token evidence
Not all eID providers issue a signed assertion. So evidence comes from one of two sources. Detect them by key presence, not by a single field:- Integrator:
evidence.token.integrator_jwsis present (withtoken_type: "integrator"). - Pass-through: anything else with a
tokenobject: the provider’s own artifacts.
A
token object can also hold non-proof material, e.g. an opaque access_token with token_type: "Bearer". Verify the signed artifact (a JWS, SAML assertion, COSE signature, or SOD), not its opaque companions.Pass-through evidence
The provider’s signed artifact is relayed as-is. Hopae never re-signs it. (Token-string artifacts like JWS and SAML pass through unchanged. Wallet artifacts may be re-encoded for transport, e.g. CBOR→base64, but the issuer signature is preserved.) Common signed forms:id_token/userinfo_jws: a JWS signed by the provider.saml_response: a signed SAML assertion (base64).signature+certificate(+signed_hash): a detached signature with the signer’s certificate.sod+ data groups (dg1…dg14): a passport’s Document Security Object (ICAO 9303 passive authentication).signed_pdf(+signed_hash): a signed PDF document.issuerAuth: an ISO 18013-5 mdoc COSE signature (see Wallet evidence).
provenance._metadata.provider_id and credential_id. The connection’s details in the Console tell you which authority that is.
Integrator evidence
When a provider does not return a signed assertion of its own, Hopae signs the provider’s claims with its own OIDC signing key (RS256), so the payload is still integrity-protected and attributable to Hopae.https://connect.hopae.com/jwks. These are the same keys that sign ID tokens.
kid.
Wallet evidence (mdoc / VP)
Wallet credentials do not use the{ token, names } shape. They place their fields directly on evidence, and you validate their proofs yourself against the issuer’s trust chain:
Reading the evidence object
Detect the shape before reading, becausenames exists only for the token shape:
What is relayed vs. set by the gateway
The signed artifact itself is always the signer’s (pass-through) or Hopae’s (integrator). That is what you verify. A few convenience fields around it are added by the gateway and are not covered by any signature:expires_at: derived from the artifact (e.g. theid_token’sexp).- Some
token_typelabels (Bearer,icao_9303_lds,iso_18013_5_mdoc,integrator): set by Hopae to describe the artifact.
Related
- Return Data Model: the full payload
evidencesits inside - Data Types: Provenance: copy-paste types
- Get Verification UserInfo: the REST response that carries
provenance - OIDC Integration: issuer, discovery, and JWKS

