TPDFlibPFXFile
Security and Signatures
説明
TPDFlibPFXFile は、分離型 PKCS#7 署名の生成に使う署名アイデンティティを保持します
アイデンティティの源は、PFX ファイル、表示名で解決した Windows システム証明書ストアのエントリ、外部で複製された PCCERT_CONTEXT、Ed25519 キーペア、CNG キー、外部ダイジェストコールバックのいずれかです
アイデンティティをバインドすると、SignData が CMS 署名バイトを生成し、推定ヘルパーが署名書き込み前に /Contents の予約サイズを算出します
SigningWorkbench デモは、署名パイプラインにアイデンティティを渡す前に、このクラスで PFX を開きます
構文
Delphi
TPDFlibPFXFile = Class
Public
Destructor Destroy; Override;
Function Open(Const FileName: WideString; Const Password: AnsiString; UseMachineKeyset: Boolean): TPDFlibSignerResult;
Function OpenFromStore(Const StoreName, CertName: WideString; UseMachineStore: Boolean): TPDFlibSignerResult;
Function EnumerateStore(Const StoreName: WideString; UseMachineStore: Boolean;
Var Infos: Array Of TPDFlibCertificateInfo): Integer;
Function OpenFromContext(CertContext: Pointer): TPDFlibSignerResult;
Function OpenEd25519(Const CertificateDER, PrivateKeyDER: AnsiString): TPDFlibSignerResult;
Function OpenEd25519FromFile(Const CertificateFile, PrivateKeyFile: WideString): TPDFlibSignerResult;
Function OpenCNGKey(Const CertificateDER: AnsiString;
Const ProviderName, KeyName: WideString; UseMachineKey, AllowUI: Boolean): TPDFlibSignerResult;
Function OpenCNGKeyHandle(Const CertificateDER: AnsiString; KeyHandle: TPLIntPtr; AllowUI: Boolean): TPDFlibSignerResult;
Function OpenExternalDigestSigner(Const CertificateDER: AnsiString;
Signer: TPDFlibExternalDigestSignEvent; Sender: TObject;
SignProcessID, SignatureAlgorithm, SignatureReserveBytes: Integer): TPDFlibSignerResult;
Function GetCertificateDER: AnsiString;
Procedure SetPrivateKeyUI(AllowUI: Boolean);
Procedure SetRSAPSSPadding(Enable: Boolean);
Function CertificateKeyUsage: Integer;
Function EstimateSignatureSize(Const Data, SubFilter: AnsiString;
DigestAlgorithm: TPDFlibDigestAlgorithm;
Const CommitmentTypeDER, SignaturePolicyDER, RevocationInfoDER: AnsiString): Integer;
Function EstimateCertificateChainSize: Integer;
Function SignData(Const Data, SubFilter: AnsiString; DigestAlgorithm: TPDFlibDigestAlgorithm;
Const CommitmentTypeDER, SignaturePolicyDER, RevocationInfoDER: AnsiString): AnsiString;
End;メソッド
| Open | パスワード付きで PFX または PKCS#12 ファイルを読み込みます。UseMachineKeyset でマシンキーセットを選択します |
|---|---|
| OpenFromStore | Subject の簡易表示名で Windows システムストアの証明書を探してコンテキストをバインドします。使える秘密鍵を持つ最初の証明書が選ばれます |
| EnumerateStore | 呼び出し側が用意した配列に、ストア内証明書ごとに 1 つの TPDFlibCertificateInfo を埋め、実際に埋めた数を返します |
| OpenFromContext | 外部で取得した PCCERT_CONTEXT をバインドします。所有権は呼び出し側にあり、署名が完了するまでコンテキストを有効に保つ必要があります |
| OpenEd25519, OpenEd25519FromFile | Ed25519 の証明書とシードをメモリまたはファイルからバインドします |
| OpenCNGKey, OpenCNGKeyHandle | プロバイダーとキー名、または既存のキーハンドルで CNG キーをバインドします |
| OpenExternalDigestSigner | ローカル秘密鍵の代わりに TPDFlibExternalDigestSignEvent コールバック経由で署名します |
| GetCertificateDER | バインドされた証明書の DER 形式 |
| SetPrivateKeyUI | CryptoAPI 秘密鍵のプロンプトを許可または抑制します |
| SetRSAPSSPadding | RSA 分離署名に RSASSA-PSS パディングを選択します。旧式の CryptoAPI キーは PKCS#1 v1.5 のままです |
| CertificateKeyUsage | X.509 のキー使用ビットを 2 バイトに詰めたもの。コンテキスト未バインド時は -1 |
| EstimateSignatureSize, EstimateCertificateChainSize | CMS 出力と証明書チェーンの上限値 |
| SignData | 選択したサブフィルターとダイジェストアルゴリズムで、データの分離型 CMS 署名を生成します |
備考
すべての open 系メソッドは TPDFlibSignerResult を返すため、アイデンティティのバインド失敗を正確に報告できます
ファサードからも SetSignProcessPFXFromFile、SetSignProcessCertFromStore、SetSignProcessEd25519Identity、SetSignProcessCNGKey で同じアイデンティティに到達できます
関連項目
TPDFlibSignerResult, TPDFlibCertificateInfo, TPDFlibSigner, TPDFlibSignDoc, NewSignProcessFromFile