Función CertSetCertificateContextProperty (wincrypt.h)

La función CertSetCertificateContextProperty establece una propiedad extendida para un contexto de certificado de 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 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 de pvData relacionados son los siguientes.

 

CERT_ACCESS_STATE_PROP_ID

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

Devuelve un valor DWORD que indica si se conservan las operaciones de escritura en el certificado. El DWORD valor 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 de CRYPT_HASH_BLOB.

Esta propiedad guarda una clave cifrada hash para el contexto del certificado.

CERT_ARCHIVED_PROP_ID

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

Indica que se omite la del certificado de durante las enumeraciones. Todavía se encuentra un certificado con este conjunto de propiedades 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.

Una propiedad que se establece después de inscribir un certificado mediante la inscripción automática. La estructura CRYPT_DATA_BLOB a la que apunta pvData incluye un nombre Unicode terminado en null del tipo de certificado para el que el certificado se ha inscrito automáticamente. 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 recuperación de la lista de revocación de certificados (CRL) para los certificados usados por la entidad de certificación de (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 de 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 es el notación de sintaxis abstracta Uno (ASN.1) bytes codificados en 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 es aplicable a los certificados y no a listas de revocación de certificados (CRL) o listas de confianza de certificados de (CTL). La estructura CRYPT_DATA_BLOB contiene una estructura de notación de sintaxis abstracta uno (ASN.1) codificada CROSS_CERT_DIST_POINTS_INFO estructura codificada mediante la función CryptEncodeObject con un valor 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 CRYPT_DATA_BLOB contiene una estructura de CTL_USAGE codificada en ASN.1. Esta estructura se codifica mediante la función CryptEncodeObject con el conjunto de valores de X509_ENHANCED_KEY_USAGE.

CERT_DATE_STAMP_PROP_ID

Tipo de datos de pvData: puntero a una estructura de 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 conjunto de valores de X509_ENHANCED_KEY_USAGE.

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 manera siguiente.

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 hash demd5 de md5 de la clave pública asociada a la clave privada que se usa 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 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 tanto el de HCRYPTPROV como la especificación de clave para la clave privada. Para obtener más información sobre el miembro hCryptProv y la configuración de dwFlags, consulte CERT_KEY_PROV_HANDLE_PROP_ID, más adelante en este tema.

Nota Se pueden agregar más miembros de estructura CERT_KEY_CONTEXT para esta propiedad. Si es así, el cbSize valor de miembro 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 de HCRYPTPROV.

Se establece el identificador de 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 y se inicializa mediante CERT_KEY_PROV_INFO_PROP_ID. Si no se establece CERT_STORE_NO_CRYPT_RELEASE_FLAG, el valor de hCryptProv se libera implícitamente cuando la propiedad se establece en NULL o en la libreción final de la estructura de 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 de .

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 el dwKeySpec de 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 CRYPT_DATA_BLOB contiene una estructura de CERT_ALT_NAME_INFO codificada con ASN.1 que se codifica mediante la función CryptEncodeObject con el conjunto de valores X509_ALTERNATE_NAME.

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 codificada protocolo de estado de certificado en línea (OCSP) 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 de algoritmo. El BLOB de datos contiene los parámetros PublicKey Algorithm codificados por ASN.1. Para DSS, estos 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 del 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_ENCODING OR bit a bitPKCS_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 del firmante 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 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_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 de dwPropId adicionales mediante valores de DWORD de CERT_FIRST_USER_PROP_ID a CERT_LAST_USER_PROP_ID. Para todos los tipos de 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 dwPropId CERT_KEY_CONTEXT_PROP_ID .

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 de contexto.

[in] pvData

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

Nota Para cualquier dwPropId, establecer pvData en NULL 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 código de error posible 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, un miembro cbSize que no es válido se especificó en la estructura CERT_KEY_CONTEXT.

Observaciones

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 siguientes macros para este propósito. Estas macros las usa internamente 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 de dwPropId que se evalúan como TRUE para cada macro.

Macro Se evalúa como TRUE si dwPropId
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_IDo 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 Programa C de ejemplo: Obtener y establecer propiedades de certificado.

Requisitos

Requisito Valor
cliente mínimo admitido Windows XP [aplicaciones de escritorio | Aplicaciones para UWP]
servidor mínimo admitido Windows Server 2003 [aplicaciones de escritorio | Aplicaciones para UWP]
de la plataforma de destino de Windows
encabezado de wincrypt.h
biblioteca de Crypt32.lib
DLL de 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