Função CryptExportPKCS8 (wincrypt.h)
[A função CryptExportPKCS8 não está mais disponível para uso desde o Windows Server 2008 e o Windows Vista. Em vez disso, use a função PFXExportCertStoreEx .]
A função CryptExportPKCS8 exporta a chave privada no formato PKCS nº 8. A função é substituída por CryptExportPKCS8Ex, que também pode ser alterada ou indisponível em versões subsequentes.
Sintaxe
BOOL CryptExportPKCS8(
[in] HCRYPTPROV hCryptProv,
[in] DWORD dwKeySpec,
[in] LPSTR pszPrivateKeyObjId,
[in] DWORD dwFlags,
[in, optional] void *pvAuxInfo,
[out, optional] BYTE *pbPrivateKeyBlob,
[in, out] DWORD *pcbPrivateKeyBlob
);
Parâmetros
[in] hCryptProv
Uma variável HCRYPTPROV que contém o provedor de serviços criptográficos (CSP). Esse é um identificador para o CSP obtido chamando CryptAcquireContext.
[in] dwKeySpec
Uma variável DWORD que contém a especificação de chave. Os seguintes valores dwKeySpec são definidos para o provedor padrão.
Valor | Significado |
---|---|
|
Chaves usadas para criptografar/descriptografar chaves de sessão. |
|
Chaves usadas para criar e verificar assinaturas digitais. |
[in] pszPrivateKeyObjId
Uma variável LPSTR que contém o OID ( identificador de objeto de chave privada).
[in] dwFlags
Esse parâmetro deverá ser zero se pbPrivateKeyBlob for NULL e 0x8000 caso contrário.
[in, optional] pvAuxInfo
Esse parâmetro deve ser definido como NULL.
[out, optional] pbPrivateKeyBlob
Um ponteiro para uma matriz de estruturas BYTE para receber a chave privada a ser exportada.
A chave privada conterá as informações em um tipo ASN.1 (PrivateKeyInfo Abstract Syntax Notation One ) PKCS nº 8 encontrado no padrão PKCS nº 8.
Para fins de alocação de memória, você pode obter o tamanho da chave privada a ser exportada definindo esse parâmetro como NULL. Para obter mais informações, consulte Recuperando dados de comprimento desconhecido.
[in, out] pcbPrivateKeyBlob
Um ponteiro para um DWORD que pode conter, na entrada, o tamanho, em bytes, da alocação de memória necessária para conter o pbPrivateKeyBlob. Se pbPrivateKeyBlob for NULL, esse parâmetro retornará o tamanho da alocação de memória necessária para uma segunda chamada para a função. Para obter mais informações, consulte Recuperando dados de comprimento desconhecido.
Valor retornado
Se a função for bem-sucedida, a função retornará diferente de zero.
Se a função falhar, ela retornará zero. Para obter informações de erro estendidas, chame GetLastError.
Os códigos de erro a seguir são específicos para essa função.
Código de retorno | Descrição |
---|---|
|
Não foi possível encontrar uma função de exportação que possa ser instalada ou registrada. |
|
Se o buffer especificado pelo parâmetro pbPrivateKeyBlob não for grande o suficiente para manter os dados retornados, a função definirá o código ERROR_MORE_DATA e armazenará o tamanho do buffer necessário, em bytes, na variável apontada pelo parâmetro pcbPrivateKeyBlob . |
Se a função falhar, GetLastError poderá retornar um erro de codificação/decodificação ASN.1. Para obter informações sobre esses erros, consulte Valores retornados de codificação/decodificação asn.1.
Comentários
Essa função só tem suporte para chaves assimétricas.
Requisitos
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | wincrypt.h |
Biblioteca | Crypt32.lib |
DLL | Crypt32.dll |