PDF MAC Algorithm Esnekliği ve Policy Profilleri

HotPDF, altı document-digest algoritmasıyla ve fail-closed policy uygulamasıyla ISO/TS 32004 standalone ve imzaya ekli PDF MAC değerlerini üretebilir ve doğrulayabilir

Desteklenen document digest'leri

THPDFPDFMACDigestAlgorithm, pmdaSHA256, pmdaSHA384, pmdaSHA512, pmdaSHA3_256, pmdaSHA3_384 ve pmdaSHA3_512 değerlerini sağlar

Seçilen digest, eksiksiz PDF ByteRange'ini, kapsüllenmiş integrity bilgisini, CMS digest algoritmasını ve CMSAlgorithmProtection attribute'unu korur

HMAC-SHA-256 authentication, HKDF-SHA-256 key derivation ve AES-256 key wrap, PDF MAC formatı tarafından sabitlenmiştir; document-digest seçimi bunları değiştirmez

Yerleşik profiller

Yerleşik profil gereksinimleri sabittir ve record alanlarını değiştirerek zayıflatılamaz; uygulama farklı bir generation algoritmasına, allowlist'e veya şifreleme gereksinimine ihtiyaç duyduğunda pmppCustom kullanın

FabrikaÜretimDoğrulamaŞifreleme
CompatibilitySHA-256Desteklenen altı digest'in tamamıAES-256 veya AES-256-GCM
ModernSHA-384SHA-384, SHA-512, SHA3-384 veya SHA3-512AES-256 veya AES-256-GCM
HighAssuranceSHA3-512Yalnızca SHA3-512AES-256-GCM zorunlu
CustomÇağıran seçerÇağıranın allowlist'iÇağıran seçer

Delphi örneği

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;

Doğrulama kararları

Doğrulama, korunan aralıkları akışa almadan önce kodlanmış digest'i keşfeder, AllowedDigestAlgorithms dışındaki algoritmaları reddeder ve kimliği doğrulanmış file-key recovery'nin ardından RequireAESGCM'i zorunlu kılar

THPDFPDFMACValidationInfo, DigestAlgorithm, PolicyProfile, PolicyAccepted ve UsedAESGCM değerlerini raporlar; pmsPolicyRejected, bozuk girdiden veya başarısız bir authentication tag'inden ayrıdır

/AttachedToSig için, seçilen digest ayrıca raw CMS imza değerini PdfMacIntegrityInfo.signatureDigest üzerinden korur; ValidatePDFMAC ise etkin direct AuthCode'u, indirect SigObjRef'i, signature field bağlantısını ve eksiksiz imzalı revision'ı doğrular

ValidatePDFMACChain, seçilen policy'yi korunan her incremental revision'a uygular, digest gücü düşürmeyi reddeder, ilk MAC'ten sonra kararlı bir KDFSalt ister ve tam olarak başarısız olan revision'ı ve xref offset'ini raporlar

Atomik PFX imzalama iş akışı için bkz. SignPDFWithPFXAndAttachedPDFMAC