Python的DCC工具
项目描述
Python库,用于解码欧盟COVID-19疫苗接种证明,如欧盟规定。
安装
pip install dcc-utils
确保 zbar 已安装到您的系统 * 对于Mac OS X,可以通过 brew install zbar 安装 * Debian系统通过 apt install libzbar0 安装。 来源 * Fedora / Red Hat dnf install zbar
使用
解析DCC
此库将带有二维码或疫苗接种证明原始表示的图像作为参数,并将显示证书的内容。
from dcc_utils import dcc
dcc_from_img = dcc.from_image("/my/certificate/path")
dcc_from_raw = dcc.from_raw("HC1:6BF...FTPQ3C3F")
然后,您可以访问 payload 和 kid
assert dcc_from_img.kid == "53FOjX/4aJs="
assert dcc_from_img.payload["v"][0]["ci"] == "URN:UVCI:01:FR:W7V2BE46QSBJ#L"
👉🏻 payload 符合 欧盟数字COVID证书JSON模式规范
from_image 和 from_raw 方法可能会引发 DCCParsingError
from dcc_utils.exceptions import DCCParsingError
验证DCC数字签名
signature = b"""
-----BEGIN CERTIFICATE-----
MIIIAjCCBeqgAwIBAgIQAnq8g/T
-----END CERTIFICATE-----
"""
assert my_dcc.check_signature(signature)
check_signature 方法可能会引发 DCCSignatureError
from dcc_utils.exceptions import DCCSignatureError
评估CertLogic业务规则
使用 dcc-utils,您可以对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 接受作为第二个参数的额外变量,例如 validationClock
import datetime
clock = datetime.datetime(2022, 10, 10, 0, 0, tzinfo=datetime.timezone.utc)
my_rule.evaluate_dcc(
my_dcc,
{
"validationClock": clock,
},
)
您还可以从JSON(from_json)加载规则,这对于评估服务器上公开的规则很有用
my_rule = rule.from_json({...})
from_file 和 from_json 方法可能会引发 DCCRuleError
from dcc_utils.exceptions import DCCRuleError
开发者设置
使用pip安装依赖项
pip install -r requirements-dev.txt
运行测试
make test
欧盟数字COVID证书规范
欧盟数字COVID/绿色证书包含什么? * 数字绿色证书的值集 https://ec.europa.eu/health/sites/default/files/ehealth/docs/digital-green-certificates_dt-specifications_en.pdf * JSON模式: https://github.com/ehn-dcc-development/ehn-dcc-schema
示例数据
所有参与国家的数字绿色证书网关(DGCG)样本: https://github.com/eu-digital-green-certificates/dgc-testdata
致谢
本代码的部分内容改编自 vacdec项目.
许可协议
本库可在MIT许可下使用。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码发行版
构建分发版
dcc-utils-0.2.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0992c6fe86c0cd467ab6b01611441034f494cc93c16953712390cc03f9afcc24 |
|
MD5 | 13a8316d79ac14083138ff24781c5a24 |
|
BLAKE2b-256 | 94bdfefa44968e3c9c6ebbfe1db395b5629f61eac412689a2028ea5c66b673bf |
dcc_utils-0.2.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3a59272e0cd3aed18b0df31a51ee5319f753f70b1cbad1a9855fe34329facd43 |
|
MD5 | 9153bf2fe098221887cdc330702cc0cc |
|
BLAKE2b-256 | c8508d1888a06320fc8edca324e338ffba965131087074ce5f1861ba43710036 |