Skip to content
barcoder

Standards/icao-vds-nc

ICAO VDS-NC

TypeQR Data Format
Completeness82%medium

Overview

The ICAO Visible Digital Seal for Non-Constrained environments (VDS-NC) is a cryptographically signed data structure, encoded in a 2D barcode (typically a qr-code, optionally data-matrix), that carries the essential information of a travel or health document together with a digital signature protecting it against tampering [1, 2]. It was defined by the International Civil Aviation Organization (ICAO), a United Nations agency, as part of the Machine Readable Travel Documents standard, Doc 9303, and reuses the same eMRTD trust framework (country-level PKI) that underpins ePassports [3].

A VDS-NC is structured as three parts — a header, a message, and a signature — serialized as canonicalized JSON and signed with ECDSA (ES256 / ES384) [4]. During the COVID-19 pandemic ICAO published a VDS-NC profile for travel-related public-health proofs (vaccination and test certificates), making it a direct peer of the eu-dcc and smart-health-cards formats [1].

History

Doc 9303 lineage. The VDS concept extends ICAO's long-running Doc 9303 Machine Readable Travel Documents standard, the same framework that defines ePassports and the eMRTD PKI [3]. The "Non-Constrained" variant (VDS-NC) targets environments where data size is less restricted than on a chip — i.e. printed/displayed barcodes.

COVID-19 health proofs. During the pandemic ICAO produced specific VDS-NC guidance for travel-related public-health proofs, enabling member states' ministries (interior, foreign affairs, health, technology) to issue verifiable vaccination and test certificates for international travel [1]. ICAO also published a Guide for Handling ICAO VDS-NC Health Proofs and the EU DCC, addressing interoperability between the two systems at borders [2].

Capacity-building. ICAO offered implementation packages (iPACK) and training to help designated authorities deploy VDS-NC issuance and inspection, aiming for global interoperability and mutual recognition of health proofs [1, 5].

Technical specification

A VDS-NC is a signed JSON object with three top-level parts [4]:

{ "hdr": { "t": "icao.vacc", "v": 1, "is": "UTO" },
  "msg": { ... document-specific fields ... },
  "sig": { "alg": "ES256", "cer": "...", "sigvl": "..." } }
  • Header (hdr) — document type (t, e.g. icao.vacc for vaccination, icao.test for test), schema version (v), and issuing country (is, ISO 3166-1) [4].
  • Message (msg) — the health/travel payload (e.g. for a vaccination proof: holder identity, vaccine/prophylaxis, doses, dates, certificate ID) [1, 4].
  • Signature (sig) — the signing alg (ES256 = ECDSA P-256/SHA-256, or ES384), the signer certificate cer, and the signature value sigvl [4].

Canonicalization & signing. The JSON protected by the signature is canonicalized per RFC 8785 (JSON Canonicalization Scheme) before signature generation and verification; the ECDSA signature is the raw r‖s form [4, 6]. (ICAO Doc 9303 also defines a compact CBOR/byte serialization of the seal for constrained variants.)

Trust framework. VDS-NC reuses the eMRTD PKI: a Barcode Signer Certificate (BSC) is issued under the country's CSCA (Country Signing Certificate Authority). A verifier needs only the issuing state's root (CSCA) certificate to validate the seal's integrity; the signer certificate can be carried inline in the seal [3].

Carrier. The encoded seal is the payload for a qr-code or data-matrix [6].

Use cases

  • Travel-related public-health proofs — verifiable COVID-19 vaccination and test certificates for international travel [1].
  • eMRTD-family travel documents — VDS/VDS-NC profiles cover visas, residence permits, emergency travel documents, arrival/visa attestations, and other supplementary travel documents [4].
  • Offline border verification — because the signer certificate can be embedded and only the country CSCA root is required, inspection works without live connectivity, suited to border posts [3].
  • Add-on to paper documents — a printed seal extends a paper certificate with tamper-evident, machine-verifiable data [2].

Implementations

  • Kotlin generator/parsertsenger/vdstools — 13★, last active 2026. Parses and generates VDS and VDS-NC seals across profiles (vaccination, test, residence permit, emergency travel, visa, arrival attestation), supports ES256/ES384, and outputs barcode-agnostic bytes for QR or Data Matrix [4].
  • Android readeraustralian-passport-office/vds-nc-reader-library-android — Kotlin, reads and evaluates VDS-NC per ICAO Doc 9303 in Android apps [3].
  • JVM verifierkurzdigital/vds-jvm parses and verifies VDS / VDS-NC seals [6].
  • EU tooling — the EU Publications Office published a VDS Reader for inspecting ICAO seals [6].
  • ICAO iPACK — official implementation package and training for state authorities deploying issuance/inspection [1, 5].

Comparison

ICAO VDS-NC eu-dcc smart-health-cards divoc
Data model signed JSON seal (hdr/msg/sig); CBOR variant in Doc 9303 CWT / CBOR + COSE W3C VC as JWS over FHIR W3C VC (JSON-LD)
Encoding canonical JSON (RFC 8785) in QR/Data Matrix Base45 + ZLIB, HC1: numeric shc:/, Deflate JSON-LD in QR
Signature ES256 / ES384, raw r‖s ES256 / PS256 ES256 issuer-controlled
Trust eMRTD CSCA / BSC PKI, offline-capable EU Gateway CSCA/DSC PKI issuer JWKS + VCI directory per-country keys
Governance ICAO (UN agency) EU eHealth Network → WHO VCI consortium / HL7 eGov Foundation (India)
Scope travel docs + health proofs health proofs health/clinical credentials health campaigns

VDS-NC is distinguished by its roots in the ePassport (eMRTD) trust ecosystem: it reuses the same CSCA PKI that already binds ICAO member states, so verification needs only an issuing country's existing root certificate and can run fully offline at a border. Where EU DCC built a new EU Gateway and SHC uses web-published keys, VDS-NC leans on infrastructure governments already operate for passports [3, 4].

Fun facts

It rides on ePassport infrastructure. Because VDS-NC reuses the eMRTD CSCA PKI, any state that already issues ePassports has most of the trust machinery to issue and verify VDS-NC seals — verification can require nothing more than the issuing country's root certificate [3].

ICAO published a dedicated EU-DCC interoperability guide. Recognizing that two parallel health-proof formats existed at borders, ICAO issued a Guide for Handling ICAO VDS-NC Health Proofs and the EU DCC so inspectors could process both [2].

Status

VDS-NC is a published ICAO standard within the Doc 9303 / MRTD family and remains in use for travel documents beyond the pandemic (visas, residence permits, emergency travel documents) [4]. Its public-health-proof profile saw heavy pandemic-era uptake and now sits alongside the wound-down EU DCC and SMART Health Cards as a post-pandemic credential format; the underlying VDS/VDS-NC mechanism and its eMRTD trust model continue as part of ICAO's machine-readable travel-document toolkit, with tooling actively maintained (e.g. tsenger/vdstools, last active 2026) [4, 7].

Sources

  1. Guidance for Visible Digital Seals (VDS-NC) for Travel-Related Public Health Proofs — ICAO
  2. Guide for Handling ICAO VDS-NC Health Proofs and the EU DCC — ICAO
  3. vds-nc-reader-library-android (Doc 9303, eMRTD trust) — Australian Passport Office
  4. vdstools — VDS/VDS-NC structure, profiles, ES256/ES384 — tsenger
  5. Visible Digital Seals iPACK — ICAO
  6. vds-jvm — parse and verify VDS/VDS-NC — kurzdigital

Deployments

No country reports mention this standard by name.

Regions / aggregations not mapped to a single country

  • Universal
source · docs/standards/icao-vds-nc/index.md