THPDFPDFMACValidationInfo 记录
PDF MAC 验证的完整结果:状态与消息、字节范围与 MAC 长度、摘要与策略细节、AES-GCM 使用情况、MAC 位置、签名关联以及权限覆盖标志
声明
THPDFPDFMACValidationInfo= record
Status: THPDFPDFMACStatus;
ByteRangeLength: Int64;
MACLength: Integer;
DigestAlgorithm: THPDFPDFMACDigestAlgorithm;
PolicyProfile: THPDFPDFMACPolicyProfile;
PolicyAccepted: boolean;
UsedAESGCM: boolean;
Message: string;
Location: THPDFPDFMACLocation;
SignatureObjectNumber: Integer;
SignatureGeneration: Integer;
SignatureDigestMatched: boolean;
FullFileCoverage: boolean;
PermissionsAuthenticated: boolean;
MACRequiredByPermissions: boolean;
end;
单元
HPDFDoc
字段
| 字段 | 用途 |
|---|---|
Status | THPDFPDFMACStatus 判定:MAC 校验通过时为 pmsValid,否则为具体的失败状态 |
ByteRangeLength | MAC 的 /ByteRange 覆盖的文件字节数 |
MACLength | 编码后 MAC 值的长度 |
DigestAlgorithm | 被验证 MAC 构造时使用的摘要算法 |
PolicyProfile | 评估 MAC 时采用的 THPDFPDFMACPolicyProfile |
PolicyAccepted | 所给选项的摘要与 AES-GCM 策略接受该 MAC 时为 true |
UsedAESGCM | MAC 负载受 AES-GCM 保护时为 true |
Message | 人类可读的结果文本,例如 MAC 有效,或无效的原因 |
Location | THPDFPDFMACLocation:独立 MAC 或附着于签名的 MAC |
SignatureObjectNumber / SignatureGeneration | MAC 所附着签名的对象引用;Location 报告附着式 MAC 时才有意义 |
SignatureDigestMatched | 附着式 MAC 的摘要与其签名的字节摘要匹配时为 true |
FullFileCoverage | 字节范围横跨整个文件时为 true |
PermissionsAuthenticated | 文档权限位被 MAC 覆盖时为 true |
MACRequiredByPermissions | 文档权限要求存在 MAC 时为 true,此时 MAC 缺失本身就是验证失败 |
使用说明
- 由
THotPDF.ValidatePDFMAC和逐修订验证器填写;记录在使用前会重置,因此即使函数返回false也应检查它 - 先看
Status,再看PolicyAccepted,以区分密码学上完好但不符合策略配置的 MAC 与真正损坏的 MAC - 对附着式 MAC,把
SignatureObjectNumber与SignatureDigestMatched结合着看,确认 MAC 覆盖的字节正是签名所签的字节