Função CryptHashMessage (wincrypt.h)

A função CryptHashMessage cria um hash da mensagem.

Sintaxe

BOOL CryptHashMessage(
  [in]                PCRYPT_HASH_MESSAGE_PARA pHashPara,
  [in]                BOOL                     fDetachedHash,
  [in]                DWORD                    cToBeHashed,
  [in]                const BYTE * []          rgpbToBeHashed,
  [in]                DWORD []                 rgcbToBeHashed,
  [out]               BYTE                     *pbHashedBlob,
  [in, out]           DWORD                    *pcbHashedBlob,
  [out, optional]     BYTE                     *pbComputedHash,
  [in, out, optional] DWORD                    *pcbComputedHash
);

Parâmetros

[in] pHashPara

Um ponteiro para uma estrutura CRYPT_HASH_MESSAGE_PARA que contém os parâmetros de hash.

[in] fDetachedHash

Se esse parâmetro for definido como TRUE, somente pbComputedHash será codificado em pbHashedBlob. Caso contrário, rgpbToBeHashed e pbComputedHash são codificados.

[in] cToBeHashed

O número de elementos de matriz em rgpbToBeHashed e rgcbToBeHashed. Esse parâmetro só pode ser um, a menos que fDetachedHash seja definido como TRUE.

[in] rgpbToBeHashed

Uma matriz de ponteiros para buffers que contêm o conteúdo a ser hash.

[in] rgcbToBeHashed

Uma matriz de tamanhos, em bytes, dos buffers apontados por rgpbToBeHashed.

[out] pbHashedBlob

Um ponteiro para um buffer para receber a mensagem de hash codificada para transmissão.

Esse parâmetro poderá ser NULL se a mensagem de hash não for necessária para processamento adicional ou para definir o tamanho da mensagem hash para fins de alocação de memória. Uma mensagem hash não será retornada se esse parâmetro for NULL. Para obter mais informações, consulte Recuperando dados de comprimento desconhecido.

[in, out] pcbHashedBlob

Um ponteiro para um DWORD que especifica o tamanho, em bytes, do buffer apontado pelo parâmetro pbHashedBlob . Quando a função retorna, essa variável contém o tamanho, em bytes, da mensagem descriptografada copiada para pbHashedBlob. Esse parâmetro deve ser o endereço de um DWORD e não NULL ou o comprimento do buffer não será retornado.

Nota Ao processar os dados retornados, os aplicativos devem usar o tamanho real dos dados retornados. O tamanho real pode ser um pouco menor do que o tamanho do buffer especificado na entrada. Na entrada, os tamanhos de buffer geralmente são especificados grandes o suficiente para garantir que os maiores dados de saída possíveis se encaixem no buffer. Na saída, a variável apontada por esse parâmetro é atualizada para refletir o tamanho real dos dados copiados para o buffer.
 

[out, optional] pbComputedHash

Um ponteiro para um buffer para receber o valor de hash recém-criado. Esse parâmetro poderá ser NULL se o hash recém-criado não for necessário para processamento adicional ou para definir o tamanho do hash para fins de alocação de memória. Para obter mais informações, consulte Recuperando dados de comprimento desconhecido.

[in, out, optional] pcbComputedHash

Um ponteiro para um DWORD que especifica o tamanho, em bytes, do buffer apontado pelo parâmetro pbComputedHash . Quando a função retorna, esse DWORD contém o tamanho, em bytes, do hash recém-criado que foi copiado para pbComputedHash.

Nota Ao processar os dados retornados, os aplicativos devem usar o tamanho real dos dados retornados. O tamanho real pode ser um pouco menor do que o tamanho do buffer especificado na entrada. Na entrada, os tamanhos de buffer geralmente são especificados grandes o suficiente para garantir que os maiores dados de saída possíveis se encaixem no buffer. Na saída, a variável apontada por esse parâmetro é atualizada para refletir o tamanho real dos dados copiados para o buffer.
 

Retornar valor

Se a função for bem-sucedida, a função retornará diferente de zero (TRUE).

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

Nota Erros das funções chamadas CryptCreateHash, CryptHashData e CryptGetHashParam podem ser propagados para essa função.
 
A função GetLastError retorna os seguintes códigos de erro com mais frequência.
Código de retorno Descrição
E_INVALIDARG
O tipo de codificação de mensagem não é válido. Atualmente, há suporte apenas para PKCS_7_ASN_ENCODING. O cbSize em *pHashPara não é válido.
ERROR_MORE_DATA
Se o buffer especificado pelo parâmetro pbHashedBlob não for grande o suficiente para manter os dados retornados, a função definirá o código ERROR_MORE_DATA e armazenará o tamanho do buffer necessário, em bytes, na variável apontada por pbHashedBlob.
 

Se a função falhar, GetLastError poderá retornar um erro de codificação/decodificação de ASN.1 (Abstract Syntax Notation One ). Para obter informações sobre esses erros, consulte Codificação/Decodificação de Valores Retornados do ASN.1.

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

Confira também

CryptVerifyDetachedMessageHash

CryptVerifyMessageHash

Funções de mensagem simplificadas