Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A função NCryptExportKey exporta uma chave CNG para um BLOB de memória.
Sintaxe
SECURITY_STATUS NCryptExportKey(
[in] NCRYPT_KEY_HANDLE hKey,
[in, optional] NCRYPT_KEY_HANDLE hExportKey,
[in] LPCWSTR pszBlobType,
[in, optional] NCryptBufferDesc *pParameterList,
[out, optional] PBYTE pbOutput,
[in] DWORD cbOutput,
[out] DWORD *pcbResult,
[in] DWORD dwFlags
);
Parâmetros
[in] hKey
Um identificador da chave a ser exportada.
[in, optional] hExportKey
Um identificador para uma chave criptográfica do usuário de destino. Os dados de chave dentro do BLOB de chave exportada são criptografados usando essa chave. Isso garante que somente o usuário de destino seja capaz de usar o BLOB de chave.
[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.
BCRYPT_DH_PRIVATE_BLOB
Exportar um par de chaves pública/privada Diffie-Hellman. O buffer pbOutput recebe uma estrutura de 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 de 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 imediatamente seguida pelos dados de chave.
BCRYPT_DSA_PUBLIC_BLOB
Exportar uma chave pública DSA. O buffer pbOutput recebe uma estrutura de BCRYPT_DSA_KEY_BLOB imediatamente seguida pelos dados de chave.
BCRYPT_ECCPRIVATE_BLOB
Exportar uma chave privada ECC (criptografia de curva elíptica). O buffer pbOutput recebe uma estrutura de BCRYPT_ECCKEY_BLOB imediatamente seguida pelos dados de chave.
BCRYPT_ECCPUBLIC_BLOB
Exportar uma chave pública ECC. O buffer pbOutput recebe uma estrutura de BCRYPT_ECCKEY_BLOB imediatamente seguida pelos dados de chave.
BCRYPT_MLKEM_PRIVATE_SEED_BLOB
Exportar uma chave de semente privada ML-KEM. O buffer pbOutput recebe uma estrutura de BCRYPT_MLKEM_KEY_BLOB imediatamente seguida pelo conjunto de parâmetros e dados de chave.
Observação: ML-KEM identificadores de chave que contêm uma chave privada importada usando BCRYPT_MLKEM_PRIVATE_BLOB não têm informações suficientes para exportar uma chave de semente privada.
Windows Insiders (build 27843): O suporte para ML-KEM começa.
BCRYPT_MLKEM_PRIVATE_BLOB
Exportar uma chave ML-KEM privada (decapsulação). O buffer pbOutput recebe uma estrutura de BCRYPT_MLKEM_KEY_BLOB imediatamente seguida pelo conjunto de parâmetros e dados de chave.
Windows Insiders (build 27843): O suporte para ML-KEM começa.
BCRYPT_MLKEM_PUBLIC_BLOB
Exportar uma chave ML-KEM pública (encapsulamento). O buffer pbOutput recebe uma estrutura de BCRYPT_MLKEM_KEY_BLOB imediatamente seguida pelo conjunto de parâmetros e dados de chave.
Windows Insiders (build 27843): O suporte para ML-KEM começa.
BCRYPT_PQDSA_PRIVATE_SEED_BLOB
Exportar uma chave de semente privada PQDSA. O buffer pbOutput recebe uma estrutura de BCRYPT_PQDSA_KEY_BLOB imediatamente seguida pelo conjunto de parâmetros e dados de chave.
Nota: Identificadores de chave PQDSA que contêm uma chave privada que foi importada usando BCRYPT_PQDSA_PRIVATE_BLOB não têm informações suficientes para exportar uma chave de semente privada.
Windows Insiders (build 27843): O suporte para ML-DSA começa.
BCRYPT_PQDSA_PRIVATE_BLOB
Exportar uma chave privada PQDSA. O buffer pbOutput recebe uma estrutura de BCRYPT_PQDSA_KEY_BLOB imediatamente seguida pelo conjunto de parâmetros e dados de chave.
Windows Insiders (build 27843): O suporte para ML-DSA começa.
BCRYPT_PQDSA_PUBLIC_BLOB
Exportar uma chave pública PQDSA. O buffer pbOutput recebe uma estrutura de BCRYPT_PQDSA_KEY_BLOB imediatamente seguida pelo conjunto de parâmetros e dados de chave.
Windows Insiders (build 27843): O suporte para ML-DSA começa.
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 de BCRYPT_RSAKEY_BLOB imediatamente seguida pelos dados de chave. Esse BLOB incluirá material de chave adicional em comparação com o tipo BCRYPT_RSAPRIVATE_BLOB .
BCRYPT_RSAPRIVATE_BLOB
Exportar um par de chaves pública/privada RSA. O buffer pbOutput recebe uma estrutura de BCRYPT_RSAKEY_BLOB imediatamente seguida pelos dados de chave.
BCRYPT_RSAPUBLIC_BLOB
Exportar uma chave pública RSA. O buffer pbOutput recebe uma estrutura de BCRYPT_RSAKEY_BLOB imediatamente seguida pelos dados de chave.
LEGACY_DH_PRIVATE_BLOB
Exporte um blob de chave privadaDiffie-Hellman versão 3 herdado que contenha um par de chaves pública/privada Diffie-Hellman que pode ser importado usando CryptoAPI.
LEGACY_DH_PUBLIC_BLOB
Exporte um BLOB de chave privadaDiffie-Hellman versão 3 herdado que contenha 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_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.
NCRYPT_CIPHER_KEY_BLOB
Exportar uma chave de criptografia em uma estrutura NCRYPT_KEY_BLOB_HEADER .
Windows 8 e Windows Server 2012: O suporte para esse valor começa.
NCRYPT_OPAQUETRANSPORT_BLOB
Exporte uma chave em um formato específico para um único CSP e seja adequado para transporte. BLOBs opacos não são transferíveis e devem ser importados usando o mesmo CSP que gerou o BLOB.
NCRYPT_PKCS7_ENVELOPE_BLOB
Exportar um BLOB de envelope PKCS nº 7. Os parâmetros identificados pelo parâmetro pParameterList podem ou devem conter os parâmetros a seguir, conforme indicado pela coluna Obrigatória ou opcional.
| Parâmetro | Obrigatório ou opcional |
|---|---|
| NCRYPTBUFFER_CERT_BLOB | Obrigatório |
| NCRYPTBUFFER_PKCS_ALG_OID | Obrigatório |
| NCRYPTBUFFER_PKCS_ALG_PARAM | Opcional |
NCRYPT_PKCS8_PRIVATE_KEY_BLOB
Exportar um BLOB de chave privada PKCS nº 8. Os parâmetros identificados pelo parâmetro pParameterList podem ou devem conter os parâmetros a seguir, conforme indicado pela coluna Obrigatória ou opcional.
| Parâmetro | Obrigatório ou opcional |
|---|---|
| NCRYPTBUFFER_PKCS_ALG_OID | Opcional |
| NCRYPTBUFFER_PKCS_ALG_PARAM | Opcional |
| NCRYPTBUFFER_PKCS_SECRET | Opcional |
NCRYPT_PROTECTED_KEY_BLOB
Exportar uma chave protegida em uma estrutura de NCRYPT_KEY_BLOB_HEADER .
Windows 8 e Windows Server 2012: O suporte para esse valor começa.
NCRYPT_PQ_PRIVATE_KEY_BLOB
Exportar uma chave privada genérica de qualquer tipo de algoritmo Post-Quantum. O tipo de chave neste BLOB é determinado pelo membro Magic da estrutura NCRYPT_PQ_BLOB .
[in, optional] pParameterList
O endereço de uma estrutura NCryptBufferDesc que recebe informações de parâmetro para a chave. Esse parâmetro poderá ser NULL se essas informações não forem necessárias.
[out, optional] 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 DWORD apontado pelo parâmetro pcbResult .
[in] cbOutput
O tamanho, em bytes, do buffer pbOutput .
[out] pcbResult
O endereço de uma variável DWORD que recebe o número de bytes copiados para o buffer pbOutput . Se o parâmetro pbOutput for NULL, essa função colocará o tamanho necessário, em bytes, no DWORD apontado por esse parâmetro.
[in] dwFlags
Sinalizadores que modificam o comportamento da função. Isso pode ser zero ou uma combinação de um ou mais dos valores a seguir. O conjunto de sinalizadores válidos é específico para cada provedor de armazenamento de chaves. O sinalizador a seguir se aplica a todos os provedores.
| Valor | Significado |
|---|---|
| NCRYPT_SILENT_FLAG | Solicita que o KSP (provedor de armazenamento de chaves) não exiba nenhuma interface do usuário. Se o provedor precisar exibir a interface do usuário para operar, a chamada falhará e o KSP deverá definir o código de erro NTE_SILENT_CONTEXT como o último erro. |
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 |
|---|---|
| ERROR_SUCCESS | A função foi bem-sucedida. |
| NTE_BAD_FLAGS | O parâmetro dwFlags contém um valor que não é válido. |
| NTE_BAD_KEY_STATE | A chave especificada pelo parâmetro hKey não é válida. A causa mais comum desse erro é que a chave não foi concluída usando a função NCryptFinalizeKey . |
| NTE_BAD_TYPE | A chave especificada pelo parâmetro hKey não pode ser exportada para o tipo BLOB especificado pelo parâmetro pszBlobType . |
| NTE_INVALID_HANDLE | O parâmetro hKey ou hExportKey não é válido. |
| NTE_INVALID_PARAMETER | Um ou mais parâmetros não são válidos. |
Observações
Um serviço não deve chamar essa função de sua Função StartService. Se um serviço chamar essa função de sua função StartService , um deadlock poderá ocorrer e o serviço poderá parar de responder.
Requisitos
| Requisito | Valor |
|---|---|
| Cliente mínimo suportado | Windows Vista [aplicativos da área de trabalho | Aplicativos UWP] |
| Servidor mínimo compatível | Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP] |
| da Plataforma de Destino | Windows |
| cabeçalho | ncrypt.h |
| Biblioteca | Ncrypt.lib |
| de DLL | Ncrypt.dll |