Compartilhar via


Função SslExportKey

A função SslExportKey retorna uma chave de sessão SSL (Secure Sockets Layer Protocol) ou uma chave efêmera pública em um BLOB serializado.

Sintaxe

SECURITY_STATUS WINAPI SslExportKey(
  _In_      NCRYPT_PROV_HANDLE hSslProvider,
  _In_      NCRYPT_KEY_HANDLE  hKey,
  _In_      LPCWSTR            pszBlobType,
  _Out_opt_ PBYTE              pbOutput,
  _In_      DWORD              cbOutput,
  _Out_     DWORD              *pcbResult,
  _In_      DWORD              dwFlags
);

Parâmetros

hSslProvider [in]

O identificador da instância do provedor de protocolo SSL.

hKey [in]

O identificador da chave a ser exportada.

Quando você não estiver especificando uma chave, defina esse parâmetro como NULL.

Observação

Um identificador hKey é obtido chamando a função SslOpenPrivateKey . Não há suporte para identificadores obtidos da função NCryptOpenKey .

pszBlobType [in]

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.

Valor Significado
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_ECCPUBLIC_BLOB
Exportar uma chave pública ECC ( criptografia de curva elíptica ). O buffer pbOutput recebe uma estrutura de BCRYPT_ECCKEY_BLOB imediatamente seguida pelos dados de chave.
BCRYPT_OPAQUE_KEY_BLOB
Exporte uma chave simétrica em um formato específico para um único provedor de serviços criptográficos (CSP). BLOBs opacos não são transferíveis e devem ser importados usando o mesmo provedor de serviços criptográficos (CSP) que gerou o BLOB.
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.

pbOutput [out, opcional]

O endereço de um buffer que recebe o BLOB de chave. 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 .

cbOutput [in]

O tamanho, em bytes, do buffer pbOutput .

pcbResult [out]

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 definido como NULL quando a função for chamada, o tamanho necessário para o buffer pbOutput , em bytes, será retornado no DWORD apontado por esse parâmetro.

dwFlags [in]

Reservado para uso futuro.

Valor retornado

Se a função for bem-sucedida, ela retornará zero.

Se a função falhar, ela retornará um valor de erro diferente de zero.

Os códigos de retorno possíveis incluem, mas não se limitam a, o seguinte.

Código/valor de retorno Descrição
NTE_INVALID_HANDLE
0x80090026L
Um dos identificadores fornecidos não é válido.

Comentários

A função SslExportKey facilita o transporte de chaves de sessão de um processo para outro, bem como a exportação da parte pública de uma chave efêmera.

Ao exportar chaves de sessão, o tipo BLOB é opaco, o que significa que o formato do BLOB é irrelevante, desde que as funções SslExportKey e SslImportKey possam interpretá-lo.

Ao exportar a parte pública de uma chave efêmera, o tipo BLOB deve ser o tipo apropriado, como NCRYPT_DH_PUBLIC_BLOB ou NCRYPT_ECCPUBLIC_BLOB.

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Windows Server 2008 [somente aplicativos da área de trabalho]
Cabeçalho
Sslprovider.h
DLL
Ncrypt.dll