Compartir a través de


Función CryptVerifyDetachedMessageSignature (wincrypt.h)

La función CryptVerifyDetachedMessageSignature comprueba un mensaje firmado que contiene una firma o firmas desasociadas.

Sintaxis

BOOL CryptVerifyDetachedMessageSignature(
  [in]            PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,
  [in]            DWORD                      dwSignerIndex,
  [in]            const BYTE                 *pbDetachedSignBlob,
  [in]            DWORD                      cbDetachedSignBlob,
  [in]            DWORD                      cToBeSigned,
  [in]            const BYTE * []            rgpbToBeSigned,
  [in]            DWORD []                   rgcbToBeSigned,
  [out, optional] PCCERT_CONTEXT             *ppSignerCert
);

Parámetros

[in] pVerifyPara

Puntero a una estructura de CRYPT_VERIFY_MESSAGE_PARA que contiene los parámetros de verificación.

[in] dwSignerIndex

Índice de la firma que se va a comprobar. Un mensaje puede tener varios firmantes y se puede llamar a esta función repetidamente, cambiando dwSignerIndex para comprobar otras firmas. Si la función devuelve FALSE y GetLastError devuelve CRYPT_E_NO_SIGNER, la llamada anterior recibió el último firmante del mensaje.

[in] pbDetachedSignBlob

Puntero a un BLOB que contiene las firmas de mensaje codificadas.

[in] cbDetachedSignBlob

Tamaño, en bytes, de la firma desasociada.

[in] cToBeSigned

Número de elementos de matriz en rgpbToBeSigned y rgcbToBeSigned.

[in] rgpbToBeSigned

Matriz de punteros a búferes que contienen el contenido que se va a aplicar hash.

[in] rgcbToBeSigned

Matriz de tamaños, en bytes, para los búferes de contenido a los que apunta en rgpbToBeSigned.

[out, optional] ppSignerCert

Puntero a un puntero a una estructura de CERT_CONTEXT de un certificado de firmante. Cuando haya terminado de usar el contexto del certificado, ábrelo llamando a la función CertFreeCertificateContext . No se devolverá un puntero a una estructura de CERT_CONTEXT si este parámetro es NULL.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es distinto de cero (TRUE).

Si se produce un error en la función, el valor devuelto es cero (FALSE).

Para obtener información de error extendida, llame a GetLastError.

A continuación se enumeran los códigos de error devueltos por la función GetLastError .

Código devuelto Descripción
E_INVALIDARG
Tipos de codificación de certificados y mensajes no válidos. Actualmente solo se admiten PKCS_7_ASN_ENCODING y X509_ASN_ENCODING_TYPE. CbSize no válido en *pVerifyPara.
CRYPT_E_UNEXPECTED_MSG_TYPE
No es un mensaje criptográfico firmado.
CRYPT_E_NO_SIGNER
El mensaje no tiene ningún firmante ni un firmante para el dwSignerIndex especificado.
NTE_BAD_ALGID
El mensaje se ha hashizado y firmado mediante un algoritmo desconocido o no admitido.
NTE_BAD_SIGNATURE
No se ha comprobado la firma del mensaje.
 
Nota Los errores de las funciones llamadas CryptCreateHash, CryptHashData, CryptVerifySignature y CryptImportKey podrían propagarse a esta función.

Si se produce un error en la función, GetLastError puede devolver un error de codificación y descodificación de sintaxis abstracta Uno (ASN.1). Para obtener información sobre estos errores, vea Valores devueltos de codificación/descodificación de ASN.1.

 

Requisitos

   
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado wincrypt.h
Library Crypt32.lib
Archivo DLL Crypt32.dll

Consulte también

CryptVerifyMessageSignature

Funciones de mensaje simplificadas