Rechargement de document chiffré à clé publique

Les documents chiffrés avec le gestionnaire de sécurité à clé publique (/Filter /Adobe.PPKLite ou /Adobe.PubSec, /SubFilter adbe.pkcs7.s4/s5) se chargent désormais lorsque l'appelant fournit la clé privée du destinataire

Matériel de clé

Affectez THotPDF.PubSecKeyMaterial (un THPDFPFXKeyMaterial issu de HPDFParsePFX) avant d'appeler LoadFromFile. Pendant la pré-analyse à plage bornée, la clé de fichier est récupérée : chaque enveloppe /Recipients est déballée avec la clé privée RSA-OAEP (graine et autorisations récupérées depuis la CMS EnvelopedData), et la clé de fichier est re-dérivée exactement comme le fait l'écrivain - SHA-256 de la graine plus enveloppes pour AES-256, SHA-1 pour les longueurs de clé héritées

Sélection du destinataire

PubSecRecipientQuery (un reference to function(Context: Pointer; RecipientCount: Integer): Integer) sélectionne quel index d'enveloppe la clé fournie déballée ; sans rappel, chaque destinataire est essayé jusqu'à ce qu'un déballage réussisse. PubSecRecipientQueryContext transporte l'état de l'appelant

Correctifs de l'écrivain

Le round-trip a exposé trois défauts d'écrivain, tous corrigés : les enveloppes de destinataires étaient corrompues par un aller-retour de chaînes binaires via Unicode, le condensé de la clé de fichier hachait les octets d'enveloppe avec un décalage d'un octet, et les chaînes /Recipients étaient chiffrées comme des chaînes ordinaires (chaque visualiseur les exige en clair) ; les enveloppes se retirent désormais explicitement via un indicateur SkipEncryption sur l'objet chaîne