PLBuildModernDetachedCMS
暗号、電子署名
説明
Windows CryptoAPI のメッセージ層では表現できないアルゴリズムについて、RSA、ECDSA、Ed25519 の署名を包む detached CMS SignedData を構築します
署名者証明書とそのチェーンコンテキスト、ダイジェストアルゴリズム、commitment type と署名ポリシーの DER、失効情報、パディングポリシーはすべてパラメータで渡します。生の署名は CNG NCrypt、外部ダイジェスト署名者コールバック、または純 Pascal の Ed25519 パスが供給します
構文
Delphi
Function PLBuildModernDetachedCMS(CertContext: Pointer;
Const CertificateDER, Ed25519Seed, Data, SubFilter: AnsiString;
DigestAlgorithm: Integer; Const CommitmentTypeDER,
SignaturePolicyDER: AnsiString; NCryptKeyHandle: TPLIntPtr= 0;
AllowPrivateKeyUI: Boolean= False;
ExternalSigner: TPDFlibExternalDigestSignEvent= Nil;
ExternalSender: TObject= Nil; ExternalSignProcessID: Integer= 0;
ExternalSignatureAlgorithm: Integer= 0;
RSAPSSPadding: Boolean= False;
Const RevocationInfoDER: AnsiString= ''): AnsiString;パラメータ
| CertContext | 署名証明書の Windows CERT_CONTEXT ハンドル。純外部署名者パスでは Nil |
|---|---|
| CertificateDER | DER エンコードの署名証明書。埋め込み証明書と issuer/シリアル参照に使われます |
| Ed25519Seed | CNG なしで Ed25519 署名するときの 32 バイトシード。それ以外は空 |
| Data | detached 署名がカバーする、すでにダイジェスト済みの範囲バイト |
| SubFilter | 属性選択を駆動する /SubFilter。/ETSI.CAdES.detached など |
| DigestAlgorithm | Ord(TPDFlibDigestAlgorithm) に一致するダイジェストアルゴリズムの序数: 2 は SHA-256、3 は SHA-384、4 は SHA-512、5〜7 は SHA-3 ファミリ |
| CommitmentTypeDER | DER エンコードの commitment type 属性。なければ空 |
| SignaturePolicyDER | DER エンコードの署名ポリシー識別子。なければ空 |
| NCryptKeyHandle | 開いている CNG 鍵ハンドル。0 なら関数自身が証明書の秘密鍵を開き、オプションで UI を表示します |
| AllowPrivateKeyUI | 鍵がユーザーの同席を要求するとき、CNG 鍵取得ダイアログを許可します |
| ExternalSigner | ダイジェストを受け取り生の署名を返すコールバック。HSM やリモート署名向け |
| ExternalSender | ExternalSigner コールバックに戻される送信者 |
| ExternalSignProcessID | コールバックに戻される署名プロセス識別子 |
| ExternalSignatureAlgorithm | PL_EXTERNAL_SIGNATURE_RSA_PKCS1、PL_EXTERNAL_SIGNATURE_ECDSA_DER、PL_EXTERNAL_SIGNATURE_ECDSA_P1363 のいずれか |
| RSAPSSPadding | RSA 署名に RSASSA-PSS パディングを選択します |
| RevocationInfoDER | RevocationInfoChoices として埋め込む事前収集の失効情報 |
戻り値
DER エンコードの detached CMS。署名ステップのいずれかが失敗すると空文字列
備考
このルーチンはモダン署名パスのエンジンです。直接呼べば commitment とポリシー属性を完全に制御でき、返ってきたバイトは PLIsModernDetachedCMS で検証されるデータと同様に PDF の /Contents の穴に入ります
関連項目
PLVerifyModernDetachedCMS, PLIsModernDetachedCMS, PLModernSignatureSizeEstimate, TPDFlibExternalDigestSignEvent, SetSignProcessExternalDigestSigner