公開鍵暗号化ドキュメントの再ロード

公開鍵セキュリティハンドラー(/Filter /Adobe.PPKLite または /Adobe.PubSec、/SubFilter adbe.pkcs7.s4/s5)で暗号化されたドキュメントは、呼び出し側が受信者秘密鍵を提供するとロードできるようになりました

鍵マテリアル

LoadFromFile を呼び出す前に、THotPDF.PubSecKeyMaterial(HPDFParsePFX からの THPDFPFXKeyMaterial)を割り当てます。境界付き範囲プリスキャン中にファイルキーが回復されます。すべての /Recipients エンベロープが RSA-OAEP 秘密鍵で展開され(シードと権限は CMS EnvelopedData から回復)、ファイルキーはライターとまったく同じように再導出されます。すなわち AES-256 ではシードとエンベロープの SHA-256、レガシー鍵長では SHA-1

受信者選択

PubSecRecipientQuery(function(Context: Pointer; RecipientCount: Integer): Integer への参照)は、供給された鍵がどのエンベロープインデックスを展開するかを選択します。コールバックがない場合、1 つが展開まで送るまで受信者がすべて試されます。PubSecRecipientQueryContext は呼び出し側状態を運びます

ライター修正

ラウンドトリップにより 3 つのライター欠陥が明らかになり、すべて修正されました。受信者エンベロープはバイナリから Unicode への文字列往復によって破損し、ファイルキーダイジェストは 1 バイトオフセットでエンベロープバイトをハッシュし、/Recipients 文字列は通常の文字列のように暗号化されていました(すべてのビューアーはそれらをプレーンテキストで必要とします)。エンベロープは文字列オブジェクト上の明示的な SkipEncryption フラグでオプトアウトするようになりました