CryptQueryObject 関数 (wincrypt.h)
構文
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
);
パラメーター
[in] dwObjectType
クエリを実行するオブジェクトの種類を示します。 これは、次のいずれかの値である必要があります。
値 | 意味 |
---|---|
|
オブジェクトは、メモリ内の構造体に格納されます。 |
|
オブジェクトはファイルに格納されます。 |
[in] pvObject
クエリを実行するオブジェクトへのポインター。 データ ポインターの型は、 dwObjectType パラメーターの内容によって異なります。
dwObjectType 値 | 意味 |
---|---|
|
このパラメーターは、クエリを実行するオブジェクトを含む CERT_BLOBまたは同様の構造体へのポインターです。 |
|
このパラメーターは、クエリを実行するファイルのパスと名前を含む null で終わる Unicode 文字列へのポインターです。 |
[in] dwExpectedContentTypeFlags
想定されるコンテンツ タイプを示します。 次のいずれかの値を指定できます。
値 | 意味 |
---|---|
|
コンテンツには任意の種類を指定できます。 これには、CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD フラグは含まれません。
このフラグを指定すると、この関数は、適切なコンテンツ タイプが見つかるか、コンテンツ タイプが使い果たされるまで、さまざまなコンテンツ タイプを試して、オブジェクトに関する情報を取得しようとします。 これは明らかに非効率的であるため、このフラグは、コンテンツ タイプが不明な場合にのみ使用する必要があります。 |
|
コンテンツは 1 つの証明書です。 |
|
コンテンツは 、抽象構文表記 1 (ASN.1) でエンコードされたX509_CERT_PAIR (前方、逆、または前方および逆のクロス証明書を含むエンコードされた証明書ペア) です。 |
|
コンテンツは 1 つの CRL です。 |
|
コンテンツは 1 つの CTL です。 |
|
コンテンツは PFX (PKCS #12) パケットですが、この関数では読み込まれません。 PFXImportCertStore 関数を使用して、これをストアに読み込むことができます。 |
|
コンテンツは PFX (PKCS #12) パケットであり、次の注で指定された条件に従ってこの関数によって読み込まれます。
注
PFX パケットに空の文字列または NULL ではない埋め込みパスワードが含まれており、呼び出し元のユーザーを含む Active Directory (AD) プリンシパルでパスワードが保護されていない場合、この関数は PFX パケットの暗号化を解除できません。 ただし、PFX パケットの作成時に使用されたパスワードが AD プリンシパルに暗号化され、そのプリンシパルの一部としてユーザーがパスワードを復号化するアクセス許可を持っている場合は、パケットを復号化できます。 詳細については、pvPara パラメーターと PFXExportCertStoreEx 関数のPKCS12_PROTECT_TO_DOMAIN_SIDS フラグを参照してください。 Windows 8とWindows Server 2012で始まる AD プリンシパルに対する PFX パスワードを保護できます。 |
|
コンテンツは PKCS #7 署名付きメッセージです。 |
|
コンテンツは、埋め込み PKCS #7 署名付きメッセージです。 |
|
内容は PKCS #7 符号なしメッセージです。 |
|
内容は PKCS #10 メッセージです。 |
|
コンテンツは、シリアル化された 1 つの証明書です。 |
|
コンテンツはシリアル化された単一 CRL です。 |
|
コンテンツは 1 つの CTL にシリアル化されます。 |
|
コンテンツはシリアル化されたストアです。 |
[in] dwExpectedFormatTypeFlags
返される型の予期される形式を示します。 次のいずれかの値を指定できます。
値 | 意味 |
---|---|
|
コンテンツは任意の形式で返すことができます。 |
|
コンテンツは、"{ASN}" プレフィックスを使用して ASCII 16 進エンコード形式で返す必要があります。 |
|
コンテンツは Base64 エンコード形式で返す必要があります。 |
|
コンテンツはバイナリ形式で返す必要があります。 |
[in] dwFlags
このパラメーターは将来使用するために予約されており、0 に設定する必要があります。
[out] pdwMsgAndCertEncodingType
メッセージで使用されるエンコードの種類を受け取る DWORD 値へのポインター。 この情報が必要ない場合は、このパラメーターを NULL に設定 します。
このパラメーターは、次の値の 1 つ以上の組み合わせを受け取ることができます。
値 | 意味 |
---|---|
|
PKCS 7 メッセージ エンコーディングを指定します。 |
|
X.509 証明書のエンコードを指定します。 |
[out] pdwContentType
コンテンツの実際の型を受け取る DWORD 値へのポインター。 この情報が必要ない場合は、このパラメーターを NULL に設定 します。 返されるコンテンツ タイプには、次のいずれかの値を指定できます。
値 | 意味 |
---|---|
|
コンテンツは 1 つの証明書です。 |
|
コンテンツは ASN.1 でエンコードされたX509_CERT_pairです。 |
|
コンテンツは 1 つの CRL です。 |
|
コンテンツは 1 つの CTL です。 |
|
コンテンツは PFX (PKCS #12) パケットです。 この関数は、オブジェクトが PKCS #12 パケットであることを確認するだけです。 PKCS #12 パケットは証明書ストアに読み込まれません。 |
|
コンテンツは PFX (PKCS #12) パケットであり、証明書ストアに読み込まれています。
Windows Server 2003 および Windows XP: この値はサポートされていません。 |
|
コンテンツは PKCS #7 署名付きメッセージです。 |
|
コンテンツは、埋め込み PKCS #7 署名付きメッセージです。 |
|
内容は PKCS #7 符号なしメッセージです。 |
|
内容は PKCS #10 メッセージです。 |
|
コンテンツはシリアル化された単一の証明書です。 |
|
コンテンツはシリアル化された単一 CRL です。 |
|
コンテンツは、シリアル化された単一の CTL です。 |
|
コンテンツはシリアル化されたストアです。 |
[out] pdwFormatType
コンテンツの実際の形式の種類を受け取る DWORD 値へのポインター。 この情報が必要ない場合は、このパラメーターを NULL に設定 します。 返される書式の種類には、次のいずれかの値を指定できます。
値 | 意味 |
---|---|
|
コンテンツは、"{ASN}" プレフィックスを持つ ASCII 16 進エンコード形式です。 |
|
コンテンツは Base64 エンコード形式です。 |
|
コンテンツはバイナリ形式です。 |
[out] phCertStore
オブジェクト内のすべての証明書、CRL、および CCTL を含む証明書ストアへのハンドルを受け取る HCERTSTORE 値へのポインター。
このパラメーターは、 dwContentType パラメーターが次のいずれかの値を受け取った場合にのみ、証明書ストア ハンドルを受け取ります。 このパラメーターは、他のすべてのコンテンツ タイプに 対して NULL を 受け取ります。
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
ハンドルの使用が完了したら、ハンドルを CertCloseStore 関数に渡して解放します。
この情報が必要ない場合は、このパラメーターを NULL に設定 します。
[out] phMsg
開かれたメッセージのハンドルを受け取る HCRYPTMSG 値へのポインター。
このパラメーターは、 dwContentType パラメーターが次のいずれかの値を受け取った場合にのみメッセージ ハンドルを受け取ります。 このパラメーターは、他のすべてのコンテンツ タイプに 対して NULL を 受け取ります。
CERT_QUERY_CONTENT_PKCS7_SIGNED
CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED
CERT_QUERY_CONTENT_PKCS7_UNSIGNED
ハンドルの使用が完了したら、ハンドルを CryptMsgClose 関数に渡して解放します。
この情報が必要ない場合は、このパラメーターを NULL に設定 します。
[out] ppvContext
オブジェクトに関する追加情報を受け取るポインターへのポインター。
このデータの形式は、 dwContentType パラメーターによって受け取る値によって異なります。 次の表に、指定した dwContentType 値のデータの形式を示します。
dwContentType 値 | 意味 |
---|---|
|
このパラメーターは、 CERT_CONTEXT 構造体へのポインターを受け取ります。 構造体の使用が完了したら、このポインターを CertFreeCertificateContext 関数に渡して解放します。 |
|
このパラメーターは、 CRL_CONTEXT 構造体へのポインターを受け取ります。 構造体の使用が完了したら、このポインターを CertFreeCRLContext 関数に渡して解放します。 |
|
このパラメーターは、 CTL_CONTEXT 構造体へのポインターを受け取ります。 構造体の使用が完了したら、このポインターを CertFreeCTLContext 関数に渡して解放します。 |
|
このパラメーターは、 CERT_CONTEXT 構造体へのポインターを受け取ります。 構造体の使用が完了したら、このポインターを CertFreeCertificateContext 関数に渡して解放します。 |
|
このパラメーターは、 CRL_CONTEXT 構造体へのポインターを受け取ります。 構造体の使用が完了したら、このポインターを CertFreeCRLContext 関数に渡して解放します。 |
|
このパラメーターは、 CTL_CONTEXT 構造体へのポインターを受け取ります。 構造体の使用が完了したら、このポインターを CertFreeCTLContext 関数に渡して解放します。 |
この情報が必要ない場合は、このパラメーターを NULL に設定 します。
戻り値
関数が成功した場合、関数は 0 以外の値を返します。
関数が失敗すると、0 が返されます。 拡張エラー情報については、 GetLastError を呼び出します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | wincrypt.h |
Library | Crypt32.lib |
[DLL] | Crypt32.dll |