Emirates ID
Status: project-defined demo profile on a standardised container. The document type and namespaces are the ISO/IEC 23220 Photo ID standard, so any Photo-ID-capable verifier can request it; the choice of elements and the card design are this project’s, made to mirror the physical Emirates ID for demos. It is not approved, certified or issued by the UAE Federal Authority for Identity, Citizenship, Customs & Port Security (ICP), and all demo data is fictional.

What is on it
Section titled “What is on it”| Field | Name to request | Example |
|---|---|---|
| Given names / family name | given_name, family_name |
Abdul / Hakim |
| Name in Arabic | given_name_viz, family_name_viz |
عبد / الحكيم |
| ID number | person_id |
784-1990-2468135-7 |
| Date of birth | birth_date |
1991-05-13 |
| Nationality | nationality |
Singaporean |
| Sex | sex |
Male |
| Photo | portrait |
(image) |
| Card number | document_number |
118542367 |
| Issue / expiry dates | issue_date, expiry_date |
2024-05-20 / 2034-05-19 |
| Age checks | age_over_18, age_over_21 |
true |
| Issuing authority | issuing_authority |
Federal Authority for Identity, Citizenship, Customs & Port Security |
All fields except person_id live in the standard namespace org.iso.23220.1; person_id is in
org.iso.23220.photoid.1.
Typical requests
Section titled “Typical requests”- Identity (a signup): given and family name,
person_id,birth_date,nationality,expiry_date,portrait. - Age (a door):
portrait,age_over_18.
// webRequests.photoId(['given_name', 'family_name', 'birth_date', 'nationality', 'expiry_date', 'portrait'], ['person_id'])// in personEmiratesId.IDENTITY_CHECK // or EmiratesId.AGE_OVER_21Where it is used
Section titled “Where it is used”- Hello Mobile verifies it online.
- The Verify app offers the identity and age checks in person.
- The demo wallet issues itself one on first run.
Standards and references
Section titled “Standards and references”- ISO/IEC 23220-2 (generic identity data elements, namespace
org.iso.23220.1) and the Photo ID application profile (org.iso.23220.photoid.1). - ISO/IEC 18013-5 container and mechanisms: see mdoc architecture.
- ISO/IEC 5218 for
sex.
Doctype and namespaces
Section titled “Doctype and namespaces”| docType | org.iso.23220.photoid.1 (DocTypes.PHOTO_ID) |
| namespace | org.iso.23220.1 (core identity elements) |
| namespace | org.iso.23220.photoid.1 (Photo ID elements; person_id carries the ID number) |
Definition: demo/brand-hakim/.../EmiratesId.kt (EmiratesId.type, EmiratesId.presets).
Attributes
Section titled “Attributes”Namespace org.iso.23220.1:
| Identifier | Meaning | CBOR | Required | Encoding | Example |
|---|---|---|---|---|---|
family_name |
family name, Latin | tstr | yes | as printed | "Hakim" |
given_name |
given names, Latin | tstr | yes | "Abdul" |
|
family_name_viz |
family name as printed in the card’s visual zone (Arabic) | tstr | no | UTF-8 Arabic | "الحكيم" |
given_name_viz |
given names as printed (Arabic) | tstr | no | "عبد" |
|
birth_date |
date of birth | full-date | yes | tag 1004 YYYY-MM-DD |
1991-05-13 |
sex |
sex | uint | no | ISO/IEC 5218 (1 male, 2 female) | 1 |
nationality |
nationality | tstr | no | demo: adjective as printed | "Singaporean" |
birthplace |
place of birth | tstr | no | "Singapore" |
|
portrait |
holder photo | bstr | yes | JPEG | (bytes) |
document_number |
card number | tstr | no | digits as printed on the card back | "118542367" |
issue_date |
issuing date | full-date | yes | 2024-05-20 |
|
expiry_date |
expiry date | full-date | yes | 2034-05-19 |
|
issuing_authority |
issuing authority | tstr | no | "Federal Authority for Identity, Citizenship, Customs & Port Security" |
|
issuing_country |
issuing country | tstr | no | ISO 3166-1 alpha-2 | "AE" |
age_over_18, age_over_21 |
age attestations | bool | no | derived at issuance | true |
age_in_years, age_birth_year |
age helpers | uint | no | derived at issuance | 33, 1991 |
Namespace org.iso.23220.photoid.1:
| Identifier | Meaning | CBOR | Required | Encoding | Example |
|---|---|---|---|---|---|
person_id |
the Emirates ID number | tstr | yes | 784-YYYY-NNNNNNN-C as printed |
"784-1990-2468135-7" |
Conventions specific to this profile: the Arabic name uses the standard *_viz (“visual inspection
zone”) elements, since ISO 23220-2 has no dedicated national-character name elements; nationality
holds the printed adjective rather than a country code so the card reads as printed. Both are
documented choices, not standard requirements. Every value above is in the issued document and
covered by the issuer signature; nothing is UI-only.
Card field mapping
Section titled “Card field mapping”| On the card | Source | Kind |
|---|---|---|
| UNITED ARAB EMIRATES / federal authority / Resident Identity Card (EN + AR) | fixed text | decorative |
| State emblem | asset supplied by the project owner | decorative |
| Portrait; faint secondary portrait | portrait (second copy faded, greyscale) |
data |
| ID Number / رقم الهوية | person_id |
data |
| Name / الإسم | given_name + family_name; given_name_viz + family_name_viz |
data |
| Date of Birth / تاريخ الميلاد | birth_date as dd/MM/yyyy |
derived format |
| Nationality / الجنسية | nationality; Arabic from a small lookup in the face |
data / derived |
| Issuing Date, Expiry Date (EN + AR labels) | issue_date, expiry_date |
derived format |
| Sex / الجنس | sex → M/F, ذكر/أنثى |
derived |
| Signature / التوقيع | holder signature asset supplied by the project owner | decorative (not a data element) |
| Background print, Dubai typeface | drawn | decorative |
Face: demo/brand-hakim/.../EmiratesIdFace.kt.
Issuance and provisioning
Section titled “Issuance and provisioning”Demo: EmiratesIdSeeder builds the NameSpacedData above and DemoIssuer mints the mdoc on first
run (validity 10 years), signed by the demo Document Signer under the demo IACA. A real deployment
would issue over OpenID4VCI from the authority’s issuer; the wallet side (issueFromOffer) is the same.
Issuer authentication and trust
Section titled “Issuer authentication and trust”Verifiers trust the demo IACA (in the demo VICAL, which lists org.iso.23220.photoid.1 for it); on
the web the Verify API holds it per tenant. A VICAL entry that lists only the mDL doctype
rejects this document, by design.
Device binding and presentation
Section titled “Device binding and presentation”Standard: the device key in the MSO signs the session transcript (proximity, OpenID4VP or DC-API). Device-tested online (Hello Mobile, via the Verify API); the in-person presets exist in the Verify app and await a two-phone test.
Validity and revocation
Section titled “Validity and revocation”Validity comes from the MSO window. The self-issued demo document carries no status reference, so
verifiers report revocationPublished = false; an authority-issued document would use a status list.
Selective-disclosure requests
Section titled “Selective-disclosure requests”In person (EmiratesId.presets):
// Identity checkPresentationRequest(docType = DocTypes.PHOTO_ID, namespaces = mapOf( "org.iso.23220.1" to setOf("portrait", "given_name", "family_name", "birth_date", "nationality", "expiry_date", "issuing_authority"), "org.iso.23220.photoid.1" to setOf("person_id"),))// Age check: photo + age_over_18 onlyWeb (Hello Mobile):
Requests.photoId(['given_name', 'family_name', 'birth_date', 'nationality', 'expiry_date', 'portrait'], ['person_id'])Example (explanatory JSON, not CBOR)
Section titled “Example (explanatory JSON, not CBOR)”{ "docType": "org.iso.23220.photoid.1", "org.iso.23220.1": { "family_name": "Hakim", "given_name": "Abdul", "family_name_viz": "الحكيم", "given_name_viz": "عبد", "birth_date": "1991-05-13", "sex": 1, "nationality": "Singaporean", "birthplace": "Singapore", "document_number": "118542367", "issue_date": "2024-05-20", "expiry_date": "2034-05-19", "issuing_authority": "Federal Authority for Identity, Citizenship, Customs & Port Security", "issuing_country": "AE", "age_over_18": true, "age_over_21": true, "portrait": "<JPEG bytes>" }, "org.iso.23220.photoid.1": { "person_id": "784-1990-2468135-7" }}Interoperability and open points
Section titled “Interoperability and open points”- Any Photo-ID verifier can request the standard elements;
person_idis the standard place for a national identifier, but another verifier may expect the ID number elsewhere. - The Arabic name in
*_vizand the adjective innationalityare this profile’s conventions. - No official schema for a digital Emirates ID has been published for this project to follow; if one appears, this profile should be replaced by it.
- The iOS Digital Credentials sheet lists Photo ID only once the app’s provider entitlement includes
org.iso.23220.photoid.1. The demo wallet does not offer it there: the Emirates ID is face-checked before sharing (Prove it’s you) and an iOS extension has no camera, so it is shared from the wallet app only.