PLBuildModernDetachedCMS

Crittografia, firme digitali

Descrizione

Costruisce un CMS SignedData detached attorno a firme RSA, ECDSA o Ed25519 per gli algoritmi che il layer di messaggi di Windows CryptoAPI non sa esprimere

Il certificato del firmatario con il suo contesto di catena, l'algoritmo di digest, i DER di commitment type e signature policy, il materiale di revoca e la politica di padding entrano tutti come parametri, mentre la firma grezza arriva da CNG NCrypt, da una callback di firma del digest esterna o dal percorso Ed25519 in Pascal puro

Sintassi

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;

Parametri

CertContextHandle CERT_CONTEXT di Windows del certificato firmatario; Nil per il percorso interamente esterno
CertificateDERCertificato firmatario codificato DER, usato per il certificato incorporato e i riferimenti emittente/numero di serie
Ed25519SeedSeed di 32 byte quando si firma Ed25519 senza CNG, altrimenti vuota
DataI byte dell'intervallo già digerito coperti dalla firma detached
SubFilter/SubFilter di destinazione, come /ETSI.CAdES.detached, che guida la selezione degli attributi
DigestAlgorithmOrdinale dell'algoritmo di digest conforme a Ord(TPDFlibDigestAlgorithm): 2 SHA-256, 3 SHA-384, 4 SHA-512, da 5 a 7 la famiglia SHA-3
CommitmentTypeDERAttributo commitment type codificato DER, vuoto se assente
SignaturePolicyDERIdentificatore di signature policy codificato DER, vuoto se assente
NCryptKeyHandleHandle di chiave CNG aperto; con 0 la funzione apre da sola la chiave privata del certificato, mostrando eventualmente la UI
AllowPrivateKeyUIConsente la finestra di acquisizione della chiave CNG quando la chiave richiede la presenza dell'utente
ExternalSignerCallback che riceve il digest e restituisce la firma grezza, per HSM o firma remota
ExternalSenderMittente riportato alla callback ExternalSigner
ExternalSignProcessIDIdentificatore del processo di firma riportato alla callback
ExternalSignatureAlgorithmUno tra PL_EXTERNAL_SIGNATURE_RSA_PKCS1, PL_EXTERNAL_SIGNATURE_ECDSA_DER, PL_EXTERNAL_SIGNATURE_ECDSA_P1363
RSAPSSPaddingSeleziona il padding RSASSA-PSS per le firme RSA
RevocationInfoDERInformazioni di revoca precatalogate da incorporare come RevocationInfoChoices

Valore restituito

Il CMS detached codificato DER, oppure una stringa vuota quando un passaggio di firma fallisce

Note

Questa routine è il motore dei percorsi di firma moderna del processo di firma; chiamarla direttamente mantiene il pieno controllo sugli attributi di commitment e policy, e i byte restituiti si incastrano nel buco di /Contents del PDF come con i dati verificati da PLIsModernDetachedCMS

Vedere anche

PLVerifyModernDetachedCMS, PLIsModernDetachedCMS, PLModernSignatureSizeEstimate, TPDFlibExternalDigestSignEvent, SetSignProcessExternalDigestSigner