Função CryptExportPublicKeyInfoEx (wincrypt.h)
A função CryptExportPublicKeyInfoEx exporta as informações de chave pública associadas à chave privada correspondente do provedor. Essa função permite que o aplicativo especifique o algoritmo de chave pública, substituindo o padrão fornecido pelo CSP ( provedor de serviços criptográficos ).
Sintaxe
BOOL CryptExportPublicKeyInfoEx(
[in] HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
[in] DWORD dwKeySpec,
[in] DWORD dwCertEncodingType,
[in] LPSTR pszPublicKeyObjId,
[in] DWORD dwFlags,
[in] void *pvAuxInfo,
[out] PCERT_PUBLIC_KEY_INFO pInfo,
[in, out] DWORD *pcbInfo
);
Parâmetros
[in] hCryptProvOrNCryptKey
Um identificador do 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 no 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
[in] pszPublicKeyObjId
Especifica o algoritmo de chave pública.
[in] dwFlags
Um valor de sinalizador DWORD que indica como as informações de chave pública são exportadas. O valor do sinalizador é passado diretamente para a função CryptFindOIDInfo ao mapear o identificador de objeto de chave pública para a cadeia de caracteres Unicode do algoritmo de chave pública CNG correspondente. Os valores de sinalizador a seguir podem ser definidos.
Valor | Significado |
---|---|
|
Ignora chaves públicas no grupo de CRYPT_PUBKEY_ALG_OID_GROUP_ID sinalizado explicitamente com o sinalizador CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG . |
|
Ignora chaves públicas no grupo CRYPT_PUBKEY_ALG_OID_GROUP_ID explicitamente sinalizado com o sinalizador CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG . |
[in] pvAuxInfo
Esse parâmetro é reservado para uso futuro e deve ser definido como NULL.
[out] pInfo
Um ponteiro para uma estrutura CERT_PUBLIC_KEY_INFO para receber as informações de chave pública a serem exportadas.
Esse parâmetro pode ser NULL para definir o tamanho dessas informações para fins de alocação de memória. 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 armazenados no buffer.
Retornar valor
Se a função for bem-sucedida, o valor retornado será diferente de zero (TRUE).
Se a função falhar, o valor retornado será zero (FALSE). Para obter informações de erro estendidas, chame GetLastError.
Código de retorno | Descrição |
---|---|
|
Uma função de exportação que pode ser instalada ou registrada não pôde ser encontrada para os parâmetros dwCertEncodingType e pszPublicKeyObjId especificados. |
|
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 pelo parâmetro pcbInfo . |
Se a função falhar, GetLastError poderá retornar um erro de codificação/decodificação de ASN.1 (Abstract Syntax Notation One ). Para obter informações sobre esses erros, consulte Codificação/Decodificação de Valores Retornados do 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 |