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

FactoryGenerationValidationEncryption
CompatibilitySHA-256All six supported digestsAES-256 or AES-256-GCM
ModernSHA-384SHA-384, SHA-512, SHA3-384, or SHA3-512AES-256 or AES-256-GCM
HighAssuranceSHA3-512SHA3-512 onlyAES-256-GCM required
CustomCaller selectedCaller allowlistCaller 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