Share via


Função BCryptImportKeyPair (bcrypt.h)

A função BCryptImportKeyPair importa um par de chaves pública/privada de um BLOB de chave. A função BCryptImportKey é usada para importar um par de chaves simétricas .

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 algoritmos 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úblicas/privadas. O buffer 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 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 de 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 de 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 é uma chave privada ECC (criptografia de curva elíptica). O buffer pbInput deve conter uma estrutura de 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 de 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 pbInput deve conter uma estrutura BCRYPT_RSAKEY_BLOB imediatamente seguida pelos dados de chave.
BCRYPT_RSAPUBLIC_BLOB
O BLOB é um BLOB de chave pública RSA. O buffer pbInput deve conter uma estrutura BCRYPT_RSAKEY_BLOB imediatamente seguida pelos dados de chave.
LEGACY_DH_PUBLIC_BLOB
O BLOB é uma Diffie-Hellman BLOB de chave pública que foi exportada 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 Diffie-Hellman versão 3 herdado que contém um par de chaves pública/privada Diffie-Hellman 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 a ser importada. O parâmetro cbInput contém o tamanho desse buffer. O parâmetro pszBlobType especifica o tipo de chave BLOB que esse buffer contém.

[in] cbInput

O tamanho, em bytes, do buffer 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.

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_INVALID_HANDLE
O identificador de algoritmo no parâmetro hAlgorithm não é válido.
STATUS_INVALID_PARAMETER
Um ou mais dos 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 .

Comentários

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 todos os 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
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

Confira também

BCryptDestroyKey

BCryptExportKey

BCryptImportKey