PLBuildModernDetachedCMS

Kryptographie, digitale Signaturen

Beschreibung

Baut eine Detached-CMS-SignedData um RSA-, ECDSA- oder Ed25519-Signaturen, und zwar für die Algorithmen, die die Windows-CryptoAPI-Nachrichtenschicht nicht ausdrücken kann

Das Signaturzertifikat samt Kettenkontext, der Digest-Algorithmus, die DERs für Commitment-Typ und Signatur-Policy, das Revocation-Material und die Padding-Policy kommen über Parameter hinein; die rohe Signatur liefern CNG NCrypt, ein externer Digest-Signer-Callback oder der Pure-Pascal-Ed25519-Pfad

Syntax

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;

Parameter

CertContextWindows-CERT_CONTEXT-Handle des Signaturzertifikats; Nil für den reinen External-Signer-Pfad
CertificateDERDER-kodiertes Signaturzertifikat, für das eingebettete Zertifikat und die Issuer-/Serial-Referenzen
Ed25519Seed32-Byte-Seed beim Ed25519-Signieren ohne CNG, sonst leer
DataDie bereits gedigesteten Range-Bytes, die die Detached-Signatur abdeckt
SubFilterZiel-/SubFilter wie /ETSI.CAdES.detached, das die Attributauswahl steuert
DigestAlgorithmDigest-Algorithmus-Ordinalzahl passend zu Ord(TPDFlibDigestAlgorithm): 2 SHA-256, 3 SHA-384, 4 SHA-512, 5 bis 7 die SHA-3-Familie
CommitmentTypeDERDER-kodiertes Commitment-Typ-Attribut, leer wenn keins
SignaturePolicyDERDER-kodierte Signatur-Policy-Kennung, leer wenn keine
NCryptKeyHandleOffenes CNG-Key-Handle; 0 lässt die Funktion selbst den privaten Schlüssel des Zertifikats öffnen, optional mit UI
AllowPrivateKeyUIErlaubt den CNG-Schlüsselbeschaffungs-Dialog, wenn der Schlüssel die Anwesenheit des Nutzers verlangt
ExternalSignerCallback, der den Digest empfängt und die rohe Signatur zurückgibt, für HSM oder Remote-Signing
ExternalSenderSender, der an den ExternalSigner-Callback zurückgereicht wird
ExternalSignProcessIDSign-Prozess-Kennung, die an den Callback zurückgereicht wird
ExternalSignatureAlgorithmEins aus PL_EXTERNAL_SIGNATURE_RSA_PKCS1, PL_EXTERNAL_SIGNATURE_ECDSA_DER, PL_EXTERNAL_SIGNATURE_ECDSA_P1363
RSAPSSPaddingWählt RSASSA-PSS-Padding für RSA-Signaturen
RevocationInfoDERVorab gesammelte Revocation-Infos zum Einbetten als RevocationInfoChoices

Rückgabewert

Das DER-kodierte Detached CMS oder ein leerer String, wenn ein Signaturschritt scheitert

Anmerkungen

Diese Routine ist der Motor hinter den Modern-Signature-Pfaden des Sign-Prozesses; der direkte Aufruf behält die volle Kontrolle über Commitment- und Policy-Attribute, während die zurückgegebenen Bytes wie bei PLIsModernDetachedCMS-verifizierten Daten in die /Contents-Lücke des PDF rutschen

Siehe auch

PLVerifyModernDetachedCMS, PLIsModernDetachedCMS, PLModernSignatureSizeEstimate, TPDFlibExternalDigestSignEvent, SetSignProcessExternalDigestSigner