CryptQueryObject 関数 (wincrypt.h)

大事な この API は非推奨です。 新規および既存のソフトウェアでは 、Cryptography Next Generation API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
 
CryptQueryObject 関数は、証明書、証明書失効リスト証明書信頼リストなど、暗号化 API オブジェクトの内容に関する情報を取得します。 オブジェクトは、メモリ内の構造体に存在するか、ファイルに格納できます。

構文

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

クエリを実行するオブジェクトの種類を示します。 これは、次のいずれかの値である必要があります。

意味
CERT_QUERY_OBJECT_BLOB
オブジェクトは、メモリ内の構造体に格納されます。
CERT_QUERY_OBJECT_FILE
オブジェクトはファイルに格納されます。

[in] pvObject

クエリを実行するオブジェクトへのポインター。 データ ポインターの型は、 dwObjectType パラメーターの内容によって異なります。

dwObjectType 意味
CERT_QUERY_OBJECT_BLOB
このパラメーターは、クエリを実行するオブジェクトを含む CERT_BLOBまたは同様の構造体へのポインターです。
CERT_QUERY_OBJECT_FILE
このパラメーターは、クエリを実行するファイルのパスと名前を含む null で終わる Unicode 文字列へのポインターです。

[in] dwExpectedContentTypeFlags

想定されるコンテンツ タイプを示します。 次のいずれかの値を指定できます。

意味
CERT_QUERY_CONTENT_FLAG_ALL
コンテンツには任意の種類を指定できます。 これには、CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD フラグは含まれません。

このフラグを指定すると、この関数は、適切なコンテンツ タイプが見つかるか、コンテンツ タイプが使い果たされるまで、さまざまなコンテンツ タイプを試して、オブジェクトに関する情報を取得しようとします。 これは明らかに非効率的であるため、このフラグは、コンテンツ タイプが不明な場合にのみ使用する必要があります。

CERT_QUERY_CONTENT_FLAG_CERT
コンテンツは 1 つの証明書です。
CERT_QUERY_CONTENT_FLAG_CERT_PAIR
コンテンツは 、抽象構文表記 1 (ASN.1) でエンコードされたX509_CERT_PAIR (前方、逆、または前方および逆のクロス証明書を含むエンコードされた証明書ペア) です。
CERT_QUERY_CONTENT_FLAG_CRL
コンテンツは 1 つの CRL です。
CERT_QUERY_CONTENT_FLAG_CTL
コンテンツは 1 つの CTL です。
CERT_QUERY_CONTENT_FLAG_PFX
コンテンツは PFX (PKCS #12) パケットですが、この関数では読み込まれません。 PFXImportCertStore 関数を使用して、これをストアに読み込むことができます。
CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD
コンテンツは 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 パスワードを保護できます。

 
Windows Server 2003 および Windows XP: この値はサポートされていません。
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED
コンテンツは PKCS #7 署名付きメッセージです。
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED
コンテンツは、埋め込み PKCS #7 署名付きメッセージです。
CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED
内容は PKCS #7 符号なしメッセージです。
CERT_QUERY_CONTENT_FLAG_PKCS10
内容は PKCS #10 メッセージです。
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT
コンテンツは、シリアル化された 1 つの証明書です。
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL
コンテンツはシリアル化された単一 CRL です。
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL
コンテンツは 1 つの CTL にシリアル化されます。
CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE
コンテンツはシリアル化されたストアです。

[in] dwExpectedFormatTypeFlags

返される型の予期される形式を示します。 次のいずれかの値を指定できます。

意味
CERT_QUERY_FORMAT_FLAG_ALL
コンテンツは任意の形式で返すことができます。
CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED
コンテンツは、"{ASN}" プレフィックスを使用して ASCII 16 進エンコード形式で返す必要があります。
CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED
コンテンツは Base64 エンコード形式で返す必要があります。
CERT_QUERY_FORMAT_FLAG_BINARY
コンテンツはバイナリ形式で返す必要があります。

[in] dwFlags

このパラメーターは将来使用するために予約されており、0 に設定する必要があります。

[out] pdwMsgAndCertEncodingType

メッセージで使用されるエンコードの種類を受け取る DWORD 値へのポインター。 この情報が必要ない場合は、このパラメーターを NULL に設定 します

このパラメーターは、次の値の 1 つ以上の組み合わせを受け取ることができます。

意味
PKCS_7_ASN_ENCODING
65536 (0x10000)
PKCS 7 メッセージ エンコーディングを指定します。
X509_ASN_ENCODING
1 (0x1)
X.509 証明書のエンコードを指定します。

[out] pdwContentType

コンテンツの実際の型を受け取る DWORD 値へのポインター。 この情報が必要ない場合は、このパラメーターを NULL に設定 します。 返されるコンテンツ タイプには、次のいずれかの値を指定できます。

意味
CERT_QUERY_CONTENT_CERT
コンテンツは 1 つの証明書です。
CERT_QUERY_CONTENT_CERT_PAIR
コンテンツは ASN.1 でエンコードされたX509_CERT_pairです。
CERT_QUERY_CONTENT_CRL
コンテンツは 1 つの CRL です。
CERT_QUERY_CONTENT_CTL
コンテンツは 1 つの CTL です。
CERT_QUERY_CONTENT_PFX
コンテンツは PFX (PKCS #12) パケットです。 この関数は、オブジェクトが PKCS #12 パケットであることを確認するだけです。 PKCS #12 パケットは証明書ストアに読み込まれません。
CERT_QUERY_CONTENT_PFX_AND_LOAD
コンテンツは PFX (PKCS #12) パケットであり、証明書ストアに読み込まれています。

Windows Server 2003 および Windows XP: この値はサポートされていません。

CERT_QUERY_CONTENT_PKCS7_SIGNED
コンテンツは PKCS #7 署名付きメッセージです。
CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED
コンテンツは、埋め込み PKCS #7 署名付きメッセージです。
CERT_QUERY_CONTENT_PKCS7_UNSIGNED
内容は PKCS #7 符号なしメッセージです。
CERT_QUERY_CONTENT_PKCS10
内容は PKCS #10 メッセージです。
CERT_QUERY_CONTENT_SERIALIZED_CERT
コンテンツはシリアル化された単一の証明書です。
CERT_QUERY_CONTENT_SERIALIZED_CRL
コンテンツはシリアル化された単一 CRL です。
CERT_QUERY_CONTENT_SERIALIZED_CTL
コンテンツは、シリアル化された単一の CTL です。
CERT_QUERY_CONTENT_SERIALIZED_STORE
コンテンツはシリアル化されたストアです。

[out] pdwFormatType

コンテンツの実際の形式の種類を受け取る DWORD 値へのポインター。 この情報が必要ない場合は、このパラメーターを NULL に設定 します。 返される書式の種類には、次のいずれかの値を指定できます。

意味
CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED
コンテンツは、"{ASN}" プレフィックスを持つ ASCII 16 進エンコード形式です。
CERT_QUERY_FORMAT_BASE64_ENCODED
コンテンツは Base64 エンコード形式です。
CERT_QUERY_FORMAT_BINARY
コンテンツはバイナリ形式です。

[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_QUERY_CONTENT_CERT
このパラメーターは、 CERT_CONTEXT 構造体へのポインターを受け取ります。 構造体の使用が完了したら、このポインターを CertFreeCertificateContext 関数に渡して解放します。
CERT_QUERY_CONTENT_CRL
このパラメーターは、 CRL_CONTEXT 構造体へのポインターを受け取ります。 構造体の使用が完了したら、このポインターを CertFreeCRLContext 関数に渡して解放します。
CERT_QUERY_CONTENT_CTL
このパラメーターは、 CTL_CONTEXT 構造体へのポインターを受け取ります。 構造体の使用が完了したら、このポインターを CertFreeCTLContext 関数に渡して解放します。
CERT_QUERY_CONTENT_SERIALIZED_CERT
このパラメーターは、 CERT_CONTEXT 構造体へのポインターを受け取ります。 構造体の使用が完了したら、このポインターを CertFreeCertificateContext 関数に渡して解放します。
CERT_QUERY_CONTENT_SERIALIZED_CRL
このパラメーターは、 CRL_CONTEXT 構造体へのポインターを受け取ります。 構造体の使用が完了したら、このポインターを CertFreeCRLContext 関数に渡して解放します。
CERT_QUERY_CONTENT_SERIALIZED_CTL
このパラメーターは、 CTL_CONTEXT 構造体へのポインターを受け取ります。 構造体の使用が完了したら、このポインターを CertFreeCTLContext 関数に渡して解放します。
 

この情報が必要ない場合は、このパラメーターを NULL に設定 します

戻り値

関数が成功した場合、関数は 0 以外の値を返します。

関数が失敗すると、0 が返されます。 拡張エラー情報については、 GetLastError を呼び出します。

要件

要件
サポートされている最小のクライアント Windows XP [デスクトップ アプリ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー wincrypt.h
Library Crypt32.lib
[DLL] Crypt32.dll

こちらもご覧ください

データ管理関数