PDF MAC 算法灵活性与策略配置文件

HotPDF 可以使用六种文档摘要算法和失败关闭策略强制生成并验证 ISO/TS 32004 独立和签名附加的 PDF MAC 值

支持的文档摘要

THPDFPDFMACDigestAlgorithm 提供 pmdaSHA256、pmdaSHA384、pmdaSHA512、pmdaSHA3_256、pmdaSHA3_384 和 pmdaSHA3_512

选定的摘要保护完整的 PDF ByteRange、封装的完整性信息、CMS 摘要算法和 CMSAlgorithmProtection 属性

HMAC-SHA-256 认证、HKDF-SHA-256 密钥派生和 AES-256 密钥包装保持由 PDF MAC 格式固定,不随文档摘要选择而改变

内置配置文件

内置配置文件要求是固定的,不能通过更改记录字段削弱;当应用程序需要不同的生成算法、白名单或加密要求时使用 pmppCustom

工厂生成验证加密
CompatibilitySHA-256全部六种受支持摘要AES-256 或 AES-256-GCM
ModernSHA-384SHA-384、SHA-512、SHA3-384 或 SHA3-512AES-256 或 AES-256-GCM
HighAssuranceSHA3-512仅 SHA3-512要求 AES-256-GCM
Custom调用方选择调用方白名单调用方选择

Delphi 示例

uses HPDFDoc, HPDFPDFMAC;

var
  Options: THPDFPDFMACOptions;
  Info: THPDFPDFMACValidationInfo;
begin
  Options := THPDFPDFMACOptions.HighAssurance;
  if not PDF.AddStandalonePDFMAC('encrypted.pdf', 'authenticated.pdf',
    'user-password', Options) then
    raise Exception.Create('PDF MAC creation failed');

  if not PDF.ValidatePDFMAC('authenticated.pdf', 'user-password',
    Options, Info) then
    raise Exception.Create(Info.Message);
end;

验证决策

验证在流式传输受保护范围之前发现编码摘要,拒绝 AllowedDigestAlgorithms 之外的算法,并在认证文件密钥恢复后强制 RequireAESGCM

THPDFPDFMACValidationInfo 报告 DigestAlgorithm、PolicyProfile、PolicyAccepted 和 UsedAESGCM;pmsPolicyRejected 与格式错误的输入或失败的认证标签分开

对于 /AttachedToSig,选定的摘要还通过 PdfMacIntegrityInfo.signatureDigest 保护原始 CMS 签名值,而 ValidatePDFMAC 验证活动的直接 AuthCode、间接 SigObjRef、签名字段绑定和完整签名修订

请参阅 SignPDFWithPFXAndAttachedPDFMAC 了解原子 PFX 签名工作流 ValidatePDFMACChain 把所选策略应用于每个受保护的增量修订版,拒绝摘要强度降级,要求第一个 MAC 之后 KDFSalt 保持稳定,并报告确切的失败修订版和 xref 偏移

原子化 PFX 签名工作流见 SignPDFWithPFXAndAttachedPDFMAC