DCC utils for Python
Project description
Python library to decode the EU Covid-19 vaccine certificate, as specified by the EU.
Setup
pip install dcc-utils
Make sure zbar is installed in your system * For Mac OS X, it can be installed via brew install zbar * Debian systems via apt install libzbar0. Source * Fedora / Red Hat dnf install zbar
Usage
Parse DCC
This library takes an image with a QR code or a raw repr. of a vaccine certificate as the parameter and will show the certificate’s content.
from dcc_utils import dcc
dcc_from_img = dcc.from_image("/my/certificate/path")
dcc_from_raw = dcc.from_raw("HC1:6BF...FTPQ3C3F")
Then you can access to payload and kid
assert dcc_from_img.kid == "53FOjX/4aJs="
assert dcc_from_img.payload["v"][0]["ci"] == "URN:UVCI:01:FR:W7V2BE46QSBJ#L"
👉🏻 payload follows EU Digital COVID Certificates JSON Schema Specification
from_image and from_raw methods may rise DCCParsingError
from dcc_utils.exceptions import DCCParsingError
Validate DCC digital signature
signature = b"""
-----BEGIN CERTIFICATE-----
MIIIAjCCBeqgAwIBAgIQAnq8g/T
-----END CERTIFICATE-----
"""
assert my_dcc.check_signature(signature)
check_signature method may rise DCCSignatureError
from dcc_utils.exceptions import DCCSignatureError
Evaluate CertLogic business rules
With dcc-utils you can evaluate business rules against a DCC
from dcc_utils import rule, dcc
my_dcc = dcc.from_image("/my/certificate/path")
my_rule = rule.from_file("/my/rule.json")
print(my_rule.description["en"])
my_rule.evaluate_dcc(my_dcc) # True or False
evaluate_dcc accepts extra variables as a second parameter, e.g. validationClock
import datetime
clock = datetime.datetime(2022, 10, 10, 0, 0, tzinfo=datetime.timezone.utc)
my_rule.evaluate_dcc(
my_dcc,
{
"validationClock": clock,
},
)
you can also load rules from JSON (from_json), useful to evaluate rules exposed on a server
my_rule = rule.from_json({...})
from_file and from_json method may rise DCCRuleError
from dcc_utils.exceptions import DCCRuleError
Dev setup
Install dependencies using pip:
pip install -r requirements-dev.txt
Run tests
make test
EU Digital COVID Certificate Specifications
What’s in a EU Digital COVID/Green Certificate? * Value Sets for Digital Green Certificates https://ec.europa.eu/health/sites/default/files/ehealth/docs/digital-green-certificates_dt-specifications_en.pdf * JSON schema: https://github.com/ehn-dcc-development/ehn-dcc-schema
Sample data
Digital Green Certificate Gateway (DGCG) samples for all participating countries: https://github.com/eu-digital-green-certificates/dgc-testdata
Credits
Parts of this code are adapted from vacdec project.
License
This library is available under the MIT license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for dcc_utils-0.2.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3a59272e0cd3aed18b0df31a51ee5319f753f70b1cbad1a9855fe34329facd43 |
|
MD5 | 9153bf2fe098221887cdc330702cc0cc |
|
BLAKE2b-256 | c8508d1888a06320fc8edca324e338ffba965131087074ce5f1861ba43710036 |