次の方法で共有


CertAddCTLContextToStore 関数 (wincrypt.h)

CertAddCTLContextToStore 関数は、証明書信頼リスト (CTL) コンテキストを証明書ストアに追加します。

構文

BOOL CertAddCTLContextToStore(
  [in]            HCERTSTORE    hCertStore,
  [in]            PCCTL_CONTEXT pCtlContext,
  [in]            DWORD         dwAddDisposition,
  [out, optional] PCCTL_CONTEXT *ppStoreContext
);

パラメーター

[in] hCertStore

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

[in] pCtlContext

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

[in] dwAddDisposition

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

意味
CERT_STORE_ADD_ALWAYS
既存の一致する CTL または一致する CTL へのリンクに対してチェックを行いません。 新しい CTL は常にストアに追加されます。 これにより、ストア内で重複が発生する可能性があります。
CERT_STORE_ADD_NEW
一致する CTL または一致する CTL へのリンクが存在する場合、操作は失敗します。 GetLastError は 、CRYPT_E_EXISTSコードを返します。
CERT_STORE_ADD_NEWER
一致する CTL または一致する CTL へのリンクが存在する場合、CTL の ThisUpdate 時間が比較されます。 既存の CTL の ThisUpdate 時間が新しい CTL の ThisUpdate 時間より短い場合、古い CTL またはリンクはCERT_STORE_ADD_REPLACE_EXISTINGと同様に置き換えられます。 既存の CTL に、追加する CTL の ThisUpdate 時間以上の ThisUpdate 時間がある場合、この関数は失敗し、 GetLastError はCRYPT_E_EXISTS コードを返します。

一致する CTL または一致する CTL へのリンクがストアに見つからない場合は、新しい CTL がストアに追加されます。

CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES
アクションは、CERT_STORE_ADD_NEWERの場合と同じですが、古い CTL が置き換えられた場合、古い CTL のプロパティが置換 CTL に組み込まれます。
CERT_STORE_ADD_REPLACE_EXISTING
一致する CTL または一致する CTL へのリンクが存在する場合は、既存の CTL またはリンクが削除され、新しい CTL が作成されてストアに追加されます。 一致する CTL または一致する CTL へのリンクが存在しない場合は、1 つが追加されます。
CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES
ストアに一致する CTL が存在する場合、新しいコンテキストを作成して追加する前に、その既存のコンテキストが削除されます。 追加されたコンテキストは、既存の CTL からプロパティを継承します。
CERT_STORE_ADD_USE_EXISTING
一致する CTL または一致する CTL へのリンクが存在する場合は、その既存の CTL が使用され、新しい CTL のプロパティが追加されます。 関数は失敗しませんが、新しい CTL は追加されません。 ppCertContextNULL でない場合、既存のコンテキストが複製されます。

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

[out, optional] ppStoreContext

デコードされた CTL コンテキストへのポインターへのポインター。 この省略可能なパラメーターは、呼び出し元のアプリケーションが追加または既存の CTL のコピーを必要としないことを示す NULL にすることができます 。 コピーが作成された場合、そのコンテキストは CertFreeCTLContext を使用して解放する必要があります。

戻り値

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

関数が失敗した場合、戻り値は FALSE になります。 呼び出された関数 CertAddEncodedCRLToStore および CertSetCRLContextProperty からの エラーは、この関数に反映できます。

拡張エラー情報については、 GetLastError を呼び出します。 考えられるエラー コードの一部を次に示します。

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

注釈

CertDuplicateCTLContext を使用して CTL コンテキストが複製されません。 代わりに、新しいコピーが作成され、ストアに追加されます。 エンコードされた CTL に加えて、コンテキストのプロパティがコピーされます。

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

要件

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

こちらもご覧ください

CertAddEncodedCTLToStore

CertSetCTLContextProperty

証明書信頼リスト関数