Skip to content

Mobile competition licence (mCL)

mCL in this project means the mobile competition licence of the Emirates Motorsports Organization (EMSO): the licence a driver or rider holds to compete, with its grade and annual medical. It is not a commercial licence.

Status: project-defined demo profile. The container is standard (ISO/IEC 18013-5); the document type and the EMSO namespace are defined by this project with Accredify for the demo, and are not an official EMSO or UAE specification.

Field Name to request Example
Given names / family name given_name, family_name Abdul / Hakim
Date of birth birth_date 1991-05-13
Photo portrait (image)
Licence number document_number EMSO-2026-00125
Issue / expiry dates issue_date, expiry_date 2026-09-23 / 2026-12-31
Grade licence_grade International Grade A Circuit (ITA)
Medical valid until medical_expiry 2026-12-31
Seasons competed competition_seasons 3

Person fields are in org.iso.23220.1; the licence fields in ae.emso.competitor_licence.1. Document type: ae.emso.competitor_licence.1.mCL.

  • Valid medical (a marshal at the paddock gate): portrait, names, medical_expiry, shown as one big Valid / Expired.
  • Licence check: identity, number, dates, grade, medical, seasons.
EmsoLicence.VALID_MEDICAL
EmsoLicence.LICENCE_CHECK

The credential belongs to the competitor; EMSO is the issuer. A presentation proves the holder has the phone the licence was issued to, and the photo lets the marshal confirm it is the same person.

  • ISO/IEC 18013-5 container and mechanisms (mdoc architecture).
  • ISO/IEC 23220-2 core elements for the person (org.iso.23220.1).
  • OpenID4VCI (pre-authorised code flow) for issuance by Accredify Nexus (UAT).
docType ae.emso.competitor_licence.1.mCL
namespace org.iso.23220.1 (who the holder is)
namespace ae.emso.competitor_licence.1 (the licence itself)

Definition: demo/brand-hakim/.../EmsoLicence.kt.

The credential is about the individual competitor: the person’s identity elements, portrait and device-bound key are theirs. The licensed organisation appears as the issuer: EMSO is the issuing_authority, and the document is signed by the issuer’s Document Signer under the Accredify Nexus IACA. Presenter authority is established the standard way: the presentation is signed with the device key bound in the MSO (only the holder’s phone can do that), and the verifier face-matches the disclosed portrait. There is no delegation model: an official cannot present on a competitor’s behalf.

Namespace org.iso.23220.1:

Identifier Meaning CBOR Required Encoding Example
family_name, given_name names tstr yes "Hakim", "Abdul"
birth_date date of birth full-date yes tag 1004 1991-05-13
portrait photo bstr yes JPEG (bytes)
portrait_capture_date tdate no
document_number licence number tstr no "EMSO-2026-00125"
issue_date, expiry_date licence validity full-date yes 2026-09-23, 2026-12-31
age_over_18 bool no true
issuing_authority tstr no "Emirates Motorsports Organization"

Namespace ae.emso.competitor_licence.1:

Identifier Meaning CBOR Required Encoding Example
licence_grade competition grade tstr no free text as issued "International Grade A Circuit (ITA)"
medical_expiry annual medical valid until full-date no tag 1004 2026-12-31
competition_seasons seasons competed uint no 3

All values are issued by Nexus and signed; the wallet’s expiredBadge on medical_expiry (“Medical expired”) is derived at display time from the signed date.

On the card Source Kind
EMSO logo; COMPETITOR LICENCE / رخصة متسابق / UNITED ARAB EMIRATES fixed decorative
Portrait portrait data
LICENCE NO. document_number data
NAME given_name + family_name data
GRADE licence_grade data
DATE OF BIRTH, EXPIRES birth_date, expiry_date derived format
MEDICAL VALID UNTIL medical_expiry derived format
Signature holder signature asset decorative

Accredify Nexus (UAT) issues the mCL over OpenID4VCI: the holder scans the offer QR from the Nexus UI; the wallet redeems the pre-authorised code (no transaction code), proves the device key, and stores the signed mdoc. Nexus accepts Bearer tokens only, so the SDK’s DpopPolicy.ALLOW_BEARER_FALLBACK applies (a documented interop gap, to be removed when Nexus supports DPoP).

Chain: Nexus DS → Accredify Nexus IACA (UAT). The demo VICAL lists that IACA with the mCL, mDL and Photo ID doctypes; verifiers may also pin the IACA PEM directly.

Device binding, presentation, validity, revocation

Section titled “Device binding, presentation, validity, revocation”

Standard (see mdoc architecture). Validity is the MSO window; revocation works when Nexus includes a status reference in the MSO (then the verifier shows Revoked and “Last established”); a revocation round trip has not yet been exercised end to end.

EmsoLicence.VALID_MEDICAL // portrait, names, issuing_authority + medical_expiry → one big Valid / Expired
EmsoLicence.LICENCE_CHECK // identity, number, dates + grade, medical, seasons → details
{
"docType": "ae.emso.competitor_licence.1.mCL",
"org.iso.23220.1": {
"family_name": "Hakim", "given_name": "Abdul", "birth_date": "1991-05-13",
"document_number": "EMSO-2026-00125", "issue_date": "2026-09-23", "expiry_date": "2026-12-31",
"issuing_authority": "Emirates Motorsports Organization", "portrait": "<JPEG bytes>"
},
"ae.emso.competitor_licence.1": {
"licence_grade": "International Grade A Circuit (ITA)", "medical_expiry": "2026-12-31", "competition_seasons": 3
}
}
  • Only verifiers that know this doctype can request it (the Verify app does; the web SDK can with a custom request). Other wallets will store it as an unknown document type.
  • Issuer display name/logo in Nexus metadata and DPoP support are open asks to Accredify.