CodeB Wallet · NFC · ISO/IEC 18013-5

Door access on the phone, bound to a hardware key

A CodeB Access card is a door access card in CodeB Wallet. Your administrator issues it with sites, door groups and validity; the card is signed by your site and bound to a key that never leaves the phone’s secure hardware. Readers check it offline, and a lost phone is replaced in one step.

NFC · ISO/IEC 18013-5 mdoc · SD-JWT VC · OpenID4VCI 1.0 · hardware key attestation · status list

Issuance is available; use at door readers is being tested in the CodeB Wallet closed beta. Test credentials, not certified.

CodeB Access card in the wallet: a phone sending to a door over NFC

In short

What
A door access card in the CodeB Wallet Android app, issued by the site’s administrator.
Formats
One card in two standard formats with the same data: an ISO/IEC 18013-5 mdoc (io.codeb.access.1) for readers and an SD-JWT VC for online use.
On the card
A random card number, sites, door groups, start and end, optional schedule and name, and the phone unlock rule. No photo, no date of birth, never the login.
Key
Bound to a key in the phone’s secure hardware (StrongBox or TEE), proven by a key attestation when the card is collected.
Revocation
At once, through the site’s status list, for both formats.
Lost phone
One step: the old card is revoked and the same access goes to the new phone with a new card number.

How it works

The site issues, the phone holds the key, the reader checks offline.

The administrator issues

On the admin page the administrator picks the member, the sites and door groups, the start and the number of days (30 by default) or an end date, and whether the phone only has to be unlocked or needs a fingerprint or screen lock on every tap.

The member collects

The member opens the invitation link or QR code with CodeB Wallet and signs in as themselves. The phone creates a key in its secure hardware and proves it with a key attestation; without it, no card is issued.

At the door

The holder chooses the card in CodeB Wallet and holds the phone to the reader. The phone answers the reader’s fresh challenge with a signature from its hardware key, together with the card data signed by the site.

The reader checks

Offline: the site’s root certificate, the document signer, the signed card data, the phone’s signature, the validity and the cached status list. Then it checks the site and door group.

Revoke or replace

The administrator revokes a card in one click, or replaces it after a lost phone. Readers refuse it as soon as they have the new status list.

Security

No copies, no replay

The card is bound to a key in the phone’s secure hardware. Every presentation signs a fresh challenge, so recorded or copied data does not open a door.

Only genuine phones

A card is issued only after the phone proved its key with a hardware key attestation from the CodeB wallet provider. A phone that cannot do this gets no card.

The phone in the right hand

The phone must be unlocked, or, if the administrator chose it, confirm every tap with a fingerprint or the screen lock.

Signed by the site

The card data is signed by the site’s document signer under its own root certificate (IACA). Changed data fails the check; no self-signed key is ever used.

Works offline

A reader needs no network for a decision: the root certificate and the status list are cached. Being online only makes the status fresher.

Time-limited

Every card has an end date set at issuance (at most 366 days) and is never issued after it.

Privacy by design

  • The card number is random. The login of the member never reaches a reader.
  • No photo, no date of birth, no address. A name is on the card only if the administrator adds one.
  • Each card is collected once, by signing in as the member; it cannot be collected from a forwarded link alone.

What the server keeps

  • The card, its state and who it belongs to.
  • The key record of the phone that collected it: key storage (StrongBox or TEE) and public key fingerprints, so a lost phone can be replaced. No private keys.
  • No database: the site’s own files, on the site’s own server.

Lost phone

The administrator presses “Lost phone” on the card. The card on the lost phone is revoked at once in both formats. The member gets an invitation for the new phone with the same sites, door groups, schedule, unlock rule and end date, and a new card number. The chain from the old card to the new one stays visible to the administrator.

For administrators and developers

Admin page
/access-cards-admin.html: issue, list, revoke, lost phone.
Issue
POST /vci.ashx?access-offer
List
GET /vci.ashx?access-cards
Lost phone
POST /vci.ashx?access-reenroll
Revoke
POST /vci.ashx?revoke-offer
Reference
API docs and openapi.json. All admin calls need an administrator’s sign-in.

Standards

  • ISO/IEC 18013-5 mdoc data model, issuer authentication and device authentication
  • OpenID for Verifiable Credential Issuance (OpenID4VCI) 1.0
  • SD-JWT-based Verifiable Credentials (SD-JWT VC)
  • X.509 certificates (RFC 5280), COSE (RFC 9052)
  • EU Architecture and Reference Framework (ARF) 3.0 (design target, not certified)
  • eIDAS 2.0, Regulation (EU) 2024/1183
  • Android hardware key attestation (StrongBox / TEE)
  • ISO/IEC 14443 (NFC)

Frequently asked questions

What is a CodeB Access card?

A door access card in CodeB Wallet. Your administrator chooses the sites, door groups, validity and the phone unlock rule; you collect the card once by signing in. The card is signed by the site and bound to a key in your phone's secure hardware.

Which phones work?

Android phones with CodeB Wallet whose key is held in secure hardware (StrongBox or TEE), proven by a key attestation when the card is collected. iPhones are not supported.

Does the phone need internet at the door?

No. The card and its signatures are on the phone, and a reader that checks ISO/IEC 18013-5 mdocs verifies the issuer signature and a fresh signature from the phone offline. Revocation reaches readers through the status list.

Can a card be copied to another phone?

No. Every presentation is signed with a key that never leaves the phone's secure hardware, over a fresh challenge from the reader. Copied card data without that key is refused.

What does a door reader learn about me?

The card number (a random number, not your login), your sites, door groups and validity, and the unlock rule. Your name is on the card only if the administrator added it. There is no photo and no date of birth.

I lost my phone. What now?

Tell your administrator. The card on the lost phone is revoked at once, and you get the same access on your new phone with a new card number.

Is it certified?

No. CodeB Access cards are test credentials during the CodeB Wallet closed beta. They are designed to follow ISO/IEC 18013-5, OpenID4VCI 1.0 and the EU Architecture and Reference Framework (ARF) 3.0, but they are not certified.

How can I try it?

CodeB Wallet is in closed beta. To become a tester, write to info@aloaha.com.

Door access without plastic cards?

Write to us about access cards in CodeB Wallet, the admin page or the API. Testers for CodeB Wallet are welcome too.