Ponowne ładowanie dokumentów szyfrowanych kluczem publicznym

Dokumenty zaszyfrowane handlerem bezpieczeństwa klucza publicznego (/Filter /Adobe.PPKLite lub /Adobe.PubSec, /SubFilter adbe.pkcs7.s4/s5) ładują się teraz, gdy wywołujący poda prywatny klucz adresata

Materiał klucza

Przypisz THotPDF.PubSecKeyMaterial (THPDFPFXKeyMaterial z HPDFParsePFX) przed wywołaniem LoadFromFile. Podczas preskanu ograniczonego zakresu klucz pliku jest odzyskiwany: każda koperta /Recipients jest odpakowywana kluczem prywatnym RSA-OAEP (seed i uprawnienia odzyskiwane z CMS EnvelopedData), a klucz pliku jest wyprowadzany ponownie dokładnie tak, jak robi to writer – SHA-256 z seeda plus kopert dla AES-256, SHA-1 dla starszych długości klucza

Wybór adresata

PubSecRecipientQuery (reference to function(Context: Pointer; RecipientCount: Integer): Integer) wybiera, którą kopertę odpakuje podany klucz; bez wywołania zwrotnego próbowani są wszyscy adresaci, aż jedna się odpakuje. PubSecRecipientQueryContext przenosi stan wywołującego

Poprawki writera

Przejścia w obie strony ujawniły trzy wady writera, wszystkie naprawione: koperty adresatów były uszkadzane przez obieg ciągów binarnych przez Unicode, digest klucza pliku hashował bajty kopert z przesunięciem o jeden bajt, a ciągi /Recipients były szyfrowane jak zwykłe ciągi (każda przeglądarka potrzebuje ich w postaci jawnej); koperty teraz optują się przez jawny znacznik SkipEncryption na obiekcie ciągu