Función BCryptSignHash (bcrypt.h)

La función BCryptSignHash crea una firma de un valor hash.

Sintaxis

NTSTATUS BCryptSignHash(
  [in]           BCRYPT_KEY_HANDLE hKey,
  [in, optional] VOID              *pPaddingInfo,
  [in]           PUCHAR            pbInput,
  [in]           ULONG             cbInput,
  [out]          PUCHAR            pbOutput,
  [in]           ULONG             cbOutput,
  [out]          ULONG             *pcbResult,
  [in]           ULONG             dwFlags
);

Parámetros

[in] hKey

Identificador de la clave que se va a usar para firmar el hash.

[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.

[in] pbInput

Puntero a un búfer que contiene el valor hash que se va a firmar. El parámetro cbInput contiene el tamaño de este búfer.

[in] cbInput

Número de bytes del búfer pbInput que se va a firmar.

[out] pbOutput

Dirección de un búfer para recibir la firma generada por esta función. El parámetro cbOutput contiene el tamaño de este búfer.

Si este parámetro es NULL, esta función calculará el tamaño necesario para la firma y devolverá el tamaño en la ubicación a la que apunta el parámetro pcbResult .

[in] cbOutput

Tamaño, en bytes, del búfer pbOutput . Este parámetro se omite si el parámetro pbOutput es NULL.

[out] pcbResult

Puntero a una variable ULONG que recibe el número de bytes copiados en el búfer pbOutput .

Si pbOutput es NULL, recibe el tamaño, en bytes, necesario para 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 .

Puede ser uno de los siguientes valores.

Valor Significado
BCRYPT_PAD_PKCS1
Use el esquema de relleno PKCS1. El parámetro pPaddingInfo es un puntero a una estructura BCRYPT_PKCS1_PADDING_INFO .
BCRYPT_PAD_PSS
Use el esquema de relleno del esquema de firma probabilística (PSS). El parámetro pPaddingInfo es un puntero a una estructura de 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 devuelto Descripción
STATUS_SUCCESS
La función se realizó correctamente.
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.
STATUS_NO_MEMORY
Error de asignación de memoria.
STATUS_BUFFER_TOO_SMALL
El tamaño de memoria especificado por el parámetro cbOutput no es lo suficientemente grande como para contener la firma.

Comentarios

Esta función cifrará el valor hash con la clave especificada para crear la firma.

Para comprobar más adelante que la firma es válida, llame a la función BCryptVerifySignature con una clave idéntica y un hash idéntico de los datos originales.

Según los modos de procesador que admita un proveedor, se puede llamar a BCryptSignHash 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 está DISPATCH_LEVEL, el identificador proporcionado en el parámetro hKey debe derivarse de un identificador de algoritmo devuelto por un proveedor que se abrió con la marca de BCRYPT_PROV_DISPATCH y los punteros pasados a la función BCryptSignHash 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 Value
Cliente mínimo compatible Windows Vista [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado bcrypt.h
Library Bcrypt.lib
Archivo DLL Bcrypt.dll

Consulte también

BCryptVerifySignature