This specification describes an experimental vocabulary for expressing a Verifiable Driver's License, which is intended to be fully conformant with the ISO 18013 Mobile Driver's License data model.
This specification describes an experimental vocabulary for expressing a Verifiable Driver's License, which is intended to be fully conformant with the ISO 18013 Mobile Driver's License data model.
The following use cases outline a number of key scenarios that readers might find useful:
The following examples are provided ...
{ "@context": [ "https://www.w3.org/2018/credentials/v1", "https://w3id.org/vdl/v2", "https://w3id.org/vdl/aamva/v1" ], "type": [ "VerifiableCredential", "Iso18013DriversLicenseCredential" ], "issuer": { "id": "did:key:z6MkjxvA4FNrQUhr8f7xhdQuP1VPzErkcnfxsRaU5oFgy2E5", "name": "Utopia Department of Motor Vehicles", "url": "https://dmv.utopia.example/", "image": "https://dmv.utopia.example/logo.png" }, "issuanceDate": "2023-11-15T10:00:00-07:00", "expirationDate": "2028-11-15T12:00:00-06:00", "name": "Utopia Driver's License", "image": "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUg...kSuQmCC", "description": "A license granting driving privileges in Utopia.", "credentialSubject": { "id": "did:example:12347abcd", "type": "LicensedDriver", "driversLicense": { "type": "Iso18013DriversLicense", "document_number": "542426814", "family_name": "TURNER", "given_name": "SUSAN", "portrait": "data:image/jpeg;base64,/9j/4AAQSkZJR...RSClooooP/2Q==", "birth_date": "1998-08-28", "issue_date": "2023-01-15T10:00:00-07:00", "expiry_date": "2028-08-27T12:00:00-06:00", "issuing_country": "UA", "issuing_authority": "UADMV", "driving_privileges": [{ "codes": [{"code": "D"}], "vehicle_category_code": "D", "issue_date": "2019-01-01", "expiry_date": "2027-01-01" }, { "codes": [{"code": "C"}], "vehicle_category_code": "C", "issue_date": "2019-01-01", "expiry_date": "2017-01-01" }], "un_distinguishing_sign": "UTA", "aamva_aka_suffix": "1ST", "sex": 2, "aamva_family_name_truncation": "N", "aamva_given_name_truncation": "N" } } }
TBD
This vocabulary assumes all terms specified in the base Verifiable Credentials [[VC-DATA-MODEL]] context. In addition, the following classes are available for specifying information related to ISO18013 data model compatible Driving Licenses.
Identifier | Field Name | Field Description | Data Type |
---|---|---|---|
family_name | Family name | Last name, surname, or primary identifier, of the licence holder. | String |
given_name | Given names | First name(s), other name(s), or secondary identifier, of the licence holder. | String |
birth_date | Date of birth | Day, month, year on which the licence holder was born. If unknown, approximate. | RFC3339 full-date |
issue_date | Date of Issue | Date licence document was issued. | RFC3339 date-time or RFC3339 full-date |
expiry_date | Date of Expiry | Date licence document expires. | RFC3339 date-time or RFC3339 full-date |
issuing_country | Issuing country | Country code as alpha 2 code, defined in ISO 3166-1, which issued the mDL or within which the licensing authority is located. | String |
issuing_authority | Issuing authority | Name of licensing authority, or issuing country if separate licensing authorities have not been authorized. | String |
document_number | Licence number | The number assigned or calculated by the issuing authority. | String |
administrative_number | Administrative number | An audit control number assigned by the licensing authority | String |
driving_privileges | Categories of vehicles/restrictions/conditions | Driving privileges the licence holder is authorized to drive. It consists of category issue date, expiry date, restriction/condition sign code, restriction/condition sign and restriction/condition value. | JSON |
un_distinguishing_sign | UN distinguishing sign | Distinguishing sign of the issuing country according to 18013-1 annex F NOTE this field is added for purposes of the UN conventions on driving licences. | String |
sex | Sex | Licence holder’s sex using values as defined in ISO/IEC 5218. | 32 bits unsigned integer number |
height | Height (cm) | A Licence holder’s height in centimetres. | 32 bits unsigned integer number |
weight | Weight (kg) | A Licence holder’s weight in kilograms O F3N uint. | 32 bits unsigned integer number |
eye_colour | Eye colour | Licence holder’s eye colour: black, blue, brown, dichromatic, grey, green, hazel, maroon, pink or unknown. | String |
hair_colour | Hair colour | Licence holder’s hair colour: bald, black, blond, brown, grey, red, auburn, sandy, white or unknown. | String |
birth_place | Place of birth | Country and municipality or state/province where the licence holder was born. | String |
resident_address | Permanent place of residence | The place where the licence holder resides and/or may be contacted (street/house number, municipality etc.) | String |
portrait | Portrait of mDL Holder | A reproduction of the licence holder’s portrait. | Base 64 |
portrait_capture_date | Portrait image timestamp | Date when picture was taken. | RFC3339 date-time |
age_in_years | Age attestation: How old are you (in years)? | The age of the mDL Holder. | 32 bits unsigned integer number |
age_over_18 | Age attestation: Nearest “true” attestation above 18. | Is the holder over 18. | Boolean |
age_over_21 | Age attestation: Nearest “true” attestation above 21. | Is the holder over 21. | Boolean |
age_over_25 | Age attestation: Nearest “true” attestation above 25. | Is the holder over 25. | Boolean |
age_over_62 | Age attestation: Nearest “true” attestation above 62. | Is the holder over 62. | Boolean |
age_over_65 | Age attestation: Nearest “true” attestation above 65. | Is the holder over 65. | Boolean |
age_birth_year | Age attestation: In what year were you born? | The year when the mDL Holder was born. | 32 bits unsigned integer number |
issuing_jurisdiction | Issuing jurisdiction | Country subdivision code as defined in clause 8, ISO 3166-2. The first part of the code shall be the same as the value for issuing_country. This element is intended to be used in cases where the issuing jurisdiction is different from the issuing authority. | String |
nationality | Nationality | Nationality of the mDL Holder as two letter country code (alpha-2 code) defined in ISO 3166-1. | String |
resident_city | Resident city | The city where the mDL Holder lives. | String |
resident_country | Resident country | The country where the mDL Holder lives. | String |
resident_state | Resident state/province/district | The state/province/district where the mDL Holder lives. | String |
resident_postal_code | Resident postal code | The postal code of the mDL Holder. | String |
family_name_national_character | Family name of holder in full UTF-8 character set | The family name of the mDL Holder in his/her national characters. | String |
given_name_national_character | Given name of holder in full UTF-8 character set | The given name of the mDL Holder in his/her national characters. | String |
signature_usual_mark | Signature / usual mark | Image of the signature or usual mark of the mDL Holder. | Base 64 |
terseStatusListBaseUrl | Terse Status List Base URL | The base URL location of a status list. | URL |
terseStatusListIndex | Terse Status List Index | An index within a status list. | 32 bits unsigned integer number |
This vocabulary extends the Verifiable Driver's License Core Vocabulary with terms for all data elements defined by the mDL Implementation Guidelines issued by the American Association of Motor Vehicle Administrators (AAMVA). It can be imported as a JSON-LD context behind the URL https://w3id.org/vdl/aamva/v1.
Identifier | Field Name | Field Description | Data Type |
---|---|---|---|
aamva_aka_family_name_v2 | Alias / AKA family name | Other family name by which credential holder is known. | String (latin1, 150 characters maximum) |
aamva_aka_given_name_v2 | Alias / AKA given name | Other given name by which credential holder is known. | String (latin1, 150 characters maximum) |
aamva_aka_suffix | Alias / AKA Suffix name | Other suffix by which credential holder is known. Allowed values are JR , SR , 1ST , I , 2ND , II , 3RD , III , 4TH , IV , 5TH , V , 6TH , VI , 7TH , VII , 8TH , VIII , 9TH or IX . |
String |
aamva_cdl_indicator | CDL indicator | FMCSA required field that denotes whether the credential is a Commercial Driver’s Licenseor a Commercial Learner’s Permit. This field is either absent or has value 1 (Commercial Driver’s License). |
32bits unsigned integer number |
aamva_dhs_compliance | Compliance type. | Indicates compliance with REAL ID. Allowed values are F (fully compliant) or N (non-compliant). |
String |
aamva_dhs_compliance_text | Non-REAL ID credential text | Text, agreed on between the Issuing Authority and DHS, appearing on credentials not meeting REAL ID requirements. | String |
aamva_dhs_temporary_lawful_status | Limited duration document indicator | Denotes whether the credential holder has temporary lawful status. This field is either absent or has value 1 (temporary lawful status). |
32bits unsigned integer number |
aamva_domestic_driving_privileges | Domestic categories of vehicles / restrictions / conditions. | Vehicle types the license holder is authorized to operate. | JSON |
aamva_edl_credential | EDL indicator | Either absent or has one of the following values if the credential is an EDLc: 1 (Driver’s license) or 2 (Identification card). |
32bits unsigned integer number |
aamva_family_name_truncation | Family name truncation | Code that indicates whether the field has been truncated (T ), has not been truncated (N ), or unknown whether truncated (U ). |
String |
aamva_given_name_truncation | Given name truncation | Code that indicates whether either the first name or the middle name(s) have been truncated (T ), have not been truncated (N ), or unknown whether truncated (U ). |
String |
aamva_hazmat_endorsement_expiration_date | HAZMAT endorsement expiration date | Date on which the hazardous material endorsement granted by the document is no longer valid. | RFC3339 full-date |
aamva_name_suffix | Name suffix | Name suffix of the individual that has been issued the credential. Allowed values are JR , SR , 1ST , I , 2ND , II , 3RD , III , 4TH , IV , 5TH , V , 6TH , VI , 7TH , VII , 8TH , VIII , 9TH or IX . |
String |
aamva_organ_donor | Organ donor. | Denotes whether the credential holder is an organ donor. This field is either absent or has value 1 (Donor). |
32bits unsigned integer number |
aamva_race_ethnicity | Race / ethnicity. | Codes for race or ethnicity of the credential holder, as defined in AAMVA D20. | String |
aamva_resident_county | Resident county | The 3-digit county code of the county where the credential holder lives, as per the 2010 FIPS Codes for Counties and County Equivalent Entities. | String |
aamva_sex | Credential holder’s sex. | In line with the AAMVA Card Design Specification, this element can have one of the following values: 1 (Male), 2 (Female) or 9 (Not Specified). |
32bits unsigned integer number |
aamva_veteran | Whether the credential holder is a veteran. | This field is either absent or has value 1 (Veteran). |
32bits unsigned integer number |
aamva_weight_range | Weight range | Indicates the approximate weight range of the credential holder: 0 (up to 31 kg), 1 (32 – 45 kg), 2 (46 - 59 kg), 3 (60 - 70 kg), 4 (71 - 86 kg), 5 (87 - 100 kg), 6 (101 - 113 kg), 7 (114 - 127 kg), 8 (128 – 145 kg), 9 (146+ kg). |
32bits unsigned integer number |
This section details the general privacy considerations and specific privacy implications of deploying this specification into production environments.
There are a number of security considerations that implementers should be aware of when processing data described by this specification. Ignoring or not understanding the implications of this section can result in security vulnerabilities.
While this section attempts to highlight a broad set of security considerations, it is not a complete list. Implementers are urged to seek the advice of security and cryptography professionals when implementing mission critical systems using the technology outlined in this specification.
There are a number of accessibility considerations implementers should be aware of when processing data described in this specification. As with any web standards or protocols implementation, ignoring accessibility issues makes this information unusable to a large subset of the population. It is important to follow accessibility guidelines and standards, such as [[WCAG21]], to ensure all people, regardless of ability, can make use of this data. This is especially important when establishing systems utilizing cryptography, which have historically created problems for assistive technologies.
This section details the general accessibility considerations to take into account when utilizing this data model.
There are a number of internationalization considerations implementers should be aware of when publishing data described in this specification. As with any web standards or protocols implementation, ignoring internationalization makes it difficult for data to be produced and consumed across a disparate set of languages and societies, which would limit the applicability of the specification and significantly diminish its value as a standard.
This section outlines general internationalization considerations to take into account when utilizing this data model.