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 Valor 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 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 del 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 el inicio de sesión con tarjetas inteligentes. La propiedad es compatible con el proveedor de almacenamiento de claves de tarjeta inteligente de Microsoft y no con 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 usarán con una clave de Diffie-Hellman. Este tipo de datos es un puntero a una estructura de 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 Valor 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 Valor Descripción
NCRYPT_IMPL_HARDWARE_FLAG 0x00000001 El proveedor se basa 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_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 valor siguiente.

Identificador Valor 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 Valor 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_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 de 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 ser utilizada por 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 valor asociado a PIN_ID 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.

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 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 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"

Un 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 ha 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 a través de una función de devolución de llamada NCryptSetPropertyFn . El valor del parámetro es una NCRYPT_UI_POLICY_BLOB estructura que contiene la misma información. De forma similar, 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 NCRYPT_UI_POLICY_BLOB estructura.

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 como 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á establecido.

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 NCryptOpenKey vuelva, la aplicación debe establecer esta propiedad en el identificador del 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 solicitar 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 para las 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 NCRYPT_USE_COUNT_ENABLED_PROPERTY propiedad 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_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 usará como elemento primario de cualquier interfaz de usuario que se muestre.

Dado que el comportamiento no deseado puede producirse 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 Valor 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 Valor
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Encabezado Ncrypt.h

Consulte también