Compartilhar via


Função BCryptExportKey (bcrypt.h)

A função BCryptExportKey exporta uma chave para uma BLOB de de memória que pode ser mantida para uso posterior.

Sintaxe

NTSTATUS BCryptExportKey(
  [in]  BCRYPT_KEY_HANDLE hKey,
  [in]  BCRYPT_KEY_HANDLE hExportKey,
  [in]  LPCWSTR           pszBlobType,
  [out] PUCHAR            pbOutput,
  [in]  ULONG             cbOutput,
  [out] ULONG             *pcbResult,
  [in]  ULONG             dwFlags
);

Parâmetros

[in] hKey

O identificador da chave a ser exportada.

[in] hExportKey

O identificador da chave com a qual encapsular a chave exportada. Use esse parâmetro ao exportar BLOBs do tipo BCRYPT_AES_WRAP_KEY_BLOB; caso contrário, defina-o como NULL.

Observação o identificador de hExportKey deve ser fornecido pelo mesmo provedor que forneceu o identificador de hKey e hExportKey deve ser um identificador para uma chave simétrica que pode ser usada no algoritmo de encapsulamento de chave AES (Advanced Encryption Standard). Quando o identificador hKey é do provedor da Microsoft, hExportKey deve ser um identificador de chave AES.

 

Windows Server 2008 e Windows Vista: Esse parâmetro não é usado e deve ser definido como NULL.

[in] pszBlobType

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

Valor Significado
BCRYPT_AES_WRAP_KEY_BLOB
Exportar uma chave encapsulada de chave AES. O parâmetro hExportKey deve referenciar um ponteiro de BCRYPT_KEY_HANDLE válido para a chave de criptografia de chave e a chave representada pelo parâmetro hKey deve ter um múltiplo de 8 bytes de comprimento.

Windows Server 2008 e Windows Vista: não há suporte para esse tipo de BLOB.

BCRYPT_DH_PRIVATE_BLOB
Exportar um par de chaves público/privado Diffie-Hellman . O buffer pbOutput recebe uma estrutura BCRYPT_DH_KEY_BLOB imediatamente seguida pelos dados de chave.
BCRYPT_DH_PUBLIC_BLOB
Exportar uma chave pública Diffie-Hellman . O buffer pbOutput recebe uma estrutura BCRYPT_DH_KEY_BLOB imediatamente seguida pelos dados de chave.
BCRYPT_DSA_PRIVATE_BLOB
Exportar um par de chaves públicas/privadas da DSA. O buffer pbOutput recebe 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
Exportar uma chave pública DSA. O buffer pbOutput recebe 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
Exportar uma de criptografia de curva elíptica (ECC) chave privada. O buffer pbOutput recebe uma estrutura BCRYPT_ECCKEY_BLOB imediatamente seguida pelos dados de chave.
BCRYPT_ECCPUBLIC_BLOB
Exportar uma chave pública ECC. O buffer pbOutput recebe uma estrutura BCRYPT_ECCKEY_BLOB imediatamente seguida pelos dados de chave.
BCRYPT_KEY_DATA_BLOB
Exportar uma chave simétrica para um BLOB de dados. O buffer pbOutput recebe uma estrutura de BCRYPT_KEY_DATA_BLOB_HEADER imediatamente seguida pelo BLOB de chave.
BCRYPT_OPAQUE_KEY_BLOB
Exporte uma chave simétrica em um formato específico para um único do provedor de serviços criptográficos (CSP). BLOBs opacos não são transferíveis e devem ser importados usando o mesmo CSP que gerou o BLOB. Os BLOBs opacos destinam-se apenas a serem usados para a transferência interprocessa de chaves e não são adequados para serem persistidos e lidos entre versões de um provedor.
BCRYPT_PUBLIC_KEY_BLOB
Exportar 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
Exportar 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_RSAFULLPRIVATE_BLOB
Exportar um par de chaves pública/privada RSA completa. O buffer pbOutput recebe uma estrutura BCRYPT_RSAKEY_BLOB imediatamente seguida pelos dados de chave. Esse BLOB incluirá material de chave adicional em comparação com o tipo de BCRYPT_RSAPRIVATE_BLOB.
BCRYPT_RSAPRIVATE_BLOB
Exportar um par de chaves pública/privada RSA. O buffer pbOutput recebe uma estrutura BCRYPT_RSAKEY_BLOB imediatamente seguida pelos dados de chave.
BCRYPT_RSAPUBLIC_BLOB
Exportar uma chave pública RSA. O buffer pbOutput recebe uma estrutura BCRYPT_RSAKEY_BLOB imediatamente seguida pelos dados de chave.
LEGACY_DH_PRIVATE_BLOB
Exporte um de BLOB de chave privada da versão 3 do Diffie-Hellman herdado que contém um par de chaves pública/privada Diffie-Hellman que pode ser importado usando CryptoAPI.
LEGACY_DH_PUBLIC_BLOB
Exporte uma Diffie-Hellman de blo b de chave pública da versão 3 herdada que contém uma chave pública Diffie-Hellman que pode ser importada usando CryptoAPI.
LEGACY_DSA_PRIVATE_BLOB
Exporte um par de chaves públicas/privadas DSA em um formulário que pode ser importado usando CryptoAPI.
LEGACY_DSA_PUBLIC_BLOB
Exporte uma chave pública DSA em um formulário que pode ser importado usando CryptoAPI.
LEGACY_DSA_V2_PRIVATE_BLOB
Exporte uma chave privada DSA versão 2 em um formulário que pode ser importado usando CryptoAPI.
LEGACY_RSAPRIVATE_BLOB
Exporte um par de chaves pública/privada RSA em um formulário que pode ser importado usando CryptoAPI.
LEGACY_RSAPUBLIC_BLOB
Exporte uma chave pública RSA em um formulário que pode ser importado usando CryptoAPI.

[out] pbOutput

O endereço de um buffer que recebe o BLOB de chave. O parâmetro cbOutput contém o tamanho desse buffer. Se esse parâmetro for NULL, essa função colocará o tamanho necessário, em bytes, no ULONG apontado pelo parâmetro pcbResult.

[in] cbOutput

Contém o tamanho, em bytes, do buffer de de pbOutput.

[out] pcbResult

Um ponteiro para um ULONG que recebe o número de bytes que foram copiados para o buffer de de pbOutput. Se o parâmetro pbOutput for NULL, essa função colocará o tamanho necessário, em bytes, no ULONG apontado por esse parâmetro.

[in] dwFlags

Um conjunto de sinalizadores que modificam o comportamento dessa função. Nenhum sinalizador é definido para essa função.

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 especificado pelo parâmetro cbOutput não é grande o suficiente para manter o texto criptografado.
STATUS_INVALID_HANDLE
O identificador de chave no parâmetro hKey não é válido.
STATUS_INVALID_PARAMETER
Um ou mais parâmetros não são válidos.
STATUS_NOT_SUPPORTED
Não há suporte para o tipo BLOB especificado pelo provedor.

Observações

Dependendo de quais modos de processador um provedor dá suporte, BCryptExportKey podem ser chamados 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 BCRYPT_PROV_DISPATCH e quaisquer ponteiros passados para a função BCryptExportKey deverão se referir à memória nãopagada (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

BCryptImportKey

BCryptImportKeyPair