What every wallet result is checked against
For an ISO/IEC 18013-5 mobile document, Alentra runs four independent checks before a wallet-backed step can succeed. If any fails, the step fails — there is no partial trust.1. Issuer authenticity — it's really from the government
1. Issuer authenticity — it's really from the government
The credential is signed by a Document Signing certificate that must chain to a
trusted IACA root (the issuing authority’s published trust anchor, e.g. via
the AAMVA VICAL for US licenses). A credential from an untrusted issuer is
rejected.
2. Data integrity — the values weren't altered
2. Data integrity — the values weren't altered
Every disclosed field is re-hashed and matched against the issuer-signed digest
commitments in the credential’s security object. A single altered character —
say, a changed birth date — fails the check.
3. Device-key binding — not a copied credential
3. Device-key binding — not a copied credential
The wallet proves possession of the device key the issuer bound to the
credential by signing the request. A captured or copied credential can’t be
re-presented without that key.
4. Freshness — it's not a replay
4. Freshness — it's not a replay
The holder’s signature covers a fresh, per-step nonce and your origin, so
a response captured for one request can’t be replayed against another. Validity
dates on the credential are checked too.
Development, sandbox, and production
Sandbox is not merely relaxed production: it uses Google’s published test request
certificate, RP metadata, credential profile, and trust root. Production fails closed
if required verifier credentials, trust roots, encryption, signing, storage, or rate
limiting are absent. Sandbox and simulated outputs must never be represented as a
real person’s identity or a production signature.
Audit ledger
Every successfully verified step writes an immutable audit record. It preserves what was verified and provides machine-checkable integrity; legal effect still depends on the transaction, notices, consent, jurisdiction, and applicable law.Hash-chained
RFC 8785 canonical JSON is SHA-256 hashed and linked to the previous step’s hash.
Any content change or reordering is detectable.
Trusted timestamp
ts_status: "ok" means the RFC 3161 token passed the configured TSA signer-chain
and policy checks during the initial write. An outage is recorded as deferred;
a recovered token is merged at read time with ts_backfilled: true without
mutating the audit row.Sealed identity
Signer PII and the complete wallet DeviceResponse/transcript are envelope-
encrypted with object-specific AAD. For
age_verify, the business receives only
the threshold result; full evidence remains in the legal tier.Atomic with the result
Result, audit, usage charge, and any signed-document retention promotion commit
in one transaction.
alentra_signature: Alentra’s ES256 signature
over the canonical record_hash, identified by an exact key-version kid. Current
and retained public keys are published at
https://api.alentra.app/.well-known/alentra-audit-jwks.json with CORS enabled.
For sign, the audit has the signed manifest digest and every per-file hash, while
Alentra retains the exact original bytes as immutable evidence. light_sign retains the
exact canonical terms. Persist the audit_id alongside your own case/order id in
session metadata to retrieve the record later.
Verify a record offline
The Go service source includescmd/verify-audit. From the alentra-services tree,
give it an audit JSON file, a downloaded JWKS file, and trusted issuer roots:
-google-sandbox. The verifier reproduces the
canonical record hash, verifies Alentra’s public signature, checks the wallet-evidence
digest, reconstructs the signed transcript/content nonce, and re-runs issuer, MSO,
disclosure, and DeviceAuth verification when decrypted wallet_evidence is present.
For wallet-backed results, the business audit response includes decrypted wallet
evidence for
identify, sign, and light_sign. It deliberately withholds it for age_verify because the
DeviceResponse contains the identity used to derive the boolean. An age record can
still be checked for audit hash/Alentra signature integrity; re-running its wallet
proof requires an authorized legal-tier disclosure.Neither the public Alentra signature nor the audit format alone guarantees court
admissibility, legal enforceability, notarization, or suitability for a particular
transaction. Those conclusions require the full evidence and a legal assessment.