Función NCryptOpenKey (ncrypt.h)

La función NCryptOpenKey abre una clave que existe en el proveedor de almacenamiento de claves CNG especificado.

Sintaxis

SECURITY_STATUS NCryptOpenKey(
  [in]  NCRYPT_PROV_HANDLE hProvider,
  [out] NCRYPT_KEY_HANDLE  *phKey,
  [in]  LPCWSTR            pszKeyName,
  [in]  DWORD              dwLegacyKeySpec,
  [in]  DWORD              dwFlags
);

Parámetros

[in] hProvider

Identificador del proveedor de almacenamiento de claves desde el que se va a abrir la clave.

[out] phKey

Puntero a una variable NCRYPT_KEY_HANDLE que recibe el identificador de clave. Cuando haya terminado de usar este identificador, suéltelo pasando a la función NCryptFreeObject .

[in] pszKeyName

Puntero a una cadena Unicode terminada en null que contiene el nombre de la clave que se va a recuperar.

[in] dwLegacyKeySpec

Identificador heredado que especifica el tipo de clave. Puede ser uno de los valores siguientes.

Valor Significado
AT_KEYEXCHANGE
La clave es una clave de intercambio de claves.
AT_SIGNATURE
La clave es una clave de firma.
0
La clave no es ninguno de los tipos anteriores.

[in] dwFlags

Marcas que modifican el comportamiento de la función. Puede ser cero o una combinación de uno o varios de los valores siguientes.

Valor Significado
NCRYPT_MACHINE_KEY_FLAG
Abra la clave del equipo local. Si esta marca no está presente, se abre la clave de usuario actual.
NCRYPT_SILENT_FLAG
Solicita que el proveedor de servicios clave (KSP) no muestre ninguna interfaz de usuario. Si el proveedor debe mostrar la interfaz de usuario para funcionar, se produce un error en la llamada y el KSP debe establecer el código de error NTE_SILENT_CONTEXT como último error.

Valor devuelto

Devuelve un código de estado que indica el éxito o error de la función.

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

Código devuelto Descripción
ERROR_SUCCESS
La función se realizó correctamente.
NTE_BAD_FLAGS
El parámetro dwFlags contiene un valor que no es válido.
NTE_BAD_KEYSET
No se encontró la clave especificada.
NTE_INVALID_HANDLE
El parámetro hProvider no es válido.
NTE_INVALID_PARAMETER
Uno o más parámetros no son válidos.
NTE_NO_MEMORY
Error de asignación de memoria.

Comentarios

Un servicio no debe llamar a esta función desde su función StartService. Si un servicio llama a esta función desde su función StartService, se puede producir un interbloqueo y el servicio puede dejar de responder.

Por motivos de rendimiento, los KSP basados en software de Microsoft almacenan en caché el material de clave privada de la autoridad de seguridad local (LSA) siempre que se abra un identificador para la clave. El LSA es un proceso de sistema con privilegios. Por lo tanto, otros usuarios no pueden acceder a esta copia almacenada en caché de la clave a menos que el usuario tenga privilegios de administrador en el sistema. Este comportamiento no se puede modificar a través de la configuración.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado ncrypt.h
Library Ncrypt.lib
Archivo DLL Ncrypt.dll