PLVerifyModernDetachedCMS

Criptografía, firmas digitales

Descripción

Verifica un firmante de un CMS detached moderno contra los bytes de datos originales

El verificador analiza el SignedData, coteja el digest de los atributos firmados contra los datos y luego valida la firma cruda con la llave pública del certificado del firmante: Ed25519 en Pascal puro, ECDSA sobre los parámetros de la curva, o RSA PKCS#1 y PSS a través de CNG

Sintaxis

Delphi

Function PLVerifyModernDetachedCMS(Const CMSBytes, Data: AnsiString;
  SignerIndex: Integer; Out SignerCount: Integer;
  Out NativeError: Cardinal): Integer;

Parámetros

CMSBytesCMS SignedData detached codificado en DER
DataLos bytes originales cubiertos, la misma entrada que se digirió al momento de firmar
SignerIndexFirmante que verificar, en base cero
SignerCountRecibe la cantidad de firmantes encontrados en el CMS
NativeErrorRecibe una clase de fallo aproximada: 13 para entrada mal formada, 50 para problemas de digest, o el estado CNG de la primitiva que falló

Valores devueltos

0El CMS se analiza pero su algoritmo de firma no está en el conjunto moderno, así que este verificador no es el responsable
1El firmante se verificó correctamente
2Falló un paso de análisis, digest o primitiva; NativeError trae el motivo

Observaciones

La comparación del digest del mensaje corre en tiempo constante y los parámetros PSS deben nombrar el mismo digest que el SignerInfo, en línea con el RFC 4056; el resultado 0 le indica a quien llama que entregue el blob al verificador de la plataforma

Véase también

PLBuildModernDetachedCMS, PLIsModernDetachedCMS, PLCertificateSubjectAndIssuer