CertAddCertificateContextToStore 関数 (wincrypt.h)

CertAddCertificateContextToStore 関数は、証明書コンテキスト証明書ストアに追加します。

構文

BOOL CertAddCertificateContextToStore(
  [in]            HCERTSTORE     hCertStore,
  [in]            PCCERT_CONTEXT pCertContext,
  [in]            DWORD          dwAddDisposition,
  [out, optional] PCCERT_CONTEXT *ppStoreContext
);

パラメーター

[in] hCertStore

証明書ストアのハンドル。

[in] pCertContext

ストアに追加する CERT_CONTEXT 構造体へのポインター。

[in] dwAddDisposition

一致する証明書または一致する証明書へのリンクがストアに既に存在する場合に実行するアクションを指定します。 現在定義されている廃棄値とその用途は次のとおりです。

意味
CERT_STORE_ADD_ALWAYS
関数は、既存の一致する証明書または一致する証明書へのリンクに対してチェックを行いません。 新しい証明書は常にストアに追加されます。 これにより、ストア内で重複が発生する可能性があります。
CERT_STORE_ADD_NEW
一致する証明書または一致する証明書へのリンクが存在する場合、操作は失敗します。 GetLastError は 、CRYPT_E_EXISTSコードを返します。
CERT_STORE_ADD_NEWER
一致する証明書または一致する証明書へのリンクが存在し、既存のコンテキストの NotBefore 時間が追加される新しいコンテキストの NotBefore 時間以上である場合、操作は失敗し、 GetLastError は CRYPT_E_EXISTS コードを返します。

既存のコンテキストの NotBefore 時間が、追加される新しいコンテキストの NotBefore 時間より短い場合、既存の証明書またはリンクが削除され、新しい証明書が作成されてストアに追加されます。 一致する証明書または一致する証明書へのリンクが存在しない場合は、新しいリンクが追加されます。

証明書失効リスト (CRL) または証明書信頼リスト (CCTL) が比較されている場合、ThisUpdate 時間が使用されます。

CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES
一致する証明書または一致する証明書へのリンクが存在し、既存のコンテキストの NotBefore 時間が追加される新しいコンテキストの NotBefore 時間以上である場合、操作は失敗し、 GetLastError は CRYPT_E_EXISTS コードを返します。

既存のコンテキストの NotBefore 時間が追加される新しいコンテキストの NotBefore 時間よりも短い場合、新しいコンテキストを作成して追加する前に既存のコンテキストが削除されます。 新しく追加されたコンテキストは、既存の証明書からプロパティを継承します。

CRL または CCTL が比較されている場合は、ThisUpdate 時間が使用されます。

CERT_STORE_ADD_REPLACE_EXISTING
一致する証明書へのリンクが存在する場合、その既存の証明書またはリンクが削除され、新しい証明書が作成されてストアに追加されます。 一致する証明書または一致する証明書へのリンクが存在しない場合は、新しいリンクが追加されます。
CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES
ストアに一致する証明書が存在する場合、既存のコンテキストは置き換えられません。 既存のコンテキストは、新しい証明書からプロパティを継承します。
CERT_STORE_ADD_USE_EXISTING
一致する証明書または一致する証明書へのリンクが存在する場合は、その既存の証明書またはリンクが使用され、新しい証明書のプロパティが追加されます。 関数は失敗しませんが、新しいコンテキストは追加されません。 pCertContextNULL でない場合、既存のコンテキストが複製されます。

一致する証明書または一致する証明書へのリンクが存在しない場合は、新しい証明書が追加されます。

[out, optional] ppStoreContext

ストアに追加された証明書で作成されるコピーへのポインターへのポインター。

ppStoreContext パラメーターは NULL にすることができ、呼び出し元のアプリケーションが追加された証明書のコピーを必要としないことを示します。 コピーが作成された場合は、 CertFreeCertificateContext を使用してコピーを解放する必要があります。

戻り値

関数が成功した場合、戻り値は TRUE になります

関数が失敗した場合、戻り値は FALSE になります。 拡張エラー情報については、 GetLastError を呼び出します。 考えられるエラー コードの一部を次に示します。

リターン コード 説明
CRYPT_E_EXISTS
この値は、CERT_STORE_ADD_NEWが設定されていて、証明書が既にストアに存在する場合、またはCERT_STORE_ADD_NEWERが設定されていて、追加する証明書の NotBefore 日付以上の NotBefore 日付を持つ証明書がストアに存在する場合に返されます。
E_INVALIDARG
無効な処理値が dwAddDisposition パラメーターで指定されました。
 

呼び出された関数 CertAddEncodedCertificateToStore および CertSetCertificateContextProperty からのエラーは、この関数に反映できます。

注釈

証明書 コンテキスト は、 CertDuplicateCertificateContext を使用して複製されません。 代わりに、関数はコンテキストの新しいコピーを作成し、ストアに追加 します

エンコードされた証明書に加えて、 CertDuplicateCertificateContext は、CERT_KEY_PROV_HANDLE_PROP_IDプロパティとCERT_KEY_CONTEXT_PROP_IDプロパティを除き、コンテキストのプロパティもコピーします。

証明書ストアから証明書コンテキストを削除するには、 CertDeleteCertificateFromStore 関数を使用します。

メモ 証明書コンテキストの順序は、ストア内で保持されない場合があります。 特定の証明書にアクセスするには、ストア内の証明書を反復処理する必要があります。
 

要件

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

こちらもご覧ください

CertAddEncodedCertificateToStore

CertSetCertificateContextProperty

証明書関数