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

FactoryGenerationValidationEncryption
CompatibilitySHA-256Todos os seis digests suportadosAES-256 ou AES-256-GCM
ModernSHA-384SHA-384, SHA-512, SHA3-384 ou SHA3-512AES-256 ou AES-256-GCM
HighAssuranceSHA3-512Apenas SHA3-512AES-256-GCM exigido
CustomSelecionado pelo chamadorAllowlist do chamadorSelecionado 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