Compartilhar via


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 de 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 pvData relacionados são os seguintes.

ObservaçãoCRYPT_HASH_BLOB 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 DWORD .

Retorna um valor DWORD que indica se as operações de gravação no certificado são persistentes. 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 um hash de chave criptografada para o contexto do certificado.

CERT_ARCHIVED_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura 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 hash específico ou um número de série específico. Essa propriedade pode ser definida como o BLOB vazio, {0,NULL}.

CERT_AUTHORITY_INFO_ACCESS_PROP_ID

Esse identificador é reservado.

CERT_AUTO_ENROLL_PROP_ID

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

Uma propriedade que é definida depois que um certificado é registrado usando o Registro Automático. A estrutura 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 para 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 CRYPT_DATA_BLOB .

Desabilita a recuperação da CRL ( lista de revogação de certificados ) para certificados usados pela AC (autoridade de certificação ). Se o certificado de AUTORIDADE 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 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 ASN.1 (Abstract Syntax Notation One ) de uma estrutura X509_AUTHORITY_INFO_ACCESS em que pszAccessMethod é definido como szOID_PKIX_OCSP.

CERT_CROSS_CERT_DIST_POINTS_PROP_ID

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

Define o local dos certificados cruzados. Esse valor só é aplicável a certificados e não a CRLs ( listas de certificados revogados ) ou CTLs ( listas de confiança de certificado ). A estrutura CRYPT_DATA_BLOB contém uma estrutura de CROSS_CERT_DIST_POINTS_INFO codificada em CROSS_CERT_DIST_POINTS_INFO de Sintaxe Abstract Syntax 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 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 valor X509_ENHANCED_KEY_USAGE definido.

CERT_DATE_STAMP_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura 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 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 CRYPT_DATA_BLOB .

Uma propriedade que indica que o parâmetro pvData aponta para uma estrutura 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 valor X509_ENHANCED_KEY_USAGE definido.

CERT_ENROLLMENT_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura 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 Sumário
Primeiros 4 bytes ID de solicitação pendente
Próximos 4 bytes Tamanho de CADNSName, em caracteres, incluindo o caractere nulo de terminação, seguido pela cadeia de caracteres CADNSName com caractere nulo de terminação
Próximos 4 bytes Tamanho do CAName, em caracteres, incluindo o caractere nulo de terminação, seguido pela cadeia de caracteres CAName com caractere nulo de terminação
Próximos 4 bytes Tamanho de DisplayName, em caracteres, incluindo o caractere nulo de terminação, seguido pela cadeia de caracteres DisplayName com o caractere nulo de terminação
 

CERT_EXTENDED_ERROR_INFO_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura 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 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 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 CRYPT_DATA_BLOB .

Essa propriedade define o hashMD5 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 CRYPT_DATA_BLOB .

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

CERT_KEY_CONTEXT_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura 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 hCryptProv e dwFlags , consulte CERT_KEY_PROV_HANDLE_PROP_ID, mais adiante neste tópico.

Nota Mais CERT_KEY_CONTEXT membros da estrutura podem ser adicionados para essa propriedade. Nesse caso, o valor do membro cbSize 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 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 HCRYPTPROV .

O identificador HCRYPTPROV para a chave privada do certificado está definido. O membro hCryptProv da estrutura CERT_KEY_CONTEXT será atualizado se existir. Se ele 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 hCryptProv será liberado implicitamente quando a propriedade estiver definida como NULL ou na liberação final da estrutura 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 DWORD .

O valor DWORD que especifica a chave privada. O membro dwKeySpec da estrutura 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 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 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 é usado atualmente 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 CRYPT_DATA_BLOB .

Essa propriedade define a resposta do OCSP (certificado online status protocol) codificado 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: Não há suporte para esse identificador.

CERT_PUBKEY_ALG_PARA_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura 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 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 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 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 originação da solicitação de contexto de certificado.

CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura 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_ENCODINGor PKCS_7_ASN_ENCODINGbit a bit.

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: Não há suporte para esse identificador.

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á calculado 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 CRYPT_DATA_BLOB .

Essa propriedade define a propriedade de dados smart cartão 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 CRYPT_DATA_BLOB .

Essa propriedade define a propriedade de informações de um contexto de certificado raiz 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 CRYPT_DATA_BLOB .

Essa propriedade define a extensão de acesso de informações do assunto do contexto de 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 CRYPT_DATA_BLOB .

Retorna um hash MD5 do nome da entidade codificado 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: Não há suporte para esse identificador.

CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID

Tipo de dados de pvData: um ponteiro para uma estrutura 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 dwPropId adicionais usando valores DWORD de CERT_FIRST_USER_PROP_ID para CERT_LAST_USER_PROP_ID. Para todos os tipos 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á persistido.

[in] pvData

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

Nota Para qualquer dwPropId, definir pvData como NULL exclui a propriedade .
 

Retornar valor

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

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 .

Comentários

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_ID ou
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) será avaliada como TRUE se as propriedades CERT_SIGN_HASH_CNG_ALG_PROP_ID, CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID ou CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID forem 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
Cliente mínimo com suporte Windows XP [aplicativos da área de trabalho | aplicativos UWP]
Servidor mínimo com suporte Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho wincrypt.h
Biblioteca Crypt32.lib
DLL Crypt32.dll

Confira 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 estendidas