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 |
---|---|
|
Nenhum critério de pesquisa usado. Retorna o próximo certificado no repositório. |
|
Localiza o certificado identificado pelo CERT_ID especificado. |
|
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 . |
|
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. |
|
Pesquisa um certificado que é uma correspondência exata do contexto de certificado especificado. |
|
Pesquisa um certificado com um hash SHA1 que corresponde ao hash na estrutura CRYPT_HASH_BLOB . |
|
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. |
|
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. |
|
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 . |
|
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. |
|
Pesquisa um certificado com uma propriedade CERT_KEY_IDENTIFIER_PROP_ID correspondente ao identificador de chave no CRYPT_HASH_BLOB. |
|
Pesquisa um certificado com uma propriedade CERT_KEY_SPEC_PROP_ID correspondente à especificação de chave em pvFindPara. |
|
Pesquisa um certificado com um hash MD5 que corresponde ao hash em CRYPT_HASH_BLOB. |
|
Pesquisa um certificado com uma propriedade que corresponde ao identificador de propriedade especificado pelo DWORD em pvFindPara. |
|
Pesquisa um certificado com uma chave pública que corresponda à chave pública na estrutura CERT_PUBLIC_KEY_INFO . |
|
Pesquisa um certificado com um hash SHA1 que corresponde ao hash na estrutura CRYPT_HASH_BLOB . |
|
Pesquisa um certificado com um hash de assinatura que corresponda ao hash de assinatura na estrutura CRYPT_HASH_BLOB . |
|
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. |
|
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 . |
|
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. |
|
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. |
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 |