Compartilhar via


Função BCryptDuplicateHash (bcrypt.h)

A função BCryptDuplicateHash duplica um objeto mac (código de autenticação de mensagem) ou hash existente. O objeto duplicado contém todo o estado e os dados contidos no objeto original no ponto de duplicação.

Sintaxe

NTSTATUS BCryptDuplicateHash(
  [in]  BCRYPT_HASH_HANDLE hHash,
  [out] BCRYPT_HASH_HANDLE *phNewHash,
  [out] PUCHAR             pbHashObject,
  [in]  ULONG              cbHashObject,
  [in]  ULONG              dwFlags
);

Parâmetros

[in] hHash

O identificador do objeto hash ou MAC a ser duplicado.

[out] phNewHash

Um ponteiro para um valor BCRYPT_HASH_HANDLE que recebe o identificador que representa o hash duplicado ou o objeto MAC.

[out] pbHashObject

Um ponteiro para um buffer que recebe o hash duplicado ou o objeto MAC. O parâmetro cbHashObject contém o tamanho desse buffer. O tamanho necessário desse buffer pode ser obtido chamando a função BCryptGetProperty para obter a propriedade BCRYPT_OBJECT_LENGTH . Isso fornecerá o tamanho do objeto hash para o algoritmo especificado.

Quando o identificador de hash duplicado for liberado, libere essa memória.

[in] cbHashObject

O tamanho, em bytes, do buffer pbHashObject .

[in] dwFlags

Um conjunto de sinalizadores que modificam o comportamento dessa função. Nenhum sinalizador está definido no momento, portanto, esse parâmetro deve ser zero.

Retornar valor

Retorna um código status que indica o êxito ou a falha da função.

Os códigos de retorno possíveis incluem, mas não se limitam a, o seguinte.

Código de retorno Descrição
STATUS_SUCCESS
A função foi bem-sucedida.
STATUS_BUFFER_TOO_SMALL
O tamanho do objeto hash especificado pelo parâmetro cbHashObject não é grande o suficiente para manter o objeto hash.
STATUS_INVALID_HANDLE
O identificador de hash no parâmetro hHash não é válido.
STATUS_INVALID_PARAMETER
Um ou mais dos parâmetros não são válidos.

Comentários

Essa função é útil ao calcular um hash ou MAC em um bloco de dados comuns. Depois que os dados comuns forem processados, o objeto hash ou MAC poderá ser duplicado e, em seguida, os dados exclusivos poderão ser adicionados aos objetos individuais.

Dependendo de quais modos de processador um provedor dá suporte, BCryptDuplicateHash pode ser chamado do modo de usuário ou do modo kernel. Os chamadores do modo kernel podem ser executados em PASSIVE_LEVELIRQL ou DISPATCH_LEVEL IRQL. Se o nível IRQL atual for DISPATCH_LEVEL, o identificador fornecido no parâmetro hHash deverá ser derivado de um identificador de algoritmo retornado por um provedor que foi aberto usando o sinalizador BCRYPT_PROV_DISPATCH e todos os ponteiros passados para a função BCryptDestroyKey deverão se referir à memória não paga (ou bloqueada).

Para chamar essa função no modo kernel, use Cng.lib, que faz parte do DDK (Driver Development Kit). Windows Server 2008 e Windows Vista: Para chamar essa função no modo kernel, use Ksecdd.lib.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho bcrypt.h
Biblioteca Bcrypt.lib
DLL Bcrypt.dll