Función CertSetCertificateContextProperty (wincrypt.h)

La función CertSetCertificateContextProperty establece una propiedad extendida para un contexto de certificado especificado.

Sintaxis

BOOL CertSetCertificateContextProperty(
  [in] PCCERT_CONTEXT pCertContext,
  [in] DWORD          dwPropId,
  [in] DWORD          dwFlags,
  [in] const void     *pvData
);

Parámetros

[in] pCertContext

Puntero a una estructura de CERT_CONTEXT .

[in] dwPropId

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.

NotaCRYPT_HASH_BLOB y CRYPT_DATA_BLOB se describen en el tema CRYPT_INTEGER_BLOB .
 

CERT_ACCESS_STATE_PROP_ID

Tipo de datos de pvData: puntero a un valor DWORD .

Devuelve un valor DWORD que indica si se conservan las operaciones de escritura en el certificado. El valor DWORD no se establece si el certificado está en un almacén de memoria o en un almacén basado en el Registro que se abre como de solo lectura.

CERT_AIA_URL_RETRIEVED_PROP_ID

Este identificador está reservado.

CERT_ARCHIVED_KEY_HASH_PROP_ID

Tipo de datos de pvData: puntero a una estructura CRYPT_HASH_BLOB .

Esta propiedad guarda un hash de clave cifrado para el contexto del certificado.

CERT_ARCHIVED_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

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. Esta propiedad se puede establecer en el BLOB vacío, {0,NULL}.

CERT_AUTHORITY_INFO_ACCESS_PROP_ID

Este identificador está reservado.

CERT_AUTO_ENROLL_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

Propiedad que se establece 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 ha inscrito automáticamente el certificado. Las llamadas posteriores a La inscripción automática para el certificado comprueban esta propiedad para determinar si el certificado se ha inscrito.

CERT_AUTO_ENROLL_RETRY_PROP_ID

Este identificador está reservado.

CERT_BACKED_UP_PROP_ID

Este identificador está reservado.

CERT_CA_DISABLE_CRL_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

Deshabilita la recuperación de la lista de revocación de certificados (CRL) para los certificados usados por la entidad de certificación (CA). Si el certificado de entidad de certificación contiene esta propiedad, también debe incluir la propiedad CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID .

CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

Contiene la lista de direcciones URL del protocolo de estado de certificado en línea (OCSP) que se van a usar para los certificados emitidos por el certificado de entidad de certificación. El contenido de la matriz son los bytes codificados en notación de sintaxis abstracta uno (ASN.1) de una estructura de X509_AUTHORITY_INFO_ACCESS donde pszAccessMethod se establece en szOID_PKIX_OCSP.

CERT_CROSS_CERT_DIST_POINTS_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

Establece la ubicación de los certificados cruzados. Este valor solo se aplica a los certificados y no a las listas de revocación de certificados (CRL) o a las listas de confianza de certificados (CTL). La estructura CRYPT_DATA_BLOB contiene una estructura de CROSS_CERT_DIST_POINTS_INFO codificada con notación de sintaxis abstracta (ASN.1) codificada mediante la función CryptEncodeObject con un valor de X509_CROSS_CERT_DIST_POINTS para el parámetro lpszStuctType.

CERT_CTL_USAGE_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

La estructura de CRYPT_DATA_BLOB contiene una estructura de CTL_USAGE codificada en ASN.1. Esta estructura se codifica mediante la función CryptEncodeObject con el X509_ENHANCED_KEY_USAGE valor establecido.

CERT_DATE_STAMP_PROP_ID

Tipo de datos de pvData: puntero a una estructura FILETIME .

Esta propiedad establece la hora en que se agregó el certificado al almacén.

CERT_DESCRIPTION_PROP_ID

Tipo de datos de pvData: puntero a una estructura de 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_EFS_PROP_ID

Este identificador está reservado.

CERT_ENHKEY_USAGE_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

Propiedad que indica que el parámetro pvData apunta a una estructura de CRYPT_DATA_BLOB que contiene una estructura de CERT_ENHKEY_USAGE codificada en ASN.1. Esta estructura se codifica mediante la función CryptEncodeObject con el X509_ENHANCED_KEY_USAGE valor establecido.

CERT_ENROLLMENT_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

Información de inscripción de la solicitud pendiente que contiene RequestID, CADNSName, CAName y DisplayName. El formato de datos se define de la siguiente manera.

Bytes Contenido
Primeros 4 bytes Identificador de solicitud pendiente
4 bytes siguientes Tamaño de CADNSName, en caracteres, incluido el carácter nulo de terminación, seguido de la cadena CADNSName con carácter NULO de terminación
4 bytes siguientes Tamaño de CAName, en caracteres, incluido el carácter nulo de terminación, seguido de la cadena CAName con carácter nulo de terminación
4 bytes siguientes Tamaño de DisplayName, en caracteres, incluido el carácter nulo de terminación, seguido de la cadena DisplayName con carácter nulo de terminación
 

CERT_EXTENDED_ERROR_INFO_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

Esta propiedad establece una cadena que contiene información de error extendida para el contexto del certificado.

CERT_FORTEZZA_DATA_PROP_ID

Este identificador está reservado.

CERT_FRIENDLY_NAME_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

La estructura CRYPT_DATA_BLOB contiene el nombre para mostrar del certificado.

CERT_HASH_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

Esta propiedad se establece implícitamente mediante una llamada a la función CertGetCertificateContextProperty .

CERT_HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_PROP_ID

Tipo de datos de pvData: puntero a un tipo de datos HCRYPTPROV_OR_NCRYPT_KEY_HANDLE .

Esta propiedad llama a NCryptIsKeyHandle para determinar si se trata de un NCRYPT_KEY_HANDLE. Para un NCRYPT_KEY_HANDLE, establece CERT_NCRYPT_KEY_HANDLE_PROP_ID; de lo contrario, establece CERT_KEY_PROV_HANDLE_PROP_ID.

CERT_HCRYPTPROV_TRANSFER_PROP_ID

Establece el identificador de la clave CAPI asociada al certificado.

CERT_IE30_RESERVED_PROP_ID

Este identificador está reservado.

CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

Esta propiedad establece el hashMD5 de la clave pública asociada a la clave privada usada para firmar este certificado.

CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

La estructura de CRYPT_DATA_BLOB contiene el hash MD5 del nombre del emisor y el número de serie de este certificado.

CERT_KEY_CONTEXT_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CERT_KEY_CONTEXT .

La estructura especifica la clave privada del certificado. Contiene la especificación HCRYPTPROV y la clave para la clave privada. Para obtener más información sobre la configuración del miembro hCryptProv y dwFlags , vea CERT_KEY_PROV_HANDLE_PROP_ID, más adelante en este tema.

Nota Se pueden agregar más CERT_KEY_CONTEXT miembros de estructura 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 CERT_KEY_CONTEXT .
 

CERT_KEY_IDENTIFIER_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

Normalmente, esta propiedad se establece implícitamente mediante una llamada a la función CertGetCertificateContextProperty .

CERT_KEY_PROV_HANDLE_PROP_ID

Tipo de datos de pvData: un valor HCRYPTPROV .

Se establece el identificador HCRYPTPROV de 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 y se inicializa mediante 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 una estructura de CRYPT_KEY_PROV_INFO .

La estructura especifica la clave privada del certificado.

CERT_KEY_SPEC_PROP_ID

Tipo de datos de pvData: puntero a un valor DWORD .

Valor DWORD que 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 una estructura de CRYPT_HASH_BLOB .

Esta propiedad se establece implícitamente mediante una llamada a la función CertGetCertificateContextProperty .

CERT_NCRYPT_KEY_HANDLE_PROP_ID

Tipo de datos de pvData: puntero a un tipo de datos NCRYPT_KEY_HANDLE .

Esta propiedad establece el NCRYPT_KEY_HANDLE de la clave privada del certificado y establece dwKeySpec en CERT_NCRYPT_KEY_SPEC.

CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID

Establece el identificador de la clave CNG asociada al certificado.

CERT_NEW_KEY_PROP_ID

Este identificador está reservado.

CERT_NEXT_UPDATE_LOCATION_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

La estructura de CRYPT_DATA_BLOB contiene una estructura de CERT_ALT_NAME_INFO codificada por ASN.1 que se codifica mediante la función CryptEncodeObject con el X509_ALTERNATE_NAME valor establecido.

CERT_NEXT_UPDATE_LOCATION_PROP_ID solo se usa actualmente con CTL.

CERT_NO_AUTO_EXPIRE_CHECK_PROP_ID

Este identificador está reservado.

CERT_OCSP_CACHE_PREFIX_PROP_ID

Este identificador está reservado.

CERT_OCSP_RESPONSE_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

Esta propiedad establece la respuesta del protocolo de estado de certificado en línea (OCSP) codificada de un CERT_SERVER_OCSP_RESPONSE_CONTEXT para este certificado.

CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

Esta propiedad se establece implícitamente llamando a la función CertGetCertificateContextProperty .

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: Este identificador no se admite.

CERT_PUBKEY_ALG_PARA_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

Esta propiedad se usa con claves públicas que admiten la herencia de parámetros del algoritmo. El BLOB de datos contiene los parámetros PublicKey Algorithm codificados por ASN.1. Para DSS, son parámetros codificados mediante la función CryptEncodeObject . Esto solo se usa si se define CMS_PKCS7.

CERT_PUBKEY_HASH_RESERVED_PROP_ID

Este identificador está reservado.

CERT_PVK_FILE_PROP_ID

Tipo de datos de pvData: puntero a una estructura de 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 una cadena de caracteres anchos Unicode terminada en null y el miembro cbData indica la longitud de la cadena.

CERT_RENEWAL_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

Esta propiedad especifica el hash del certificado renovado.

CERT_REQUEST_ORIGINATOR_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

La estructura CRYPT_DATA_BLOB contiene una cadena Unicode terminada en null que contiene el nombre del equipo DNS para la originación de la solicitud de contexto de certificado.

CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

Devuelve un puntero a una estructura de CERT_POLICIES_INFO codificada que contiene las directivas de aplicación del certificado raíz para el contexto. Esta propiedad se puede descodificar mediante la función CryptDecodeObject con el parámetro lpszStructType establecido en X509_CERT_POLICIES y el parámetro dwCertEncodingType establecido en una combinación de X509_ASN_ENCODINGor orbit a bit PKCS_7_ASN_ENCODING.

CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID

Este identificador está reservado.

CERT_SIGN_HASH_CNG_ALG_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

Esta propiedad se establece implícitamente llamando a la función CertGetCertificateContextProperty .

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: Este identificador no se admite.

CERT_SHA1_HASH_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_HASH_BLOB .

Esta propiedad se establece implícitamente mediante una llamada a la función CertGetCertificateContextProperty .

CERT_SIGNATURE_HASH_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_HASH_BLOB .

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

CERT_SMART_CARD_DATA_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

Esta propiedad establece la propiedad de datos de tarjeta inteligente de un contexto de certificado de tarjeta inteligente.

CERT_SMART_CARD_ROOT_INFO_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

Esta propiedad establece la propiedad de información de un contexto de certificado raíz de tarjeta inteligente.

CERT_SOURCE_LOCATION_PROP_ID

Este identificador está reservado.

CERT_SOURCE_URL_PROP_ID

Este identificador está reservado.

CERT_SUBJECT_DISABLE_CRL_PROP_ID

Este identificador está reservado.

CERT_SUBJECT_INFO_ACCESS_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

Esta propiedad establece la extensión de acceso a la información del firmante del contexto del certificado como una estructura de CERT_SUBJECT_INFO_ACCESS codificada.

CERT_SUBJECT_NAME_MD5_HASH_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

Devuelve un hash MD5 del nombre de sujeto codificado del contexto del certificado.

CERT_SUBJECT_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID

Este identificador está reservado.

CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

Esta propiedad se establece implícitamente mediante una llamada a la función CertGetCertificateContextProperty .

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: Este identificador no se admite.

CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID

Tipo de datos de pvData: puntero a una estructura de CRYPT_DATA_BLOB .

Esta propiedad establece el hash MD5 de la clave pública de este certificado.

pvData es un puntero a una estructura CRYPT_DATA_BLOB .

El usuario puede definir tipos dwPropId adicionales 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 puede 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 las propiedades del contexto almacenado en caché siempre se establecen.

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

[in] pvData

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

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

Valor devuelto

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

Si se produce un error en la función, la función devuelve 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
La propiedad no es válida. El identificador especificado era mayor que 0x0000FFFF o, para la propiedad CERT_KEY_CONTEXT_PROP_ID, se especificó un miembro cbSize que no es válido en la estructura CERT_KEY_CONTEXT .

Comentarios

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

El código puede usar una macro para evaluar la clase de hash de un contexto de certificado. El encabezado Wincrypt.h define las macros siguientes para este fin. Estas macros se usan internamente mediante la función CertSetCertificateContextProperty .

IS_CERT_HASH_PROP_ID(X)IS_PUBKEY_HASH_PROP_ID(X)IS_CHAIN_HASH_PROP_ID(X) Cada macro toma el valor dwPropId (X) como entrada y se evalúa como un valor booleano. En la tabla siguiente se muestran los valores dwPropId que se evalúan como TRUE para cada macro.

Macro Se evalúa como TRUE si dwPropId es
IS_CERT_HASH_PROP_ID(dwPropId)
CERT_SHA1_HASH_PROP_ID,
CERT_MD5_HASH_PROP_ID, o
CERT_SIGNATURE_HASH_PROP_ID
IS_PUBKEY_HASH_PROP_ID(dwPropId)
CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID o
CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID
IS_CHAIN_HASH_PROP_ID(dwPropId)
CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID,
CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID,
CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID, o
CERT_SUBJECT_NAME_MD5_HASH_PROP_ID
 

La macro IS_STRONG_SIGN_PROP_ID(x) se evalúa como TRUE si las propiedades CERT_SIGN_HASH_CNG_ALG_PROP_ID, CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID o CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID se establecen en el parámetro dwPropId .

Ejemplos

Para obtener un ejemplo que usa esta función, vea Ejemplo de programa C: Obtener y establecer propiedades de 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

CERT_ALT_NAME_INFO

CERT_CONTEXT

CERT_ENHKEY_USAGE

CERT_KEY_CONTEXT

CROSS_CERT_DIST_POINTS_INFO

CRYPT_DATA_BLOB

CRYPT_HASH_BLOB

CRYPT_KEY_PROV_INFO

CTL_USAGE

CertGetCertificateContextProperty

CertSetCRLContextProperty

CryptEncodeObject

CryptHashToBeSigned

Funciones de propiedad extendidas