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
| CertContext | Windows-CERT_CONTEXT-Handle des Signaturzertifikats; Nil für den reinen External-Signer-Pfad |
|---|---|
| CertificateDER | DER-kodiertes Signaturzertifikat, für das eingebettete Zertifikat und die Issuer-/Serial-Referenzen |
| Ed25519Seed | 32-Byte-Seed beim Ed25519-Signieren ohne CNG, sonst leer |
| Data | Die bereits gedigesteten Range-Bytes, die die Detached-Signatur abdeckt |
| SubFilter | Ziel-/SubFilter wie /ETSI.CAdES.detached, das die Attributauswahl steuert |
| DigestAlgorithm | Digest-Algorithmus-Ordinalzahl passend zu Ord(TPDFlibDigestAlgorithm): 2 SHA-256, 3 SHA-384, 4 SHA-512, 5 bis 7 die SHA-3-Familie |
| CommitmentTypeDER | DER-kodiertes Commitment-Typ-Attribut, leer wenn keins |
| SignaturePolicyDER | DER-kodierte Signatur-Policy-Kennung, leer wenn keine |
| NCryptKeyHandle | Offenes CNG-Key-Handle; 0 lässt die Funktion selbst den privaten Schlüssel des Zertifikats öffnen, optional mit UI |
| AllowPrivateKeyUI | Erlaubt den CNG-Schlüsselbeschaffungs-Dialog, wenn der Schlüssel die Anwesenheit des Nutzers verlangt |
| ExternalSigner | Callback, der den Digest empfängt und die rohe Signatur zurückgibt, für HSM oder Remote-Signing |
| ExternalSender | Sender, der an den ExternalSigner-Callback zurückgereicht wird |
| ExternalSignProcessID | Sign-Prozess-Kennung, die an den Callback zurückgereicht wird |
| ExternalSignatureAlgorithm | Eins aus PL_EXTERNAL_SIGNATURE_RSA_PKCS1, PL_EXTERNAL_SIGNATURE_ECDSA_DER, PL_EXTERNAL_SIGNATURE_ECDSA_P1363 |
| RSAPSSPadding | Wählt RSASSA-PSS-Padding für RSA-Signaturen |
| RevocationInfoDER | Vorab 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