Função BCryptExportKey (bcrypt.h)
A função BCryptExportKey exporta uma chave para um BLOB de memória que pode ser persistido 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.
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 |
---|---|
|
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. |
|
Exporte um par de chaves pública/privada Diffie-Hellman. O buffer pbOutput recebe uma estrutura BCRYPT_DH_KEY_BLOB imediatamente seguida pelos dados de chave. |
|
Exportar uma chave pública Diffie-Hellman. O buffer pbOutput recebe uma estrutura BCRYPT_DH_KEY_BLOB imediatamente seguida pelos dados de chave. |
|
Exportar um par de chaves públicas/privadas DSA. O buffer pbOutput recebe 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 3072 bits.
Windows 8: o suporte para BCRYPT_DSA_KEY_BLOB_V2 começa. |
|
Exportar uma chave pública DSA. O buffer pbOutput recebe 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 3072 bits.
Windows 8: o suporte para BCRYPT_DSA_KEY_BLOB_V2 começa. |
|
Exportar uma chave privada ECC (criptografia de curva elíptica). O buffer pbOutput recebe uma estrutura BCRYPT_ECCKEY_BLOB imediatamente seguida pelos dados de chave. |
|
Exportar uma chave pública ECC. O buffer pbOutput recebe uma estrutura BCRYPT_ECCKEY_BLOB imediatamente seguida pelos dados de chave. |
|
Exportar uma chave simétrica para um BLOB de dados. O buffer pbOutput recebe uma estrutura BCRYPT_KEY_DATA_BLOB_HEADER imediatamente seguida pelo BLOB da chave. |
|
Exporte uma chave simétrica em um formato específico para um único 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. BLOBs opacos destinam-se apenas a serem usados para transferência entre processos de chaves e não são adequados para serem persistidos e lidos entre versões de um provedor. |
|
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 . |
|
Exporte 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 . |
|
Exporte um par completo de chaves públicas/privadas RSA. O buffer pbOutput recebe uma estrutura de 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 . |
|
Exportar um par de chaves públicas/privadas RSA. O buffer pbOutput recebe uma estrutura de BCRYPT_RSAKEY_BLOB imediatamente seguida pelos dados de chave. |
|
Exportar uma chave pública RSA. O buffer pbOutput recebe uma estrutura de BCRYPT_RSAKEY_BLOB imediatamente seguida pelos dados de chave. |
|
Exporte um BLOB de chave privada Diffie-Hellman versão 3 herdado que contém um par de chaves pública/privada Diffie-Hellman que pode ser importado usando CryptoAPI. |
|
Exporte um BLOB de chave pública Diffie-Hellman versão 3 herdado que contém uma chave pública Diffie-Hellman que pode ser importada usando CryptoAPI. |
|
Exporte um par de chaves públicas/privadas DSA em um formulário que pode ser importado usando CryptoAPI. |
|
Exporte uma chave pública DSA em um formulário que pode ser importado usando CryptoAPI. |
|
Exporte uma chave privada DSA versão 2 em um formulário que pode ser importado usando CryptoAPI. |
|
Exporte um par de chaves públicas/privadas RSA em um formulário que pode ser importado usando CryptoAPI. |
|
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 a chave BLOB. 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 pbOutput .
[out] pcbResult
Um ponteiro para um ULONG que recebe o número de bytes que foram copiados para o buffer 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.
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 |
---|---|
|
A função foi bem-sucedida. |
|
O tamanho especificado pelo parâmetro cbOutput não é grande o suficiente para conter o texto cifrado. |
|
O identificador de chave no parâmetro hKey não é válido. |
|
Um ou mais dos parâmetros não são válidos. |
|
O tipo BLOB especificado não é compatível com o provedor. |
Comentários
Dependendo de quais modos de processador um provedor dá suporte, BCryptExportKey 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 que foi aberto com o sinalizador BCRYPT_PROV_DISPATCH e todos os ponteiros passados para a função BCryptExportKey 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
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de