次の方法で共有


CertGetCertificateContextProperty 関数 (wincrypt.h)

CertGetCertificateContextProperty 関数は、証明書コンテキストの拡張プロパティに含まれる情報を取得します。

構文

BOOL CertGetCertificateContextProperty(
  [in]      PCCERT_CONTEXT pCertContext,
  [in]      DWORD          dwPropId,
  [out]     void           *pvData,
  [in, out] DWORD          *pcbData
);

パラメーター

[in] pCertContext

取得するプロパティを含む 証明書CERT_CONTEXT 構造体へのポインター。

[in] dwPropId

取得するプロパティ。 現在定義されている識別子と、pvData で返されるデータ型を次の表に示します。

CERT_ACCESS_STATE_PROP_ID

pvDataのデータ型: DWORD 値へのポインター。

証明書への書き込み操作を永続化するかどうかを示す DWORD 値を返します。 証明書がメモリ ストア内にある場合、または読み取り専用として開かれているレジストリ ベースのストアにある場合、DWORD 値は設定されません。

CERT_AIA_URL_RETRIEVED_PROP_ID

この識別子は予約されています。

CERT_ARCHIVED_KEY_HASH_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

証明書コンテキストのハッシュ 以前に保存した暗号化キーを返します。

CERT_ARCHIVED_PROP_ID

pvDataのデータ型: NULLCertGetCertificateContextProperty 関数が true を返す場合は、指定したプロパティ ID が CERT_CONTEXTに存在します。

列挙中に証明書がスキップされたことを示します。 このプロパティ セットを持つ証明書は、特定のハッシュまたはシリアル番号を持つ証明書の検索に使用される明示的な検索操作で見つかります。 このプロパティ pvData 内のデータは関連付けされません。

CERT_AUTHORITY_INFO_ACCESS_PROP_ID

この識別子は予約されています。

CERT_AUTO_ENROLL_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

証明書が自動登録された証明書の種類を示す、null で終わる Unicode 文字列を返します。

CERT_AUTO_ENROLL_RETRY_PROP_ID

この識別子は予約されています。

CERT_BACKED_UP_PROP_ID

この識別子は予約されています。

CERT_CA_DISABLE_CRL_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

証明機関 (CA) によって使用される証明書 証明書失効リスト (CRL) の取得を無効にします。 CA 証明書にこのプロパティが含まれている場合は、CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID プロパティも含める必要があります。

CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

CA 証明書によって発行 証明書に使用するオンライン証明書状態プロトコル (OCSP) URL の一覧が含まれています。 配列の内容は、pszAccessMethod が szOID_PKIX_OCSPに設定されている X509_AUTHORITY_INFO_ACCESS 構造体の Abstract Syntax Notation One (ASN.1) でエンコードされたバイト です。

CERT_CROSS_CERT_DIST_POINTS_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

クロス証明書の場所。 現時点では、この識別子は証明書にのみ適用され、CRL や証明書信頼リスト (CCTL) には適用されません。

BYTE 配列には、lpszStuctType パラメーターの X509_CROSS_CERT_DIST_POINTS 値を持つ CryptDecodeObject 関数を使用してデコードされた ASN.1 でエンコードされた CROSS_CERT_DIST_POINTS_INFO 構造体が含まれています。

CERT_CTL_USAGE_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

ASN.1 でエンコードされた CTL_USAGE 構造体を含むバイト配列を返します。

CERT_DATE_STAMP_PROP_ID

pvDataのデータ型: FILETIME 構造体へのポインター。

証明書がストアに追加された時刻。

CERT_DESCRIPTION_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

証明書 UI によって表示されるプロパティを返します。 このプロパティを使用すると、ユーザーは証明書の使用方法を説明できます。

CERT_EFS_PROP_ID

この識別子は予約されています。

CERT_ENHKEY_USAGE_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

ASN.1 でエンコードされた CERT_ENHKEY_USAGE 構造体を含むバイト配列を返します。 この構造体には、拡張キー使用法 オブジェクト識別子 (OID) の配列が含まれており、それぞれが証明書の有効な使用を指定します。

CERT_ENROLLMENT_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

RequestID、CADNSName、CAName、DisplayName を含む保留中の要求の登録情報。 データ形式は次のように定義されます。

バイト 内容
最初の 4 バイト 保留中の要求 ID
次の 4 バイト CADNSName サイズ (終端の null 文字を含む文字単位)、その後に終わる null 文字を含む CADNSName 文字列
次の 4 バイト CAName サイズ (終端の null 文字を含む文字単位)、その後に終わる null 文字を含む CAName 文字列
次の 4 バイト DisplayName サイズ (終端の null 文字を含む文字単位)、その後に終了 null 文字を含む DisplayName 文字列

CERT_EXTENDED_ERROR_INFO_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

証明書コンテキストの拡張エラー情報を含む、null で終わる Unicode 文字列を返します。

CERT_FORTEZZA_DATA_PROP_ID

この識別子は予約されています。

CERT_FRIENDLY_NAME_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

証明書の表示名を含む null で終わる Unicode 文字列を返します。

CERT_HASH_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

SHA1 ハッシュを返します。 ハッシュが存在しない場合は、CryptHashCertificate 関数を使用して計算されます。

CERT_HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_PROP_ID

pvDataのデータ型: HCRYPTPROV_OR_NCRYPT_KEY_HANDLE データ型へのポインター。

HCRYPTPROV または選択 NCRYPT_KEY_HANDLE 返します。

CERT_HCRYPTPROV_TRANSFER_PROP_ID

証明書に関連付けられている Cryptography API (CAPI) キー ハンドルを返します。 呼び出し元はハンドルの解放を担当します。 コンテキストが解放されると解放されません。 プロパティ値は、返された後に削除されます。 CNG キーを持つコンテキストでこのプロパティを呼び出すと、CRYPT_E_NOT_FOUND が返されます。

CERT_IE30_RESERVED_PROP_ID

この識別子は予約されています。

CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

秘密キーに関連付けられている 公開キー の MD5 ハッシュ、この証明書の署名に使用されます。

CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

この証明書の発行者名とシリアル番号の MD5 ハッシュ。

CERT_KEY_CONTEXT_PROP_ID

pvDataのデータ型: CERT_KEY_CONTEXT 構造体へのポインター。

CERT_KEY_CONTEXT 構造体を返します。

CERT_KEY_IDENTIFIER_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

存在しない場合は、szOID_SUBJECT_KEY_IDENTIFIER 拡張機能を検索します。 失敗した場合、証明書の SubjectPublicKeyInfo メンバーに対して SHA1 ハッシュが実行され、識別子の値が生成されます。

CERT_KEY_PROV_HANDLE_PROP_ID

pvDataのデータ型: HCRYPTPROV 値へのポインター。

CERT_KEY_CONTEXT_PROP_IDから取得したプロバイダー ハンドルを返します。

CERT_KEY_PROV_INFO_PROP_ID

pvDataのデータ型: CRYPT_KEY_PROV_INFO 構造体へのポインター。

CRYPT_KEY_PROV_INFO 構造体へのポインターを返します。

CERT_KEY_SPEC_PROP_ID

pvDataのデータ型: DWORD 値へのポインター。

CERT_KEY_CONTEXT_PROP_IDから取得した秘密キー (存在する場合) を示す DWORD 値を返します。 それ以外の場合、CERT_KEY_PROV_INFO_PROP_IDが存在する場合は、dwKeySpecのソースになります。

CERT_MD5_HASH_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

MD5 ハッシュを返します。 ハッシュが存在しない場合は、CryptHashCertificate 関数を使用して計算されます。

CERT_NCRYPT_KEY_HANDLE_PROP_ID

pvDataのデータ型: NCRYPT_KEY_HANDLE データ型へのポインター。

必要に応じて、CERT_NCRYPT_KEY_SPEC の選択肢を返します。

CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID

証明書に関連付けられている CNG キー ハンドルを返します。 呼び出し元はハンドルの解放を担当します。 コンテキストが解放されると解放されません。 プロパティ値は、返された後に削除されます。 レガシ (CAPI) キーを持つコンテキストでこのプロパティを呼び出すと、CRYPT_E_NOT_FOUND が返されます。

CERT_NEW_KEY_PROP_ID

この識別子は予約されています。

CERT_NEXT_UPDATE_LOCATION_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

ASN.1 でエンコードされた CERT_ALT_NAME_INFO 構造体を返します。

CERT_NEXT_UPDATE_LOCATION_PROP_IDは現在、CCTL でのみ使用されています。

CERT_NO_AUTO_EXPIRE_CHECK_PROP_ID

この識別子は予約されています。

CERT_OCSP_CACHE_PREFIX_PROP_ID

この識別子は予約されています。

CERT_OCSP_RESPONSE_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

この証明書のエンコードされた OCSP 応答を返します。

CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID

pvDataのデータ型: null で終わる Unicode 文字列へのポインター。

証明書の公開キー アルゴリズムとビット長を表す L"<PUBKEY><BITLENGTH>" 文字列を返します。 次の <PUBKEY> アルゴリズムがサポートされています。

  • L"RSA" (BCRYPT_RSA_ALGORITHM)
  • L"DSA" (BCRYPT_DSA_ALGORITHM)
  • L"ECDSA" (SSL_ECDSA_ALGORITHM)

Windows 8 および Windows Server 2012: このプロパティの サポートが開始されます。

CERT_PUBKEY_ALG_PARA_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

アルゴリズム パラメーターの継承をサポートする公開キーの場合は、ASN.1 でエンコードされた PublicKey Algorithm パラメーターを返します。 Digital Signature Standard (DSS) の場合は、CryptEncodeObject 関数を使用してエンコードされたパラメーターを返します。 このプロパティは、CMS_PKCS7が定義されている場合にのみ使用されます。

CERT_PUBKEY_HASH_RESERVED_PROP_ID

この識別子は予約されています。

CERT_PVK_FILE_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

証明書の公開キーに関連付けられている秘密キーを含むファイル名を含む、null で終わる Unicode ワイド文字列を返します。

CERT_RENEWAL_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

更新された証明書のハッシュを返します。

CERT_REQUEST_ORIGINATOR_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

証明書コンテキスト要求の配信元の DNS コンピューター名を含む null で終わる Unicode 文字列を返します。

CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

コンテキストのルート証明書のアプリケーション ポリシーを含むエンコードされた CERT_POLICIES_INFO 構造体へのポインターを返します。 このプロパティをデコードするには、CryptDecodeObject 関数を使用し、lpszStructType パラメーターを X509_CERT_POLICIES に設定し、dwCertEncodingType パラメーター X509_ASN_ENCODING ビットごとの ORPKCS_7_ASN_ENCODINGの組み合わせを設定します。

CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID

この識別子は予約されています。

CERT_SHA1_HASH_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

SHA1 ハッシュを返します。 ハッシュが存在しない場合は、CryptHashCertificate 関数を使用して計算されます。

CERT_SHA1_SHA256_HASH_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、52 バイト、SHA1 ハッシュの場合は 20 バイト、SHA256 ハッシュの場合は 32 バイトです。

SHA1 ハッシュと SHA256 ハッシュの組み合わせを返します。 ハッシュが存在しない場合は、CryptHashCertificate 関数を使用して計算されます。

CERT_SHA256_HASH_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

SHA256 ハッシュを返します。 ハッシュが存在しない場合は、CryptHashCertificate 関数を使用して計算されます。

CERT_SIGN_HASH_CNG_ALG_PROP_ID

pvDataのデータ型: null で終わる Unicode 文字列へのポインター。

証明書の署名を表す L"<SIGNATURE>/<HASH>" 文字列を返します。 <SIGNATURE> 値は、CNG 公開キー アルゴリズムを識別します。 次のアルゴリズムがサポートされています。

  • L"RSA" (BCRYPT_RSA_ALGORITHM)
  • L"DSA" (BCRYPT_DSA_ALGORITHM)
  • L"ECDSA" (SSL_ECDSA_ALGORITHM)

<HASH> 値は、CNG ハッシュ アルゴリズムを識別します。 次のアルゴリズムがサポートされています。

  • L"MD5" (BCRYPT_MD5_ALGORITHM)
  • L"SHA1" (BCRYPT_SHA1_ALGORITHM)
  • L"SHA256" (BCRYPT_SHA256_ALGORITHM)
  • L"SHA384" (BCRYPT_SHA384_ALGORITHM)
  • L"SHA512" (BCRYPT_SHA512_ALGORITHM)

一般的な例を次に示します。

  • L"RSA/SHA1"
  • L"RSA/SHA256"
  • L"ECDSA/SHA256"

Windows 7 および Windows Server 2008 R2: このプロパティの サポートが開始されます。

CERT_SIGNATURE_HASH_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

署名ハッシュを返します。 ハッシュが存在しない場合は、CryptHashToBeSigned 関数を使用して計算されます。 ハッシュの長さは、SHA の場合は 20 バイト、MD5 の場合は 16 バイトです。

CERT_SMART_CARD_DATA_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

エンコードされたスマート カード データへのポインターを返します。 CertGetCertificateContextProperty呼び出す前に、この定数を使用して、CertFindCertificateInStore 関数を使用し、pvFindPara パラメーターを CERT_SMART_CARD_DATA_PROP_ID に設定し、dwFindType パラメーターを CERT_FIND_PROPERTYに設定することで、スマート カード証明書を取得できます。

CERT_SMART_CARD_ROOT_INFO_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

エンコードされた CRYPT_SMART_CARD_ROOT_INFO 構造体へのポインターを返します。

CERT_SOURCE_LOCATION_PROP_ID

この識別子は予約されています。

CERT_SOURCE_URL_PROP_ID

この識別子は予約されています。

CERT_SUBJECT_DISABLE_CRL_PROP_ID

この識別子は予約されています。

CERT_SUBJECT_INFO_ACCESS_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

証明書コンテキストのサブジェクト情報アクセス拡張機能をエンコードされた CERT_SUBJECT_INFO_ACCESS 構造体として返します。

CERT_SUBJECT_NAME_MD5_HASH_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

証明書コンテキストのエンコードされたサブジェクト名の MD5 ハッシュを返します。

CERT_SUBJECT_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID

この識別子は予約されています。

CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID

pvDataのデータ型: DWORD 値へのポインター。

証明書の公開キーの長さをビット単位で返します。

Windows 8 および Windows Server 2012: このプロパティの サポートが開始されます。

CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID

pvDataのデータ型: BYTE 値の配列へのポインター 。 この配列のサイズは、pcbData パラメーターで指定します。

この証明書の公開キーの MD5 ハッシュを返します。

すべてのユーザー定義プロパティ識別子について、pvData は、BYTE 値 配列を指します。

各プロパティ識別子の詳細については、CertSetCertificateContextPropertydwPropId パラメーターに関するドキュメントを参照してください。

[out] pvData

dwPropIdによって決定されたデータを受け取るバッファーへのポインター 。 返される構造体のメンバーによって指される構造体も、基本構造体の後に返されます。 したがって、pcbData に含まれるサイズは、多くの場合、基本構造体のサイズを超えています。

このパラメーターを NULL して、メモリ割り当てのために情報のサイズを設定できます。 詳細については、「不明な長さのデータの取得」を参照してください。

[in, out] pcbData

pvData パラメーターが指すバッファーのサイズ (バイト単位) を指定する DWORD 値へのポインター。 関数から制御が戻ると、DWORD 値には、バッファーに格納されるバイト数が含まれます。

実行時にバッファーの必要なサイズを取得するには、pvData パラメーター NULL を渡し、このパラメーターが指す値を 0 に設定します。 pvData パラメーターが NULL されず、pcbData で指定されたサイズがデータを格納するために必要なバイト数より小さい場合、関数は失敗 、GetLastErrorERROR_MORE_DATAを返し、必要なサイズは pcbData パラメーターが指す変数に配置されます。

手記

バッファーで返されるデータを処理する場合、アプリケーションは返されるデータの実際のサイズを使用する必要があります。 実際のサイズは、入力時に指定されたバッファーのサイズよりも少し小さくすることができます。 (入力では、バッファー サイズは通常、最大の出力データがバッファーに収まるように十分な大きさで指定されます)。出力時に、このパラメーターが指す変数は、バッファーにコピーされたデータの実際のサイズを反映するように更新されます。

戻り値

関数が成功した場合、関数は TRUE返します。

関数が失敗した場合は、FALSE返します。 拡張エラー情報については、GetLastError呼び出します。

考えられるエラー コードの一部を次に示します。

リターン コード 形容
CRYPT_E_NOT_FOUND 証明書に指定されたプロパティがありません。
ERROR_MORE_DATA pvData パラメーターで指定されたバッファーが、返されたデータを保持するのに十分な大きさでない場合、関数は ERROR_MORE_DATA コードを設定し、必要なバッファー サイズをバイト単位で pcbData指す変数に格納します。

CryptHashCertificate 呼び出された関数からのエラーは、この関数に伝達できます。

備考

プロパティは証明書内に格納されません。 通常、証明書の応答を受信した後、証明書と共にストアに保存された後、証明書に関連付けられます。 セキュリティ上の理由から、プロパティ値を保存する前に検証し、CERT_FRIENDLY_NAME_PROP_ID 値などの情報プロパティのみをユーザー ストアに保存することをお勧めします。 その他のすべてのプロパティの種類は、ローカル コンピューター ストアに保存する必要があります。

コードでは、マクロを使用して、証明書コンテキストのハッシュのクラスを評価できます。 詳細については、「CertSetCertificateContextPropertyを する」を参照してください。

この関数を使用する例については、「例 C プログラム: 証明書のプロパティの取得と設定 および C プログラムの例 : ストア内の証明書の一覧表示」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリ |UWP アプリ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリ |UWP アプリ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー wincrypt.h
ライブラリ Crypt32.lib
DLL Crypt32.dll

関連項目

CERT_KEY_CONTEXT

CertCreateCertificateContext

CertSetCertificateContextProperty

CryptHashCertificate

CryptHashToBeSigned

拡張プロパティ関数 を する