Compartilhar via


Função CryptExportPublicKeyInfo (wincrypt.h)

A função CryptExportPublicKeyInfo exporta as informações de chave pública associadas à chave privada correspondente do provedor. Para obter uma versão atualizada dessa função, consulte CryptExportPublicKeyInfoEx.

Sintaxe

BOOL CryptExportPublicKeyInfo(
  [in]      HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
  [in]      DWORD                           dwKeySpec,
  [in]      DWORD                           dwCertEncodingType,
  [out]     PCERT_PUBLIC_KEY_INFO           pInfo,
  [in, out] DWORD                           *pcbInfo
);

Parâmetros

[in] hCryptProvOrNCryptKey

Identificador do provedor de serviços criptográficos (CSP) a ser usado ao exportar as informações de chave pública. Esse identificador deve ser um identificador HCRYPTPROV que foi criado usando a função CryptAcquireContext ou um identificador NCRYPT_KEY_HANDLE que foi criado usando a função NCryptOpenKey . Os novos aplicativos sempre devem passar o identificador NCRYPT_KEY_HANDLE de um CSP CNG.

[in] dwKeySpec

Identifica a chave privada a ser usada do contêiner do provedor. Pode ser AT_KEYEXCHANGE ou AT_SIGNATURE. Esse parâmetro será ignorado se um NCRYPT_KEY_HANDLE for usado no parâmetro hCryptProvOrNCryptKey .

[in] dwCertEncodingType

Especifica o tipo de codificação usado. É sempre aceitável especificar os tipos de codificação de certificado e mensagem combinando-os com uma operação OR bit a bit, conforme mostrado no exemplo a seguir:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

Os tipos de codificação definidos no momento são:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[out] pInfo

Um ponteiro para uma estrutura CERT_PUBLIC_KEY_INFO para receber as informações de chave pública a serem exportadas.

Para definir o tamanho dessas informações para fins de alocação de memória, esse parâmetro pode ser NULL. Para obter mais informações, consulte Recuperando dados de comprimento desconhecido.

[in, out] pcbInfo

Um ponteiro para um DWORD que contém o tamanho, em bytes, do buffer apontado pelo parâmetro pInfo . Quando a função retorna, o DWORD contém o número de bytes necessários para o buffer de retorno.

Nota Ao processar os dados retornados no buffer, os aplicativos precisam usar o tamanho real dos dados retornados. O tamanho real pode ser ligeiramente menor do que o tamanho do buffer especificado na entrada. (Na entrada, os tamanhos de buffer geralmente são especificados grandes o suficiente para garantir que os maiores dados de saída possíveis caibam no buffer.) Na saída, a variável apontada por esse parâmetro é atualizada para refletir o tamanho real dos dados copiados para o buffer.
 

Retornar valor

Se a função for bem-sucedida, a função retornará diferente de zero (TRUE).

Se a função falhar, ela retornará zero (FALSE). Para obter informações de erro estendidas, chame GetLastError.

Nota Erros das funções chamadas CryptGetUserKey e CryptExportKey podem ser propagados para essa função.
 
Essa função tem os seguintes códigos de erro.
Código de retorno Descrição
ERROR_MORE_DATA
Se o buffer especificado pelo parâmetro pInfo 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 por pcbInfo.
ERROR_FILE_NOT_FOUND
Tipo de codificação de certificado inválido. Atualmente, há suporte apenas para X509_ASN_ENCODING.
 

Se a função falhar, GetLastError poderá retornar um erro de codificação/decodificação ASN.1 ( Abstract Syntax Notation One ). Para obter informações sobre esses erros, consulte Valores retornados de codificação/decodificação asn.1.

Requisitos

Requisito Valor
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

CryptImportPublicKeyInfo

Funções Gerenciamento de Dados