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 の一覧が含まれます。 配列の内容は、pszAccessMethodszOID_PKIX_OCSP に設定されているX509_AUTHORITY_INFO_ACCESS構造体の抽象構文表記 1 (ASN.1) でエンコードされたバイトです。

CERT_CROSS_CERT_DIST_POINTS_PROP_ID

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

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

BYTE 配列には、CryptDecodeObject 関数と lpszStuctType パラメーターのX509_CROSS_CERT_DIST_POINTS値を使用してデコードされた 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 構造体へのポインターを返します。 このプロパティは、lpszStructType パラメーターを X509_CERT_POLICIES に設定し、dwCertEncodingType パラメーターをビットごとの ORPKCS_7_ASN_ENCODINGの組み合わせに設定した CryptDecodeObject 関数X509_ASN_ENCODING使用してデコードできます。

CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID

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

CERT_SHA1_HASH_PROP_ID

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

SHA1 ハッシュを返します。 ハッシュが存在しない場合は、 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 を呼び出す前に、pvFindPara パラメーターを CERT_SMART_CARD_DATA_PROP_ID に設定し、dwFindType パラメーターを CERT_FIND_PROPERTY に設定した CertFindCertificateInStore 関数を使用して、この定数を使用してスマート カード証明書を取得できます。

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 ハッシュを返します。

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

各プロパティ識別子の詳細については、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 アプリ]
対象プラットフォーム Windows
ヘッダー wincrypt.h
Library Crypt32.lib
[DLL] Crypt32.dll

こちらもご覧ください

CERT_KEY_CONTEXT

CertCreateCertificateContext

CertSetCertificateContextProperty

CryptHashCertificate

CryptHashToBeSigned

拡張プロパティ関数