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
作成された証明書が格納される証明書 ストア のハンドル。 hCertStore が NULL の場合、関数は拡張プロパティを使用して証明書、CRL、または CTL コンテキストのコピーを作成しますが、証明書、CRL、または CTL はどのストアにも保持されません。
[in] pbElement
シリアル化して証明書ストアに追加する証明書、CRL、または CTL 情報を含むバッファーへのポインター。
[in] cbElement
pbElement バッファーのサイズ (バイト単位)。
[in] dwAddDisposition
証明書、CRL、または CTL がストアに既に存在する場合に実行するアクションを指定します。 現在定義されている廃棄値を次の表に示します。
値 | 意味 |
---|---|
|
証明書、CRL、または CTL が新しい場合は、作成され、ストアに永続化されます。 同じ証明書、CRL、または CTL が既にストアに存在する場合、操作は失敗します。 最後のエラー コードは CRYPT_E_EXISTS に設定されます。 |
|
証明書、CRL、または CTL が新しい場合は、ストアに追加されます。 同じ証明書、CRL、または CTL が既に存在する場合は、既存の要素が使用されます。 ppvContext が NULL でない場合、既存のコンテキストが複製されます。 この関数は、まだ存在しないプロパティのみを追加します。 SHA-1 および MD5 ハッシュ プロパティはコピーされません。 |
|
ストアに同じ証明書、CRL、または CTL が既に存在する場合は、新しいコンテキストを作成して追加する前に、既存の証明書、CRL、または CTL コンテキストが削除されます。 |
|
同一の証明書、CRL、または CTL が既に存在するかどうかを判断するチェックは行われません。 新しい要素は常に作成されます。 これにより、ストア内で重複が発生する可能性があります。 要素がストアに既に存在するかどうかを確認するには、 CertGetCRLFromStore または CertGetSubjectCertificateFromStore を呼び出します。 |
|
一致する 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の場合と同じです。 ただし、古い CRL または CTL が置き換えられると、古い要素のプロパティが置換に組み込まれます。 |
|
ストアに一致する証明書が存在する場合、新しいコンテキストを作成して追加する前に、既存のコンテキストが削除されます。 新しく追加されたコンテキストは、既存の証明書からプロパティを継承します。 |
[in] dwFlags
将来使用するために予約されており、0 である必要があります。
[in] dwContextTypeFlags
追加できるコンテキストを指定します。 たとえば、証明書、CRL、または CTL を追加するには、 dwContextTypeFlags を CERT_STORE_CERTIFICATE_CONTEXT_FLAG または CERT_STORE_CRL_CONTEXT_FLAG に設定します。
現在定義されているコンテキスト型フラグを次の表に示します。
[out] pdwContextType
追加されたシリアル化された要素のコンテキスト型へのポインター。 これは省略可能なパラメーターであり、呼び出し元のアプリケーションがコンテキスト型を必要としないことを示す NULL にすることができます。
現在定義されているコンテキスト型を次の表に示します。
値 | 意味 |
---|---|
|
証明書 |
|
CRL |
|
CTL |
[out] ppvContext
デコードされた証明書、CRL、または CTL コンテキストへのポインターへのポインター。 これは省略可能なパラメーターであり、 NULL にすることができます。これは、呼び出し元のアプリケーションが追加または既存の証明書、CRL、または CTL のコンテキストを必要としないことを示します。
ppvContext が NULL でない場合は、CERT_CONTEXT、CRL_CONTEXT、またはCTL_CONTEXTへのポインターのアドレスである必要があります。 アプリケーションがコンテキストで終了したら、証明書の 場合は CertFreeCertificateContext 、CRL の場合は CertFreeCRLContext 、CTL の場合は CertFreeCTLContext を使用してコンテキストを解放する必要があります。
戻り値
関数が成功した場合、関数は 0 以外の値を返します。
関数が失敗すると、0 が返されます。 拡張エラー情報については、 GetLastError を呼び出します。 考えられるエラー コードの一部を次に示します。
リターン コード | 説明 |
---|---|
|
dwAddDisposition パラメーターが CERT_STORE_ADD_NEW に設定されている場合、証明書、CRL、または CTL は既にストアに存在します。 |
|
無効な廃棄値が dwAddDisposition パラメーターで指定されました。 |
関数が失敗した場合、GetLastError は抽象構文表記 1 (ASN.1) エンコード/デコード エラーを返す可能性があります。 これらのエラーの詳細については、「 ASN.1 エンコード/デコードの戻り値」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | wincrypt.h |
Library | Crypt32.lib |
[DLL] | Crypt32.dll |