VerificaC19 Flutter 包

关于

此包允许您在 Flutter 应用程序中解码和验证任何欧盟数字绿色证书。它基于官方 it-dgc-verificac19-sdk-android 存储库中包含的规范。

此库需要互联网连接才能每天至少下载和缓存一次规则、CRL 和 DSC。一旦更新,整个验证过程就可以完全离线且实时地完成。

注意:此库目前仅支持从意大利后端下载规则、CRL 和 DSC(https://get.dgc.gov.it/v1/dgc

开发与测试

  • 克隆仓库
git clone https://github.com/mastro993/verificac19_flutter.git
  • 获取包

cd verificac19_flutter

flutter pub get

安装

flutter pub add verificac19

用法

设置

首先要做的就是初始化包。这允许完成所有内部初始化。

await VerificaC19.initialize();

下载并缓存规则、CRL 数据和 DSC

您可以使用 `update` 函数下载和缓存规则、CRL 数据和 DSC。仅当 24 小时更新窗口过期后,此操作才会更新数据。

await VerificaC19.update();

您可以选择传递 `force` 参数以在 24 小时到期窗口之前强制更新,但只能在距离上次更新 1 小时后。

await VerificaC19.update(force: true);

您还可以检查数据是否已过期(超过 24 小时更新窗口)而无需更新,使用 `needUpdate` 函数。

bool requiresUpdate = await VerificaC19.needsUpdate();

验证 DGC

您可以使用 `getCertificateFromRaw` 函数从原始数据解码并获取 `Certificate` 对象。

Certificate cert = await VerificaC19.getCertificateFromRaw('HC1:NCFOXN%TSMAHN-H3ZSUZK+.V0ET9%6-AH...');

您可以从 `Certificate` 对象或直接的 base45 编码的原始数据验证 DGC。

// Validate Certificate object
ValidationResult result = await VerificaC19.validateCertificate(cert);
// or base45 encoded raw data
ValidationResult result = await VerificaC19.validateFromRaw('HC1:NCFOXN%TSMAHN-H3ZSUZK+.V0ET9%6-AH...');

`ValidationResult` 对象包含一个 `CertificateStatus`,它可以具有以下值

代码 描述
有效 证书有效
无效 证书无效
尚未有效 证书尚未有效
非欧盟DCC 证书不是欧盟DCC

您还可以提供 `ValidationMode` 参数。

代码 描述
普通DGP 正常验证(默认值)
超级绿色通行证验证 超级绿色通行证验证

示例

ValidationResult result = await VerificaC19.validateCertificate(cert, mode: ValidationMode.normalDGP);
// or
ValidationResult result = await VerificaC19.validateCertificate(cert, mode: ValidationMode.superDGP);

示例

一个示例应用程序目前正在开发中。

待办事项

  • 添加从图像文件中检索/验证证书的功能
  • 添加实现来自其他国家/地区的规则提供程序的功能

GitHub

查看 Github