Função CryptHashToBeSigned (wincrypt.h)

Importante Essa API foi preterida. O software novo e existente deve começar a usar APIs de Criptografia de Próxima Geração. A Microsoft pode remover essa API em versões futuras.
 
A função CryptHashToBeSigned calcula o hash do conteúdo codificado de um certificado assinado e codificado. O hash é executado apenas no conteúdo codificado "a ser assinado" e sua assinatura.

Sintaxe

BOOL CryptHashToBeSigned(
  [in]      HCRYPTPROV_LEGACY hCryptProv,
  [in]      DWORD             dwCertEncodingType,
  [in]      const BYTE        *pbEncoded,
  [in]      DWORD             cbEncoded,
  [out]     BYTE              *pbComputedHash,
  [in, out] DWORD             *pcbComputedHash
);

Parâmetros

[in] hCryptProv

Esse parâmetro não é usado e deve ser definido como NULL.

Windows Server 2003 e Windows XP: Um identificador do provedor de serviços criptográficos (CSP) a ser usado para calcular o hash. O tipo de dados desse parâmetro é HCRYPTPROV.

A menos que haja um motivo forte para passar um provedor criptográfico específico no hCryptProv, zero será passado. A passagem de zero faz com que o provedor padrão RSA ou DSS ( Digital Signature Standard ) seja adquirido antes de fazer operações de hash, verificação de assinatura ou criptografia de destinatário.

[in] dwCertEncodingType

Especifica o tipo de codificação usado. É sempre aceitável especificar os tipos de codificação de certificado e mensagem combinando-os com uma operação OR bit a bit, conforme mostrado no exemplo a seguir:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

Os tipos de codificação definidos no momento são:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pbEncoded

Endereço de um buffer que contém o conteúdo a ser hash. Essa é a forma codificada de um CERT_SIGNED_CONTENT_INFO.

[in] cbEncoded

O tamanho do buffer, em bytes.

[out] pbComputedHash

Um ponteiro para um buffer para receber o hash computado.

Esse parâmetro pode ser NULL para definir o tamanho dessas informações para fins de alocação de memória. Para obter mais informações, consulte Recuperando dados de comprimento desconhecido.

[in, out] pcbComputedHash

Um ponteiro para um DWORD que contém o tamanho, em bytes, do buffer apontado pelo parâmetro pbComputedHash . Quando a função retorna, o DWORD contém o número de bytes armazenados no buffer.

Nota Ao processar os dados retornados no buffer, os aplicativos precisam 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.
 

Valor retornado

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, CryptGetHashParam e CryptHashData podem ser propagados para essa função. Essa função tem os seguintes códigos de erro.
 
Código de retorno Descrição
ERROR_MORE_DATA
Se o buffer especificado pelo parâmetro pbComputedHash 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 pcbComputedHash.
ERROR_FILE_NOT_FOUND
Tipo de codificação de certificado inválido. Atualmente, há suporte apenas para X509_ASN_ENCODING.
NTE_BAD_ALGID
O OID ( identificador de objeto ) do algoritmo de assinatura não é mapeado para um algoritmo de hash conhecido ou com suporte.
 

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

   
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

CryptHashCertificate

CryptHashPublicKeyInfo

Funções Gerenciamento de Dados