CertSetCertificateContextProperty 関数 (wincrypt.h)

CertSetCertificateContextProperty 関数は、指定した 証明書コンテキストの拡張プロパティを設定します。

構文

BOOL CertSetCertificateContextProperty(
  [in] PCCERT_CONTEXT pCertContext,
  [in] DWORD          dwPropId,
  [in] DWORD          dwFlags,
  [in] const void     *pvData
);

パラメーター

[in] pCertContext

CERT_CONTEXT 構造体へのポインター。

[in] dwPropId

設定するプロパティ。 dwPropId の値によって、pvData パラメーターの種類と内容が決まります。 現在定義されている識別子とその関連する pvData 型は次のとおりです。

CRYPT_INTEGER_BLOB トピックでは、CRYPT_HASH_BLOBCRYPT_DATA_BLOB について説明します。
 

CERT_ACCESS_STATE_PROP_ID

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

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

CERT_AIA_URL_RETRIEVED_PROP_ID

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

CERT_ARCHIVED_KEY_HASH_PROP_ID

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

このプロパティは、暗号化されたキー 証明書コンテキストのハッシュ を保存します。

CERT_ARCHIVED_PROP_ID

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

列挙中に 証明書 がスキップされることを示します。 このプロパティ セットを持つ証明書は、特定の ハッシュ または特定のシリアル番号を持つ証明書の検索など、明示的な検索操作で引き続き見つかります。 このプロパティは、空の BLOB{0,NULL}に設定できます。

CERT_AUTHORITY_INFO_ACCESS_PROP_ID

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

CERT_AUTO_ENROLL_PROP_ID

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

自動登録を使用して証明書を登録した後に設定されるプロパティ。 pvData が指す CRYPT_DATA_BLOB 構造には、証明書が自動登録された証明書の種類の null で終わる Unicode 名が含まれます。 証明書の自動登録の後続の呼び出しでは、このプロパティがチェックされ、証明書が登録されているかどうかを確認します。

CERT_AUTO_ENROLL_RETRY_PROP_ID

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

CERT_BACKED_UP_PROP_ID

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

CERT_CA_DISABLE_CRL_PROP_ID

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

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

CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID

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

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のデータ型: CRYPT_DATA_BLOB 構造体へのポインター。

クロス証明書の場所を設定します。 この値は証明書にのみ適用され、証明書失効リスト (CRL) または証明書信頼リスト (CCTL) されません。 CRYPT_DATA_BLOB 構造体には、lpszStuctType パラメーターのX509_CROSS_CERT_DIST_POINTS値を持つ CryptEncodeObject 関数を使用してエンコードされる、Abstract Syntax Notation One (ASN.1) でエンコードされた CROSS_CERT_DIST_POINTS_INFO 構造体が含まれています。

CERT_CTL_USAGE_PROP_ID

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

CRYPT_DATA_BLOB 構造体には、ASN.1 でエンコードされた CTL_USAGE 構造体が含まれています。 この構造体は、X509_ENHANCED_KEY_USAGE値が設定された CryptEncodeObject 関数を使用してエンコードされます。

CERT_DATE_STAMP_PROP_ID

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

このプロパティは、証明書がストアに追加された時刻を設定します。

CERT_DESCRIPTION_PROP_ID

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

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

CERT_EFS_PROP_ID

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

CERT_ENHKEY_USAGE_PROP_ID

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

pvData パラメーターが、ASN.1 でエンコードされた CERT_ENHKEY_USAGE 構造体を含む CRYPT_DATA_BLOB 構造体を指していることを示すプロパティ。 この構造体は、X509_ENHANCED_KEY_USAGE値が設定された CryptEncodeObject 関数を使用してエンコードされます。

CERT_ENROLLMENT_PROP_ID

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

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のデータ型: CRYPT_DATA_BLOB 構造体へのポインター。

このプロパティは、証明書コンテキストの拡張エラー情報を含む文字列を設定します。

CERT_FORTEZZA_DATA_PROP_ID

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

CERT_FRIENDLY_NAME_PROP_ID

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

CRYPT_DATA_BLOB 構造体には、証明書の表示名が含まれています。

CERT_HASH_PROP_ID

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

このプロパティは、CertGetCertificateContextProperty 関数の呼び出しによって暗黙的に設定されます。

CERT_HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_PROP_ID

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

このプロパティは、NCryptIsKeyHandle を呼び出して、これが NCRYPT_KEY_HANDLEかどうかを判断します。 NCRYPT_KEY_HANDLEの場合は、CERT_NCRYPT_KEY_HANDLE_PROP_IDを設定します。それ以外の場合は、CERT_KEY_PROV_HANDLE_PROP_IDを設定します。

CERT_HCRYPTPROV_TRANSFER_PROP_ID

証明書に関連付けられている CAPI キーのハンドルを設定します。

CERT_IE30_RESERVED_PROP_ID

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

CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID

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

このプロパティは、この証明書の署名に使用 秘密キーに関連付けられている 公開キーMD5ハッシュ を設定します。

CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID

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

CRYPT_DATA_BLOB 構造体には、この証明書の発行者名とシリアル番号の MD5 ハッシュが含まれています。

CERT_KEY_CONTEXT_PROP_ID

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

この構造体は、証明書の秘密キーを指定します。 これには、HCRYPTPROV と秘密キーのキー指定の両方が含まれています。 hCryptProv メンバーと dwFlags 設定 詳細については、このトピックの後半の「CERT_KEY_PROV_HANDLE_PROP_ID」を参照してください。

このプロパティには、その他の CERT_KEY_CONTEXT 構造体メンバーを追加できます。 その場合は、cbSize メンバー値がそれに応じて調整されます。 cbSize メンバーは、CERT_KEY_CONTEXT 構造体のサイズに設定する必要があります。
 

CERT_KEY_IDENTIFIER_PROP_ID

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

通常、このプロパティは、CertGetCertificateContextProperty 関数の呼び出しによって暗黙的に設定されます。

CERT_KEY_PROV_HANDLE_PROP_ID

pvDataのデータ型: HCRYPTPROV 値。

証明書の秘密キーの HCRYPTPROV ハンドルが設定されます。 CERT_KEY_CONTEXT 構造体の hCryptProv メンバーが存在する場合は更新されます。 存在しない場合は、dwKeySpec 使用して作成され、CERT_KEY_PROV_INFO_PROP_IDによって初期化されます。 CERT_STORE_NO_CRYPT_RELEASE_FLAGが設定されていない場合、hCryptProv 値は、プロパティが NULL に設定されている場合、または CERT_CONTEXT 構造体の最終的な解放時に暗黙的に解放されます。

CERT_KEY_PROV_INFO_PROP_ID

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

この構造体は、証明書の秘密キーを指定します。

CERT_KEY_SPEC_PROP_ID

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

秘密キーを指定する DWORD 値。 CERT_KEY_CONTEXT 構造体の dwKeySpec メンバーが存在する場合は更新されます。 そうでない場合は、hCryptProv 0 に設定して作成されます。

CERT_MD5_HASH_PROP_ID

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

このプロパティは、CertGetCertificateContextProperty 関数の呼び出しによって暗黙的に設定されます。

CERT_NCRYPT_KEY_HANDLE_PROP_ID

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

このプロパティは、証明書の秘密キーの NCRYPT_KEY_HANDLE を設定し、dwKeySpecCERT_NCRYPT_KEY_SPECに設定します。

CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID

証明書に関連付けられている CNG キーのハンドルを設定します。

CERT_NEW_KEY_PROP_ID

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

CERT_NEXT_UPDATE_LOCATION_PROP_ID

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

CRYPT_DATA_BLOB 構造体には、X509_ALTERNATE_NAME値が設定された CryptEncodeObject 関数を使用してエンコードされた 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のデータ型: CRYPT_DATA_BLOB 構造体へのポインター。

このプロパティは、この証明書の CERT_SERVER_OCSP_RESPONSE_CONTEXT からのエンコードされた オンライン証明書状態プロトコル (OCSP) 応答を設定します。

CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID

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

このプロパティは、CertGetCertificateContextProperty 関数を呼び出すことによって暗黙的に設定されます。

Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: この識別子はサポートされていません。

CERT_PUBKEY_ALG_PARA_PROP_ID

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

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

CERT_PUBKEY_HASH_RESERVED_PROP_ID

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

CERT_PVK_FILE_PROP_ID

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

CRYPT_DATA_BLOB 構造体は、証明書の公開キーに関連付けられている秘密キーを含むファイルの名前を指定します。 CRYPT_DATA_BLOB 構造体内では、pbData メンバーは null で終わる Unicode ワイド文字列へのポインターであり、cbData メンバーは文字列の長さを示します。

CERT_RENEWAL_PROP_ID

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

このプロパティは、更新された証明書のハッシュを指定します。

CERT_REQUEST_ORIGINATOR_PROP_ID

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

CRYPT_DATA_BLOB 構造体には、証明書コンテキスト要求の配信元の DNS コンピューター名を含む null で終わる Unicode 文字列が含まれています。

CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID

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

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

CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID

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

CERT_SIGN_HASH_CNG_ALG_PROP_ID

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

このプロパティは、CertGetCertificateContextProperty 関数を呼び出すことによって暗黙的に設定されます。

Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: この識別子はサポートされていません。

CERT_SHA1_HASH_PROP_ID

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

このプロパティは、CertGetCertificateContextProperty 関数の呼び出しによって暗黙的に設定されます。

CERT_SIGNATURE_HASH_PROP_ID

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

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

CERT_SMART_CARD_DATA_PROP_ID

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

このプロパティは、スマート カード証明書コンテキストのスマート カード データ プロパティを設定します。

CERT_SMART_CARD_ROOT_INFO_PROP_ID

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

このプロパティは、スマート カードルート証明書コンテキストの information プロパティを設定します。

CERT_SOURCE_LOCATION_PROP_ID

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

CERT_SOURCE_URL_PROP_ID

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

CERT_SUBJECT_DISABLE_CRL_PROP_ID

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

CERT_SUBJECT_INFO_ACCESS_PROP_ID

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

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

CERT_SUBJECT_NAME_MD5_HASH_PROP_ID

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

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

CERT_SUBJECT_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID

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

CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID

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

このプロパティは、CertGetCertificateContextProperty 関数を呼び出すことによって暗黙的に設定されます。

Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: この識別子はサポートされていません。

CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID

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

このプロパティは、この証明書の公開キーの MD5 ハッシュを設定します。

pvData は、CRYPT_DATA_BLOB 構造体へのポインターです。

ユーザーは、CERT_FIRST_USER_PROP_ID から CERT_LAST_USER_PROP_IDまでの DWORD 値 使用して、dwPropId 型 追加を定義できます。 すべてのユーザー定義 dwPropId 型について、pvData はエンコードされた CRYPT_DATA_BLOB 構造体を指します。

[in] dwFlags

CERT_STORE_NO_CRYPT_RELEASE_FLAGは、CERT_KEY_PROV_HANDLE_PROP_IDまたは dwPropId プロパティCERT_KEY_CONTEXT_PROP_ID 設定できます。

CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG値が設定されている場合、プロバイダー/書き込みエラーはすべて無視され、キャッシュされたコンテキストのプロパティは常に設定されます。

CERT_SET_PROPERTY_INHIBIT_PERSIST_FLAGが設定されている場合、コンテキスト プロパティ セットは保持されません。

[in] pvData

dwPropIdの値によって決定されるデータ型 ポインター。

dwPropIdの場合、pvData NULL に設定すると、プロパティが削除されます。
 

戻り値

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

関数が失敗した場合、関数は FALSE返します。 拡張エラー情報については、GetLastError呼び出します。 考えられるエラー コードの 1 つは次のとおりです。

リターン コード 形容
E_INVALIDARG
このプロパティは無効です。 指定された識別子が0x0000FFFFより大きいか、CERT_KEY_CONTEXT_PROP_ID プロパティの場合、無効な cbSize メンバーが CERT_KEY_CONTEXT 構造体で指定されました。

備考

プロパティが既に存在する場合は、その古い値が置き換えられます。

コードでは、マクロを使用して、証明書コンテキストのハッシュのクラスを評価できます。 Wincrypt.h ヘッダーは、この目的のために次のマクロを定義します。 これらのマクロは、CertSetCertificateContextProperty 関数によって内部的に使用されます。

IS_CERT_HASH_PROP_ID(X)IS_PUBKEY_HASH_PROP_ID(X)IS_CHAIN_HASH_PROP_ID(X) 各マクロは、dwPropId (X) 値を入力として受け取り、ブール値に評価します。 次の表に、各マクロの TRUE 評価される dwPropId 値 を示します。

マクロ dwPropId が 場合 TRUE に評価されます
IS_CERT_HASH_PROP_ID( dwPropId)
CERT_SHA1_HASH_PROP_ID,
CERT_MD5_HASH_PROP_ID、または
CERT_SIGNATURE_HASH_PROP_ID
IS_PUBKEY_HASH_PROP_ID( dwPropId)
CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID または
CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID
IS_CHAIN_HASH_PROP_ID(dwPropId)
CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID,
CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID,
CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID、または
CERT_SUBJECT_NAME_MD5_HASH_PROP_ID
 

IS_STRONG_SIGN_PROP_ID(x) マクロは、dwPropId パラメーターに CERT_SIGN_HASH_CNG_ALG_PROP_IDCERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID、または CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID プロパティが設定されている場合、true 評価されます。

この関数を使用する例については、「例 C プログラム: 証明書のプロパティの取得と設定」を参照してください。

必要条件

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

関連項目

CERT_ALT_NAME_INFO

CERT_CONTEXT

CERT_ENHKEY_USAGE

CERT_KEY_CONTEXT

CROSS_CERT_DIST_POINTS_INFO

CRYPT_DATA_BLOB

CRYPT_HASH_BLOB

CRYPT_KEY_PROV_INFO

CTL_USAGE

CertGetCertificateContextProperty

CertSetCRLContextProperty

CryptEncodeObject

CryptHashToBeSigned

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