Compartilhar via


Função BCryptDuplicateKey (bcrypt.h)

A função BCryptDuplicateKey cria uma duplicata de uma chave simétrica .

Sintaxe

NTSTATUS BCryptDuplicateKey(
  [in]  BCRYPT_KEY_HANDLE hKey,
  [out] BCRYPT_KEY_HANDLE *phNewKey,
  [out] PUCHAR            pbKeyObject,
  [in]  ULONG             cbKeyObject,
  [in]  ULONG             dwFlags
);

Parâmetros

[in] hKey

O identificador da chave a ser duplicada. Isso deve ser um identificador para uma chave simétrica.

[out] phNewKey

Um ponteiro para uma variável BCRYPT_KEY_HANDLE que recebe o identificador da chave duplicada. Esse identificador é usado em funções subsequentes que exigem uma chave, como BCryptEncrypt. Esse identificador deve ser liberado quando não for mais necessário, passando-o para a função BCryptDestroyKey .

[out] pbKeyObject

Um ponteiro para um buffer que recebe o objeto de chave duplicado. O parâmetro cbKeyObject 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 de chave para o algoritmo especificado.

Essa memória só pode ser liberada depois que o phNewKey identificador de chave for destruído.

[in] cbKeyObject

O tamanho, em bytes, do buffer de pbKeyObject .

[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.

Valor de retorno

Retorna um código de 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 de chave especificado pelo parâmetro cbKeyObject não é grande o suficiente para manter o objeto de chave.
STATUS_INVALID_HANDLE
O identificador de chave no parâmetro hKey não é válido. Esse valor também será retornado se a chave a ser duplicada não for uma chave simétrica.
STATUS_INVALID_PARAMETER
Um ou mais parâmetros não são válidos.

Observações

Dependendo de quais modos de processador um provedor dá suporte, BCryptDuplicateKey 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 hKey deverá ser derivado de um identificador de algoritmo retornado por um provedor aberto com o sinalizador de BCRYPT_PROV_DISPATCH e quaisquer ponteiros passados para a função BCryptDuplicateKey devem 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
de cliente com suporte mínimo Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
servidor com suporte mínimo Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
da Plataforma de Destino Windows
cabeçalho bcrypt.h
biblioteca Bcrypt.lib
de DLL Bcrypt.dll