Skip to main content

Module verify

Module verify 

Source
Expand description

OFD 规范符合性校验与数字签名完整性校验(见 GB/T 33190—2016 第 7、18 章)。

本模块在解析能力之上提供两类校验:

  1. 结构符合性:容器能否打开、OFD.xml 主入口是否完整、各版式文档的根 节点/页/模板/资源能否按声明的路径找到并解析;
  2. 签名完整性:依据 Signature.xml 的 [References] 重新计算每个被保护 文件的摘要(国密 SM3,见 crate::crypto)并与 CheckValue 比对,判断 签名覆盖的内容是否被篡改。

check_path 给出面向命令行的高层入口:对单个 OFD 文件执行上述全部校验并 汇总为 CheckReport,任何失败都不会以 Err 形式中断,而是记入报告,便于 批量校验多个文件并列出不合规清单。

注意:本模块仅做摘要级完整性校验,对签名值(SM2 签名)做密码学验签。

§示例

use ofd_core::verify::check_path;

let report = check_path("sample.ofd");
if report.conforms() {
    println!("符合规范");
} else {
    for p in &report.problems {
        eprintln!("问题: {p}");
    }
}

Structs§

CheckReport
一个 OFD 文件的完整校验报告。
LoadedSignature
已装载的单个签名及其在包内的解析路径。
RefCheck
单个被保护文件的校验记录。
SignatureReport
单个签名的完整性校验报告。

Enums§

CheckMethod
摘要清单所用的校验(杂凑)方法。
RefStatus
单条 Reference 的校验状态。
SigVerdict
单个签名的整体判定。

Constants§

OID_SM3
国密 SM3 杂凑算法的 OID(References@CheckMethod 取值)。

Functions§

check_path
对文件系统中的一个 OFD 文件执行完整校验。
check_reader
对已打开的 OFD 读取器执行结构符合性 + 签名完整性校验。