CryptQueryObject-Funktion (wincrypt.h)

Wichtig Diese API ist veraltet. Neue und vorhandene Software sollte mit der Verwendung von Kryptografie-APIs der nächsten Generation beginnen. Microsoft kann diese API in zukünftigen Versionen entfernen.
 
Die CryptQueryObject-Funktion ruft Informationen über den Inhalt eines Kryptografie-API-Objekts ab, z. B. ein Zertifikat, eine Zertifikatsperrliste oder eine Zertifikatvertrauensliste. Das Objekt kann sich entweder in einer Struktur im Arbeitsspeicher oder in einer Datei befinden.

Syntax

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
);

Parameter

[in] dwObjectType

Gibt den Typ des abzufragten Objekts an. Dies muss einer der folgenden Werte sein.

Wert Bedeutung
CERT_QUERY_OBJECT_BLOB
Das Objekt wird in einer Struktur im Arbeitsspeicher gespeichert.
CERT_QUERY_OBJECT_FILE
Das Objekt wird in einer Datei gespeichert.

[in] pvObject

Ein Zeiger auf das objekt, das abgefragt werden soll. Der Typ des Datenzeigers hängt vom Inhalt des dwObjectType-Parameters ab.

dwObjectType-Wert Bedeutung
CERT_QUERY_OBJECT_BLOB
Dieser Parameter ist ein Zeiger auf eine CERT_BLOB oder eine ähnliche Struktur, die das abzufragende Objekt enthält.
CERT_QUERY_OBJECT_FILE
Dieser Parameter ist ein Zeiger auf eine Unicode-Zeichenfolge mit Null-Termin, die den Pfad und den Namen der abzufragenden Datei enthält.

[in] dwExpectedContentTypeFlags

Gibt den erwarteten Inhaltstyp an. Dies kann einer der folgenden Werte sein.

Wert Bedeutung
CERT_QUERY_CONTENT_FLAG_ALL
Der Inhalt kann ein beliebiger Typ sein. Dies schließt das flag CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD nicht ein.

Wenn dieses Flag angegeben ist, versucht diese Funktion, Informationen über das Objekt zu erhalten, und versucht verschiedene Inhaltstypen, bis der richtige Inhaltstyp gefunden oder die Inhaltstypen erschöpft sind. Dies ist offensichtlich ineffizient, sodass dieses Flag nur verwendet werden sollte, wenn der Inhaltstyp nicht bekannt ist.

CERT_QUERY_CONTENT_FLAG_CERT
Der Inhalt ist ein einzelnes Zertifikat.
CERT_QUERY_CONTENT_FLAG_CERT_PAIR
Der Inhalt ist ein ASN.1-codiertes ( Abstract Syntax Notation One ) X509_CERT_PAIR (ein codiertes Zertifikatpaar, das entweder Vorwärts-, Rückwärts- oder Vorwärts- und Umgekehrtzertifikate enthält).
CERT_QUERY_CONTENT_FLAG_CRL
Der Inhalt ist eine einzelne Zertifikatsperrliste.
CERT_QUERY_CONTENT_FLAG_CTL
Der Inhalt ist eine einzelne CTL.
CERT_QUERY_CONTENT_FLAG_PFX
Der Inhalt ist ein PFX-Paket (PKCS #12), wird aber nicht von dieser Funktion geladen. Sie können die PFXImportCertStore-Funktion verwenden, um diese in einen Speicher zu laden.
CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD
Der Inhalt ist ein PFX-Paket (PKCS #12) und wird von dieser Funktion gemäß den im folgenden Hinweis angegebenen Bedingungen geladen.
Hinweis  

Wenn das PFX-Paket ein eingebettetes Kennwort enthält, bei dem es sich nicht um eine leere Zeichenfolge oder NULL handelt, und das Kennwort nicht durch einen Active Directory-Prinzipal (AD) geschützt war, der den aufrufenden Benutzer enthält, kann diese Funktion das PFX-Paket nicht entschlüsseln. Das Paket kann jedoch entschlüsselt werden, wenn das Kennwort, das beim Erstellen des PFX-Pakets verwendet wurde, mit einem AD-Prinzipal verschlüsselt wurde und der Benutzer als Teil dieses Prinzipals über die Berechtigung zum Entschlüsseln des Kennworts verfügt. Weitere Informationen finden Sie im PvPara-Parameter und im PKCS12_PROTECT_TO_DOMAIN_SIDS-Flag der PFXExportCertStoreEx-Funktion .

Sie können PFX-Kennwörter ab Windows 8 und Windows Server 2012 für einen AD-Prinzipal schützen.

 
Windows Server 2003 und Windows XP: Dieser Wert wird nicht unterstützt.
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED
Der Inhalt ist eine mit PKCS #7 signierte Nachricht.
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED
Der Inhalt ist eine eingebettete PKCS #7 signierte Nachricht.
CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED
Der Inhalt ist eine PKCS #7-Nachricht ohne Vorzeichen.
CERT_QUERY_CONTENT_FLAG_PKCS10
Der Inhalt ist eine PKCS #10-Nachricht.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT
Der Inhalt ist ein serialisiertes einzelnes Zertifikat.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL
Der Inhalt ist eine serialisierte einzelne Zertifikatsperrliste.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL
Der Inhalt wird mit einer einzelnen CTL serialisiert.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE
Der Inhalt ist ein serialisierter Speicher.

[in] dwExpectedFormatTypeFlags

Gibt das erwartete Format des zurückgegebenen Typs an. Dies kann einer der folgenden Werte sein.

Wert Bedeutung
CERT_QUERY_FORMAT_FLAG_ALL
Der Inhalt kann in einem beliebigen Format zurückgegeben werden.
CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED
Der Inhalt sollte im HEXA-codierten ASCII-Format mit dem Präfix "{ASN}" zurückgegeben werden.
CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED
Der Inhalt sollte im Base64-codierten Format zurückgegeben werden.
CERT_QUERY_FORMAT_FLAG_BINARY
Der Inhalt sollte im Binärformat zurückgegeben werden.

[in] dwFlags

Dieser Parameter ist für die zukünftige Verwendung reserviert und muss auf 0 (null) festgelegt werden.

[out] pdwMsgAndCertEncodingType

Ein Zeiger auf einen DWORD-Wert , der den in der Nachricht verwendeten Codierungstyp empfängt. Wenn diese Informationen nicht benötigt werden, legen Sie diesen Parameter auf NULL fest.

Dieser Parameter kann eine Kombination aus einem oder mehreren der folgenden Werte empfangen.

Wert Bedeutung
PKCS_7_ASN_ENCODING
65536 (0x10000)
Gibt die PKCS 7-Nachrichtencodierung an.
X509_ASN_ENCODING
1 (0x1)
Gibt die X.509-Zertifikatcodierung an.

[out] pdwContentType

Ein Zeiger auf einen DWORD-Wert , der den tatsächlichen Typ des Inhalts empfängt. Wenn diese Informationen nicht benötigt werden, legen Sie diesen Parameter auf NULL fest. Der zurückgegebene Inhaltstyp kann einer der folgenden Werte sein.

Wert Bedeutung
CERT_QUERY_CONTENT_CERT
Der Inhalt ist ein einzelnes Zertifikat.
CERT_QUERY_CONTENT_CERT_PAIR
Der Inhalt ist ein ASN.1-codierter X509_CERT_pair.
CERT_QUERY_CONTENT_CRL
Der Inhalt ist eine einzelne Zertifikatsperrliste.
CERT_QUERY_CONTENT_CTL
Der Inhalt ist eine einzelne CTL.
CERT_QUERY_CONTENT_PFX
Der Inhalt ist ein PFX-Paket (PKCS #12). Diese Funktion überprüft nur, ob es sich bei dem Objekt um ein PKCS #12-Paket handelt. Das PKCS #12-Paket wird nicht in einen Zertifikatspeicher geladen.
CERT_QUERY_CONTENT_PFX_AND_LOAD
Der Inhalt ist ein PFX-Paket (PKCS #12) und wurde in einen Zertifikatspeicher geladen.

Windows Server 2003 und Windows XP: Dieser Wert wird nicht unterstützt.

CERT_QUERY_CONTENT_PKCS7_SIGNED
Der Inhalt ist eine PKCS #7 signierte Nachricht.
CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED
Der Inhalt ist eine eingebettete PKCS #7 signierte Nachricht.
CERT_QUERY_CONTENT_PKCS7_UNSIGNED
Der Inhalt ist eine PKCS #7-Nachricht ohne Vorzeichen.
CERT_QUERY_CONTENT_PKCS10
Der Inhalt ist eine PKCS #10-Nachricht.
CERT_QUERY_CONTENT_SERIALIZED_CERT
Der Inhalt ist ein serialisiertes einzelnes Zertifikat.
CERT_QUERY_CONTENT_SERIALIZED_CRL
Der Inhalt ist eine serialisierte einzelne Zertifikatsperrliste.
CERT_QUERY_CONTENT_SERIALIZED_CTL
Der Inhalt ist eine serialisierte einzelne CTL.
CERT_QUERY_CONTENT_SERIALIZED_STORE
Der Inhalt ist ein serialisierter Speicher.

[out] pdwFormatType

Ein Zeiger auf einen DWORD-Wert , der den tatsächlichen Formattyp des Inhalts empfängt. Wenn diese Informationen nicht benötigt werden, legen Sie diesen Parameter auf NULL fest. Der zurückgegebene Formattyp kann einer der folgenden Werte sein.

Wert Bedeutung
CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED
Der Inhalt befindet sich im ASCII-hex-codierten Format mit einem Präfix "{ASN}".
CERT_QUERY_FORMAT_BASE64_ENCODED
Der Inhalt ist im Base64-codierten Format.
CERT_QUERY_FORMAT_BINARY
Der Inhalt ist im Binärformat.

[out] phCertStore

Ein Zeiger auf einen HCERTSTORE-Wert , der ein Handle für einen Zertifikatspeicher empfängt, der alle Zertifikate, CRLs und CTLs im -Objekt enthält.

Dieser Parameter empfängt nur dann ein Zertifikatspeicherhandle, wenn der dwContentType-Parameter einen der folgenden Werte empfängt. Dieser Parameter empfängt NULL für alle anderen Inhaltstypen.

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

Wenn Sie die Verwendung des Handles abgeschlossen haben, geben Sie es frei, indem Sie das Handle an die CertCloseStore-Funktion übergeben.

Wenn diese Informationen nicht benötigt werden, legen Sie diesen Parameter auf NULL fest.

[out] phMsg

Ein Zeiger auf einen HCRYPTMSG-Wert , der das Handle einer geöffneten Nachricht empfängt.

Dieser Parameter empfängt nur ein Nachrichtenhandle, wenn der dwContentType-Parameter einen der folgenden Werte empfängt. Dieser Parameter empfängt NULL für alle anderen Inhaltstypen.

CERT_QUERY_CONTENT_PKCS7_SIGNED

CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED

CERT_QUERY_CONTENT_PKCS7_UNSIGNED

Wenn Sie die Verwendung des Handles abgeschlossen haben, geben Sie es frei, indem Sie das Handle an die Funktion CryptMsgClose übergeben.

Wenn diese Informationen nicht benötigt werden, legen Sie diesen Parameter auf NULL fest.

[out] ppvContext

Ein Zeiger auf einen Zeiger, der zusätzliche Informationen zum Objekt empfängt.

Das Format dieser Daten hängt vom Wert ab, der vom dwContentType-Parameter empfangen wird. In der folgenden Tabelle ist das Format der Daten für den angegebenen dwContentType-Wert aufgeführt.

dwContentType-Wert Bedeutung
CERT_QUERY_CONTENT_CERT
Dieser Parameter empfängt einen Zeiger auf eine CERT_CONTEXT-Struktur . Wenn Sie die Verwendung der -Struktur abgeschlossen haben, geben Sie sie frei, indem Sie diesen Zeiger an die CertFreeCertificateContext-Funktion übergeben.
CERT_QUERY_CONTENT_CRL
Dieser Parameter empfängt einen Zeiger auf eine CRL_CONTEXT-Struktur . Wenn Sie die Verwendung der -Struktur abgeschlossen haben, geben Sie sie frei, indem Sie diesen Zeiger an die CertFreeCRLContext-Funktion übergeben.
CERT_QUERY_CONTENT_CTL
Dieser Parameter empfängt einen Zeiger auf eine CTL_CONTEXT-Struktur . Wenn Sie die Verwendung der -Struktur abgeschlossen haben, geben Sie sie frei, indem Sie diesen Zeiger an die CertFreeCTLContext-Funktion übergeben.
CERT_QUERY_CONTENT_SERIALIZED_CERT
Dieser Parameter empfängt einen Zeiger auf eine CERT_CONTEXT-Struktur . Wenn Sie die Verwendung der -Struktur abgeschlossen haben, geben Sie sie frei, indem Sie diesen Zeiger an die CertFreeCertificateContext-Funktion übergeben.
CERT_QUERY_CONTENT_SERIALIZED_CRL
Dieser Parameter empfängt einen Zeiger auf eine CRL_CONTEXT-Struktur . Wenn Sie die Verwendung der -Struktur abgeschlossen haben, geben Sie sie frei, indem Sie diesen Zeiger an die CertFreeCRLContext-Funktion übergeben.
CERT_QUERY_CONTENT_SERIALIZED_CTL
Dieser Parameter empfängt einen Zeiger auf eine CTL_CONTEXT-Struktur . Wenn Sie die Verwendung der -Struktur abgeschlossen haben, geben Sie sie frei, indem Sie diesen Zeiger an die CertFreeCTLContext-Funktion übergeben.
 

Wenn diese Informationen nicht benötigt werden, legen Sie diesen Parameter auf NULL fest.

Rückgabewert

Wenn die Funktion erfolgreich ist, gibt die Funktion nonzero zurück.

Wenn die Funktion fehlschlägt, gibt sie null zurück. Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile wincrypt.h
Bibliothek Crypt32.lib
DLL Crypt32.dll

Weitere Informationen

Datenverwaltung-Funktionen