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
| 工廠 | 產生 | 驗證 | 加密 |
|---|---|---|---|
Compatibility | SHA-256 | 全部六種支援摘要 | AES-256 或 AES-256-GCM |
Modern | SHA-384 | SHA-384、SHA-512、SHA3-384 或 SHA3-512 | AES-256 或 AES-256-GCM |
HighAssurance | SHA3-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、簽章欄位綁定與完整的已簽署修訂版
ValidatePDFMACChain 把選定原則套用到每個受保護的增量修訂版、拒絕摘要強度降級、要求第一個 MAC 之後的 KDFSalt 保持穩定,並回報確切失敗的修訂版與 xref 位移
原子化的 PFX 簽署流程參見 SignPDFWithPFXAndAttachedPDFMAC