PDF MAC Algorithm Agility and Policy Profiles
HotPDF can produce and validate ISO/TS 32004 standalone and signature-attached PDF MAC values with six document-digest algorithms and fail-closed policy enforcement
Digests de documento soportados
THPDFPDFMACDigestAlgorithm proporciona pmdaSHA256, pmdaSHA384, pmdaSHA512, pmdaSHA3_256, pmdaSHA3_384 y pmdaSHA3_512
El digest seleccionado protege el ByteRange PDF completo, la información de integridad encapsulada, el algoritmo de digest CMS y el atributo CMSAlgorithmProtection
La autenticación HMAC-SHA-256, la derivación de claves HKDF-SHA-256 y el key wrap AES-256 quedan fijos por el formato PDF MAC y no los cambia la selección de digest del documento
Perfiles integrados
Los requisitos de los perfiles integrados son fijos y no pueden debilitarse cambiando campos del record; use pmppCustom cuando la aplicación necesite otro algoritmo de generación, allowlist o requisito de cifrado
| Factoría | Generación | Validación | Cifrado |
|---|---|---|---|
Compatibility | SHA-256 | Los seis digests soportados | AES-256 o AES-256-GCM |
Modern | SHA-384 | SHA-384, SHA-512, SHA3-384 o SHA3-512 | AES-256 o AES-256-GCM |
HighAssurance | SHA3-512 | Solo SHA3-512 | AES-256-GCM obligatorio |
Custom | Seleccionado por el llamador | Allowlist del llamador | Seleccionado por el llamador |
Ejemplo 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;
Decisiones de validación
La validación descubre el digest codificado antes de transmitir por stream los rangos protegidos, rechaza algoritmos fuera de AllowedDigestAlgorithms y aplica RequireAESGCM tras la recuperación de la clave de archivo autenticada
THPDFPDFMACValidationInfo informa de DigestAlgorithm, PolicyProfile, PolicyAccepted y UsedAESGCM; pmsPolicyRejected es distinto de una entrada malformada o de una etiqueta de autenticación fallida
Para /AttachedToSig, el digest seleccionado también protege el valor de firma CMS en bruto a través de PdfMacIntegrityInfo.signatureDigest, mientras que ValidatePDFMAC verifica el AuthCode directo activo, el SigObjRef indirecto, el enlace al campo de firma y la revisión firmada completa
ValidatePDFMACChain aplica la política seleccionada a cada revisión incremental protegida, rechaza el descenso de fortaleza del digest, exige un KDFSalt estable tras el primer MAC e informa de la revisión y el offset xref exactos que fallan
Véase SignPDFWithPFXAndAttachedPDFMAC para el flujo de firma PFX atómico