Expand description
OFD 规范符合性校验与数字签名完整性校验(见 GB/T 33190—2016 第 7、18 章)。
本模块在解析能力之上提供两类校验:
- 结构符合性:容器能否打开、
OFD.xml主入口是否完整、各版式文档的根 节点/页/模板/资源能否按声明的路径找到并解析; - 签名完整性:依据
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§
- Check
Report - 一个 OFD 文件的完整校验报告。
- Loaded
Signature - 已装载的单个签名及其在包内的解析路径。
- RefCheck
- 单个被保护文件的校验记录。
- Signature
Report - 单个签名的完整性校验报告。
Enums§
- Check
Method - 摘要清单所用的校验(杂凑)方法。
- RefStatus
- 单条
Reference的校验状态。 - SigVerdict
- 单个签名的整体判定。
Constants§
- OID_SM3
- 国密 SM3 杂凑算法的 OID(
References@CheckMethod取值)。
Functions§
- check_
path - 对文件系统中的一个 OFD 文件执行完整校验。
- check_
reader - 对已打开的 OFD 读取器执行结构符合性 + 签名完整性校验。