Compartir a través de


Función CryptSetHashParam (wincrypt.h)

Importante Esta API está en desuso. El software nuevo y existente debe empezar a usar las API cryptography Next Generation. Microsoft puede quitar esta API en futuras versiones.
 
La función CryptSetHashParam personaliza las operaciones de un objeto hash, incluida la configuración del contenido hash inicial y la selección de un algoritmo hash específico.

Sintaxis

BOOL CryptSetHashParam(
  [in] HCRYPTHASH hHash,
  [in] DWORD      dwParam,
  [in] const BYTE *pbData,
  [in] DWORD      dwFlags
);

Parámetros

[in] hHash

Identificador del objeto hash en el que se van a establecer parámetros.

[in] dwParam

Este parámetro puede ser uno de los valores siguientes.

Valor Significado
HP_HMAC_INFO.
Puntero a una estructura HMAC_INFO que especifica el algoritmo hash criptográfico y las cadenas internas y externas que se van a usar.
HP_HASHVAL.
Matriz de bytes que contiene un valor hash que se va a colocar directamente en el objeto hash. Antes de establecer este valor, se debe determinar el tamaño del valor hash mediante la función CryptGetHashParam para leer el valor de HP_HASHSIZE.

Algunos proveedores de servicios criptográficos (CSP) no admiten esta funcionalidad.

 
Nota Algunos tipos de CSP pueden agregar valores adicionales que se pueden establecer mediante esta función.
 

[in] pbData

Un búfer de datos de valor. Coloque los datos de valor en este búfer antes de llamar a CryptSetHashParam. La forma de estos datos varía, según el número de valor.

[in] dwFlags

Este parámetro está reservado para uso futuro y debe establecerse en cero.

Valor devuelto

Si la función se ejecuta correctamente, la función devuelve TRUE.

Si se produce un error en la función, devuelve 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
ERROR_INVALID_HANDLE
Uno de los parámetros especifica un identificador que no es válido.
ERROR_BUSY
Otro proceso está usando el contexto de CSP.
ERROR_INVALID_PARAMETER
Uno de los parámetros contiene un valor que no es válido. Suele ser un puntero que no es válido.
NTE_BAD_FLAGS
El parámetro dwFlags es distinto de cero o el búfer pbData contiene un valor que no es válido.
NTE_BAD_HASH
El objeto hash especificado por el parámetro hHash no es válido.
NTE_BAD_TYPE
El parámetro dwParam especifica un valor desconocido.
NTE_BAD_UID
No se encuentra el contexto de CSP que se especificó cuando no se creó la clave hKey .
NTE_FAIL
Error en la función de alguna manera inesperada.

Comentarios

En ocasiones, se debe firmar un valor hash que se haya generado en otro lugar. Esto se puede hacer mediante la siguiente secuencia de operaciones:

  1. Cree un objeto hash mediante CryptCreateHash.
  2. Establezca el valor de HP_HASHVAL.
  3. Firme el valor hash mediante CryptSignHash y obtenga un bloque de firma digital.
  4. Destruya el objeto hash mediante CryptDestroyHash.

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 Advapi32.lib
Archivo DLL Advapi32.dll

Consulte también

CryptCreateHash

CryptDestroyHash

CryptGetHashParam

CryptSetKeyParam

CryptSignHash

HMAC_INFO

Funciones hash y firma digital