causal/dgc

Library to decode Digital Green Certificates as defined by the eHealth Network

1.4 2021-09-08 07:52 UTC

Requires

Requires (Dev)

None

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 8db3c2589be72814fda043be65ef0ff97ce9ed8a

  • Xavier Perseguers <xavier.woop@causal.ch>

This package is auto-updated.

Last update: 2026-06-08 18:07:11 UTC


README

DGC is a PHP library that decodes Digital Green Certificates. In short, it decodes COVID-19 certificates.

Install

Install with composer.

$ composer require causal/dgc

Usage

$decoder = new \Causal\DGC\Decoder();

// The string as embedded in the QR code of the certificate (e.g., you can use https://qrafter.com/)
$input = 'HC1:NCFOXNYTSFDHJI89.O%26V$L.BUTRDUV...';

// Extract issuer, issuing date, expiring date, type of vaccine, manufacturer, etc.
$data = $decoder->decodeFromQR($input);
{
 1: "DE",
 4: 1643356073,
 6: 1622316073,
 -260: {
 1: {
 v: [
 {
 ci: "URN:UVCI:01DE/IZ12345A/5CWLU12RNOB9RXSEOP6FG8#W",
 co: "DE",
 dn: 2,
 dt: "2021-05-29",
 is: "Robert Koch-Institut",
 ma: "ORG-100031184",
 mp: "EU/1/20/1507",
 sd: 2,
 tg: "840539006",
 vp: "1119349007"
 }
 ],
 dob: "1964-08-12",
 nam: {
 fn: "Mustermann",
 gn: "Erika",
 fnt: "MUSTERMANN",
 gnt: "ERIKA"
 },
 ver: "1.0.0"
 }
 }
}

You may then prettify the data so that they are more human-readable:

// Basically this returns the exact same data you read in the official Swiss app "Covid Cert"
$humanReadableData = $decoder->prettify($data);
{
 issuer: "DE",
 issuingDate: "2021-05-29T21:21:13+02:00",
 expiringDate: "2022-01-28T08:47:53+01:00",
 certificate: {
 type: "vaccination",
 person: {
 familyName: "Mustermann",
 givenName: "Erika",
 familyNameTransliterated: "MUSTERMANN",
 givenNameTransliterated: "ERIKA",
 dateOfBirth: "1964-08-12"
 },
 info: {
 singleDoses: 2,
 diseaseOrAgentTargeted: "COVID-19",
 vaccineType: "SARS-CoV2 mRNA vaccine",
 product: "COVID-19 Vaccine Moderna",
 manufacturer: "Moderna Biotech Spain S.L.",
 date: "2021-05-29",
 country: "DE",
 issuer: "Robert Koch-Institut",
 id: "URN:UVCI:01DE/IZ12345A/5CWLU12RNOB9RXSEOP6FG8#W"
 }
 }
}

Types of Certificates

Following types of certificates are supported:

  • Vaccination certificate
  • Test certificate
  • Recovery certificate

Disclaimer

  • There is currently NO CHECK of the digital signature (it is not clear at the moment whether public keys of the various issuers are available to anyone).
  • Human-readable conversion is based on European data mapping on 2021/08/30.
  • This library is provided as-is, use it at your own risk!

References

License

The MIT License (MIT). Please see License File for more information.