Zwinność algorytmów PDF MAC i profile polityk
HotPDF potrafi tworzyć i walidować wartości PDF MAC ISO/TS 32004 — samodzielne i doczepione do podpisu — z sześcioma algorytmami digestu dokumentu i egzekwowaniem polityk w trybie fail-closed
Obsługiwane digesty dokumentu
THPDFPDFMACDigestAlgorithm dostarcza pmdaSHA256, pmdaSHA384, pmdaSHA512, pmdaSHA3_256, pmdaSHA3_384 i pmdaSHA3_512
Wybrany digest chroni kompletny ByteRange PDF, hermetyzowane informacje o integralności, algorytm digestu CMS i atrybut CMSAlgorithmProtection
Uwierzytelnianie HMAC-SHA-256, wyprowadzanie klucza HKDF-SHA-256 i opakowanie klucza AES-256 pozostają sztywno ustalone przez format PDF MAC i nie zmieniają się wraz z wyborem digestu dokumentu
Wbudowane profile
Wymagania wbudowanych profilów są stałe i nie da się ich osłabić przez zmianę pól rekordu; gdy aplikacja potrzebuje innego algorytmu generowania, allowlisty lub wymogu szyfrowania, użyj pmppCustom
| Fabryka | Generowanie | Walidacja | Szyfrowanie |
|---|---|---|---|
Compatibility | SHA-256 | Wszystkie sześć obsługiwanych digestów | AES-256 lub AES-256-GCM |
Modern | SHA-384 | SHA-384, SHA-512, SHA3-384 lub SHA3-512 | AES-256 lub AES-256-GCM |
HighAssurance | SHA3-512 | Tylko SHA3-512 | Wymagany AES-256-GCM |
Custom | Wybiera wywołujący | Allowlist wywołującego | Wybiera wywołujący |
Przykład w 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;
Decyzje walidacji
Walidacja wykrywa zakodowany digest, zanim zacznie strumieniować chronione zakresy, odrzuca algorytmy spoza AllowedDigestAlgorithms i egzekwuje RequireAESGCM po uwierzytelnionym odzyskaniu klucza pliku
THPDFPDFMACValidationInfo raportuje DigestAlgorithm, PolicyProfile, PolicyAccepted i UsedAESGCM; pmsPolicyRejected jest odrębny od źle uformowanego wejścia albo nieudanego taga uwierzytelniającego
Dla /AttachedToSig wybrany digest chroni też surową wartość podpisu CMS przez PdfMacIntegrityInfo.signatureDigest, a ValidatePDFMAC weryfikuje aktywne bezpośrednie AuthCode, pośrednie SigObjRef, powiązanie pola podpisu i kompletną podpisaną rewizję
ValidatePDFMACChain stosuje wybraną politykę do każdej chronionej rewizji przyrostowej, odrzuca osłabienie siły digestu, wymaga stabilnego KDFSalt po pierwszym MAC i raportuje dokładną rewizję oraz offset xref, na których się nie powiodło
Atomowy workflow podpisywania PFX opisuje strona SignPDFWithPFXAndAttachedPDFMAC