01 · Engage
NFC tap
The patron taps their phone to the verifier. The tap carries the device engagement, not the credential.
LaurelID Verifier
An Android application that engages a mobile ID, validates it cryptographically against authenticated issuer trust material, and answers one question: is this person 21 or older?
01 · The exchange
Engagement begins with an NFC tap and completes over Bluetooth Low Energy — the pairing the ISO/IEC 18013-5 device-retrieval flow is built around. There is no QR handshake in the current release.
01 · Engage
The patron taps their phone to the verifier. The tap carries the device engagement, not the credential.
02 · Transfer
The credential response travels over an encrypted BLE session bound to the engagement that just happened, so a response cannot be lifted and replayed into a different session.
03 · Validate
Issuer signature, security object, element digests, device binding, and session integrity are all checked before any claim is read.
04 · Decide
The age claim is read only from the verified document model. Anything short of a valid proof is not a pass.
02 · Minimal disclosure
A mobile ID can answer “is this person over 21?” without disclosing a birth date, because the credential carries pre-computed age attestations. The verifier asks for exactly one of them.
intentToRetain: false mattersIt is a declaration to the wallet, carried inside the signed request, that the verifier will not store what it is shown. Wallets can surface that declaration to the holder. Setting it honestly is the difference between a privacy claim and a privacy property.
The verifier cannot answer a different age threshold, cannot produce a redacted ID image, and cannot be configured to collect a second element. If your workflow needs any of those, LaurelID is the wrong tool and we will tell you so during scoping.
03 · What staff see
The renders below are built from the product’s own outcome vocabulary and design tokens. They illustrate the decision states; they are not screenshots of a live shift.
21+ Verified
Proceed
pass
Under 21
Refuse per your policy
fail
Unable to verify
Use your manual fallback
unable_to_verify
04 · Operator experience
The verifier is designed around the constraints of a real checkpoint: low light, gloves, noise, a queue behind the person in front of you, and staff who were trained in five minutes.
05 · Trust material
A verifier is only as good as the issuers it trusts. LaurelID accepts exact certificate bytes authenticated through the signed AAMVA Digital Trust Service VICAL or reviewed directly from an issuing authority's official endpoint. A wallet listing, URL, subject label, or credential-provided root is not a substitute.
Builds ship reviewed public trust files. VICAL refresh verifies the signed publication and provider chain; direct-source pins are admitted only after the official certificate bytes and jurisdiction binding are reviewed.
Activation is keyed to the authenticated publication date, so an older package cannot be replayed over a newer one. An invalid update leaves the last known-good copy in place.
A verification does not need a live network connection. Offline operation remains available only while both the device policy lease and the admitted signed trust publication are valid. Laurel begins refreshing trust before expiry and keeps a still-valid current bundle if a refresh fails. An invalid candidate never replaces it, and no grace period revives expired, revoked, rolled-back, or incorrectly signed trust material.
Android system or user CAs, roots supplied by the presented credential, imported roots, test IACAs, and indefinitely stale trust packages. Widening the trust set is the easiest way to make a verifier look more compatible and the fastest way to make it worthless.
A pilot puts real hardware in staff hands at one location for thirty days.