Función CryptVerifyMessageSignatureWithKey (wincrypt.h)

La función CryptVerifyMessageSignatureWithKey comprueba la firma de un mensaje firmado mediante la información de clave pública especificada.

Sintaxis

BOOL CryptVerifyMessageSignatureWithKey(
  [in]      PCRYPT_KEY_VERIFY_MESSAGE_PARA pVerifyPara,
  [in]      PCERT_PUBLIC_KEY_INFO          pPublicKeyInfo,
  [in]      const BYTE                     *pbSignedBlob,
  [in]      DWORD                          cbSignedBlob,
  [out]     BYTE                           *pbDecoded,
  [in, out] DWORD                          *pcbDecoded
);

Parámetros

[in] pVerifyPara

Puntero a una estructura CRYPT_KEY_VERIFY_MESSAGE_PARA que contiene parámetros de comprobación.

[in] pPublicKeyInfo

Puntero a una estructura CERT_PUBLIC_KEY_INFO que contiene la clave pública que se usa para comprobar el mensaje firmado. Si es NULL, no se comprueba la firma.

[in] pbSignedBlob

Puntero a un búfer que contiene el mensaje firmado.

[in] cbSignedBlob

Tamaño, en bytes, del búfer de mensajes firmado.

[out] pbDecoded

Puntero a un búfer para recibir el mensaje descodificado.

Este parámetro puede ser NULL si el mensaje descodificado no es necesario para el procesamiento adicional o para establecer el tamaño del mensaje con fines de asignación de memoria. Para obtener más información, vea Recuperación de datos de longitud desconocida.

[in, out] pcbDecoded

Puntero a un valor DWORD que especifica el tamaño, en bytes, del búfer pbDecoded . Cuando la función devuelve, esta DWORD contiene el tamaño, en bytes, del mensaje descodificado. El mensaje descodificado no se devolverá si este parámetro es NULL.

Nota Al procesar los datos devueltos, las aplicaciones deben usar el tamaño real de los datos devueltos. El tamaño real puede ser ligeramente menor que el tamaño del búfer especificado en la entrada. (En la entrada, los tamaños del búfer suelen especificarse lo suficientemente grandes como para asegurarse de que los datos de salida más grandes posibles caben en el búfer). En la salida, la variable a la que apunta este parámetro se actualiza para reflejar el tamaño real de los datos copiados en el búfer.
 

Valor devuelto

Si la función se ejecuta correctamente, la función devuelve un valor distinto de cero.

Si se produce un error en la función, devuelve cero. Para obtener información de error extendida, llame a GetLastError.

En la tabla siguiente se muestran los códigos de error devueltos normalmente por la función GetLastError .

Código devuelto Descripción
ERROR_MORE_DATA
Si el búfer especificado por el parámetro pbDecoded no es lo suficientemente grande como para contener los datos devueltos, la función establece el código ERROR_MORE_DATA y almacena el tamaño de búfer necesario, en bytes, en la variable a la que apunta pcbDecoded.
E_INVALIDARG
Tipos de codificación de mensajes y certificados 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.

Requisitos

Requisito Value
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