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íaGeneraciónValidaciónCifrado
CompatibilitySHA-256Los seis digests soportadosAES-256 o AES-256-GCM
ModernSHA-384SHA-384, SHA-512, SHA3-384 o SHA3-512AES-256 o AES-256-GCM
HighAssuranceSHA3-512Solo SHA3-512AES-256-GCM obligatorio
CustomSeleccionado por el llamadorAllowlist del llamadorSeleccionado 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