Função CertSetCRLContextProperty (wincrypt.h)

A função CertSetCRLContextProperty define uma propriedade estendida para o contexto de CRL ( lista de revogação de certificados ) especificado.

Sintaxe

BOOL CertSetCRLContextProperty(
  [in] PCCRL_CONTEXT pCrlContext,
  [in] DWORD         dwPropId,
  [in] DWORD         dwFlags,
  [in] const void    *pvData
);

Parâmetros

[in] pCrlContext

Um ponteiro para a estrutura CRL_CONTEXT .

[in] dwPropId

Identifica a propriedade a ser definida. O valor de dwPropId determina o tipo e o conteúdo do parâmetro pvData . Os identificadores definidos no momento e o tipo de dados a ser retornado no pvData estão listados na tabela a seguir.

Normalmente, somente as seguintes propriedades são definidas:

  • CERT_HASH_PROP_ID
  • CERT_SHA1_HASH_PROP_ID
  • CERT_MD5_HASH_PROP_ID
  • CERT_SIGNATURE_HASH_PROP_ID
Valor Significado
CERT_ACCESS_STATE_PROP_ID
Tipo de dados para pvData: ponteiro para um DWORD

Define 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_ARCHIVED_PROP_ID
Tipo de dados para pvData: NULL

Indica que o certificado é ignorado durante enumerações. Um certificado com esse conjunto de propriedades é encontrado com operações de pesquisa explícitas, como aquelas usadas para localizar um certificado com um hash específico ou um número de série. Nenhum dado em pvData está associado a essa propriedade.

CERT_AUTO_ENROLL_PROP_ID
Tipo de dados para pvData: ponteiro para uma matriz BYTE

Define uma cadeia de caracteres Unicode terminada em nulo nomeando o tipo de certificado para o qual o certificado foi registrado automaticamente.

CERT_CTL_USAGE_PROP_ID
Tipo de dados para pvData: ponteiro para uma matriz BYTE

Define uma matriz de bytes que contém uma estrutura de CTL_USAGE codificada em ASN.1 (Abstract Syntax Notation One).

CERT_DESCRIPTION_PROP_ID
Tipo de dados para pvData: ponteiro para uma matriz BYTE

Define a propriedade exibida 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 para pvData:

Define uma matriz de bytes que contém uma estrutura de CERT_ENHKEY_USAGE codificada em ASN.1.

CERT_FRIENDLY_NAME_PROP_ID
Tipo de dados para pvData: ponteiro para uma matriz BYTE

Define uma cadeia de caracteres Unicode terminada em nulo que contém o nome de exibição da CRL.

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

Define uma cadeia de caracteres que contém um conjunto de pares de chave pública L"<PUBKEY>/<BITLENGTH>" e pares de comprimento de bit. O ponto e vírgula, L";", é usado como delimitador.

O <valor PUBKEY> identifica o algoritmo de chave pública CNG. Há suporte para os seguintes algoritmos:

  • L"RSA" (BCRYPT_RSA_ALGORITHM)
  • L"DSA" (BCRYPT_DSA_ALGORITHM)
  • L"ECDSA" (SSL_ECDSA_ALGORITHM)
Um <par BITLENGTH PUBKEY>/<é definido para cada certificado na cadeia de emissores de CRL, excluindo a> folha. Essa propriedade pode ser definida quando uma resposta OCSP com uma cadeia de signatários independente é convertida em uma CRL.
Nota Essa propriedade não deve ser definida para um certificado de signatário OCSP delegado. Um certificado de signatário delegado é assinado com a mesma chave usada para assinar o certificado de entidade e é verificado lá.
 
A seguir, é mostrado um exemplo:

: L"RSA/2048; RSA/4096"

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

Define uma cadeia de caracteres que contém um conjunto de pares de algoritmos L"<SIGNATURE>/<HASH>". O ponto e vírgula, L";", é usado como delimitador entre pares.

Essa propriedade é definida somente quando uma resposta OCSP é convertida em uma CRL. Para um certificado de signatário OCSP delegado, somente o par de algoritmos para o certificado do signatário é retornado. Para uma cadeia de certificados do signatário OCSP independente, um par de algoritmos é retornado para cada certificado na cadeia, excluindo a raiz.

O <valor SIGNATURE> identifica o algoritmo de chave pública CNG. Há suporte para os seguintes algoritmos:

  • L"RSA" (BCRYPT_RSA_ALGORITHM)
  • L"DSA" (BCRYPT_DSA_ALGORITHM)
  • L"ECDSA" (SSL_ECDSA_ALGORITHM)
O <valor HASH> identifica o algoritmo de hash CNG. Há suporte para os seguintes algoritmos:
  • L"MD5" (BCRYPT_MD5_ALGORITHM)
  • L"SHA1" (BCRYPT_SHA1_ALGORITHM)
  • L"SHA256" (BCRYPT_SHA256_ALGORITHM)
  • L"SHA384" (BCRYPT_SHA384_ALGORITHM)
  • L"SHA512" (BCRYPT_SHA512_ALGORITHM)
A seguir, é mostrado um exemplo:
  • L"RSA/SHA256; RSA/SHA256"
Essa propriedade é definida explicitamente pelas funções de verificação de revogação.
CERT_ISSUER_PUB_KEY_BIT_LENGTH_PROP_ID
Tipo de dados para pvData: ponteiro para uma estrutura CRYPT_DATA_BLOB .

Define o comprimento, em bits, da chave pública no certificado do emissor de CRL. Essa propriedade também é aplicável a um OCSP que foi convertido em uma CRL.

Essa propriedade é definida explicitamente pelas funções de verificação de revogação.

Windows 8 e Windows Server 2012: o suporte para essa propriedade começa.

CERT_KEY_CONTEXT_PROP_ID
Tipo de dados para pvData: ponteiro para um CERT_KEY_CONTEXT

Define uma estrutura CERT_KEY_CONTEXT .

CERT_KEY_IDENTIFIER_PROP_ID
Tipo de dados para pvData: ponteiro para uma matriz BYTE
CERT_KEY_PROV_HANDLE_PROP_ID
Tipo de dados para pvData: ponteiro para um HCRYPTPROV

Define o identificador do provedor obtido do CERT_KEY_CONTEXT_PROP_ID.

CERT_KEY_PROV_INFO_PROP_ID
Tipo de dados para pvData: ponteiro para um CRYPT_KEY_PROV_INFO

Define um ponteiro para uma estrutura CRYPT_KEY_PROV_INFO .

CERT_KEY_SPEC_PROP_ID
Tipo de dados para pvData: ponteiro para um DWORD

Define um valor DWORD que especifica a chave privada obtida de CERT_KEY_CONTEXT_PROP_ID propriedade se ela existir. Caso contrário, se CERT_KEY_PROV_INFO_PROP_ID existir, será a origem do dwKeySpec.

CERT_MD5_HASH_PROP_ID
Tipo de dados para pvData: ponteiro para uma matriz BYTE

Define o hash MD5. Você pode calcular o hash usando a função CryptHashCertificate .

CERT_NEXT_UPDATE_LOCATION_PROP_ID
Tipo de dados para pvData: ponteiro para uma matriz BYTE

Define a estrutura de CERT_ALT_NAME_INFO codificada em ASN.1 em uma CTL.

CERT_PVK_FILE_PROP_ID
Tipo de dados para pvData: ponteiro para uma matriz BYTE

Define uma cadeia de caracteres unicode terminada em nulo, especificando o nome do arquivo que contém a chave privada associada à chave pública do certificado.

CERT_SHA1_HASH_PROP_ID
Tipo de dados para pvData: ponteiro para uma matriz BYTE

Define o hash SHA1. Você pode calcular o hash usando CryptHashCertificate.

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

Define a cadeia de caracteres L"<SIGNATURE>/<HASH>" que representa a assinatura do certificado. O <valor SIGNATURE> identifica o algoritmo de chave pública CNG. Há suporte para os seguintes algoritmos:

  • L"RSA" (BCRYPT_RSA_ALGORITHM)
  • L"DSA" (BCRYPT_DSA_ALGORITHM)
  • L"ECDSA" (SSL_ECDSA_ALGORITHM)
O <valor HASH> identifica o algoritmo de hash CNG. Há suporte para os seguintes algoritmos:
  • L"MD5" (BCRYPT_MD5_ALGORITHM)
  • L"SHA1" (BCRYPT_SHA1_ALGORITHM)
  • L"SHA256" (BCRYPT_SHA256_ALGORITHM)
  • L"SHA384" (BCRYPT_SHA384_ALGORITHM)
  • L"SHA512" (BCRYPT_SHA512_ALGORITHM)
Estes são exemplos comuns:
  • L"RSA/SHA1"
  • L"RSA/SHA256"
  • L"ECDSA/SHA256"
Essa propriedade também é aplicável a uma resposta OCSP que foi convertida em uma CRL.

Essa propriedade é definida explicitamente pelas funções de verificação de revogação.

Windows 8 e Windows Server 2012: o suporte para essa propriedade começa.

CERT_SIGNATURE_HASH_PROP_ID
Tipo de dados para pvData: ponteiro para uma matriz BYTE

Define o hash de assinatura. Se o hash não existir, ele será calculado com CryptHashToBeSigned. O comprimento do hash é de 20 bytes para SHA e 16 para MD5.

 

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 um CRYPT_DATA_BLOB codificado.

Para todos os outros identificadores de propriedade, 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 o 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
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.

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

CRL_CONTEXT

CRYPT_DATA_BLOB

CRYPT_HASH_BLOB

CRYPT_KEY_PROV_INFO

CTL_USAGE

CertGetCRLContextProperty

CertSetCertificateContextProperty

Cryptencodeobject

CryptHashToBeSigned

Funções de propriedade estendidas