Skip to content

VDS Issuance

VDS issuance is handled by the BioSeal Issuance Service from id3 Technologies — a managed platform that generates cryptographically signed Visible Digital Seals from identity documents — whether government-issued (passport, national ID card) or organizational (company card, employee badge).

Identity Document (Passport / ID Card / Org. Credential)Issuance Station1Document ReadingIdentity data: gn, fn, dob, nat, doc, expiryNFC read: ICAO 9303 (passport) or org. chip/data carrier2Biometric Verificationid3 Face SDK: liveness + 1:1 match (live vs DG2, threshold 0.80)3Submit to IDToken Seal Auth ServerPOST /admin/issuance with raw chip proof (SOD, AA, DG1, DG2)Server verifies, then forwards to BioSeal (internal, server-to-server)4Output: QR Code displayed on screenUser scans with IDToken Seal mobile app

BioSeal provides:

CapabilityDescription
VDS constructionPayload encoding (MessagePack), header assembly, manifest compliance
HSM-backed signingECDSA P-256 signatures via HSM (PKCS#11), key lifecycle management
Encoding & outputBase45/Base64 encoding, QR/Aztec code generation
Certificate managementSigning certificate provisioning, rotation, and revocation
Audit trailIssuance logs (tokenId, timestamp, operator, certificate used)

BioSeal is an internal-only service — its API is not publicly exposed. Only the IDToken Seal Auth Server holds BioSeal credentials, and all issuance requests must pass through the server’s document origin verification before BioSeal signs.

The IDToken Seal VDS carries two types of biometric data:

FieldFormatPurposeSize
photoWEBP lossy (200x200px)Visual display of the holder’s face~900 bytes
faceid3 face template (FormatOwner 003F)1:1 biometric matching by the mobile app140 bytes (fixed)

The photo is shown on the IDToken Seal card and consent screens. The face template is a mathematical representation of facial features used for matching — it is never displayed (Visibility: NEVER).

FieldKeyTypeDescription
Given namegnStringFirst name (max 39 chars)
Family namefnStringLast name (max 39 chars)
Date of birthdobDateISO format
NationalitynatString3-letter ISO code (C40 encoded)
Document numberdocStringDocument number (passport, ID card, or org. credential)
Token IDtidStringUUID (unique per VDS)
ExpiryexpTimestampIssuance + 2 years
PhotophotoBinaryPortrait image (WEBP)
Face templatefaceBinaryid3 format, 140 bytes fixed

The trust level assigned to each VDS depends on the issuance method:

LevelIssuance MethodAssuranceeIDAS Equivalent
1 — Self-issuedSelfie + document photo (no NFC)Low
2 — Operator-verifiedNFC read + operator presentSubstantialeIDAS Substantial
3 — NFC + AA + biometricNFC with Active Authentication + 1:1 matchHigheIDAS High

The trust level is stored in the VDS and propagated as a JWT claim after authentication. Relying parties can require a minimum trust level.

PREFIX (not encoded — ISO/IEC 15459-2)
IAC = "VDS" (Otentik Scheme Operator)
CIN = "EU" (id3 Technologies)
DCI = "A" (IDToken Seal data construct)
HEADER (18-21 bytes — signed)
Marker: 0xDE
Version: 3
IAC (C40): "VDS"
Cert reference: CA ref + cert ID
Manifest ID: 0x0A0001
Timestamp: Unix epoch UTC
Payload length: variable
PAYLOAD (MessagePack encoded — signed)
gn, fn, dob, nat, doc, tid, exp, photo, face
SIGNATURE (64 bytes — ECDSA P-256, raw r|s)
signed_data = SHA-256(header || SHA-256(payload))