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
CertificateDERDER エンコードの署名証明書。埋め込み証明書と issuer/シリアル参照に使われます
Ed25519SeedCNG なしで Ed25519 署名するときの 32 バイトシード。それ以外は空
Datadetached 署名がカバーする、すでにダイジェスト済みの範囲バイト
SubFilter属性選択を駆動する /SubFilter。/ETSI.CAdES.detached など
DigestAlgorithmOrd(TPDFlibDigestAlgorithm) に一致するダイジェストアルゴリズムの序数: 2 は SHA-256、3 は SHA-384、4 は SHA-512、5〜7 は SHA-3 ファミリ
CommitmentTypeDERDER エンコードの commitment type 属性。なければ空
SignaturePolicyDERDER エンコードの署名ポリシー識別子。なければ空
NCryptKeyHandle開いている CNG 鍵ハンドル。0 なら関数自身が証明書の秘密鍵を開き、オプションで UI を表示します
AllowPrivateKeyUI鍵がユーザーの同席を要求するとき、CNG 鍵取得ダイアログを許可します
ExternalSignerダイジェストを受け取り生の署名を返すコールバック。HSM やリモート署名向け
ExternalSenderExternalSigner コールバックに戻される送信者
ExternalSignProcessIDコールバックに戻される署名プロセス識別子
ExternalSignatureAlgorithmPL_EXTERNAL_SIGNATURE_RSA_PKCS1、PL_EXTERNAL_SIGNATURE_ECDSA_DER、PL_EXTERNAL_SIGNATURE_ECDSA_P1363 のいずれか
RSAPSSPaddingRSA 署名に RSASSA-PSS パディングを選択します
RevocationInfoDERRevocationInfoChoices として埋め込む事前収集の失効情報

戻り値

DER エンコードの detached CMS。署名ステップのいずれかが失敗すると空文字列

備考

このルーチンはモダン署名パスのエンジンです。直接呼べば commitment とポリシー属性を完全に制御でき、返ってきたバイトは PLIsModernDetachedCMS で検証されるデータと同様に PDF の /Contents の穴に入ります

関連項目

PLVerifyModernDetachedCMS, PLIsModernDetachedCMS, PLModernSignatureSizeEstimate, TPDFlibExternalDigestSignEvent, SetSignProcessExternalDigestSigner