CertAddSerializedElementToStore 関数 (wincrypt.h)

CertAddSerializedElementToStore 関数は、シリアル化された証明書証明書失効リスト (CRL)、または証明書信頼リスト (CTL) 要素をストアに追加します。 シリアル化された要素には、エンコードされた証明書、CRL、または CTL とその拡張プロパティが含まれます。 拡張プロパティは証明書に関連付けられ、 証明機関によって発行される証明書の一部ではありません。 Microsoft 以外のプラットフォームで使用されている場合、拡張プロパティは証明書では使用できません。

構文

BOOL CertAddSerializedElementToStore(
  [in]  HCERTSTORE hCertStore,
  [in]  const BYTE *pbElement,
  [in]  DWORD      cbElement,
  [in]  DWORD      dwAddDisposition,
  [in]  DWORD      dwFlags,
  [in]  DWORD      dwContextTypeFlags,
  [out] DWORD      *pdwContextType,
  [out] const void **ppvContext
);

パラメーター

[in] hCertStore

作成された証明書が格納される証明書 ストア のハンドル。 hCertStoreNULL の場合、関数は拡張プロパティを使用して証明書、CRL、または CTL コンテキストのコピーを作成しますが、証明書、CRL、または CTL はどのストアにも保持されません。

[in] pbElement

シリアル化して証明書ストアに追加する証明書、CRL、または CTL 情報を含むバッファーへのポインター。

[in] cbElement

pbElement バッファーのサイズ (バイト単位)。

[in] dwAddDisposition

証明書、CRL、または CTL がストアに既に存在する場合に実行するアクションを指定します。 現在定義されている廃棄値を次の表に示します。

意味
CERT_STORE_ADD_NEW
証明書、CRL、または CTL が新しい場合は、作成され、ストアに永続化されます。 同じ証明書、CRL、または CTL が既にストアに存在する場合、操作は失敗します。 最後のエラー コードは CRYPT_E_EXISTS に設定されます。
CERT_STORE_ADD_USE_EXISTING
証明書、CRL、または CTL が新しい場合は、ストアに追加されます。 同じ証明書、CRL、または CTL が既に存在する場合は、既存の要素が使用されます。 ppvContextNULL でない場合、既存のコンテキストが複製されます。 この関数は、まだ存在しないプロパティのみを追加します。 SHA-1 および MD5 ハッシュ プロパティはコピーされません。
CERT_STORE_ADD_REPLACE_EXISTING
ストアに同じ証明書、CRL、または CTL が既に存在する場合は、新しいコンテキストを作成して追加する前に、既存の証明書、CRL、または CTL コンテキストが削除されます。
CERT_STORE_ADD_ALWAYS
同一の証明書、CRL、または CTL が既に存在するかどうかを判断するチェックは行われません。 新しい要素は常に作成されます。 これにより、ストア内で重複が発生する可能性があります。 要素がストアに既に存在するかどうかを確認するには、 CertGetCRLFromStore または CertGetSubjectCertificateFromStore を呼び出します。
CERT_STORE_ADD_NEWER
一致する CRL または CTL、または一致する CRL または CTL へのリンクが存在する場合、この関数は CRL または CTL の NotBefore 時間を比較します。 既存の CRL または CTL の NotBefore 時間が新しい要素の NotBefore 時間より短い場合、古い要素またはリンクは CERT_STORE_ADD_REPLACE_EXISTING と同じように置き換えられます。 既存の要素に追加する要素の NotBefore 時間以上の NotBefore 時間がある場合、 GetLastError 関数は失敗し、CRYPT_E_EXISTSコードが返されます。

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

CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES
アクションは、CERT_STORE_ADD_NEWERの場合と同じです。 ただし、古い CRL または CTL が置き換えられると、古い要素のプロパティが置換に組み込まれます。
CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES
ストアに一致する証明書が存在する場合、新しいコンテキストを作成して追加する前に、既存のコンテキストが削除されます。 新しく追加されたコンテキストは、既存の証明書からプロパティを継承します。

[in] dwFlags

将来使用するために予約されており、0 である必要があります。

[in] dwContextTypeFlags

追加できるコンテキストを指定します。 たとえば、証明書、CRL、または CTL を追加するには、 dwContextTypeFlagsCERT_STORE_CERTIFICATE_CONTEXT_FLAG または CERT_STORE_CRL_CONTEXT_FLAG に設定します。

現在定義されているコンテキスト型フラグを次の表に示します。

意味
CERT_STORE_ALL_CONTEXT_FLAG
任意のコンテキストを追加します。
CERT_STORE_CERTIFICATE_CONTEXT_FLAG
証明書コンテキストのみを追加します。
CERT_STORE_CRL_CONTEXT_FLAG
CRL コンテキストのみを追加します。
CERT_STORE_CTL_CONTEXT_FLAG
CTL コンテキストのみを追加します。

[out] pdwContextType

追加されたシリアル化された要素のコンテキスト型へのポインター。 これは省略可能なパラメーターであり、呼び出し元のアプリケーションがコンテキスト型を必要としないことを示す NULL にすることができます

現在定義されているコンテキスト型を次の表に示します。

意味
CERT_STORE_CERTIFICATE_CONTEXT
証明書
CERT_STORE_CRL_CONTEXT
CRL
CERT_STORE_CTL_CONTEXT
CTL

[out] ppvContext

デコードされた証明書、CRL、または CTL コンテキストへのポインターへのポインター。 これは省略可能なパラメーターであり、 NULL にすることができます。これは、呼び出し元のアプリケーションが追加または既存の証明書、CRL、または CTL のコンテキストを必要としないことを示します。

ppvContextNULL でない場合は、CERT_CONTEXT、CRL_CONTEXT、またはCTL_CONTEXTへのポインターのアドレスである必要があります。 アプリケーションがコンテキストで終了したら、証明書の 場合は CertFreeCertificateContext 、CRL の場合は CertFreeCRLContext 、CTL の場合は CertFreeCTLContext を使用してコンテキストを解放する必要があります。

戻り値

関数が成功した場合、関数は 0 以外の値を返します。

関数が失敗すると、0 が返されます。 拡張エラー情報については、 GetLastError を呼び出します。 考えられるエラー コードの一部を次に示します。

リターン コード 説明
CRYPT_E_EXISTS
dwAddDisposition パラメーターが CERT_STORE_ADD_NEW に設定されている場合、証明書、CRL、または CTL は既にストアに存在します。
E_INVALIDARG
無効な廃棄値が dwAddDisposition パラメーターで指定されました。
 

関数が失敗した場合、GetLastError は抽象構文表記 1 (ASN.1) エンコード/デコード エラーを返す可能性があります。 これらのエラーの詳細については、「 ASN.1 エンコード/デコードの戻り値」を参照してください。

要件

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

こちらもご覧ください

CertSerializeCRLStoreElement

CertSerializeCertificateStoreElement

証明書と証明書ストアのメンテナンス機能