Función CryptVerifySignatureA (wincrypt.h)
Antes de llamar a esta función, se debe llamar a CryptCreateHash para crear el identificador de un objeto hash. CryptHashData o CryptHashSessionKey se usa para agregar claves de sesión de datos o al objeto hash.
Una vez completada
Sintaxis
BOOL CryptVerifySignatureA(
[in] HCRYPTHASH hHash,
[in] const BYTE *pbSignature,
[in] DWORD dwSigLen,
[in] HCRYPTKEY hPubKey,
[in] LPCSTR szDescription,
[in] DWORD dwFlags
);
Parámetros
[in] hHash
Identificador del objeto hash que se va a comprobar.
[in] pbSignature
Dirección de los datos de firma que se van a comprobar.
[in] dwSigLen
Número de bytes de la pbSignature datos de firma.
[in] hPubKey
Identificador de la clave pública usar para autenticar la firma. Esta clave pública debe pertenecer al par de claves que se usó originalmente para crear la firma digital .
[in] szDescription
Este parámetro ya no debe usarse y debe establecerse en NULL para evitar vulnerabilidades de seguridad. Sin embargo, todavía se admite para la compatibilidad con versiones anteriores en el proveedor criptográfico base de Microsoft.
[in] dwFlags
Se definen los siguientes valores de marca.
Valor | Significado |
---|---|
|
Esta marca se usa con proveedores RSA. Al comprobar la firma, no se espera que el identificador de objeto hash (OID) esté presente o comprobado. Si no se establece esta marca, el OID hash de la firma predeterminada se comprueba como se especifica en la definición de DigestInfo en PKCS #7. |
|
Esta marca no se usa. |
|
Use la compatibilidad con X.931 para la versión compatible con FIPS 186-2 de RSA (rDSA). |
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es TRUE.
Si se produce un error en la función, el valor devuelto es FALSE. Para obtener información de error extendida, llame a GetLastError.
Los códigos de error precedidos por "NTE" se generan mediante el CSP concreto que usa. A continuación se indican algunos códigos de error posibles.
Código devuelto | Descripción |
---|---|
|
Uno de los parámetros especifica un identificador que no es válido. |
|
Uno de los parámetros contiene un valor que no es válido. Suele ser un puntero que no es válido. |
|
El parámetro dwFlags es distinto de cero. |
|
El objeto hash especificado por el parámetro hHash no es válido. |
|
El parámetro |
|
La firma no era válida. Esto puede deberse a que los datos en sí han cambiado, la cadena de descripción no coincide o la clave pública incorrecta se especificó mediante hPubKey.
Este error también se puede devolver si los algoritmos hash o de firma no coinciden con los usados para crear la firma. |
|
El contexto del proveedor de servicios criptográficos (CSP) que se especificó cuando no se encontró el objeto hash. |
|
El CSP se quedó sin memoria durante la operación. |
Observaciones
La función CryptVerifySignature completa el hash. Después de esta llamada, no se pueden agregar más datos al hash. Se producen errores en llamadas adicionales a CryptHashData o CryptHashSessionKey. Una vez finalizada la aplicación con el hash, se debe llamar a CryptDestroyHash para destruir el objeto hash.
Si genera una firma mediante las API de .NET Framework e intenta comprobarla mediante la función CryptVerifySignature, se producirá un error en la función y GetLastError devolverá NTE_BAD_SIGNATURE. Esto se debe a los distintos pedidos de bytes entre la API nativa de Win32 y la API de .NET Framework.
La API de criptografía nativa usa el orden de bytes little-endian, mientras que la API de .NET Framework usa el orden de bytes big-endian. Si va a comprobar una firma generada mediante una API de .NET Framework, debe intercambiar el orden de bytes de firma antes de llamar a la función de CryptVerifySignature para comprobar la firma.
Ejemplos
Para obtener un ejemplo que usa la función de CryptVerifySignature, vea Programa C de ejemplo: Firma de un hash y Comprobación de la firma hash.
Nota
El encabezado wincrypt.h define CryptVerifySignature como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows XP [solo aplicaciones de escritorio] |
servidor mínimo admitido | Windows Server 2003 [solo aplicaciones de escritorio] |
de la plataforma de destino de |
Windows |
encabezado de |
wincrypt.h |
biblioteca de |
Advapi32.lib |
DLL de |
Advapi32.dll |
Consulte también