ANNEX IISupplementary provisions
ANNEX II Section 3 of Annex III to Implementing Decision (EU) 2021/1073 is replaced by the following: “3. General requirements The following overarching requirements shall be satisfied in relation to the UCI: (1) Charset: only uppercase US-ASCII alpha numerical characters (‘A’ to ‘Z’, ‘0’ to ’9’) are allowed; with additional special characters for separation from RFC3986 ( 1 ) , namely {'/','#',':'}; (2) Maximum length: designers shall try to aim for a length of 27-30 characters ( 2 ) ; (3) Version prefix: this refers to the version of the UCI schema. The version prefix is ‘01’ for this version of the document; the version prefix is composed of two digits; (4) Country prefix: the country code is specified by ISO 3166-1. Longer codes (e.g. 3 characters and up (for example, ‘UNHCR’) are reserved for future use; (5) Code suffix / Checksum: 5.1 Member States may use a checksum when it is likely that transmission, (human) transcription or other corruptions may occur (that is to say when used in print). 5.2 The checksum shall not be relied upon for validating the certificate and is not technically part of the identifier but is used to verify the integrity of the code. This checksum shall be the ISO-7812-1 (LUHN-10) ( 3 ) summary of the entire UCI in digital/wire transport format. The checksum is separated from the rest of the UCI by a '#' character. Backwards-compatibility shall be ensured: Member States that over time change the structure of their identifiers (within the main version, currently set at v1) shall ensure that any two identifiers that are identical represent the same vaccination certificate/assertion. Or, in other words, Member States cannot recycle identifiers. ( 1 ) rfc3986 (ietf.org) ( 2 ) For implementation with QR codes, Member States could consider an extra set of characters up to a total length of 72 characters (including the 27-30 of the identifier itself) may be used to convey other information. The specification of this information is up to the Member States to define. ( 3 ) The Luhn mod N algorithm is an extension to the Luhn algorithm (also known as mod 10 algorithm) which works for numeric codes and is used for example for calculating the checksum of credit cards. The extension allows the algorithm to work with sequences of values in any base (in our case alpha characters).” ’