Recarga de documentos cifrados con clave pública

Los documentos cifrados con el controlador de seguridad de clave pública (/Filter /Adobe.PPKLite o /Adobe.PubSec, /SubFilter adbe.pkcs7.s4/s5) ahora se cargan cuando el llamador proporciona la clave privada del destinatario

Material de clave

Asigne THotPDF.PubSecKeyMaterial (un THPDFPFXKeyMaterial de HPDFParsePFX) antes de llamar a LoadFromFile. Durante el preescaneo de rango acotado se recupera la clave de archivo: cada sobre /Recipients se abre con la clave privada RSA-OAEP (la semilla y los permisos se recuperan del CMS EnvelopedData), y la clave de archivo se vuelve a derivar exactamente como lo hace el escritor - SHA-256 de la semilla más los sobres para AES-256, SHA-1 para las longitudes de clave heredadas

Selección de destinatario

PubSecRecipientQuery (una reference to function(Context: Pointer; RecipientCount: Integer): Integer) selecciona qué índice de sobre abre la clave suministrada; sin una devolución de llamada se prueba cada destinatario hasta que uno se abre. PubSecRecipientQueryContext transporta el estado del llamador

Correcciones del escritor

El viaje de ida y vuelta expuso tres defectos del escritor, todos corregidos: los sobres de destinatario se corrompían por un viaje de ida y vuelta de cadena binaria a través de Unicode, el resumen de la clave de archivo mezclaba los bytes del sobre con un desplazamiento de un byte, y las cadenas /Recipients se cifraban como cadenas ordinarias (todos los visores las necesitan en texto plano); los sobres ahora optan por no cifrarse mediante una marca SkipEncryption explícita en el objeto de cadena