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
- 可以通过此链接获取测试二维码:https://dgc.a-sit.at/ehn/testsuite
安装
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);
示例
一个示例应用程序目前正在开发中。
待办事项
- 添加从图像文件中检索/验证证书的功能
- 添加实现来自其他国家/地区的规则提供程序的功能