Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La función BCryptVerifySignature comprueba que la firma especificada coincide con el hash especificado.
Sintaxis
NTSTATUS BCryptVerifySignature(
[in] BCRYPT_KEY_HANDLE hKey,
[in, optional] VOID *pPaddingInfo,
[in] PUCHAR pbHash,
[in] ULONG cbHash,
[in] PUCHAR pbSignature,
[in] ULONG cbSignature,
[in] ULONG dwFlags
);
Parámetros
[in] hKey
Identificador de la clave que se va a usar para descifrar la firma. Debe ser una clave idéntica o la parte de clave pública del par de claves que se usa para firmar los datos con la función BCryptSignHash .
[in, optional] pPaddingInfo
Puntero a una estructura que contiene información de relleno. El tipo real de estructura a la que apunta este parámetro depende del valor del parámetro dwFlags . Este parámetro solo se usa con claves asimétricas y debe ser NULL de lo contrario.
pPaddingInfo debe ser para LMS y XMSS, ya que no se requiere información adicional para generar una firma que no sea NULL la clave y la entrada.
[in] pbHash
Dirección de un búfer que contiene el hash de los datos. El parámetro cbHash contiene el tamaño de este búfer.
[in] cbHash
Tamaño, en bytes, del búfer pbHash .
[in] pbSignature
Dirección de un búfer que contiene el hash firmado de los datos. La función BCryptSignHash se usa para crear la firma. El parámetro cbSignature contiene el tamaño de este búfer.
[in] cbSignature
Tamaño, en bytes, del búfer pbSignature . La función BCryptSignHash se usa para crear la firma.
[in] dwFlags
Conjunto de marcas que modifican el comportamiento de esta función. El conjunto permitido de marcas depende del tipo de clave especificado por el parámetro hKey .
dwFlags debe ser cero para LMS y XMSS, ya que no se requiere información adicional para generar una firma que no sea la clave y la entrada.
Si la clave es una clave simétrica, este parámetro no se usa y debe ser cero.
Si la clave es una clave asimétrica, puede ser uno de los siguientes valores:
| Importancia | Significado |
|---|---|
| BCRYPT_PAD_PKCS1 | El esquema de relleno PKCS1 se usó cuando se creó la firma. El parámetro pPaddingInfo es un puntero a una estructura BCRYPT_PKCS1_PADDING_INFO . |
| BCRYPT_PAD_PQDSA | Use el esquema de relleno PQ para ML-DSA o SLH-DSA. El parámetro pPaddingInfo es un puntero a una estructura BCRYPT_PQDSA_PADDING_INFO . Nota: Debe establecerse si se usa una variante de ML-DSA hash previo. |
| BCRYPT_PAD_PSS | El esquema de relleno del esquema de firma probabilística (PSS) se usó cuando se creó la firma. El parámetro pPaddingInfo es un puntero a una estructura BCRYPT_PSS_PADDING_INFO . |
Valor devuelto
Devuelve un código de estado que indica el éxito o error de la función.
Entre los códigos de retorno posibles se incluyen, entre otros, los siguientes:
| Código de retorno | Descripción |
|---|---|
| STATUS_SUCCESS | La función se realizó correctamente. |
| STATUS_INVALID_SIGNATURE | No se comprobó la firma. |
| NTE_NO_MEMORY | Error de asignación de memoria. |
| STATUS_INVALID_PARAMETER | Uno de los parámetros proporcionados no es válido. |
| STATUS_INVALID_HANDLE | El identificador de clave especificado por el parámetro hKey no es válido. |
| STATUS_NOT_SUPPORTED | El proveedor de algoritmos usado para crear el identificador de clave especificado por el parámetro hKey no es un algoritmo de firma. |
Observaciones
Esta función calcula la firma con la clave proporcionada y, a continuación, compara el valor de firma calculado con el valor de firma especificado.
Para usar esta función, debe aplicar un hash a los datos mediante el mismo algoritmo hash que se usó para crear el valor hash firmado. Si procede, también debe especificar el mismo esquema de relleno que se especificó cuando se creó la firma.
Para ML-DSA y SLH-DSA, pbHash y cbHash no tienen que ser valores hash y pueden ser entradas de longitud arbitraria.
En función de los modos de procesador que admita un proveedor, se puede llamar a BCryptVerifySignature desde el modo de usuario o el modo kernel. Los autores de llamadas en modo kernel se pueden ejecutar en PASSIVE_LEVELIRQL o DISPATCH_LEVEL IRQL. Si el nivel IRQL actual es DISPATCH_LEVEL, el identificador proporcionado en el parámetro hKey debe derivarse de un identificador de algoritmo devuelto por un proveedor que se abrió mediante la marca BCRYPT_PROV_DISPATCH y los punteros pasados a la función BCryptVerifySignature deben hacer referencia a la memoria no paginada (o bloqueada).
Para llamar a esta función en modo kernel, use Cng.lib, que forma parte del Kit de desarrollo de controladores (DDK).
Windows Server 2008 y Windows Vista: Para llamar a esta función en modo kernel, use Ksecdd.lib.
Requisitos
| Requisito | Importancia |
|---|---|
| Cliente mínimo compatible | Windows Vista [aplicaciones de escritorio | Aplicaciones para UWP] |
| Servidor mínimo admitido | Windows Server 2008 [aplicaciones de escritorio | Aplicaciones para UWP] |
| de la plataforma de destino de | Windows |
| encabezado | bcrypt.h |
| Biblioteca | Bcrypt.lib |
| DLL de | Bcrypt.dll |