Compartir a través de


Identificadores de propiedad de almacenamiento de claves

Los valores siguientes se usan para identificar una propiedad de almacenamiento de claves.

Identificadores

NCRYPT_ALGORITHM_GROUP_PROPERTY

L"Algorithm Group"

Cadena Unicode terminada en null que contiene el nombre del grupo de algoritmos del objeto. Esta propiedad solo se aplica a las claves. El proveedor de almacenamiento de claves de Microsoft devuelve los siguientes identificadores.

Identificador Importancia Descripción
NCRYPT_RSA_ALGORITHM_GROUP "RSA" El grupo de algoritmos RSA.
NCRYPT_DH_ALGORITHM_GROUP "DH" Grupo de algoritmos Diffie-Hellman.
NCRYPT_DSA_ALGORITHM_GROUP "DSA" El grupo de algoritmos DSA.
NCRYPT_ECDSA_ALGORITHM_GROUP "ECDSA" Grupo de algoritmos DSA de curva elíptica.
NCRYPT_ECDH_ALGORITHM_GROUP "ECDH" La curva elíptica Diffie-Hellman grupo de algoritmos.

NCRYPT_ALGORITHM_PROPERTY

L"Algorithm Name"

Cadena Unicode terminada en null que contiene el nombre del algoritmo del objeto. Puede ser uno de los identificadores de algoritmo de CNG predefinidos u otro identificador de algoritmo registrado. Esta propiedad solo se aplica a las claves.

NCRYPT_ASSOCIATED_ECDH_KEY

L"SmartCardAssociatedECDHKey"

Valor LPWSTR que indica el nombre del contenedor de la clave de curva elíptica Diffie-Hellman (ECDH) que se usará durante el inicio de sesión para un identificador determinado en una clave de algoritmo de firma digital de curva elíptica (ECDSA). Si no hay claves ECDH en la tarjeta, el proveedor de almacenamiento de claves (KSP) devuelve NTE_NOT_FOUND. Esta propiedad se aplica a las claves ECDSA para iniciar sesión con tarjetas inteligentes. El proveedor de almacenamiento de claves de la tarjeta inteligente de Microsoft admite la propiedad y no el proveedor de almacenamiento de claves de software de Microsoft.

Windows Server 2008 y Windows Vista: Este valor no se admite.

NCRYPT_BLOCK_LENGTH_PROPERTY

L"Block Length"

DWORD que contiene la longitud, en bytes, del bloque de cifrado. Esta propiedad solo se aplica a las claves que admiten el cifrado.

NCRYPT_CERTIFICATE_PROPERTY

L"SmartCardKeyCertificate"

Blob que contiene un certificado X.509 asociado a la clave.

Windows Server 2008 R2, Windows 7, Windows Server 2008 y Windows Vista:Blob que contiene el certificado de clave de tarjeta inteligente. Esta propiedad no es compatible con el proveedor de almacenamiento de claves de software de Microsoft.

NCRYPT_DH_PARAMETERS_PROPERTY

L"DHParameters"

Especifica los parámetros que se van a usar con una clave Diffie-Hellman. Este tipo de datos es un puntero a una estructura BCRYPT_DH_PARAMETER_HEADER . Esta propiedad solo se puede establecer y debe establecerse para la clave antes de que se complete la clave.

NCRYPT_EXPORT_POLICY_PROPERTY

L"Export Policy"

DWORD que contiene un conjunto de marcas que especifican la directiva de exportación para una clave persistente. Esta propiedad solo se aplica a las claves. Esto puede contener cero o una combinación de uno o varios de los valores siguientes.

Identificador Importancia Descripción
NCRYPT_ALLOW_EXPORT_FLAG 0x00000001 La clave privada se puede exportar.
NCRYPT_ALLOW_PLAINTEXT_EXPORT_FLAG 0x00000002 La clave privada se puede exportar en formato de texto no cifrado.
NCRYPT_ALLOW_ARCHIVING_FLAG 0x00000004 La clave privada se puede exportar una vez con fines de archivado. Esta marca solo se aplica al identificador de clave original en el que se establece. Esta directiva solo se puede aplicar al identificador de clave original. Una vez cerrado el identificador de clave, la clave ya no se puede exportar con fines de archivado.
NCRYPT_ALLOW_PLAINTEXT_ARCHIVING_FLAG 0x00000008 La clave privada se puede exportar una vez en formato de texto no cifrado con fines de archivado. Esta marca solo se aplica al identificador de clave original en el que se establece. Esta directiva solo se puede aplicar al identificador de clave original. Una vez cerrado el identificador de clave, la clave ya no se puede exportar con fines de archivado.

NCRYPT_IMPL_TYPE_PROPERTY

L"Impl Type"

DWORD que contiene un conjunto de marcas que definen los detalles de implementación del proveedor. Esta propiedad solo se aplica a los proveedores de almacenamiento de claves. Esto puede contener cero o una combinación de uno o varios de los valores siguientes.

Identificador Importancia Descripción
NCRYPT_IMPL_HARDWARE_FLAG 0x00000001 El proveedor está basado en hardware.
NCRYPT_IMPL_SOFTWARE_FLAG 0x00000002 El proveedor está basado en software.
NCRYPT_IMPL_REMOVABLE_FLAG 0x00000008 El proveedor es extraíble.
NCRYPT_IMPL_HARDWARE_RNG_FLAG 0x00000010 El proveedor es un generador de números aleatorios basado en hardware.
NCRYPT_IMPL_VIRTUAL_ISOLATION_FLAG 0x00000020 El proveedor es un proveedor de aislamiento virtualizado.

NCRYPT_KEM_CIPHERTEXT_LENGTH_PROPERTY

L"KEM Ciphertext Length"

DWORD que contiene la longitud, en bytes, del texto cifrado. Esta propiedad solo se aplica a las claves que admiten mecanismos de encapsulación de claves (KEM).

NCRYPT_KEM_SHARED_SECRET_LENGTH_PROPERTY

L"KEM Shared Secret Length"

DWORD que contiene la longitud, en bytes, del secreto compartido. Esta propiedad solo se aplica a las claves que admiten mecanismos de encapsulación de claves (KEM).

NCRYPT_KEY_TYPE_PROPERTY

L"Key Type"

DWORD que contiene un conjunto de marcas que definen el tipo de clave. Esta propiedad solo se aplica a las claves. Esto puede contener cero o el siguiente valor.

Identificador Importancia Descripción
NCRYPT_MACHINE_KEY_FLAG 0x00000020 La clave se aplica al equipo local. Si esta marca no está presente, la clave se aplica al usuario actual.

NCRYPT_KEY_USAGE_PROPERTY

L"Key Usage"

DWORD que contiene un conjunto de marcas que definen los detalles de uso de una clave. Esta propiedad solo se aplica a las claves. Esto puede contener cero o una combinación de uno o varios de los valores siguientes.

Identificador Importancia Descripción
NCRYPT_ALLOW_DECRYPT_FLAG 0x00000001 La clave se puede usar para el descifrado.
NCRYPT_ALLOW_SIGNING_FLAG 0x00000002 La clave se puede usar para firmar.
NCRYPT_ALLOW_KEY_AGREEMENT_FLAG 0x00000004 La clave se puede usar para el cifrado del contrato secreto.
NCRYPT_ALLOW_KEY_ATTESTATION_FLAG 0x00000010 Indica que la clave es una clave con atestación.
NCRYPT_ALLOW_ALL_USAGES 0x00ffffff La clave se puede usar para cualquier propósito.

NCRYPT_LAST_MODIFIED_PROPERTY

L"Modified"

Indica cuándo se modificó por última vez la clave. Este tipo de datos es un puntero a una estructura FILETIME . Esta propiedad solo se aplica a las claves persistentes.

NCRYPT_LENGTH_PROPERTY

L"Length"

DWORD que contiene la longitud, en bits, de la clave. Esta propiedad solo se aplica a las claves.

NCRYPT_LENGTHS_PROPERTY

L"Lengths"

Indica los tamaños de clave admitidos por la clave. Este tipo de datos es un puntero a una estructura NCRYPT_SUPPORTED_LENGTHS que contiene esta información. Esta propiedad solo se aplica a las claves.

NCRYPT_MAX_NAME_LENGTH_PROPERTY

L"Max Name Length"

DWORD que contiene la longitud máxima, en caracteres, del nombre de una clave persistente. Esta propiedad solo se aplica a un proveedor.

Esta propiedad está pensada principalmente para que la usen los proveedores de almacenamiento de claves que almacenan sus claves en un dispositivo que tiene una cantidad limitada de memoria disponible, como una tarjeta inteligente.

NCRYPT_NAME_PROPERTY

L"Name"

Puntero a una cadena Unicode terminada en null que contiene el nombre del objeto.

NCRYPT_PIN_PROMPT_PROPERTY

L"SmartCardPinPrompt"

Este valor no se admite.

NCRYPT_PIN_PROPERTY

L"SmartCardPin"

Puntero a una cadena Unicode terminada en null que contiene el PIN. El PIN se usa para una clave de tarjeta inteligente o la contraseña de una clave protegida con contraseña almacenada en un KSP basado en software. Esta propiedad solo se puede establecer. Los KSP de Microsoft almacenarán en caché este valor para que el usuario solo se le solicite una vez por proceso.

NCRYPT_PROVIDER_HANDLE_PROPERTY

L"Provider Handle"

Un NCRYPT_PROV_HANDLE que contiene el identificador del proveedor de almacenamiento de claves CNG. Cuando haya terminado de usar el identificador, debe llamar a NCryptFreeObject para liberarlo.

NCRYPT_READER_PROPERTY

L"SmartCardReader"

Puntero a una cadena Unicode terminada en null que contiene el nombre del lector de tarjetas inteligentes. Esta propiedad solo se puede establecer.

NCRYPT_ROOT_CERTSTORE_PROPERTY

L"SmartcardRootCertStore"

HCERTSTORE que representa el almacén de certificados raíz de la tarjeta inteligente.

NCRYPT_SCARD_PIN_ID

L"SmartCardPinId"

Puntero al PIN_ID valor asociado a una clave criptográfica determinada en una tarjeta inteligente. Se trata de una propiedad de solo lectura. El PIN_ID tipo de datos se define en Cardmod.h.

Windows Server 2008 y Windows Vista: Este valor no se admite.

Nota:

El archivo de Cardmod.h encabezado C proporciona información adicional relevante para esta API. Este archivo contiene los prototipos de función y las estructuras que especifica la API de minidriver de tarjeta inteligente de Microsoft. Esta API está disponible a través del Kit de desarrollo de proveedores criptográficos de Microsoft (CPDK).

NCRYPT_SCARD_PIN_INFO

L"SmartCardPinInfo"

Puntero a PIN_INFO estructura del PIN asociado a una clave criptográfica determinada en la tarjeta inteligente. El autor de la llamada proporciona el identificador de clave. Esta propiedad es una propiedad de solo lectura. La PIN_INFO estructura se define en Cardmod.h.

Windows Server 2008 y Windows Vista: Este valor no se admite.

NCRYPT_SECURE_PIN_PROPERTY

L"SmartCardSecurePin"

Puntero a una cadena Unicode terminada en null que contiene el PIN de sesión de tarjeta inteligente. Esta propiedad solo se puede establecer.

Windows Vista: Esta propiedad no se admite.

NCRYPT_SECURITY_DESCR_PROPERTY

L"Security Descr"

Puntero a una estructura de SECURITY_DESCRIPTOR que contiene información de control de acceso para la clave. Esta propiedad solo se aplica a las claves persistentes. El parámetro dwFlags de la función NCryptGetProperty o NCryptSetProperty identifica la parte del descriptor de seguridad que se va a obtener o establecer.

NCRYPT_SECURITY_DESCR_SUPPORT_PROPERTY

L"Security Descr Support"

Indica si el proveedor admite descriptores de seguridad para claves. Esta propiedad es un DWORD que contiene 1 si el proveedor admite descriptores de seguridad para las claves. Si esta propiedad contiene cualquier otro valor o si la función NCryptGetProperty devuelve NTE_NOT_SUPPORTED, el proveedor no admite descriptores de seguridad para las claves. Esta propiedad solo se aplica a los proveedores.

NCRYPT_SMARTCARD_GUID_PROPERTY

L"SmartCardGuid"

Blob que contiene el identificador de la tarjeta inteligente.

NCRYPT_UI_POLICY_PROPERTY

L"UI Policy"

Si se usa con la función NCryptSetProperty o NCryptGetProperty , se trata de un puntero a una estructura de NCRYPT_UI_POLICY que contiene la directiva de interfaz de usuario de clave segura para la clave. Esta propiedad solo se aplica a las claves persistentes. Esta propiedad solo se puede establecer cuando se genera la clave. Una vez que se haya llamado a la función NCryptFinalizeKey para esta clave, esta propiedad se convierte en de solo lectura.

Un proveedor de almacenamiento de claves puede recibir este parámetro mediante una función de devolución de llamada NCryptSetPropertyFn . El valor del parámetro es una estructura NCRYPT_UI_POLICY_BLOB que contiene la misma información. Del mismo modo, cuando una aplicación realiza una solicitud a través de NCryptSetPropertyFn al proveedor para devolver esta propiedad, se espera que el proveedor devuelva una estructura NCRYPT_UI_POLICY_BLOB .

NCRYPT_UNIQUE_NAME_PROPERTY

L"Unique Name"

Puntero a una cadena Unicode terminada en null que contiene el nombre único del objeto. Se trata de un nombre alternativo que se puede usar al acceder a la clave. Esta propiedad se usa cuando se cree que el nombre de clave pasado originalmente a NCryptCreatePersistedKey no es lo suficientemente único para identificar de forma confiable la clave persistente. El proveedor de almacenamiento de claves de Microsoft devolverá el nombre de archivo de la clave como esta propiedad.

NCRYPT_USE_CONTEXT_PROPERTY

L"Use Context"

Puntero a una cadena Unicode terminada en null que describe el contexto de la operación. Esta propiedad no es persistente y se puede establecer en un proveedor o en una clave. Una clave no tiene acceso a la NCRYPT_USE_CONTEXT_PROPERTY propiedad del proveedor porque la propiedad es específica solo para el identificador para el que está establecida.

Un ejemplo en el que esta propiedad se usaría en el contexto de un proveedor es un proveedor de almacenamiento de claves que necesita solicitar al usuario durante una llamada a NCryptOpenKey (por ejemplo, "Insertar la tarjeta inteligente en el lector"). Dado que el identificador de clave no está disponible hasta que se devuelva NCryptOpenKey , la aplicación debe establecer esta propiedad en el identificador de proveedor antes de llamar a NCryptOpenKey.

Un ejemplo en el que esta propiedad se usaría en el contexto de un identificador de clave es un proveedor de almacenamiento de claves que necesita preguntar al usuario durante una operación mediante la clave (por ejemplo, "Esta aplicación debe usar esta clave para firmar un documento"). A continuación, el proveedor podría retransmitir esta información de contexto al usuario en cualquier interfaz de usuario que se muestre durante la operación.

NCRYPT_USE_COUNT_ENABLED_PROPERTY

L"Enabled Use Count"

Indica si el proveedor admite el recuento de uso para las claves. Esta propiedad es un DWORD que contiene 1 si el proveedor admite el recuento de uso de claves. Si esta propiedad contiene cualquier otro valor o si la función NCryptGetProperty devuelve NTE_NOT_SUPPORTED, el proveedor no admite el recuento de uso de las claves. Esta propiedad solo se aplica a los proveedores.

NCRYPT_USE_COUNT_PROPERTY

L"Use Count"

Variable ULARGE_INTEGER que contiene el número de operaciones que ha realizado la clave privada especificada. Esta propiedad es opcional y es posible que no sea compatible con todos los proveedores. Los proveedores que admiten esta propiedad en las claves también deben admitir la propiedad NCRYPT_USE_COUNT_ENABLED_PROPERTY en el identificador del proveedor. El proveedor de almacenamiento de claves de Microsoft no admite esta propiedad. Esta propiedad solo se aplica a las claves persistentes.

NCRYPT_USER_CERTSTORE_PROPERTY

L"SmartCardUserCertStore"

HCERTSTORE que representa el almacén de certificados de usuario de tarjeta inteligente.

NCRYPT_VBS_ROOT_PUB_PROPERTY

L"VBS_ROOT_PUB"

Nueva propiedad del proveedor de MS_KEY_STORAGE_PROVIDER . Esta propiedad habilita la recuperación de la parte pública de la clave de firma raíz (IDKS) de la seguridad basada en virtualización (VBS).

NCRYPT_VERSION_PROPERTY

L"Version"

DWORD que contiene la versión de software del proveedor. La palabra alta contiene la versión principal y la palabra baja contiene la versión secundaria. Por ejemplo: 0x00030033 = 3.51. Esta propiedad solo se aplica a los proveedores.

NCRYPT_WINDOW_HANDLE_PROPERTY

L"HWND Handle"

Puntero al identificador de ventana (HWND) que se va a usar como elemento primario de cualquier interfaz de usuario que se muestre.

Dado que el comportamiento no deseado puede ocurrir cuando se muestra una interfaz de usuario mediante un identificador de ventana NULL para el elemento primario, se recomienda encarecidamente que un proveedor de almacenamiento de claves no muestre una interfaz de usuario a menos que se establezca esta propiedad.

Los valores siguientes se usan para definir límites de datos de propiedad.

Constante Importancia Descripción
NCRYPT_MAX_PROPERTY_DATA 0x100000 Especifica el tamaño máximo de un valor de propiedad, en bytes.
NCRYPT_MAX_PROPERTY_NAME 64 Especifica el tamaño máximo de un nombre de propiedad, en caracteres.

Requisitos

Requisito Importancia
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Cabecera Ncrypt.h

Consulte también