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
AT_KEYEXCHANGE
Chaves usadas para criptografar/descriptografar chaves de sessão.
AT_SIGNATURE
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
ERROR_UNSUPPORTED_TYPE
Não foi possível encontrar uma função de exportação que possa ser instalada ou registrada.
ERROR_MORE_DATA
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

Confira também

Cryptacquirecontext

CryptExportPKCS8Ex

Recuperando dados de comprimento desconhecido