CERT_CHAIN_FIND_ISSUER_PARA struttura (wincrypt.h)
La struttura CERT_CHAIN_FIND_BY_ISSUER_PARA contiene informazioni usate nella funzione CertFindChainInStore per compilare catene di certificati.
Sintassi
typedef struct _CERT_CHAIN_FIND_BY_ISSUER_PARA {
DWORD cbSize;
LPCSTR pszUsageIdentifier;
DWORD dwKeySpec;
DWORD dwAcquirePrivateKeyFlags;
DWORD cIssuer;
CERT_NAME_BLOB *rgIssuer;
PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK pfnFindCallback;
void *pvFindArg;
DWORD *pdwIssuerChainIndex;
DWORD *pdwIssuerElementIndex;
} CERT_CHAIN_FIND_ISSUER_PARA, *PCERT_CHAIN_FIND_ISSUER_PARA, CERT_CHAIN_FIND_BY_ISSUER_PARA, *PCERT_CHAIN_FIND_BY_ISSUER_PARA;
Members
cbSize
Contiene le dimensioni di questa struttura, in byte. Questa dimensione non deve essere hardcoded. Deve essere impostato in fase di compilazione usando l'operatore sizeof , come illustrato nell'esempio seguente.
CERT_CHAIN_FIND_BY_ISSUER_PARA findParams;
findParams.cbSize = sizeof(CERT_CHAIN_FIND_BY_ISSUER_PARA);
pszUsageIdentifier
Puntatore a una stringa ANSI con terminazione null contenente l'identificatore di utilizzo da corrispondere. Se questo membro è NULL, un certificato con qualsiasi utilizzo può essere una corrispondenza.
dwKeySpec
Contiene il valore della specifica della chiave da corrispondere. Questo può essere uno dei valori seguenti. Se questo parametro è zero, qualsiasi certificato può corrispondere.
Valore | Significato |
---|---|
|
La chiave può essere usata per crittografare o firmare a seconda dell'algoritmo. |
|
La chiave può essere usata per la firma. |
dwAcquirePrivateKeyFlags
Quando il parametro dwFindFlags della funzione CertFindChainInStore contiene CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG, la funzione CryptAcquireCertificatePrivateKey viene chiamata per eseguire il confronto delle chiavi pubbliche. In questo caso, questo membro viene passato come parametro dwFlags della funzione CryptAcquireCertificatePrivateKey . Per i valori possibili per questo membro e i relativi significati, vedere il parametro dwFlags della funzione CryptAcquireCertificatePrivateKey .
cIssuer
Contiene il numero di elementi nella matrice rgIssuer . Se questo membro è zero, qualsiasi autorità emittente può essere una corrispondenza.
rgIssuer
Matrice di BLOB con codifica X.509, Notation One sintassi astratta (ASN.1). Se questo membro è NULL o la funzione di callback restituisce TRUE, un nuovo elemento viene aggiunto alla catena per il certificato con una chiave privata con l'utilizzo specificato di KeySpec e chiave avanzata.
pfnFindCallback
Puntatore a una funzione di callback CertChainFindByIssuerCallback che consente all'applicazione di filtrare i certificati per cui vengono create le catene. Se questo membro è NULL, viene compilata una catena per ogni certificato trovato. Se questo membro non è NULL, verrà compilata una catena per il certificato trovato in base al valore restituito della funzione di callback.
pvFindArg
Valore definito dall'applicazione che verrà passato come parametro pvFindArg della funzione di callback CertChainFindByIssuerCallback a cui fa riferimento il membro pfnFindCallback di questa struttura.
pdwIssuerChainIndex
Puntatore a un valore DWORD che riceve l'indice in base zero della catena corrispondente all'autorità emittente. Se questo membro è NULL, non viene usato.
Se cIssuer è zero, questo membro non viene usato.
Questo membro viene definito solo se viene definita la macro CERT_CHAIN_FIND_BY_ISSUER_PARA_HAS_EXTRA_FIELDS .
pdwIssuerElementIndex
Puntatore a un valore DWORD che riceve l'indice in base zero dell'elemento nella catena del certificato dell'autorità emittente. Se questo membro è NULL, non viene usato.
Se cIssuer è zero, questo membro non viene usato.
Questo membro è impostato sull'indice del certificato trovato più uno per specificare l'indice del certificato dell'autorità di certificazione. A causa di questo, una catena parziale o un certificato autofirmato che corrisponde al nome BLOB può causare pdwIssuerElementIndex per puntare l'ultimo certificato nella catena. Questa situazione può essere rilevata confrontando il contenuto di pdwIssuerElementIndex con il membro cElement della struttura CERT_SIMPLE_CHAIN per assicurarsi che l'indice sia valido.
Questo membro viene definito solo se viene definita la macro CERT_CHAIN_FIND_BY_ISSUER_PARA_HAS_EXTRA_FIELDS .
Commenti
I membri pdwIssuerChainIndex e pdwIssuerElementIndex sono disponibili solo se la macro CERT_CHAIN_FIND_BY_ISSUER_PARA_HAS_EXTRA_FIELDS è definita. Se la macro CERT_CHAIN_FIND_BY_ISSUER_PARA_HAS_EXTRA_FIELDS è definita, l'applicazione deve inizializzare tutti i campi inutilizzati su zero.
Esempio
Lo pseudocode seguente illustra come usare i membri pdwIssuerChainIndex e pdwIssuerElementIndex di questa struttura per accedere al certificato dell'autorità emittente.
CERT_CHAIN_FIND_BY_ISSUER_PARA findParams;
PCCERT_CHAIN_CONTEXT pChainContext = NULL;
DWORD dwChainIndex = 0;
DWORD dwElementIndex = 0;
findParams.pdwIssuerChainIndex = &dwChainIndex;
findParams.pdwIssuerElementIndex = &dwElementIndex;
pChainContext = CertFindChainInStore(
hCertStore,
X509_ASN_ENCODING,
0,
CERT_CHAIN_FIND_BY_ISSUER,
(LPVOID)&findParams,
NULL);
if(pChainContext)
{
// Make sure the element index is valid.
if(dwElementIndex < pChainContext->
rgpChain[dwChainIndex]->cElement)
{
PCERT_CHAIN_ELEMENT pIssuerElement;
pIssuerElement = pChainContext->
rgpChain[dwChainIndex]->rgpElement[dwElementIndex];
// ...
}
// Free the certificate chain.
CertFreeCertificateChain(pChainContext);
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Intestazione | wincrypt.h |