Função BCryptImportKeyPair (bcrypt.h)

A função BCryptImportKeyPair importa um par de chaves público/privado de umblob de chave. A função BCryptImportKey é usada para importar um par de chave simétrica .

Sintaxe

NTSTATUS BCryptImportKeyPair(
  [in]      BCRYPT_ALG_HANDLE hAlgorithm,
  [in, out] BCRYPT_KEY_HANDLE hImportKey,
  [in]      LPCWSTR           pszBlobType,
  [out]     BCRYPT_KEY_HANDLE *phKey,
  [in]      PUCHAR            pbInput,
  [in]      ULONG             cbInput,
  [in]      ULONG             dwFlags
);

Parâmetros

[in] hAlgorithm

O identificador do provedor de algoritmo para importar a chave. Esse identificador é obtido chamando a função BCryptOpenAlgorithmProvider.

[in, out] hImportKey

Esse parâmetro não é usado no momento e deve ser NULL.

[in] pszBlobType

Uma cadeia de caracteres Unicode terminada em nulo que contém um identificador que especifica o tipo de BLOB contido no buffer pbInput. Esse pode ser um dos valores a seguir.

Valor Significado
BCRYPT_DH_PRIVATE_BLOB
O BLOB é um BLOB Diffie-Hellman par de chaves pública/privada. O buffer de pbInput deve conter uma estrutura de BCRYPT_DH_KEY_BLOB imediatamente seguida pelos dados de chave.
BCRYPT_DH_PUBLIC_BLOB
O BLOB é um blob de chave pública Diffie-Hellman . O buffer de pbInput deve conter uma estrutura de BCRYPT_DH_KEY_BLOB imediatamente seguida pelos dados de chave.
BCRYPT_DSA_PRIVATE_BLOB
O BLOB é um BLOB de par de chaves pública/privada da DSA. O buffer pbInput deve conter uma estrutura BCRYPT_DSA_KEY_BLOB ou BCRYPT_DSA_KEY_BLOB_V2 imediatamente seguida pelos dados de chave. BCRYPT_DSA_KEY_BLOB é usado para comprimentos de chave de 512 a 1024 bits. BCRYPT_DSA_KEY_BLOB_V2 é usado para comprimentos de chave que excedem 1024 bits, mas são menores ou iguais a 3.072 bits.

Windows 8: começa o suporte para BCRYPT_DSA_KEY_BLOB_V2.

BCRYPT_DSA_PUBLIC_BLOB
O BLOB é um BLOB de chave pública DSA. O buffer pbInput deve conter uma estrutura BCRYPT_DSA_KEY_BLOB ou BCRYPT_DSA_KEY_BLOB_V2 imediatamente seguida pelos dados de chave. BCRYPT_DSA_KEY_BLOB é usado para comprimentos de chave de 512 a 1024 bits. BCRYPT_DSA_KEY_BLOB_V2 é usado para comprimentos de chave que excedem 1024 bits, mas são menores ou iguais a 3.072 bits.

Windows 8: começa o suporte para BCRYPT_DSA_KEY_BLOB_V2.

BCRYPT_ECCPRIVATE_BLOB
O BLOB é um de criptografia de curva elíptica (ECC) de chave privada. O buffer pbInput deve conter uma estrutura BCRYPT_ECCKEY_BLOB imediatamente seguida pelos dados de chave.
BCRYPT_ECCPUBLIC_BLOB
O BLOB é uma chave pública ECC. O buffer pbInput deve conter uma estrutura BCRYPT_ECCKEY_BLOB imediatamente seguida pelos dados de chave.
BCRYPT_PUBLIC_KEY_BLOB
O BLOB é uma chave pública genérica de qualquer tipo. O tipo de chave neste BLOB é determinado pelo membro Magic da estrutura BCRYPT_KEY_BLOB.
BCRYPT_PRIVATE_KEY_BLOB
O BLOB é uma chave privada genérica de qualquer tipo. A chave privada não contém necessariamente a chave pública. O tipo de chave neste BLOB é determinado pelo membro Magic da estrutura BCRYPT_KEY_BLOB.
BCRYPT_RSAPRIVATE_BLOB
O BLOB é um BLOB de par de chaves pública/privada RSA. O buffer de pbInput deve conter uma estrutura de BCRYPT_RSAKEY_BLOB imediatamente seguida pelos dados de chave.
BCRYPT_RSAPUBLIC_BLOB
O BLOB é um BLOB de chave pública RSA. O buffer de pbInput deve conter uma estrutura de BCRYPT_RSAKEY_BLOB imediatamente seguida pelos dados de chave.
LEGACY_DH_PUBLIC_BLOB
O BLOB é um BLOB de chave pública Diffie-Hellman que foi exportado usando cryptoAPI. O provedor primitivo da Microsoft não dá suporte à importação desse tipo de BLOB.
LEGACY_DH_PRIVATE_BLOB
O BLOB é um blob de chave privada da versão 3 do Diffie-Hellman herdado que contém um Diffie-Hellman par de chaves pública/privada que foi exportado usando CryptoAPI.
LEGACY_DSA_PRIVATE_BLOB
O BLOB é um BLOB de par de chaves pública/privada da DSA que foi exportado usando CryptoAPI.
LEGACY_DSA_PUBLIC_BLOB
O BLOB é um BLOB de chave pública DSA que foi exportado usando CryptoAPI. O provedor primitivo da Microsoft não dá suporte à importação desse tipo de BLOB.
LEGACY_DSA_V2_PRIVATE_BLOB
O BLOB é uma chave privada DSA versão 2 em um formulário que pode ser importado usando CryptoAPI.
LEGACY_RSAPRIVATE_BLOB
O BLOB é um BLOB de par de chaves pública/privada RSA que foi exportado usando CryptoAPI.
LEGACY_RSAPUBLIC_BLOB
O BLOB é um BLOB de chave pública RSA que foi exportado usando CryptoAPI. O provedor primitivo da Microsoft não dá suporte à importação desse tipo de BLOB.

[out] phKey

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

[in] pbInput

O endereço de um buffer que contém a chave BLOB importar. O parâmetro cbInput contém o tamanho desse buffer. O parâmetro pszBlobType especifica o tipo de blob de chave que esse buffer contém.

[in] cbInput

O tamanho, em bytes, do buffer de de pbInput.

[in] dwFlags

Um conjunto de sinalizadores que modificam o comportamento dessa função. Isso pode ser zero ou o valor a seguir.

Valor Significado
BCRYPT_NO_KEY_VALIDATION
Não valide a parte pública do par de chaves.

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_INVALID_HANDLE
O identificador de algoritmo no parâmetro hAlgorithm não é válido.
STATUS_INVALID_PARAMETER
Um ou mais parâmetros não são válidos.
STATUS_NOT_SUPPORTED
O provedor de algoritmo especificado pelo parâmetro hAlgorithm não dá suporte ao tipo BLOB especificado pelo parâmetro pszBlobType .

Observações

Dependendo de quais modos de processador um provedor dá suporte, BCryptImportKeyPair 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 hAlgorithm deverá ter sido aberto usando o sinalizador BCRYPT_PROV_DISPATCH e quaisquer ponteiros passados para a função BCryptImportKeyPair 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
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

Consulte também

BCryptDestroyKey

BCryptExportKey

BCryptImportKey