THPDFPDFMACValidationInfo Record
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 涵蓋的正是簽章簽署的那些位元組