PLBuildModernDetachedCMS
密碼編譯、數位簽章
描述
為 RSA、ECDSA 或 Ed25519 簽章建構包住它們的 detached CMS SignedData,涵蓋 Windows CryptoAPI 訊息層無法表達的演算法
簽署者憑證與其鏈結上下文、摘要演算法、承諾類型與簽章政策的 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 編碼的簽署憑證,用於內嵌憑證與簽發者/序號參照 |
| 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 編碼的承諾類型屬性,沒有就留空 |
| 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;任一簽署步驟失敗時為空字串
備註
這個常式是現代簽章路徑背後的引擎;直接呼叫可以完全掌握承諾與政策屬性,回傳的位元組和經 PLIsModernDetachedCMS 驗證的資料一樣填入 PDF 的 /Contents 空位
另請參閱
PLVerifyModernDetachedCMS, PLIsModernDetachedCMS, PLModernSignatureSizeEstimate, TPDFlibExternalDigestSignEvent, SetSignProcessExternalDigestSigner