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
証明書コンテキストのハッシュ
CERT_ARCHIVED_PROP_ID
pvDataのデータ型: NULL。 CertGetCertificateContextProperty 関数が true を返す場合は、指定したプロパティ ID が CERT_CONTEXTに存在します。
列挙中に証明書がスキップされたことを示します。 このプロパティ セットを持つ証明書は、特定のハッシュまたはシリアル番号を持つ証明書の検索に使用される明示的な検索操作で見つかります。 このプロパティ pvData 内のデータは関連付けされません。
CERT_AUTHORITY_INFO_ACCESS_PROP_ID
この識別子は予約されています。
CERT_AUTO_ENROLL_PROP_ID
証明書が自動登録された証明書の種類を示す、null で終わる Unicode 文字列を返します。
CERT_AUTO_ENROLL_RETRY_PROP_ID
この識別子は予約されています。
CERT_BACKED_UP_PROP_ID
この識別子は予約されています。
CERT_CA_DISABLE_CRL_PROP_ID
証明機関 (CA) によって使用される証明書 証明書失効リスト (CRL) の取得を無効にします。 CA 証明書にこのプロパティが含まれている場合は、CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID プロパティも含める必要があります。
CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID
CA 証明書によって発行 証明書に使用するオンライン証明書状態プロトコル (OCSP) URL の一覧が含まれています。 配列の内容は、pszAccessMethod が
CERT_CROSS_CERT_DIST_POINTS_PROP_ID
クロス証明書の場所。 現時点では、この識別子は証明書にのみ適用され、CRL や証明書信頼リスト (CCTL) には適用されません。
BYTE 配列には、lpszStuctType パラメーターの X509_CROSS_CERT_DIST_POINTS 値を持つ CryptDecodeObject 関数を使用してデコードされた ASN.1 でエンコードされた CROSS_CERT_DIST_POINTS_INFO 構造体が含まれています。
CERT_CTL_USAGE_PROP_ID
ASN.1 でエンコードされた CTL_USAGE 構造体を含むバイト配列を返します。
CERT_DATE_STAMP_PROP_ID
pvDataのデータ型: FILETIME 構造体へのポインター。
証明書がストアに追加された時刻。
CERT_DESCRIPTION_PROP_ID
証明書 UI によって表示されるプロパティを返します。 このプロパティを使用すると、ユーザーは証明書の使用方法を説明できます。
CERT_EFS_PROP_ID
この識別子は予約されています。
CERT_ENHKEY_USAGE_PROP_ID
ASN.1 でエンコードされた CERT_ENHKEY_USAGE 構造体を含むバイト配列を返します。 この構造体には、拡張キー使用法 オブジェクト識別子 (OID) の配列が含まれており、それぞれが証明書の有効な使用を指定します。
CERT_ENROLLMENT_PROP_ID
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
証明書コンテキストの拡張エラー情報を含む、null で終わる Unicode 文字列を返します。
CERT_FORTEZZA_DATA_PROP_ID
この識別子は予約されています。
CERT_FRIENDLY_NAME_PROP_ID
証明書の表示名を含む null で終わる Unicode 文字列を返します。
CERT_HASH_PROP_ID
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
秘密キーに関連付けられている 公開キー の MD5 ハッシュ、この証明書の署名に使用されます。
CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID
この証明書の発行者名とシリアル番号の MD5 ハッシュ。
CERT_KEY_CONTEXT_PROP_ID
pvDataのデータ型: CERT_KEY_CONTEXT 構造体へのポインター。
CERT_KEY_CONTEXT 構造体を返します。
CERT_KEY_IDENTIFIER_PROP_ID
存在しない場合は、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
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
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
この証明書のエンコードされた 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
アルゴリズム パラメーターの継承をサポートする公開キーの場合は、ASN.1 でエンコードされた PublicKey Algorithm パラメーターを返します。 Digital Signature Standard (DSS) の場合は、CryptEncodeObject 関数を使用してエンコードされたパラメーターを返します。 このプロパティは、CMS_PKCS7が定義されている場合にのみ使用されます。
CERT_PUBKEY_HASH_RESERVED_PROP_ID
この識別子は予約されています。
CERT_PVK_FILE_PROP_ID
証明書の公開キーに関連付けられている秘密キーを含むファイル名を含む、null で終わる Unicode ワイド文字列を返します。
CERT_RENEWAL_PROP_ID
更新された証明書のハッシュを返します。
CERT_REQUEST_ORIGINATOR_PROP_ID
証明書コンテキスト要求の配信元の DNS コンピューター名を含む null で終わる Unicode 文字列を返します。
CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID
コンテキストのルート証明書のアプリケーション ポリシーを含むエンコードされた 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
SHA1 ハッシュを返します。 ハッシュが存在しない場合は、CryptHashCertificate 関数を使用して計算されます。
CERT_SHA1_SHA256_HASH_PROP_ID
SHA1 ハッシュと SHA256 ハッシュの組み合わせを返します。 ハッシュが存在しない場合は、CryptHashCertificate 関数を使用して計算されます。
CERT_SHA256_HASH_PROP_ID
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
署名ハッシュを返します。 ハッシュが存在しない場合は、CryptHashToBeSigned 関数を使用して計算されます。 ハッシュの長さは、SHA の場合は 20 バイト、MD5 の場合は 16 バイトです。
CERT_SMART_CARD_DATA_PROP_ID
エンコードされたスマート カード データへのポインターを返します。 CertGetCertificateContextProperty
CERT_SMART_CARD_ROOT_INFO_PROP_ID
エンコードされた 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
証明書コンテキストのサブジェクト情報アクセス拡張機能をエンコードされた CERT_SUBJECT_INFO_ACCESS 構造体として返します。
CERT_SUBJECT_NAME_MD5_HASH_PROP_ID
証明書コンテキストのエンコードされたサブジェクト名の 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
この証明書の公開キーの MD5 ハッシュを返します。
すべてのユーザー定義プロパティ識別子について、pvData
各プロパティ識別子の詳細については、CertSetCertificateContextPropertyの dwPropId パラメーターに関するドキュメントを参照してください。
[out] pvData
dwPropIdによって決定されたデータを受け取るバッファーへのポインター
このパラメーターを NULL
[in, out] pcbData
pvData パラメーターが指すバッファーのサイズ (バイト単位) を指定する DWORD 値へのポインター。 関数から制御が戻ると、DWORD 値には、バッファーに格納されるバイト数が含まれます。
実行時にバッファーの必要なサイズを取得するには、pvData パラメーター NULL を渡し、このパラメーターが指す値を 0 に設定します。
手記
バッファーで返されるデータを処理する場合、アプリケーションは返されるデータの実際のサイズを使用する必要があります。 実際のサイズは、入力時に指定されたバッファーのサイズよりも少し小さくすることができます。 (入力では、バッファー サイズは通常、最大の出力データがバッファーに収まるように十分な大きさで指定されます)。出力時に、このパラメーターが指す変数は、バッファーにコピーされたデータの実際のサイズを反映するように更新されます。
戻り値
関数が成功した場合、関数は TRUE
関数が失敗した場合は、FALSE
考えられるエラー コードの一部を次に示します。
リターン コード | 形容 |
---|---|
CRYPT_E_NOT_FOUND | 証明書に指定されたプロパティがありません。 |
ERROR_MORE_DATA |
CryptHashCertificate
備考
プロパティは証明書内に格納されません。 通常、証明書の応答を受信した後、証明書と共にストアに保存された後、証明書に関連付けられます。 セキュリティ上の理由から、プロパティ値を保存する前に検証し、CERT_FRIENDLY_NAME_PROP_ID 値などの情報プロパティのみをユーザー ストアに保存することをお勧めします。 その他のすべてのプロパティの種類は、ローカル コンピューター ストアに保存する必要があります。
コードでは、マクロを使用して、証明書コンテキストのハッシュのクラスを評価できます。 詳細については、「CertSetCertificateContextPropertyを
例
この関数を使用する例については、「例 C プログラム: 証明書のプロパティの取得と設定 および C プログラムの例 : ストア内の証明書の一覧表示」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP [デスクトップ アプリ |UWP アプリ] |
サポートされる最小サーバー | Windows Server 2003 [デスクトップ アプリ |UWP アプリ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | wincrypt.h |
ライブラリ | Crypt32.lib |
DLL | Crypt32.dll |
関連項目
CertSetCertificateContextProperty
拡張プロパティ関数 を