Ricarica dei documenti cifrati con chiave pubblica
I documenti cifrati con il security handler a chiave pubblica (/Filter /Adobe.PPKLite o /Adobe.PubSec, /SubFilter adbe.pkcs7.s4/s5) ora si caricano quando il chiamante fornisce la chiave privata del destinatario
Key material
Assegna THotPDF.PubSecKeyMaterial (un THPDFPFXKeyMaterial da HPDFParsePFX) prima di chiamare LoadFromFile. Durante la prescan a intervallo limitato la file key viene recuperata: ogni envelope /Recipients viene aperto con la chiave privata RSA-OAEP (seed e permessi recuperati dal CMS EnvelopedData) e la file key viene riderivata esattamente come fa lo writer - SHA-256 di seed più envelope per AES-256, SHA-1 per le lunghezze di chiave legacy
Selezione del destinatario
PubSecRecipientQuery (un reference to function(Context: Pointer; RecipientCount: Integer): Integer) seleziona quale indice di envelope apre la chiave fornita; senza callback ogni destinatario viene provato finché uno non si apre. PubSecRecipientQueryContext trasporta lo stato del chiamante
Correzioni lato writer
Il round-trip ha esposto tre difetti del writer, tutti corretti: gli envelope dei destinatari venivano corrotti da un round-trip di stringhe binarie-through-Unicode, il digest della file key calcolava l'hash dei byte degli envelope con un offset di un byte e le stringhe /Recipients venivano cifrate come stringhe ordinarie (ogni viewer le richiede in chiaro); gli envelope ora rinunciano alla cifratura tramite un flag esplicito SkipEncryption sull'oggetto stringa