Função CertSetCTLContextProperty (wincrypt.h)

A função CertSetCTLContextProperty define uma propriedade estendida para o contexto da CTL ( lista de confiança de certificado ) especificada.

Sintaxe

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

Parâmetros

[in] pCtlContext

Um ponteiro para a estrutura CTL_CONTEXT .

[in] dwPropId

Identifica 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.

Valor Significado
CERT_ARCHIVED_PROP_ID
Tipo de dados de pvData: NULL

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.

CERT_AUTO_ENROLL_PROP_ID
Tipo de dados de pvData: ponteiro para um CRYPT_DATA_BLOB

Propriedade definida após um certificado ter sido registrado usando 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 os certificados foram registrados automaticamente. Todas as chamadas subsequentes para Registro Automático para o certificado verificam essa propriedade para determinar se o certificado foi registrado.

CERT_CTL_USAGE_PROP_ID
Tipo de dados de pvData: ponteiro para um CRYPT_DATA_BLOB

pvData aponta para uma estrutura de CRYPT_DATA_BLOB que contém uma estrutura de CTL_USAGE codificada em ASN.1 (Abstract Syntax Notation One). Essa estrutura foi codificada usando CryptEncodeObject com X509_ENHANCED_KEY_USAGE valor definido.

CERT_DESCRIPTION_PROP_ID
Tipo de dados de pvData: ponteiro para um CRYPT_DATA_BLOB

Conjunto de propriedades e exibido pela interface do usuário do certificado. Essa propriedade permite que o usuário descreva o uso do certificado.

CERT_ENHKEY_USAGE_PROP_ID
Tipo de dados de pvData: ponteiro para um CRYPT_DATA_BLOB

A estrutura CRYPT_DATA_BLOB que contém uma estrutura de CERT_ENHKEY_USAGE codificada em ASN.1. Essa estrutura foi codificada usando CryptEncodeObject com X509_ENHANCED_KEY_USAGE valor definido.

CERT_FRIENDLY_NAME_PROP_ID
Tipo de dados de pvData: ponteiro para um CRYPT_DATA_BLOB

A estrutura CRYPT_DATA_BLOB especifica o nome de exibição do certificado.

CERT_HASH_PROP_ID
Tipo de dados de pvData: ponteiro para um CRYPT_HASH_BLOB

Essa propriedade é definida implicitamente por uma chamada para CertGetCertificateContextProperty.

CERT_KEY_CONTEXT_PROP_ID
Tipo de dados de pvData: ponteiro para um CERT_KEY_CONTEXT

A estrutura CERT_KEY_CONTEXT contém o valor 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, a seguir. Observe que 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: ponteiro para um CRYPT_DATA_BLOB

Normalmente, essa propriedade é definida implicitamente por uma chamada para CertGetCertificateContextProperty.

CERT_KEY_PROV_HANDLE_PROP_ID
Tipo de dados de pvData: ponteiro para um HCRYPTPROV

Um identificador HCRYPTPROV para a chave privada do certificado é passado. O membro hCryptProv da estrutura CERT_KEY_CONTEXT será atualizado se existir. Se ele não existir, ele será criado com dwKeySpec 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: ponteiro para um CRYPT_KEY_PROV_INFO

A estrutura CRYPT_KEY_PROV_INFO especifica a chave privada do certificado.

CERT_KEY_SPEC_PROP_ID
Tipo de dados de pvData: ponteiro para um DWORD

O valor DWORD 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: ponteiro para um CRYPT_HASH_BLOB

Essa propriedade é definida implicitamente por uma chamada para CertGetCertificateContextProperty.

CERT_NEXT_UPDATE_LOCATION_PROP_ID
Tipo de dados de pvData: ponteiro para um CRYPT_DATA_BLOB

A estrutura CRYPT_DATA_BLOB contém uma estrutura de CERT_ALT_NAME_INFO codificada em ASN.1 codificada usando CryptEncodeObject com o valor X509_ALTERNATE_NAME definido. CERT_NEXT_UPDATE_LOCATION_PROP_ID é usado atualmente apenas com CTLs.

CERT_PVK_FILE_PROP_ID
Tipo de dados de pvData: ponteiro para um 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 um Unicode terminado em nulo, cadeia de caracteres largos e o membro cbData indica o comprimento da cadeia de caracteres.

CERT_SHA1_HASH_PROP_ID
Tipo de dados de pvData: ponteiro para um CRYPT_HASH_BLOB

Essa propriedade é definida implicitamente por uma chamada para CertGetCertificateContextProperty.

CERT_SIGNATURE_HASH_PROP_ID
CRYPT_HASH_BLOB
Tipo de dados de pvData: ponteiro para um CRYPT_HASH_BLOB

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

 

Normalmente, somente a propriedade CERT_NEXT_UPDATE_LOCATION_PROP_ID é definida.

Tipos dwPropId adicionais podem ser definidos pelo usuário 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 não será persistido.

[in] pvData

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

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

Retornar valor

Se a função for bem-sucedida, o valor retornado será TRUE.

Se a função falhar, o valor retornado será 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
Identificador de propriedade inválido. Para obter detalhes, consulte CertSetCertificateContextProperty.

Comentários

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

Exemplos

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

CertGetCTLContextProperty

CertSetCertificateContextProperty

Cryptencodeobject

Funções de propriedade estendidas