PLBuildModernDetachedCMS
Criptografía, firmas digitales
Descripción
Construye un CMS SignedData detached en torno a firmas RSA, ECDSA o Ed25519 para los algoritmos que la capa de mensajes de Windows CryptoAPI no sabe expresar
El certificado del firmante y su contexto de cadena, el algoritmo de resumen, los DER de tipo de compromiso y política de firma, el material de revocación y la política de relleno entran todos por parámetros, y la firma bruta la aportan CNG NCrypt, una devolución de llamada de firma de resumen 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, en caso contrario vacía |
| Data | Los bytes del rango ya resumido que cubre la firma detached |
| SubFilter | /SubFilter de destino, como /ETSI.CAdES.detached, que gobierna la selección de atributos |
| DigestAlgorithm | Ordinal del algoritmo de resumen acorde con 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 hay |
| SignaturePolicyDER | Identificador de política de firma codificado en DER, vacío cuando no hay |
| NCryptKeyHandle | Handle de clave CNG abierto; 0 deja que la función abra ella misma la clave privada del certificado, mostrando opcionalmente la UI |
| AllowPrivateKeyUI | Permite 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 resumen y devuelve la firma bruta, 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 devuelve 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 precacheada 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 directamente mantiene el control total sobre los atributos de compromiso y política, mientras que los bytes devueltos encajan en el hueco de /Contents del PDF igual que los datos verificados por PLIsModernDetachedCMS
Véase también
PLVerifyModernDetachedCMS, PLIsModernDetachedCMS, PLModernSignatureSizeEstimate, TPDFlibExternalDigestSignEvent, SetSignProcessExternalDigestSigner