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 が署名と同じバイトを覆っているか確認できます