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 | Üretim | Doğrulama | Şifreleme |
|---|---|---|---|
Compatibility | SHA-256 | Desteklenen altı digest'in tamamı | AES-256 veya AES-256-GCM |
Modern | SHA-384 | SHA-384, SHA-512, SHA3-384 veya SHA3-512 | AES-256 veya AES-256-GCM |
HighAssurance | SHA3-512 | Yalnızca SHA3-512 | AES-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