Condividi tramite


Funzione CryptQueryObject (wincrypt.h)

Importante Questa API è deprecata. Il software nuovo e esistente deve iniziare a usare le API di nuova generazione di crittografia. Microsoft può rimuovere questa API nelle versioni future.
 
La funzione CryptQueryObject recupera informazioni sul contenuto di un oggetto API di crittografia, ad esempio un certificato, un elenco di revoche di certificati o un elenco di attendibilità dei certificati. L'oggetto può risiedere in una struttura in memoria o in un file.

Sintassi

BOOL CryptQueryObject(
  [in]  DWORD      dwObjectType,
  [in]  const void *pvObject,
  [in]  DWORD      dwExpectedContentTypeFlags,
  [in]  DWORD      dwExpectedFormatTypeFlags,
  [in]  DWORD      dwFlags,
  [out] DWORD      *pdwMsgAndCertEncodingType,
  [out] DWORD      *pdwContentType,
  [out] DWORD      *pdwFormatType,
  [out] HCERTSTORE *phCertStore,
  [out] HCRYPTMSG  *phMsg,
  [out] const void **ppvContext
);

Parametri

[in] dwObjectType

Indica il tipo dell'oggetto da eseguire una query. Questo deve essere uno dei valori seguenti.

Valore Significato
CERT_QUERY_OBJECT_BLOB
L'oggetto viene archiviato in una struttura in memoria.
CERT_QUERY_OBJECT_FILE
L'oggetto viene archiviato in un file.

[in] pvObject

Puntatore all'oggetto da eseguire una query. Il tipo di puntatore dati dipende dal contenuto del parametro dwObjectType .

valore dwObjectType Significato
CERT_QUERY_OBJECT_BLOB
Questo parametro è un puntatore a un CERT_BLOB o una struttura simile che contiene l'oggetto da eseguire per la query.
CERT_QUERY_OBJECT_FILE
Questo parametro è un puntatore a una stringa Unicode con terminazione null che contiene il percorso e il nome del file da eseguire per la query.

[in] dwExpectedContentTypeFlags

Indica il tipo di contenuto previsto. Questo può essere uno dei valori seguenti.

Valore Significato
CERT_QUERY_CONTENT_FLAG_ALL
Il contenuto può essere qualsiasi tipo. Ciò non include il flag di CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD .

Se questo flag viene specificato, questa funzione tenterà di ottenere informazioni sull'oggetto, provando tipi di contenuto diversi fino a quando non viene trovato il tipo di contenuto appropriato o i tipi di contenuto vengono esauriti. Questo è ovviamente inefficiente, quindi questo flag deve essere usato solo se il tipo di contenuto non è noto.

CERT_QUERY_CONTENT_FLAG_CERT
Il contenuto è un singolo certificato.
CERT_QUERY_CONTENT_FLAG_CERT_PAIR
Il contenuto è una notazione sintassi astratta one (ASN.1) codificata X509_CERT_PAIR (una coppia di certificati codificata che contiene certificati incrociati in avanti, inverso o inverso).
CERT_QUERY_CONTENT_FLAG_CRL
Il contenuto è un singolo CRL.
CERT_QUERY_CONTENT_FLAG_CTL
Il contenuto è un singolo CTL.
CERT_QUERY_CONTENT_FLAG_PFX
Il contenuto è un pacchetto PFX (PKCS #12), ma non verrà caricato da questa funzione. È possibile usare la funzione PFXImportCertStore per caricarlo in un archivio.
CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD
Il contenuto è un pacchetto PFX (PKCS #12) e verrà caricato da questa funzione soggetto alle condizioni specificate nella nota seguente.
Nota  

Se il pacchetto PFX contiene una password incorporata che non è una stringa vuota o NULL e la password non è stata protetta in un'entità Active Directory (AD) che include l'utente chiamante, questa funzione non sarà in grado di decrittografare il pacchetto PFX. Il pacchetto può tuttavia essere decrittografato, se la password utilizzata quando è stato creato il pacchetto PFX è stata crittografata in un'entità AD e l'utente, come parte di tale entità, ha l'autorizzazione per decrittografare la password. Per altre informazioni, vedere il parametro pvPara e il flag PKCS12_PROTECT_TO_DOMAIN_SIDS della funzione PFXExportCertStoreEx .

È possibile proteggere le password PFX in un'entità ACTIVE a partire da Windows 8 e Windows Server 2012.

 
Windows Server 2003 e Windows XP: Questo valore non è supportato.
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED
Il contenuto è un messaggio firmato PKCS #7.
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED
Il contenuto è un messaggio PKCS #7 firmato incorporato.
CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED
Il contenuto è un messaggio PKCS #7 senza segno.
CERT_QUERY_CONTENT_FLAG_PKCS10
Il contenuto è un messaggio PKCS #10.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT
Il contenuto è un singolo certificato serializzato.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL
Il contenuto è un singolo CRL serializzato.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL
Il contenuto viene serializzato solo CTL.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE
Il contenuto è un archivio serializzato.

[in] dwExpectedFormatTypeFlags

Indica il formato previsto del tipo restituito. Questo può essere uno dei valori seguenti.

Valore Significato
CERT_QUERY_FORMAT_FLAG_ALL
Il contenuto può essere restituito in qualsiasi formato.
CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED
Il contenuto deve essere restituito in formato con codifica esadecimale ASCII con prefisso "{ASN}".
CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED
Il contenuto deve essere restituito in formato codificato Base64.
CERT_QUERY_FORMAT_FLAG_BINARY
Il contenuto deve essere restituito in formato binario.

[in] dwFlags

Questo parametro è riservato per l'uso futuro e deve essere impostato su zero.

[out] pdwMsgAndCertEncodingType

Puntatore a un valore DWORD che riceve il tipo di codifica usato nel messaggio. Se queste informazioni non sono necessarie, impostare questo parametro su NULL.

Questo parametro può ricevere una combinazione di uno o più dei valori seguenti.

Valore Significato
PKCS_7_ASN_ENCODING
65536 (0x10000)
Specifica la codifica dei messaggi PKCS 7.
X509_ASN_ENCODING
1 (0x1)
Specifica la codifica del certificato X.509.

[out] pdwContentType

Puntatore a un valore DWORD che riceve il tipo effettivo del contenuto. Se queste informazioni non sono necessarie, impostare questo parametro su NULL. Il tipo di contenuto restituito può essere uno dei valori seguenti.

Valore Significato
CERT_QUERY_CONTENT_CERT
Il contenuto è un singolo certificato.
CERT_QUERY_CONTENT_CERT_PAIR
Il contenuto è un X509_CERT_pair con codifica ASN.1.
CERT_QUERY_CONTENT_CRL
Il contenuto è un singolo CRL.
CERT_QUERY_CONTENT_CTL
Il contenuto è un singolo CTL.
CERT_QUERY_CONTENT_PFX
Il contenuto è un pacchetto PFX (PKCS #12). Questa funzione verifica solo che l'oggetto sia un pacchetto PKCS #12. Il pacchetto PKCS #12 non viene caricato in un archivio certificati.
CERT_QUERY_CONTENT_PFX_AND_LOAD
Il contenuto è un pacchetto PFX (PKCS #12) ed è stato caricato in un archivio certificati.

Windows Server 2003 e Windows XP: Questo valore non è supportato.

CERT_QUERY_CONTENT_PKCS7_SIGNED
Il contenuto è un messaggio firmato PKCS #7.
CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED
Il contenuto è un messaggio firmato PKCS #7 incorporato.
CERT_QUERY_CONTENT_PKCS7_UNSIGNED
Il contenuto è un messaggio non firmato PKCS #7.
CERT_QUERY_CONTENT_PKCS10
Il contenuto è un messaggio PKCS #10.
CERT_QUERY_CONTENT_SERIALIZED_CERT
Il contenuto è un singolo certificato serializzato.
CERT_QUERY_CONTENT_SERIALIZED_CRL
Il contenuto è un singolo CRL serializzato.
CERT_QUERY_CONTENT_SERIALIZED_CTL
Il contenuto è un singolo CTL serializzato.
CERT_QUERY_CONTENT_SERIALIZED_STORE
Il contenuto è un archivio serializzato.

[out] pdwFormatType

Puntatore a un valore DWORD che riceve il tipo di formato effettivo del contenuto. Se queste informazioni non sono necessarie, impostare questo parametro su NULL. Il tipo di formato restituito può essere uno dei valori seguenti.

Valore Significato
CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED
Il contenuto è in formato con codifica esadecimale ASCII con prefisso "{ASN}".
CERT_QUERY_FORMAT_BASE64_ENCODED
Il contenuto è in formato con codifica Base64.
CERT_QUERY_FORMAT_BINARY
Il contenuto è in formato binario.

[out] phCertStore

Puntatore a un valore HCERTSTORE che riceve un handle in un archivio certificati che include tutti i certificati, i CRL e gli elenchi di scopi consentiti nell'oggetto.

Questo parametro riceve un handle dell'archivio certificati solo quando il parametro dwContentType riceve uno dei valori seguenti. Questo parametro riceve NULL per tutti gli altri tipi di contenuto.

CERT_QUERY_CONTENT_CERT

CERT_QUERY_CONTENT_CRL

CERT_QUERY_CONTENT_CTL

CERT_QUERY_CONTENT_PFX_AND_LOAD

CERT_QUERY_CONTENT_PKCS7_SIGNED

CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED

CERT_QUERY_CONTENT_SERIALIZED_CERT

CERT_QUERY_CONTENT_SERIALIZED_CRL

CERT_QUERY_CONTENT_SERIALIZED_CTL

CERT_QUERY_CONTENT_SERIALIZED_STORE

Al termine dell'uso dell'handle, liberarlo passando l'handle alla funzione CertCloseStore .

Se queste informazioni non sono necessarie, impostare questo parametro su NULL.

[out] phMsg

Puntatore a un valore HCRYPTMSG che riceve l'handle di un messaggio aperto.

Questo parametro riceve un handle di messaggio solo quando il parametro dwContentType riceve uno dei valori seguenti. Questo parametro riceve NULL per tutti gli altri tipi di contenuto.

CERT_QUERY_CONTENT_PKCS7_SIGNED

CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED

CERT_QUERY_CONTENT_PKCS7_UNSIGNED

Al termine dell'uso dell'handle, liberarlo passando l'handle alla funzione CryptMsgClose .

Se queste informazioni non sono necessarie, impostare questo parametro su NULL.

[out] ppvContext

Puntatore a un puntatore che riceve informazioni aggiuntive sull'oggetto.

Il formato di questi dati dipende dal valore ricevuto dal parametro dwContentType . La tabella seguente elenca il formato dei dati per il valore dwContentType specificato.

valore dwContentType Significato
CERT_QUERY_CONTENT_CERT
Questo parametro riceve un puntatore a una struttura CERT_CONTEXT . Al termine dell'uso della struttura, liberarlo passando questo puntatore alla funzione CertFreeCertificateContext .
CERT_QUERY_CONTENT_CRL
Questo parametro riceve un puntatore a una struttura CRL_CONTEXT . Al termine dell'uso della struttura, liberarlo passando questo puntatore alla funzione CertFreeCRLContext .
CERT_QUERY_CONTENT_CTL
Questo parametro riceve un puntatore a una struttura CTL_CONTEXT . Al termine dell'uso della struttura, liberarlo passando questo puntatore alla funzione CertFreeCTLContext .
CERT_QUERY_CONTENT_SERIALIZED_CERT
Questo parametro riceve un puntatore a una struttura CERT_CONTEXT . Al termine dell'uso della struttura, liberarlo passando questo puntatore alla funzione CertFreeCertificateContext .
CERT_QUERY_CONTENT_SERIALIZED_CRL
Questo parametro riceve un puntatore a una struttura CRL_CONTEXT . Al termine dell'uso della struttura, liberarlo passando questo puntatore alla funzione CertFreeCRLContext .
CERT_QUERY_CONTENT_SERIALIZED_CTL
Questo parametro riceve un puntatore a una struttura CTL_CONTEXT . Al termine dell'uso della struttura, liberarlo passando questo puntatore alla funzione CertFreeCTLContext .
 

Se queste informazioni non sono necessarie, impostare questo parametro su NULL.

Valore restituito

Se la funzione ha esito positivo, la funzione restituisce un valore diverso da zero.

Se la funzione ha esito negativo, restituisce zero. Per informazioni sugli errori estesi, chiamare GetLastError.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione wincrypt.h
Libreria Crypt32.lib
DLL Crypt32.dll

Vedi anche

Funzioni Gestione dati