Compartilhar via


estrutura CERT_STORE_PROV_FIND_INFO (wincrypt.h)

A estrutura CERT_STORE_PROV_FIND_INFO é usada por muitas das funções de retorno de chamada do provedor de repositório. Ele contém critérios de localização para localizar um certificado, uma CRL ( lista de certificados revogados ) ou uma CTL ( lista de certificados confiáveis ) em um repositório de certificados.

Sintaxe

typedef struct _CERT_STORE_PROV_FIND_INFO {
  DWORD      cbSize;
  DWORD      dwMsgAndCertEncodingType;
  DWORD      dwFindFlags;
  DWORD      dwFindType;
  const void *pvFindPara;
} CERT_STORE_PROV_FIND_INFO, *PCERT_STORE_PROV_FIND_INFO;

Membros

cbSize

Tamanho da estrutura.

dwMsgAndCertEncodingType

Especifica o tipo de codificação usado para mensagens e certificados. Os tipos de codificação de certificado e mensagem podem ser combinados com uma operação OR bit a bit. Aqui estão os tipos de codificação definidos:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

dwFindFlags

Usado com alguns valores dwFindType para modificar os critérios de pesquisa. Para a maioria dos valores dwFindType , dwFindFlags não é usado e deve ser definido como zero.

dwFindType

Especifica o tipo de pesquisa que está sendo feita. O tipo de pesquisa determina o tipo de dados, o conteúdo e o uso de pvFindPara. Os valores dwFindType atualmente definidos e o tipo de dados que cada um requer para pvFindPara são os seguintes.

Valor Significado
CERT_FIND_ANY
NULL; pvFindPara não usado
Nenhum critério de pesquisa usado. Retorna o próximo certificado no repositório.
CERT_FIND_CERT_ID
estrutura CERT_ID
Localiza o certificado identificado pelo CERT_ID especificado.
CERT_FIND_CTL_USAGE
estrutura CTL_USAGE
Pesquisa um certificado com uma extensão de szOID_ENHANCED_KEY_USAGE ou um CERT_CTL_PROP_ID que corresponda ao membro pszUsageIdentifier da estrutura CTL_USAGE .
CERT_FIND_ENHKEY_USAGE
estrutura CERT_ENHKEY_USAGE
Pesquisa um certificado no repositório com uma extensão de uso de chave aprimorada ou uma propriedade de uso de chave aprimorada e um identificador de uso que corresponde ao membro pszUsageIdentifier na estrutura CERT_ENHKEY_USAGE .

Um certificado terá uma extensão de uso de chave aprimorada se tiver uma estrutura de CERT_EXTENSION com o membro pszObjId definido como szOID_ENHANCED_KEY_USAGE. Um certificado terá uma propriedade de uso de chave aprimorada se seu identificador de CERT_ENHKEY_USAGE_PROP_ID estiver definido.

Se pvFindPara for NULL ou o membro cUsageIdentifier de CERT_ENHKEY_USAGE for zero, qualquer certificado que tenha a extensão de uso de chave aprimorada ou a propriedade de uso de chave aprimorada atenderá aos critérios de seleção.

Se pvFindPara for NULL ou o membro cUsageIdentifier da estrutura CERT_ENHKEY_USAGE for zero, qualquer certificado com uso avançado de chave será uma correspondência.

Se CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG estiver definido em dwFindFlags, os certificados sem a extensão de uso de chave ou propriedade também serão correspondentes. Definir esse sinalizador tem precedência sobre a passagem de NULL em pvFindPara.

Se CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG estiver definido, uma correspondência será feita somente na extensão de uso da chave.

Para obter informações sobre modificações de sinalizador em critérios de pesquisa, consulte Comentários.

CERT_FIND_EXISTING
estrutura CERT_CONTEXT
Pesquisa um certificado que é uma correspondência exata do contexto de certificado especificado.
CERT_FIND_HASH
estrutura CRYPT_HASH_BLOB
Pesquisa um certificado com um hash SHA1 que corresponde ao hash na estrutura CRYPT_HASH_BLOB .
CERT_FIND_ISSUER_ATTR
estrutura CERT_RDN
Pesquise um certificado com atributos de emissor especificados que correspondam aos atributos na estrutura CERT_RDN . Se esses valores forem definidos, a função comparará atributos do emissor em um certificado com elementos da matriz CERT_RDN_ATTR nessa estrutura CERT_RDN . As comparações iteram por meio dos atributos CERT_RDN_ATTR procurando uma correspondência com os atributos do emissor do certificado.

Se o membro pszObjId de CERT_RDN_ATTR for NULL, o identificador de objeto de atributo será ignorado.

Se o membro dwValueType de CERT_RDN_ATTR for CERT_RDN_ANY_TYPE, o tipo de valor será ignorado.

Se o membro pbData de CERT_RDN_VALUE_BLOB for NULL, qualquer valor será uma correspondência.

Atualmente, há suporte apenas para uma correspondência exata que diferencia maiúsculas de minúsculas. Para obter informações sobre opções Unicode, consulte Comentários. Quando esses valores são definidos, a pesquisa é restrita a certificados cujo tipo de codificação corresponde a dwMsgAndCertEncodingType.

CERT_FIND_ISSUER_NAME
estrutura CERT_NAME_BLOB
Pesquise um certificado com uma correspondência exata do nome inteiro do emissor com o nome em CERT_NAME_BLOB. A pesquisa é restrita a certificados que correspondem ao dwMsgAndCertEncodingType.
CERT_FIND_ISSUER_OF
estrutura CERT_CONTEXT
Pesquisa um certificado com um emissor que corresponde ao emissor em CERT_CONTEXT.

Em vez de usar a função CertFindCertificateInStore com esse valor, use a função CertGetCertificateChain .

CERT_FIND_ISSUER_STR
Cadeia de caracteres De largura terminada em nulo (Unicode)
Pesquise um certificado que contenha a cadeia de caracteres de nome do emissor especificada. O membro emissor do certificado é convertido em uma cadeia de caracteres de nome do tipo apropriado usando a forma apropriada de CertNameToStr formatada como CERT_SIMPLE_NAME_STR. Em seguida, uma correspondência de subcadeia de caracteres que não diferencia maiúsculas de minúsculas dentro de uma cadeia de caracteres é executada. Quando esse valor é definido, a pesquisa é restrita a certificados cujo tipo de codificação corresponde a dwMsgAndCertEncodingType.
CERT_FIND_KEY_IDENTIFIER
estrutura CRYPT_HASH_BLOB
Pesquisa um certificado com uma propriedade CERT_KEY_IDENTIFIER_PROP_ID correspondente ao identificador de chave no CRYPT_HASH_BLOB.
CERT_FIND_KEY_SPEC
DWORD que contém uma especificação de chave
Pesquisa um certificado com uma propriedade CERT_KEY_SPEC_PROP_ID correspondente à especificação de chave em pvFindPara.
CERT_FIND_MD5_HASH
estrutura CRYPT_HASH_BLOB
Pesquisa um certificado com um hash MD5 que corresponde ao hash em CRYPT_HASH_BLOB.
CERT_FIND_PROPERTY
DWORD que contém um identificador de propriedade
Pesquisa um certificado com uma propriedade que corresponde ao identificador de propriedade especificado pelo DWORD em pvFindPara.
CERT_FIND_PUBLIC_KEY
estrutura CERT_PUBLIC_KEY_INFO
Pesquisa um certificado com uma chave pública que corresponda à chave pública na estrutura CERT_PUBLIC_KEY_INFO .
CERT_FIND_SHA1_HASH
estrutura CRYPT_HASH_BLOB
Pesquisa um certificado com um hash SHA1 que corresponde ao hash na estrutura CRYPT_HASH_BLOB .
CERT_FIND_SIGNATURE_HASH
estrutura CRYPT_HASH_BLOB
Pesquisa um certificado com um hash de assinatura que corresponda ao hash de assinatura na estrutura CRYPT_HASH_BLOB .
CERT_FIND_SUBJECT_ATTR
estrutura CERT_RDN
Pesquisa um certificado com atributos de entidade especificados que correspondem a atributos na estrutura CERT_RDN . Se os valores rdn forem definidos, a função comparará os atributos da entidade em um certificado com elementos da matriz CERT_RDN_ATTR nessa estrutura CERT_RDN . As comparações iteram pelos atributos CERT_RDN_ATTR procurando uma correspondência com os atributos da entidade do certificado.

Se o membro pszObjId de CERT_RDN_ATTR for NULL, o identificador de objeto de atributo será ignorado.

Se o membro dwValueType de CERT_RDN_ATTR for CERT_RDN_ANY_TYPE, o tipo de valor será ignorado.

Se o membro pbData de CERT_RDN_VALUE_BLOB for NULL, qualquer valor será uma correspondência.

Atualmente, há suporte apenas para uma correspondência exata que diferencia maiúsculas de minúsculas.

Para obter informações sobre opções Unicode, consulte Comentários. Quando esses valores são definidos, a pesquisa é restrita a certificados cujo tipo de codificação corresponde a dwMsgAndCertEncodingType.

CERT_FIND_SUBJECT_CERT
estrutura CERT_INFO
Pesquisa um certificado com um emissor e um número de série que correspondam ao emissor e ao número de série na estrutura CERT_INFO .
CERT_FIND_SUBJECT_NAME
estrutura CERT_NAME_BLOB
Pesquisa um certificado com uma correspondência exata do nome da entidade inteira com o nome na estrutura CERT_NAME_BLOB . A pesquisa é restrita a certificados que correspondem ao valor de dwMsgAndCertEncodingType.
CERT_FIND_SUBJECT_STR
Cadeia de caracteres De largura terminada em nulo (Unicode)
Pesquisa um certificado que contém a cadeia de caracteres de nome da entidade especificada. O membro da entidade do certificado é convertido em uma cadeia de caracteres de nome do tipo apropriado usando a forma apropriada de CertNameToStr formatada como CERT_SIMPLE_NAME_STR. Em seguida, uma correspondência de subcadeia de caracteres que não diferencia maiúsculas de minúsculas dentro de uma cadeia de caracteres é executada. Quando esse valor é definido, a pesquisa é restrita a certificados cujo tipo de codificação corresponde a dwMsgAndCertEncodingType.
 
Nota Há formas alternativas do valor de dwFindType que passam uma cadeia de caracteres em pvFindPara. Um formulário usa uma cadeia de caracteres Unicode e o outro uma cadeia de caracteres ASCII . Os valores que terminam em "_W" ou sem sufixo usam Unicode. Os valores que terminam com "_A" usam cadeias de caracteres ASCII .
 

pvFindPara

Aponta para um item de dados ou estrutura a ser usado com o tipo de localização indicado pelo valor de dwFindType.

Comentários

O membro dwFindFlags é usado para modificar os critérios de alguns tipos de pesquisa.

O valor dwFindFlags de CERT_UNICODE_IS_RDN_ATTRS_FLAG é usado apenas com os valores CERT_FIND_SUBJECT_ATTR e CERT_FIND_ISSUER_ATTR para dwFindType. CERT_UNICODE_IS_RDN_ATTRS_FLAG deverá ser definido se a estrutura de CERT_RDN_ATTR apontada por pvFindPara tiver sido inicializada com cadeias de caracteres Unicode. Antes que qualquer comparação seja feita, a cadeia de caracteres a ser correspondida é convertida usando X509_UNICODE_NAME para fornecer comparações Unicode.

Os valores dwFindFlags a seguir são usados apenas com o valor CERT_FIND_ENKEY_USAGE para dwFindType.

Valor Significado
CERT_FIND_OR_ENHKEY_USAGE_FLAG Os critérios de pesquisa podem ser alterados definindo um ou mais sinalizadores. Por padrão, se o membro pszUsageIdentifier da estrutura CERT_ENHKEY_USAGE apontada por pvFindPara for correspondente, cada identificador deverá ser correspondido para atender aos critérios de pesquisa. No entanto, se CERT_FIND_OR_ENHKEY_USAGE_FLAG estiver definido, uma correspondência poderá ser feita a todos os identificadores combinados usando uma operação OR bit a bit; portanto, corresponder a qualquer um dos identificadores é suficiente.
CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG Quando esse sinalizador é definido, além das correspondências usuais, qualquer certificado que não tenha a extensão de uso de chave aprimorada nem a propriedade de uso de chave aprimorada atende aos critérios de pesquisa.
CERT_FIND_NO_ENHKEY_USAGE_FLAG Quando esse sinalizador é definido, somente os certificados que não têm um uso aprimorado de chave nem a propriedade de uso de chave aprimorada são correspondentes. Essa configuração de sinalizador tem precedência sobre pvFindPara ser NULL.
CERT_FIND_VALID_ENHKEY_USAGE_FLAG Quando esse sinalizador é definido, a função corresponde somente aos certificados válidos para o uso especificado. Por padrão, para corresponder, um certificado deve ser válido para todos os usos.

CERT_FIND_OR_ENHKEY_USAGE_FLAG também poderá ser definido se o certificado precisar ser válido apenas para um dos usos especificados. Observe que CertGetValidUsages é chamado para obter a lista de usos válidos para o certificado. Somente CERT_FIND_OR_ENHKEY_USAGE_FLAG também podem ser aplicados quando CERT_FIND_VALID_ENHKEY_USAGE_FLAG está definido.

CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG Quando esse sinalizador é definido, o processo de correspondência envolve apenas os identificadores de uso da extensão. Se pvFindPara for NULL ou o membro cUsageIdentifier da estrutura CERT_ENHKEY_USAGE apontada por pvFindPara for zero, qualquer certificado com uma extensão de uso de chave aprimorada será uma correspondência. Se CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG também estiver definido, qualquer certificado sem a extensão de uso de chave aprimorada também será uma correspondência. Se CERT_FIND_NO_ENHKEY_USAGE_FLAG também estiver definido, somente os certificados sem a extensão de uso de chave aprimorada serão correspondentes.
CERT_FIND_EXT_PROP_ENHKEY_USAGE_FLAG Quando esse sinalizador é definido, o processo de correspondência envolve apenas identificadores de uso que são propriedades. Se pvFindPara for NULL ou cUsageIdentifier estiver definido como zero, qualquer certificado com uma propriedade de uso de chave aprimorada será uma correspondência. Se CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG também estiver definido, qualquer certificado sem a propriedade de uso de chave aprimorada também será uma correspondência. Se CERT_FIND_NO_ENHKEY_USAGE_FLAG estiver definido, somente os certificados sem a propriedade de uso de chave aprimorada serão correspondentes.
CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG Usado somente com valores CERT_FIND_SUBJECT_ATTR e CERT_FIND_ISSUER-ATTR de dwFindType. Por padrão, uma correspondência exata que diferencia maiúsculas de minúsculas é feita. Se esse sinalizador estiver definido, a correspondência não diferencia maiúsculas de minúsculas.

Requisitos

   
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Cabeçalho wincrypt.h