Función CertSetCTLContextProperty (wincrypt.h)

La función CertSetCTLContextProperty establece una propiedad extendida para el contexto de lista de confianza de certificados (CTL) especificado.

Sintaxis

BOOL CertSetCTLContextProperty(
  [in] PCCTL_CONTEXT pCtlContext,
  [in] DWORD         dwPropId,
  [in] DWORD         dwFlags,
  [in] const void    *pvData
);

Parámetros

[in] pCtlContext

Puntero a la estructura CTL_CONTEXT .

[in] dwPropId

Identifica la propiedad que se va a establecer. El valor de dwPropId determina el tipo y el contenido del parámetro pvData . Los identificadores definidos actualmente y sus tipos pvData relacionados son los siguientes.

Valor Significado
CERT_ARCHIVED_PROP_ID
Tipo de datos de pvData: NULL

Indica que el certificado se omite durante las enumeraciones. Un certificado con este conjunto de propiedades todavía se encuentra con operaciones de búsqueda explícitas, como buscar un certificado con un hash específico o un número de serie específico.

CERT_AUTO_ENROLL_PROP_ID
Tipo de datos de pvData: puntero a un CRYPT_DATA_BLOB

Propiedad establecida después de inscribir un certificado mediante la inscripción automática. La estructura de CRYPT_DATA_BLOB a la que apunta pvData incluye un nombre Unicode terminado en null del tipo de certificado para el que se han inscrito automáticamente los certificados. Todas las llamadas posteriores a Inscripción automática para el certificado comprueban esta propiedad para determinar si el certificado se ha inscrito.

CERT_CTL_USAGE_PROP_ID
Tipo de datos de pvData: puntero a un CRYPT_DATA_BLOB

pvData apunta a una estructura de CRYPT_DATA_BLOB que contiene una estructura de notación de sintaxis abstracta (ASN.1) codificada CTL_USAGE . Esta estructura se ha codificado mediante CryptEncodeObject con X509_ENHANCED_KEY_USAGE valor establecido.

CERT_DESCRIPTION_PROP_ID
Tipo de datos de pvData: puntero a un CRYPT_DATA_BLOB

Propiedad establecida y mostrada por la interfaz de usuario del certificado. Esta propiedad permite al usuario describir el uso del certificado.

CERT_ENHKEY_USAGE_PROP_ID
Tipo de datos de pvData: puntero a un CRYPT_DATA_BLOB

Estructura de CRYPT_DATA_BLOB que contiene una estructura de CERT_ENHKEY_USAGE codificada en ASN.1. Esta estructura se ha codificado mediante CryptEncodeObject con X509_ENHANCED_KEY_USAGE valor establecido.

CERT_FRIENDLY_NAME_PROP_ID
Tipo de datos de pvData: puntero a un CRYPT_DATA_BLOB

La estructura CRYPT_DATA_BLOB especifica el nombre para mostrar del certificado.

CERT_HASH_PROP_ID
Tipo de datos de pvData: puntero a un CRYPT_HASH_BLOB

Esta propiedad se establece implícitamente mediante una llamada a CertGetCertificateContextProperty.

CERT_KEY_CONTEXT_PROP_ID
Tipo de datos de pvData: puntero a un CERT_KEY_CONTEXT

La estructura CERT_KEY_CONTEXT contiene el valor HCRYPTPROV y la especificación de clave para la clave privada. Para obtener más información sobre la configuración del miembro hCryptProv y dwFlags , consulte CERT_KEY_PROV_HANDLE_PROP_ID, a continuación. Tenga en cuenta que se pueden agregar más miembros de estructura CERT_KEY_CONTEXT para esta propiedad. Si es así, el valor del miembro cbSize se ajustará en consecuencia. El miembro cbSize debe establecerse en el tamaño de la estructura de CERT_KEY_CONTEXT

CERT_KEY_IDENTIFIER_PROP_ID
Tipo de datos de pvData: puntero a un CRYPT_DATA_BLOB

Normalmente, esta propiedad se establece implícitamente mediante una llamada a CertGetCertificateContextProperty.

CERT_KEY_PROV_HANDLE_PROP_ID
Tipo de datos de pvData: puntero a un HCRYPTPROV

Se pasa un identificador HCRYPTPROV para la clave privada del certificado. El miembro hCryptProv de la estructura CERT_KEY_CONTEXT se actualiza si existe. Si no existe, se crea con dwKeySpec inicializado por CERT_KEY_PROV_INFO_PROP_ID. Si no se establece CERT_STORE_NO_CRYPT_RELEASE_FLAG, el valor hCryptProv se libera implícitamente cuando la propiedad se establece en NULL o en la liberación final de la estructura CERT_CONTEXT .

CERT_KEY_PROV_INFO_PROP_ID
Tipo de datos de pvData: puntero a un CRYPT_KEY_PROV_INFO

La estructura CRYPT_KEY_PROV_INFO especifica la clave privada del certificado.

CERT_KEY_SPEC_PROP_ID
Tipo de datos de pvData: puntero a un DWORD

El valor DWORD especifica la clave privada. El miembro dwKeySpec de la estructura CERT_KEY_CONTEXT se actualiza si existe. Si no lo hace, se crea con hCryptProv establecido en cero.

CERT_MD5_HASH_PROP_ID
Tipo de datos de pvData: puntero a un CRYPT_HASH_BLOB

Esta propiedad se establece implícitamente mediante una llamada a CertGetCertificateContextProperty.

CERT_NEXT_UPDATE_LOCATION_PROP_ID
Tipo de datos de pvData: puntero a un CRYPT_DATA_BLOB

La estructura CRYPT_DATA_BLOB contiene una estructura codificada CERT_ALT_NAME_INFO ASN.1 con codificación CryptEncodeObject con el valor X509_ALTERNATE_NAME establecido. CERT_NEXT_UPDATE_LOCATION_PROP_ID solo se usa actualmente con CTL.

CERT_PVK_FILE_PROP_ID
Tipo de datos de pvData: puntero a un CRYPT_DATA_BLOB

La estructura CRYPT_DATA_BLOB especifica el nombre de un archivo que contiene la clave privada asociada a la clave pública del certificado. Dentro de la estructura CRYPT_DATA_BLOB , el miembro pbData es un puntero a un Unicode terminado en null, una cadena de caracteres anchos y el miembro cbData indica la longitud de la cadena.

CERT_SHA1_HASH_PROP_ID
Tipo de datos de pvData: puntero a un CRYPT_HASH_BLOB

Esta propiedad se establece implícitamente mediante una llamada a CertGetCertificateContextProperty.

CERT_SIGNATURE_HASH_PROP_ID
CRYPT_HASH_BLOB
Tipo de datos de pvData: puntero a un CRYPT_HASH_BLOB

Si no existe un hash de firma, se calcula con CryptHashToBeSigned. pvData apunta a un hash existente o calculado. Normalmente, la longitud del hash es de 20 bytes para SHA y 16 para MD5.

 

Normalmente, solo se establece la propiedad CERT_NEXT_UPDATE_LOCATION_PROP_ID.

El usuario puede definir otros tipos dwPropId mediante valores DWORD de CERT_FIRST_USER_PROP_ID a CERT_LAST_USER_PROP_ID. Para todos los tipos dwPropId definidos por el usuario, pvData apunta a una estructura de CRYPT_DATA_BLOB codificada.

[in] dwFlags

CERT_STORE_NO_CRYPT_RELEASE_FLAG se pueden establecer para las propiedades CERT_KEY_PROV_HANDLE_PROP_ID o CERT_KEY_CONTEXT_PROP_ID dwPropId .

Si se establece el valor de CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG, se omiten los errores de escritura del proveedor y siempre se establecen las propiedades del contexto almacenado en caché.

Si se establece CERT_SET_PROPERTY_INHIBIT_PERSIST_FLAG, no se conserva ningún conjunto de propiedades.

[in] pvData

Puntero a un tipo de datos determinado por el valor pasado en dwPropId.

Nota Para cualquier dwPropId, al establecer pvData enNULL , se elimina la propiedad .
 

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es TRUE.

Si se produce un error en la función, el valor devuelto es FALSE. Para obtener información de error extendida, llame a GetLastError. Un posible código de error es el siguiente.

Código devuelto Descripción
E_INVALIDARG
Identificador de propiedad no válido. Para obtener más información, consulte CertSetCertificateContextProperty.

Comentarios

Si ya existe una propiedad, se reemplaza su valor anterior.

Ejemplos

Vea Programa C de ejemplo: Obtención y configuración de las propiedades del certificado.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado wincrypt.h
Library Crypt32.lib
Archivo DLL Crypt32.dll

Consulte también

CertGetCTLContextProperty

CertSetCertificateContextProperty

CryptEncodeObject

Funciones de propiedad extendidas