Função CertSetCertificateContextProperty (wincrypt.h)

A função CertSetCertificateContextProperty define uma propriedade estendida para um contexto de certificado especificado.

Sintaxe

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

Parâmetros

[in] pCertContext

Um ponteiro para uma estrutura CERT_CONTEXT.

[in] dwPropId

A propriedade a ser definida. O valor de dwPropId determina o tipo e o conteúdo do parâmetro pvData. Identificadores definidos no momento e seus tipos de pvData relacionados são os seguintes.

CRYPT_HASH_BLOB de observação e CRYPT_DATA_BLOB são descritos no tópico CRYPT_INTEGER_BLOB.
 

CERT_ACCESS_STATE_PROP_ID

Tipo de dados de pvData: um ponteiro para um valor de DWORD .

Retorna um valor DWORD que indica se as operações de gravação no certificado são mantidas. O valor DWORD não será definido se o certificado estiver em um repositório de memória ou em um repositório baseado em registro aberto como somente leitura.

CERT_AIA_URL_RETRIEVED_PROP_ID

Esse identificador é reservado.

CERT_ARCHIVED_KEY_HASH_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_HASH_BLOB.

Essa propriedade salva uma chave criptografada de hash para o contexto do certificado.

CERT_ARCHIVED_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

Indica que o certificado é ignorado durante enumerações. Um certificado com esse conjunto de propriedades ainda é encontrado com operações de pesquisa explícitas, como localizar um certificado com um de hash específico ou um número de série específico. Essa propriedade pode ser definida como ade BLOB de vazia, .

CERT_AUTHORITY_INFO_ACCESS_PROP_ID

Esse identificador é reservado.

CERT_AUTO_ENROLL_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

Uma propriedade definida após um certificado ter sido registrado usando o Registro Automático. A estrutura de CRYPT_DATA_BLOB apontada por pvData inclui um nome Unicode encerrado em nulo do tipo de certificado para o qual o certificado foi registrado automaticamente. Todas as chamadas subsequentes ao Registro Automático para o certificado verificam essa propriedade para determinar se o certificado foi registrado.

CERT_AUTO_ENROLL_RETRY_PROP_ID

Esse identificador é reservado.

CERT_BACKED_UP_PROP_ID

Esse identificador é reservado.

CERT_CA_DISABLE_CRL_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

Desabilita recuperação de de lista de certificados revogados (CRL) para certificados usados pela autoridade de certificação (AC). Se o certificado de autoridade de certificação contiver essa propriedade, ele também deverá incluir a propriedade CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID.

CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

Contém a lista de URLs de protocolo de status de certificado online (OCSP) a serem usadas para certificados emitidos pelo certificado de AUTORIDADE de certificação. O conteúdo da matriz é o bytes codificados em de Sintaxe Abstrata One (ASN.1) de uma estrutura X509_AUTHORITY_INFO_ACCESS em que pszAccessMethod está definido como szOID_PKIX_OCSP.

CERT_CROSS_CERT_DIST_POINTS_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

Define o local dos certificados cruzados. Esse valor só é aplicável a certificados e não a listas de revogação de certificados (CRLs) ou listas de confiança de certificado (CTLs). A estrutura de CRYPT_DATA_BLOB contém uma estrutura de CROSS_CERT_DIST_POINTS_INFO codificada em de notação de sintaxe abstrata one (ASN.1) codificada usando a função CryptEncodeObject com um valor X509_CROSS_CERT_DIST_POINTS para o parâmetro lpszStuctType.

CERT_CTL_USAGE_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

A estrutura CRYPT_DATA_BLOB contém uma estrutura de CTL_USAGE codificada em ASN.1. Essa estrutura é codificada usando a função CryptEncodeObject com o conjunto de valores X509_ENHANCED_KEY_USAGE.

CERT_DATE_STAMP_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de FILETIME .

Essa propriedade define a hora em que o certificado foi adicionado ao repositório.

CERT_DESCRIPTION_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

Uma propriedade que é definida e exibida pela interface do usuário do certificado. Essa propriedade permite que o usuário descreva o uso do certificado.

CERT_EFS_PROP_ID

Esse identificador é reservado.

CERT_ENHKEY_USAGE_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

Uma propriedade que indica que o parâmetro pvData aponta para uma estrutura de CRYPT_DATA_BLOB que contém uma estrutura de CERT_ENHKEY_USAGE codificada em ASN.1. Essa estrutura é codificada usando a função CryptEncodeObject com o conjunto de valores X509_ENHANCED_KEY_USAGE.

CERT_ENROLLMENT_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

Informações de registro da solicitação pendente que contém RequestID, CADNSName, CAName e DisplayName. O formato de dados é definido da seguinte maneira.

Bytes Conteúdo
Primeiros 4 bytes ID de solicitação pendente
Próximos 4 bytes Tamanho do CADNSName, em caracteres, incluindo o caractere nulo de terminação, seguido pela cadeia de caracteres CADNSName com terminação de caractere nulo
Próximos 4 bytes Tamanho caname, em caracteres, incluindo o caractere nulo de terminação, seguido pela cadeia de caracteres CAName com terminação de caractere nulo
Próximos 4 bytes Tamanho displayName, em caracteres, incluindo o caractere nulo de terminação, seguido pela cadeia de caracteres DisplayName com terminação de caractere nulo
 

CERT_EXTENDED_ERROR_INFO_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

Essa propriedade define uma cadeia de caracteres que contém informações de erro estendidas para o contexto do certificado.

CERT_FORTEZZA_DATA_PROP_ID

Esse identificador é reservado.

CERT_FRIENDLY_NAME_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

A estrutura CRYPT_DATA_BLOB contém o nome de exibição do certificado.

CERT_HASH_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

Essa propriedade é definida implicitamente por uma chamada para a função CertGetCertificateContextProperty.

CERT_HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_PROP_ID

Tipo de dados de pvData: um ponteiro para um tipo de dados HCRYPTPROV_OR_NCRYPT_KEY_HANDLE.

Essa propriedade chama NCryptIsKeyHandle para determinar se esse é um NCRYPT_KEY_HANDLE. Para um NCRYPT_KEY_HANDLE, define CERT_NCRYPT_KEY_HANDLE_PROP_ID; caso contrário, ele define CERT_KEY_PROV_HANDLE_PROP_ID.

CERT_HCRYPTPROV_TRANSFER_PROP_ID

Define o identificador da chave CAPI associada ao certificado.

CERT_IE30_RESERVED_PROP_ID

Esse identificador é reservado.

CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

Essa propriedade define o de hash doMD5 da chave pública associada à chave privada usada para assinar esse certificado.

CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

A estrutura CRYPT_DATA_BLOB contém o hash MD5 do nome do emissor e o número de série desse certificado.

CERT_KEY_CONTEXT_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CERT_KEY_CONTEXT.

A estrutura especifica a chave privada do certificado. Ele contém o HCRYPTPROV e a especificação de chave para a chave privada. Para obter mais informações sobre as configurações de membro do hCryptProv e dwFlags, consulte CERT_KEY_PROV_HANDLE_PROP_ID, mais adiante neste tópico.

Observação Membros da estrutura Mais CERT_KEY_CONTEXT podem ser adicionados para essa propriedade. Nesse caso, o cbSize valor de membro será ajustado adequadamente. O membro cbSize deve ser definido como o tamanho da estrutura CERT_KEY_CONTEXT.
 

CERT_KEY_IDENTIFIER_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

Essa propriedade normalmente é definida implicitamente por uma chamada para a função CertGetCertificateContextProperty .

CERT_KEY_PROV_HANDLE_PROP_ID

Tipo de dados de pvData: um valor de HCRYPTPROV.

O identificador HCRYPTPROV para a chave privada do certificado está definido. O hCryptProv membro da estrutura de CERT_KEY_CONTEXT será atualizado se existir. Se não existir, ele será criado com dwKeySpec e inicializado por CERT_KEY_PROV_INFO_PROP_ID. Se CERT_STORE_NO_CRYPT_RELEASE_FLAG não estiver definido, o valor de hCryptProv será liberado implicitamente quando a propriedade for definida como NULL ou na liberação final da estrutura de CERT_CONTEXT.

CERT_KEY_PROV_INFO_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura CRYPT_KEY_PROV_INFO.

A estrutura especifica a chave privada do certificado.

CERT_KEY_SPEC_PROP_ID

Tipo de dados de pvData: um ponteiro para um valor de DWORD .

O DWORD valor que especifica a chave privada. O dwKeySpec membro da estrutura de CERT_KEY_CONTEXT será atualizado se existir. Se isso não acontecer, ele será criado com hCryptProv definido como zero.

CERT_MD5_HASH_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_HASH_BLOB.

Essa propriedade é definida implicitamente por uma chamada para a função CertGetCertificateContextProperty.

CERT_NCRYPT_KEY_HANDLE_PROP_ID

Tipo de dados de pvData: um ponteiro para um tipo de dados NCRYPT_KEY_HANDLE.

Essa propriedade define o NCRYPT_KEY_HANDLE da chave privada do certificado e define o dwKeySpec como CERT_NCRYPT_KEY_SPEC.

CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID

Define o identificador da chave CNG associada ao certificado.

CERT_NEW_KEY_PROP_ID

Esse identificador é reservado.

CERT_NEXT_UPDATE_LOCATION_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

A estrutura CRYPT_DATA_BLOB contém uma estrutura de CERT_ALT_NAME_INFO codificada em ASN.1 codificada usando a função CryptEncodeObject com o conjunto de valores X509_ALTERNATE_NAME.

CERT_NEXT_UPDATE_LOCATION_PROP_ID atualmente é usado apenas com CTLs.

CERT_NO_AUTO_EXPIRE_CHECK_PROP_ID

Esse identificador é reservado.

CERT_OCSP_CACHE_PREFIX_PROP_ID

Esse identificador é reservado.

CERT_OCSP_RESPONSE_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

Essa propriedade define a resposta de protocolo de status de certificado online codificado (OCSP) de um CERT_SERVER_OCSP_RESPONSE_CONTEXT para esse certificado.

CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID

Tipo de dados de pvData: ponteiro para uma estrutura de CRYPT_DATA_BLOB.

Essa propriedade é definida implicitamente chamando a função CertGetCertificateContextProperty.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Este identificador não tem suporte.

CERT_PUBKEY_ALG_PARA_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

Essa propriedade é usada com chaves públicas que dão suporte à herança de parâmetro de algoritmo. O BLOB de dados contém os parâmetros do Algoritmo PublicKey codificado em ASN.1. Para DSS, esses são parâmetros codificados usando a função CryptEncodeObject. Isso será usado somente se CMS_PKCS7 for definido.

CERT_PUBKEY_HASH_RESERVED_PROP_ID

Esse identificador é reservado.

CERT_PVK_FILE_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

A estrutura CRYPT_DATA_BLOB especifica o nome de um arquivo que contém a chave privada associada à chave pública do certificado. Dentro da estrutura CRYPT_DATA_BLOB, o membro pbData é um ponteiro para uma cadeia de caracteres largos Unicode terminada em nulo e o membro cbData indica o comprimento da cadeia de caracteres.

CERT_RENEWAL_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

Essa propriedade especifica o hash do certificado renovado.

CERT_REQUEST_ORIGINATOR_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

A estrutura CRYPT_DATA_BLOB contém uma cadeia de caracteres Unicode terminada em nulo que contém o nome do computador DNS para a origem da solicitação de contexto de certificado.

CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

Retorna um ponteiro para uma estrutura de CERT_POLICIES_INFO codificada que contém as políticas de aplicativo do certificado raiz para o contexto. Essa propriedade pode ser decodificada usando a função CryptDecodeObject com o parâmetro lpszStructType definido como X509_CERT_POLICIES e o parâmetro dwCertEncodingType definido como uma combinação de X509_ASN_ENCODING bit a bit ORPKCS_7_ASN_ENCODING.

CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID

Esse identificador é reservado.

CERT_SIGN_HASH_CNG_ALG_PROP_ID

Tipo de dados de pvData: ponteiro para uma estrutura de CRYPT_DATA_BLOB.

Essa propriedade é definida implicitamente chamando a função CertGetCertificateContextProperty.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Este identificador não tem suporte.

CERT_SHA1_HASH_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_HASH_BLOB.

Essa propriedade é definida implicitamente por uma chamada para a função CertGetCertificateContextProperty.

CERT_SIGNATURE_HASH_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_HASH_BLOB.

Se um hash de assinatura não existir, ele será computado usando a função CryptHashToBeSigned. pvData aponta para um hash existente ou computado. Normalmente, o comprimento do hash é de 20 bytes para SHA e 16 para MD5.

CERT_SMART_CARD_DATA_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

Essa propriedade define a propriedade de dados de cartão inteligente de um contexto de certificado de cartão inteligente.

CERT_SMART_CARD_ROOT_INFO_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

Essa propriedade define a propriedade de informações de um contexto de certificado raiz de cartão inteligente.

CERT_SOURCE_LOCATION_PROP_ID

Esse identificador é reservado.

CERT_SOURCE_URL_PROP_ID

Esse identificador é reservado.

CERT_SUBJECT_DISABLE_CRL_PROP_ID

Esse identificador é reservado.

CERT_SUBJECT_INFO_ACCESS_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

Essa propriedade define a extensão de acesso de informações do assunto do contexto do certificado como uma estrutura de CERT_SUBJECT_INFO_ACCESS codificada.

CERT_SUBJECT_NAME_MD5_HASH_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

Retorna um hash MD5 do nome da entidade codificada do contexto do certificado.

CERT_SUBJECT_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID

Esse identificador é reservado.

CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID

Tipo de dados de pvData: ponteiro para uma estrutura de CRYPT_DATA_BLOB.

Essa propriedade é definida implicitamente chamando a função CertGetCertificateContextProperty.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Este identificador não tem suporte.

CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura de CRYPT_DATA_BLOB.

Essa propriedade define o hash MD5 da chave pública desse certificado.

pvData é um ponteiro para uma estrutura CRYPT_DATA_BLOB.

O usuário pode definir tipos de dwPropId adicionais usando valores de DWORD de CERT_FIRST_USER_PROP_ID a CERT_LAST_USER_PROP_ID. Para todos os tipos de dwPropId definidos pelo usuário, pvData aponta para uma estrutura de CRYPT_DATA_BLOB codificada.

[in] dwFlags

CERT_STORE_NO_CRYPT_RELEASE_FLAG pode ser definido para as propriedades CERT_KEY_PROV_HANDLE_PROP_ID ou CERT_KEY_CONTEXT_PROP_ID dwPropId.

Se o valor CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG for definido, todos os erros de gravação do provedor serão ignorados e as propriedades do contexto armazenado em cache sempre serão definidas.

Se CERT_SET_PROPERTY_INHIBIT_PERSIST_FLAG estiver definido, qualquer conjunto de propriedades de contexto não será mantido.

[in] pvData

Um ponteiro para um tipo de dados determinado pelo valor de dwPropId.

Observação Para qualquerdwPropId , definir pvData para NULL exclui a propriedade.
 

Valor de retorno

Se a função for bem-sucedida, a função retornará VERDADEIRO.

Se a função falhar, a função retornará false. Para obter informações de erro estendidas, chame GetLastError. Um código de erro possível é o seguinte.

Código de retorno Descrição
E_INVALIDARG
A propriedade não é válida. O identificador especificado foi maior que 0x0000FFFF ou, para a propriedade CERT_KEY_CONTEXT_PROP_ID, um membro cbSize que não é válido foi especificado na estrutura CERT_KEY_CONTEXT.

Observações

Se uma propriedade já existir, seu valor antigo será substituído.

Seu código pode usar uma macro para avaliar a classe de hash para um contexto de certificado. O cabeçalho Wincrypt.h define as macros a seguir para essa finalidade. Essas macros são usadas internamente pela função CertSetCertificateContextProperty.

IS_CERT_HASH_PROP_ID(X)IS_PUBKEY_HASH_PROP_ID(X)IS_CHAIN_HASH_PROP_ID(X) Cada macro usa o valor dwPropId (X) como entrada e é avaliada como um valor booliano. A tabela a seguir mostra os valores dwPropId que são avaliados como TRUE para cada macro.

Macro Avaliará como TRUE se dwPropId for
IS_CERT_HASH_PROP_ID(dwPropId)
CERT_SHA1_HASH_PROP_ID,
CERT_MD5_HASH_PROP_IDou
CERT_SIGNATURE_HASH_PROP_ID
IS_PUBKEY_HASH_PROP_ID(dwPropId)
CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID ou
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, ou
CERT_SUBJECT_NAME_MD5_HASH_PROP_ID
 

A macro IS_STRONG_SIGN_PROP_ID(x) é avaliada como VERDADEIRO se as propriedades CERT_SIGN_HASH_CNG_ALG_PROP_ID, CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_IDou CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID estiverem definidas no parâmetro dwPropId .

Exemplos

Para obter um exemplo que usa essa função, consulte Exemplo de Programa C: Obtendo e definindo propriedades de certificado.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows XP [aplicativos da área de trabalho | Aplicativos UWP]
servidor com suporte mínimo Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP]
da Plataforma de Destino Windows
cabeçalho wincrypt.h
biblioteca Crypt32.lib
de DLL Crypt32.dll

Consulte também

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

Funções de propriedade estendida