PDF MAC Algorithm Agility and Policy Profiles
Aplikace HotPDF umí vytvářet a ověřovat samostatné hodnoty PDF MAC podle ISO/TS 32004 se šesti algoritmy digestů dokumentu a s vynucením politiky uzavírající se při selhání
Supported document digests
THPDFPDFMACDigestAlgorithm poskytuje pmdaSHA256, pmdaSHA384, pmdaSHA512, pmdaSHA3_256, pmdaSHA3_384 a pmdaSHA3_512
Vybraný digest chrání kompletní ByteRange PDF, zapouzdřené informace o integritě, algoritmus digestu CMS a atribut CMSAlgorithmProtection
Ověřování HMAC-SHA-256, odvozování klíčů HKDF-SHA-256 a obalování klíčů AES-256 zůstávají fixní podle formátu PDF MAC a výběr digestu dokumentu je nemění
Built-in profiles
Požadavky vestavěných profilů jsou pevné a nelze je oslabit změnou polí záznamu; při potřebě jiného algoritmu generování, seznamu povolených algoritmů nebo požadavku na šifrování použijte pmppCustom
| Factory | Generation | Validation | Encryption |
|---|---|---|---|
Compatibility | SHA-256 | All six supported digests | AES-256 or AES-256-GCM |
Modern | SHA-384 | SHA-384, SHA-512, SHA3-384, or SHA3-512 | AES-256 or AES-256-GCM |
HighAssurance | SHA3-512 | SHA3-512 only | AES-256-GCM required |
Custom | Caller selected | Caller allowlist | Caller selected |
Delphi example
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;
Validation decisions
Ověřování zjistí zakódovaný digest před streamováním chráněných rozsahů, odmítá algoritmy mimo AllowedDigestAlgorithms a vynucuje RequireAESGCM po ověřeném obnovení klíče souboru
THPDFPDFMACValidationInfo hlásí DigestAlgorithm, PolicyProfile, PolicyAccepted a UsedAESGCM; pmsPolicyRejected je odděleno od chybného vstupu nebo neúspěšného ověřovacího kódu
Pro /AttachedToSig chrání zvolený digest také surovou hodnotu CMS podpisu přes PdfMacIntegrityInfo.signatureDigest, zatímco ValidatePDFMAC verifikuje aktivní přímý AuthCode, nepřímý SigObjRef, vazbu pole podpisu a kompletní podepsanou revizi
ValidatePDFMACChain aplikuje zvolenou politiku na každou chráněnou inkrementální revizi, odmítá snížení síly digestu, vyžaduje stabilní KDFSalt po první MAC a hlásí přesnou selhavší revizi a xref offset
Viz SignPDFWithPFXAndAttachedPDFMAC pro atomický pracovní postup podepisování PFX