Função NCryptExportKey (ncrypt.h)
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 da chave exportada BLOB são criptografados usando essa chave. Isso garante que somente o usuário de destino seja capaz de fazer uso da chave BLOB.
[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
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.
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 DSA. O buffer pbOutput recebe uma estrutura 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 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 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_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
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 .
BCRYPT_RSAFULLPRIVATE_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 .
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.
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 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.
LEGACY_DH_PUBLIC_BLOB
Exporte um BLOB de chave privada Diffie-Hellman versão 3 herdado 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_RSAPRIVATE_BLOB
Exporte um par de chaves públicas/privadas 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
Exporte 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 adequada 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ório 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ório 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 NCRYPT_KEY_BLOB_HEADER .
Windows 8 e Windows Server 2012: o suporte para esse valor começa.
[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 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 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 serviços de chave) 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. |
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 |
---|---|
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 dos parâmetros não são válidos. |
Comentários
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 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 | ncrypt.h |
Biblioteca | Ncrypt.lib |
DLL | Ncrypt.dll |