PDF MAC Algorithm Agility and Policy Profiles
O HotPDF pode produzir e validar valores PDF MAC ISO/TS 32004 independentes e anexados a assinatura com seis algoritmos de resumo de documento e aplicação de política de falha fechada
Digests de documento suportados
THPDFPDFMACDigestAlgorithm fornece pmdaSHA256, pmdaSHA384, pmdaSHA512, pmdaSHA3_256, pmdaSHA3_384 e pmdaSHA3_512
O digest selecionado protege o ByteRange completo do PDF, as informações de integridade encapsuladas, o algoritmo de digest CMS e o atributo CMSAlgorithmProtection
A autenticação HMAC-SHA-256, a derivação de chaves HKDF-SHA-256 e o key wrap AES-256 permanecem fixos pelo formato PDF MAC e não mudam com a seleção do digest do documento
Perfis embutidos
Os requisitos dos perfis embutidos são fixos e não podem ser enfraquecidos mudando campos do record; use pmppCustom quando a aplicação precisar de um algoritmo de geração, allowlist ou requisito de criptografia diferente
| Factory | Generation | Validation | Encryption |
|---|---|---|---|
Compatibility | SHA-256 | Todos os seis digests suportados | AES-256 ou AES-256-GCM |
Modern | SHA-384 | SHA-384, SHA-512, SHA3-384 ou SHA3-512 | AES-256 ou AES-256-GCM |
HighAssurance | SHA3-512 | Apenas SHA3-512 | AES-256-GCM exigido |
Custom | Selecionado pelo chamador | Allowlist do chamador | Selecionado pelo chamador |
Exemplo 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;
Decisões de validação
A validação descobre o digest codificado antes de transmitir as faixas protegidas em streaming, rejeita algoritmos fora de AllowedDigestAlgorithms e impõe RequireAESGCM depois da recuperação autenticada da chave do arquivo
THPDFPDFMACValidationInfo reporta DigestAlgorithm, PolicyProfile, PolicyAccepted e UsedAESGCM; pmsPolicyRejected é separado de entrada malformada ou de uma tag de autenticação falha
Para /AttachedToSig, o digest selecionado também protege o valor bruto da assinatura CMS por meio de PdfMacIntegrityInfo.signatureDigest, enquanto ValidatePDFMAC verifica o AuthCode direto ativo, o SigObjRef indireto, a vinculação ao campo de assinatura e a revisão assinada completa
ValidatePDFMACChain aplica a política selecionada a toda revisão incremental protegida, rejeita rebaixamento de força de digest, exige um KDFSalt estável após o primeiro MAC e reporta a revisão exata que falhou e o offset de xref
Veja SignPDFWithPFXAndAttachedPDFMAC para o fluxo de trabalho atômico de assinatura PFX