PLBuildModernDetachedCMS

Criptografía, firmas digitales

Descripción

Arma un CMS SignedData detached alrededor de firmas RSA, ECDSA o Ed25519 para los algoritmos que la capa de mensajes de Windows CryptoAPI no sabe expresar

El certificado del firmante con su contexto de cadena, el algoritmo de digest, los DER de tipo de compromiso y política de firma, el material de revocación y la política de relleno entran por parámetros, y la firma cruda la aporta CNG NCrypt, una devolución de llamada de firma de digest externa o la ruta Ed25519 en Pascal puro

Sintaxis

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;

Parámetros

CertContextHandle de CERT_CONTEXT de Windows del certificado firmante; Nil para la ruta pura de firmante externo
CertificateDERCertificado firmante codificado en DER, usado para el certificado incrustado y las referencias de emisor/número de serie
Ed25519SeedSemilla de 32 bytes al firmar Ed25519 sin CNG, de lo contrario va vacía
DataLos bytes del rango ya digerido que cubre la firma detached
SubFilter/SubFilter destino, como /ETSI.CAdES.detached, que manda sobre la selección de atributos
DigestAlgorithmOrdinal del algoritmo de digest según Ord(TPDFlibDigestAlgorithm): 2 SHA-256, 3 SHA-384, 4 SHA-512, 5 a 7 la familia SHA-3
CommitmentTypeDERAtributo de tipo de compromiso codificado en DER, vacío cuando no aplica
SignaturePolicyDERIdentificador de política de firma codificado en DER, vacío cuando no aplica
NCryptKeyHandleHandle de clave CNG abierto; con 0 la función abre por su cuenta la clave privada del certificado, mostrando la UI si hace falta
AllowPrivateKeyUIHabilita el diálogo de adquisición de clave CNG cuando la clave exige la presencia del usuario
ExternalSignerDevolución de llamada que recibe el digest y devuelve la firma cruda, para HSM o firma remota
ExternalSenderRemitente que se devuelve a la devolución de llamada ExternalSigner
ExternalSignProcessIDIdentificador del proceso de firma que se regresa a la devolución de llamada
ExternalSignatureAlgorithmUno de PL_EXTERNAL_SIGNATURE_RSA_PKCS1, PL_EXTERNAL_SIGNATURE_ECDSA_DER, PL_EXTERNAL_SIGNATURE_ECDSA_P1363
RSAPSSPaddingSelecciona el relleno RSASSA-PSS para las firmas RSA
RevocationInfoDERInformación de revocación recolectada de antemano que se incrusta como RevocationInfoChoices

Valor devuelto

El CMS detached codificado en DER, o una cadena vacía cuando falla cualquier paso de firma

Observaciones

Esta rutina es el motor detrás de las rutas de firma moderna del proceso de firma; llamarla directo conserva el control total sobre los atributos de compromiso y política, y los bytes devueltos se insertan en el hueco de /Contents del PDF igual que con los datos verificados por PLIsModernDetachedCMS

Véase también

PLVerifyModernDetachedCMS, PLIsModernDetachedCMS, PLModernSignatureSizeEstimate, TPDFlibExternalDigestSignEvent, SetSignProcessExternalDigestSigner