CERT_STORE_PROV_FIND_INFO struttura (wincrypt.h)

La struttura CERT_STORE_PROV_FIND_INFO viene usata da molte funzioni di callback del provider di archiviazione. Contiene criteri di ricerca per trovare un certificato, un elenco di revoche di certificati (CRL) o un elenco di attendibilità certificati (CTL) in un archivio certificati.

Sintassi

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;

Members

cbSize

Dimensioni della struttura.

dwMsgAndCertEncodingType

Specifica il tipo di codifica usato per i messaggi e i certificati. I tipi di codifica del certificato e del messaggio possono essere combinati con un'operazione BIT-OR bit. Ecco i tipi di codifica definiti:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

dwFindFlags

Usato con alcuni valori dwFindType per modificare i criteri di ricerca. Per la maggior parte dei valori dwFindType, dwFindFlags non viene usato e deve essere impostato su zero.

dwFindType

Specifica il tipo di ricerca da eseguire. Il tipo di ricerca determina il tipo di dati, il contenuto e l'uso di pvFindPara. I valori dwFindType attualmente definiti e i tipi di dati necessari per pvFindPara sono i seguenti.

Valore Significato
CERT_FIND_ANY
NULL; pvFindPara non usato
Nessun criterio di ricerca usato. Restituisce il certificato successivo nell'archivio.
CERT_FIND_CERT_ID
CERT_ID struttura
Trova il certificato identificato dal CERT_ID specificato.
CERT_FIND_CTL_USAGE
CTL_USAGE struttura
Cerca un certificato con un'estensione szOID_ENHANCED_KEY_USAGE o un CERT_CTL_PROP_ID corrispondente al membro pszUsageIdentifierdella struttura CTL_USAGE.
CERT_FIND_ENHKEY_USAGE
CERT_ENHKEY_USAGE struttura
Cerca un certificato nell'archivio con un'estensione di utilizzo chiave avanzata o una proprietà di utilizzo chiave avanzata e un identificatore di utilizzo corrispondente al membro pszUsageIdentifier nella struttura CERT_ENHKEY_USAGE .

Un certificato ha un'estensione di utilizzo della chiave avanzata se ha una struttura CERT_EXTENSION con il membro pszObjId impostato su szOID_ENHANCED_KEY_USAGE. Un certificato ha una proprietà di utilizzo chiave avanzata se il relativo identificatore di CERT_ENHKEY_USAGE_PROP_ID è impostato.

Se pvFindPara è NULL o il membro cUsageIdentifier di CERT_ENHKEY_USAGE è zero, qualsiasi certificato con estensione di utilizzo chiave avanzato o la proprietà di utilizzo della chiave avanzata soddisfa i criteri di selezione.

Se pvFindPara è NULL o il membro cUsageIdentifier della struttura CERT_ENHKEY_USAGE è zero, qualsiasi certificato che ha un utilizzo avanzato della chiave è una corrispondenza.

Se CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG è impostato in dwFindFlags, i certificati senza l'estensione o la proprietà di utilizzo delle chiavi corrispondono anche. L'impostazione di questo flag ha la precedenza sul passaggio di NULL in pvFindPara.

Se CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG è impostato, viene eseguita una corrispondenza solo sull'estensione di utilizzo delle chiavi.

Per informazioni sulle modifiche del flag ai criteri di ricerca, vedere Osservazioni.

CERT_FIND_EXISTING
CERT_CONTEXT struttura
Cerca un certificato che corrisponde esattamente al contesto del certificato specificato.
CERT_FIND_HASH
CRYPT_HASH_BLOB struttura
Cerca un certificato con un hash SHA1 corrispondente all'hash nella struttura CRYPT_HASH_BLOB .
CERT_FIND_ISSUER_ATTR
CERT_RDN struttura
Cercare un certificato con attributi di autorità di certificazione specificati che corrispondono agli attributi nella struttura CERT_RDN . Se questi valori vengono impostati, la funzione confronta gli attributi dell'autorità emittente in un certificato con elementi della matrice di CERT_RDN_ATTRin questa struttura CERT_RDN. I confronti eseguano l'iterazione degli attributi CERT_RDN_ATTR cercando una corrispondenza con gli attributi dell'autorità di certificazione del certificato.

Se il membro pszObjId di CERT_RDN_ATTR è NULL, l'identificatore dell'oggetto attributo viene ignorato.

Se il membro dwValueType di CERT_RDN_ATTR è CERT_RDN_ANY_TYPE, il tipo di valore viene ignorato.

Se il membro pbData di CERT_RDN_VALUE_BLOB è NULL, qualsiasi valore corrisponde a una corrispondenza.

Attualmente è supportata solo una corrispondenza esatta con distinzione tra maiuscole e minuscole. Per informazioni sulle opzioni Unicode, vedere Osservazioni. Quando questi valori vengono impostati, la ricerca è limitata ai certificati i cui tipi di codifica corrispondono a dwMsgAndCertEncodingType.

CERT_FIND_ISSUER_NAME
CERT_NAME_BLOB struttura
Cercare un certificato con una corrispondenza esatta dell'intero nome dell'autorità di certificazione con il nome in CERT_NAME_BLOB. La ricerca è limitata ai certificati corrispondenti a dwMsgAndCertEncodingType.
CERT_FIND_ISSUER_OF
CERT_CONTEXT struttura
Cerca un certificato con un'autorità emittente corrispondente all'autorità emittente in CERT_CONTEXT.

Anziché usare la funzione CertFindCertificateInStore con questo valore, usare la funzione CertGetCertificateChain .

CERT_FIND_ISSUER_STR
Stringa wide (Unicode) con terminazione null
Cercare un certificato contenente la stringa del nome dell'autorità di certificazione specificata. Il membro dell'autorità di certificazione del certificato viene convertito in una stringa di nome del tipo appropriato usando la forma appropriata di CertNameToStr formattata come CERT_SIMPLE_NAME_STR. Viene quindi eseguita una sottostringa senza distinzione tra maiuscole e minuscole all'interno di una stringa. Quando questo valore è impostato, la ricerca è limitata ai certificati i cui tipi di codifica corrispondono a dwMsgAndCertEncodingType.
CERT_FIND_KEY_IDENTIFIER
CRYPT_HASH_BLOB struttura
Cerca un certificato con una proprietà CERT_KEY_IDENTIFIER_PROP_ID corrispondente all'identificatore della chiave in CRYPT_HASH_BLOB.
CERT_FIND_KEY_SPEC
DWORD contenente una specifica della chiave
Cerca un certificato con una proprietà CERT_KEY_SPEC_PROP_ID corrispondente alla specifica della chiave in pvFindPara.
CERT_FIND_MD5_HASH
CRYPT_HASH_BLOB struttura
Cerca un certificato con un hash MD5 corrispondente all'hash in CRYPT_HASH_BLOB.
CERT_FIND_PROPERTY
DWORD contenente un identificatore di proprietà
Cerca un certificato con una proprietà corrispondente all'identificatore di proprietà specificato dalla DWORD in pvFindPara.
CERT_FIND_PUBLIC_KEY
CERT_PUBLIC_KEY_INFO struttura
Cerca un certificato con una chiave pubblica corrispondente alla chiave pubblica nella struttura CERT_PUBLIC_KEY_INFO .
CERT_FIND_SHA1_HASH
CRYPT_HASH_BLOB struttura
Cerca un certificato con un hash SHA1 corrispondente all'hash nella struttura CRYPT_HASH_BLOB .
CERT_FIND_SIGNATURE_HASH
CRYPT_HASH_BLOB struttura
Cerca un certificato con un hash di firma corrispondente all'hash della firma nella struttura CRYPT_HASH_BLOB .
CERT_FIND_SUBJECT_ATTR
CERT_RDN struttura
Cerca un certificato con attributi oggetto specificati che corrispondono agli attributi nella struttura CERT_RDN . Se i valori RDN sono impostati, la funzione confronta gli attributi dell'oggetto in un certificato con elementi della matrice di CERT_RDN_ATTR in questa struttura CERT_RDN . I confronti eseguano l'iterazione degli attributi CERT_RDN_ATTR cercando una corrispondenza con gli attributi del soggetto del certificato.

Se il membro pszObjId di CERT_RDN_ATTR è NULL, l'identificatore dell'oggetto attributo viene ignorato.

Se il membro dwValueType di CERT_RDN_ATTR è CERT_RDN_ANY_TYPE, il tipo di valore viene ignorato.

Se il membro pbData di CERT_RDN_VALUE_BLOB è NULL, qualsiasi valore corrisponde a .

Attualmente è supportata solo una corrispondenza esatta con distinzione tra maiuscole e minuscole.

Per informazioni sulle opzioni Unicode, vedere Osservazioni. Quando questi valori vengono impostati, la ricerca è limitata ai certificati il cui tipo di codifica corrisponde a dwMsgAndCertEncodingType.

CERT_FIND_SUBJECT_CERT
struttura CERT_INFO
Cerca un certificato con un emittente e un numero di serie che corrispondono all'emittente e al numero di serie nella struttura CERT_INFO .
CERT_FIND_SUBJECT_NAME
struttura CERT_NAME_BLOB
Cerca un certificato con una corrispondenza esatta dell'intero nome del soggetto con il nome nella struttura CERT_NAME_BLOB . La ricerca è limitata ai certificati che corrispondono al valore di dwMsgAndCertEncodingType.
CERT_FIND_SUBJECT_STR
Stringa wide (Unicode) con terminazione Null
Cerca un certificato contenente la stringa del nome del soggetto specificata. Il membro soggetto del certificato viene convertito in una stringa di nome del tipo appropriato usando il formato appropriato di CertNameToStr formattato come CERT_SIMPLE_NAME_STR. Viene quindi eseguita una sottostringa senza distinzione tra maiuscole e minuscole all'interno di una stringa. Quando questo valore viene impostato, la ricerca è limitata ai certificati il cui tipo di codifica corrisponde a dwMsgAndCertEncodingType.
 
Nota Esistono forme alternative del valore di dwFindType che passano una stringa in pvFindPara. Un modulo usa una stringa Unicode e l'altra una stringa ASCII . I valori che terminano in "_W" o senza un suffisso usano Unicode. I valori che terminano con "_A" usano stringhe ASCII .
 

pvFindPara

Punta a un elemento di dati o a una struttura da utilizzare con il tipo di ricerca indicato dal valore di dwFindType.

Commenti

Il membro dwFindFlags viene usato per modificare i criteri di alcuni tipi di ricerca.

Il valore dwFindFlags di CERT_UNICODE_IS_RDN_ATTRS_FLAG viene usato solo con i valori CERT_FIND_SUBJECT_ATTR e CERT_FIND_ISSUER_ATTR per dwFindType. CERT_UNICODE_IS_RDN_ATTRS_FLAG deve essere impostato se la struttura CERT_RDN_ATTR a cui punta pvFindPara è stata inizializzata con stringhe Unicode. Prima di eseguire un confronto, la stringa da confrontare viene convertita usando X509_UNICODE_NAME per fornire confronti Unicode.

I valori dwFindFlags seguenti vengono usati solo con il valore CERT_FIND_ENKEY_USAGE per dwFindType.

Valore Significato
CERT_FIND_OR_ENHKEY_USAGE_FLAG I criteri di ricerca possono essere modificati impostando uno o più flag. Per impostazione predefinita, se il membro pszUsageIdentifier della struttura CERT_ENHKEY_USAGE a cui punta pvFindPara deve corrispondere, ogni identificatore deve essere corrispondente per soddisfare i criteri di ricerca. Tuttavia, se CERT_FIND_OR_ENHKEY_USAGE_FLAG è impostato, è possibile eseguire una corrispondenza a tutti gli identificatori combinati usando un'operazione OR bit per bit; pertanto, la corrispondenza di uno degli identificatori è sufficiente.
CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG Quando questo flag viene impostato, oltre alle corrispondenze consuete, qualsiasi certificato che non ha né l'estensione di utilizzo chiave avanzata né la proprietà di utilizzo chiave avanzata soddisfa i criteri di ricerca.
CERT_FIND_NO_ENHKEY_USAGE_FLAG Quando questo flag è impostato, solo i certificati che non hanno né un utilizzo chiave avanzato né la proprietà di utilizzo chiave avanzata corrispondono. Questa impostazione del flag ha la precedenza su pvFindPara su NULL.
CERT_FIND_VALID_ENHKEY_USAGE_FLAG Quando questo flag è impostato, la funzione corrisponde solo ai certificati validi per l'utilizzo specificato. Per impostazione predefinita, per trovare una corrispondenza, un certificato deve essere valido per tutti gli utilizzi.

CERT_FIND_OR_ENHKEY_USAGE_FLAG può essere impostato anche se il certificato deve essere valido solo per uno degli utilizzi specificati. Si noti che viene chiamato CertGetValidUsages per ottenere l'elenco di usi validi per il certificato. Solo CERT_FIND_OR_ENHKEY_USAGE_FLAG possono essere applicati quando è impostata CERT_FIND_VALID_ENHKEY_USAGE_FLAG.

CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG Quando questo flag è impostato, il processo di corrispondenza prevede solo gli identificatori di utilizzo dell'estensione. Se pvFindPara è NULL o il membro cUsageIdentifier della struttura CERT_ENHKEY_USAGE a cui punta pvFindPara è zero, qualsiasi certificato con un'estensione di utilizzo chiave avanzata è una corrispondenza. Se CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG è impostato anche, anche qualsiasi certificato senza l'estensione di utilizzo chiave avanzata corrisponde a . Se CERT_FIND_NO_ENHKEY_USAGE_FLAG è impostato anche, vengono corrispondenti solo i certificati senza l'estensione di utilizzo chiavi avanzata.
CERT_FIND_EXT_PROP_ENHKEY_USAGE_FLAG Quando questo flag è impostato, il processo di corrispondenza prevede solo gli identificatori di utilizzo che sono proprietà. Se pvFindPara è NULL o cUsageIdentifier è impostato su zero, qualsiasi certificato con una proprietà di utilizzo chiave avanzata è una corrispondenza. Se viene impostata anche CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG, anche qualsiasi certificato senza la proprietà di utilizzo chiave avanzata corrisponde a . Se CERT_FIND_NO_ENHKEY_USAGE_FLAG è impostato, vengono corrispondenti solo i certificati senza la proprietà di utilizzo chiave avanzata.
CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG Usato solo con valori CERT_FIND_SUBJECT_ATTR e CERT_FIND_ISSUER-ATTR di dwFindType. Per impostazione predefinita, viene eseguita una corrispondenza esatta con distinzione tra maiuscole e minuscole. Se questo flag è impostato, la corrispondenza non fa distinzione tra maiuscole e minuscole.

Requisiti

   
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Intestazione wincrypt.h