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
| CertContext | Handle de CERT_CONTEXT de Windows del certificado firmante; Nil para la ruta pura de firmante externo |
|---|---|
| CertificateDER | Certificado firmante codificado en DER, usado para el certificado incrustado y las referencias de emisor/número de serie |
| Ed25519Seed | Semilla de 32 bytes al firmar Ed25519 sin CNG, de lo contrario va vacía |
| Data | Los 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 |
| DigestAlgorithm | Ordinal del algoritmo de digest según Ord(TPDFlibDigestAlgorithm): 2 SHA-256, 3 SHA-384, 4 SHA-512, 5 a 7 la familia SHA-3 |
| CommitmentTypeDER | Atributo de tipo de compromiso codificado en DER, vacío cuando no aplica |
| SignaturePolicyDER | Identificador de política de firma codificado en DER, vacío cuando no aplica |
| NCryptKeyHandle | Handle de clave CNG abierto; con 0 la función abre por su cuenta la clave privada del certificado, mostrando la UI si hace falta |
| AllowPrivateKeyUI | Habilita el diálogo de adquisición de clave CNG cuando la clave exige la presencia del usuario |
| ExternalSigner | Devolución de llamada que recibe el digest y devuelve la firma cruda, para HSM o firma remota |
| ExternalSender | Remitente que se devuelve a la devolución de llamada ExternalSigner |
| ExternalSignProcessID | Identificador del proceso de firma que se regresa a la devolución de llamada |
| ExternalSignatureAlgorithm | Uno de PL_EXTERNAL_SIGNATURE_RSA_PKCS1, PL_EXTERNAL_SIGNATURE_ECDSA_DER, PL_EXTERNAL_SIGNATURE_ECDSA_P1363 |
| RSAPSSPadding | Selecciona el relleno RSASSA-PSS para las firmas RSA |
| RevocationInfoDER | Informació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