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_HASH_BLOBCRYPT_DATA_BLOBについては、CRYPT_INTEGER_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 の一覧が含まれます。 配列の内容は、pszAccessMethodszOID_PKIX_OCSPに設定されているX509_AUTHORITY_INFO_ACCESS構造体の抽象構文表記 1 (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 関数を使用してエンコードされた抽象構文表記 1 (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が設定されていない場合、プロパティが NULL に設定されている場合、またはCERT_CONTEXT構造体の最終的な解放時に、hCryptProv 値が暗黙的に解放されます。

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 アルゴリズム パラメーターが含まれています。 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 構造体へのポインターを返します。 このプロパティは、lpszStructType パラメーターを X509_CERT_POLICIES に設定し、dwCertEncodingType パラメーターをビットごとのORPKCS_7_ASN_ENCODINGの組み合わせに設定X509_ASN_ENCODING CryptDecodeObject 関数を使用してデコードできます。

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 の場合、pvDataNULL に設定すると、 プロパティが削除されます。
 

戻り値

関数が成功した場合、関数は 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
 

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

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

要件

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

拡張プロパティ関数