Função CryptSetHashParam (wincrypt.h)

Importante Essa API foi preterida. O software novo e existente deve começar a usar APIs de Próxima Geração de Criptografia. A Microsoft pode remover essa API em versões futuras.
 
A função CryptSetHashParam personaliza as operações de um objeto hash, incluindo a configuração do conteúdo de hash inicial e a seleção de um algoritmo de hash específico.

Sintaxe

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

Parâmetros

[in] hHash

Um identificador para o objeto hash no qual definir parâmetros.

[in] dwParam

Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
HP_HMAC_INFO.
Um ponteiro para uma estrutura HMAC_INFO que especifica o algoritmo de hash criptográfico e as cadeias de caracteres internas e externas a serem usadas.
HP_HASHVAL.
Uma matriz de bytes que contém um valor de hash a ser colocado diretamente no objeto hash. Antes de definir esse valor, o tamanho do valor de hash deve ser determinado usando a função CryptGetHashParam para ler o valor HP_HASHSIZE.

Alguns CSPs ( provedores de serviços criptográficos ) não dão suporte a essa funcionalidade.

 
Nota Alguns tipos de CSP podem adicionar valores adicionais que podem ser definidos usando essa função.
 

[in] pbData

Um buffer de dados de valor. Coloque os dados de valor nesse buffer antes de chamar CryptSetHashParam. A forma desses dados varia, dependendo do número do valor.

[in] dwFlags

Esse parâmetro é reservado para uso futuro e deve ser definido como zero.

Retornar valor

Se a função for bem-sucedida, a função retornará TRUE.

Se a função falhar, ela retornará FALSE. Para obter informações de erro estendidas, chame GetLastError.

Os códigos de erro precedidos por "NTE" são gerados pelo CSP específico que você está usando. Alguns códigos de erro possíveis seguem.

Código de retorno Descrição
ERROR_INVALID_HANDLE
Um dos parâmetros especifica um identificador que não é válido.
ERROR_BUSY
O contexto do CSP está sendo usado por outro processo.
ERROR_INVALID_PARAMETER
Um dos parâmetros contém um valor que não é válido. Geralmente, esse é um ponteiro que não é válido.
NTE_BAD_FLAGS
O parâmetro dwFlags é diferente de zero ou o buffer pbData contém um valor que não é válido.
NTE_BAD_HASH
O objeto hash especificado pelo parâmetro hHash não é válido.
NTE_BAD_TYPE
O parâmetro dwParam especifica um valor desconhecido.
NTE_BAD_UID
O contexto CSP especificado quando a chave hKey foi criada não pode ser encontrado.
NTE_FAIL
A função falhou de alguma forma inesperada.

Comentários

Ocasionalmente, um valor de hash que foi gerado em outro lugar deve ser assinado. Isso pode ser feito usando a seguinte sequência de operações:

  1. Crie um objeto hash usando CryptCreateHash.
  2. Defina o valor HP_HASHVAL.
  3. Assine o valor de hash usando CryptSignHash e obtenha um bloco de assinatura digital.
  4. Destrua o objeto hash usando CryptDestroyHash.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho wincrypt.h
Biblioteca Advapi32.lib
DLL Advapi32.dll

Confira também

Cryptcreatehash

Cryptdestroyhash

Cryptgethashparam

Cryptsetkeyparam

Cryptsignhash

HMAC_INFO

Funções hash e assinatura digital