Función SslExportKey

La función SslExportKey devuelve una clave de sesión del protocolo Secure Sockets Layer (SSL) o una clave efímera pública en un BLOB serializado.

Sintaxis

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]

Identificador de la instancia del proveedor de protocolo SSL.

hKey [in]

Identificador de la clave que se va a exportar.

Cuando no se especifica una clave, establezca este parámetro en NULL.

Nota

Se obtiene un identificador hKey mediante una llamada a la función SslOpenPrivateKey . No se admiten los identificadores obtenidos de la función NCryptOpenKey .

pszBlobType [in]

Cadena Unicode terminada en null que contiene un identificador que especifica el tipo de BLOB que se va a exportar. Puede ser uno de los siguientes valores.

Value Significado
BCRYPT_DH_PUBLIC_BLOB
Exporte una clave pública Diffie-Hellman. El búfer pbOutput recibe una estructura de BCRYPT_DH_KEY_BLOB inmediatamente seguida de los datos de clave.
BCRYPT_ECCPUBLIC_BLOB
Exporte una clave pública de criptografía de curva elíptica (ECC). El búfer pbOutput recibe una estructura de BCRYPT_ECCKEY_BLOB inmediatamente seguida de los datos de clave.
BCRYPT_OPAQUE_KEY_BLOB
Exporte una clave simétrica en un formato específico de un único proveedor de servicios criptográficos (CSP). Los BLOB opacos no se pueden transferir y deben importarse mediante el mismo proveedor de servicios criptográficos (CSP) que generó el BLOB.
BCRYPT_RSAPUBLIC_BLOB
Exporte una clave pública RSA. El búfer pbOutput recibe una estructura de BCRYPT_RSAKEY_BLOB inmediatamente seguida de los datos de clave.

pbOutput [out, opcional]

Dirección de un búfer que recibe la clave BLOB. El parámetro cbOutput contiene el tamaño de este búfer. Si este parámetro es NULL, esta función colocará el tamaño necesario, en bytes, en el DWORD al que apunta el parámetro pcbResult .

cbOutput [in]

Tamaño, en bytes, del búfer pbOutput .

pcbResult [out]

Dirección de una variable DWORD que recibe el número de bytes copiados en el búfer pbOutput . Si el parámetro pbOutput se establece en NULL cuando se llama a la función, el tamaño necesario para el búfer pbOutput , en bytes, se devuelve en el DWORD al que apunta este parámetro.

dwFlags [in]

Reservado para uso futuro.

Valor devuelto

Si la función se ejecuta correctamente, devuelve cero.

Si se produce un error en la función, devuelve un valor de error distinto de cero.

Entre los códigos de retorno posibles se incluyen, entre otros, los siguientes.

Código o valor devuelto Descripción
NTE_INVALID_HANDLE
0x80090026L
Uno de los identificadores proporcionados no es válido.

Comentarios

La función SslExportKey facilita el transporte de claves de sesión de un proceso a otro, así como la exportación de la parte pública de una clave efímera.

Al exportar claves de sesión, el tipo BLOB es opaco, lo que significa que el formato del BLOB es irrelevante siempre que las funciones SslExportKey y SslImportKey puedan interpretarla.

Al exportar la parte pública de una clave efímera, el tipo BLOB debe ser el tipo adecuado, como NCRYPT_DH_PUBLIC_BLOB o NCRYPT_ECCPUBLIC_BLOB.

Requisitos

Requisito Valor
Cliente mínimo compatible
Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows Server 2008 [solo aplicaciones de escritorio]
Encabezado
Sslprovider.h
Archivo DLL
Ncrypt.dll