Compartilhar via


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 uma 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 valor pode ser um dos seguintes:

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: O suporte para BCRYPT_DSA_KEY_BLOB_V2 começa.
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: O suporte para BCRYPT_DSA_KEY_BLOB_V2 começa.
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_MLKEM_PUBLIC_BLOB O BLOB é um BLOB ML-KEM que fornece importação e exportação de chaves de encapsulamento de ML-KEM codificadas em bytes padrão por FIPS 203. O buffer pbInput deve conter uma estrutura de BCRYPT_MLKEM_KEY_BLOB contendo a chave de encapsulamento KEM codificada por bytes, BCRYPT_MLKEM_PUBLIC_MAGIC e ML-KEM conjunto de parâmetros.
BCRYPT_MLKEM_PRIVATE_BLOB O BLOB é um BLOB ML-KEM que fornece importação e exportação de chaves de descapsulação de ML-KEM codificadas em bytes padrão por FIPS 203. O buffer pbInput deve conter uma estrutura de BCRYPT_MLKEM_KEY_BLOB que contenha a chave de descapsulação KEM codificada por bytes, BCRYPT_MLKEM_PRIVATE_MAGIC e ML-KEM conjunto de parâmetros.
BCRYPT_MLKEM_PRIVATE_SEED_BLOB O BLOB é um BLOB ML-KEM que fornece importação e exportação de sementes ML-KEM por FIPS 203. O buffer pbInput deve conter uma estrutura de BCRYPT_MLKEM_KEY_BLOB que contenha a semente KEM, BCRYPT_MLKEM_SEED_MAGIC e ML-KEM conjunto de parâmetros.
BCRYPT_PQDSA_PUBLIC_BLOB O BLOB é um BLOB ML-DSA, SLH-DSA, LMS ou XMSS que fornece importação e exportação de chaves públicas de assinatura digital PQ por FIPS 204 e 205. O buffer pbInput deve conter uma estrutura de BCRYPT_PQDSA_KEY_BLOB que contenha o material da chave, a magia pública e o conjunto de parâmetros PQ.
BCRYPT_PQDSA_PRIVATE_BLOB O BLOB é um BLOB ML-DSA, SLH-DSA, LMS ou XMSS que fornece importação e exportação de chaves privadas de assinatura digital PQ por FIPS 204 e 205. O buffer pbInput deve conter uma estrutura de BCRYPT_PQDSA_KEY_BLOB que contenha o material da chave, a magia privada e o conjunto de parâmetros PQ.
BCRYPT_PQDSA_PRIVATE_SEED_BLOB O BLOB é um BLOB ML-DSA, SLH-DSA, LMS ou XMSS que fornece importação e exportação de sementes privadas de assinatura digital PQ por FIPS 204 e 205. O buffer pbInput deve conter uma estrutura de BCRYPT_PQDSA_KEY_BLOB que contenha o valor da semente, a magia da semente privada e o conjunto de parâmetros PQ.
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_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_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 Opte por qualquer auto-teste fips aplicável.

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:

Código de retorno Descrição
STATUS_SUCCESS A função foi bem-sucedida.
STATUS_INVALID_BUFFER_SIZE Se o buffer pbInput não for do tamanho correto para a combinação do conjunto de parâmetros ML-KEM associado ao hAlgorithm e para o tipo de blob que está sendo importado.
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).

O chamador deve liberar hKey com BCryptDestroyKey quando a chave não estiver mais sendo usada.

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