/*---------------------------------------------------------------------------* Project: Horizon File: ssl_CrlStore.h Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo Company Ltd., and are protected by Federal copyright law. They may not be disclosed to third parties or copied or duplicated in any form, in whole or in part, without the prior written consent of Nintendo. $Rev: 25843 $ *---------------------------------------------------------------------------*/ #ifndef NN_SSL_SSL_CRLSTORE_H_ #define NN_SSL_SSL_CRLSTORE_H_ #include #include #ifdef __cplusplus namespace nn { namespace ssl { class Connection; /*! @brief CRLストアを表すクラスです。一つのSSL通信で使用するCRLは、そのすべてのCRLデータをCrlStoreインスタンスに登録後、そのCrlStoreインスタンスをConnectionクラスに設定することになります。 */ class CrlStore : private nn::util::NonCopyable { friend class Connection; public: /*! @brief コンストラクタです。 */ explicit CrlStore(); /*! @brief デストラクタです。 */ virtual ~CrlStore (void); /*! @brief CRLストアを初期化します。証明書を登録する前に、一度実施する必要があります。 @return 処理の結果が返ります。
*/ nn::Result Initialize(void); /*! @brief CRLストアの終了処理を行います。CRLストアの全利用が終了したら、一度実施する必要があります。 @return 処理の結果が返ります。
*/ nn::Result Finalize(void); /*! @brief CRLを登録します。複数回実行することで、複数個のCRLを登録することもできます。 @param[in] pCrlData CRLデータ。データフォーマットは、X.509 v2のCRLデータ(ASN.1定義)をDERエンコードしたバイナリデータ。 @param[in] crlDatasize pCrlDataのサイズ 。 @param[out] pCrlIdCourier 登録したCRLのID.個別に証明書の登録解除(UnRegisterCrl())を実施する際に使用します。不要な場合(個別登録解除が不要の場合。CrlStoreが解放されると、そこに登録されていたCRLは一括で登録解除されますので、その場合は個別登録解除は不要です。)は、未指定とすることができます。 @return 処理の結果が返ります。
*/ nn::Result RegisterCrl(const u8* pCrlData, size_t crlDatasize, CrlId* pCrlIdCourier=NULL); /*! @brief 内蔵CRLを登録します。複数回実行することで、複数個のCRLを登録することもできます。 @param[in] inCrlName 内蔵CRLの名称。 @param[out] pCrlIdCourier 登録したCRLのID.個別に証明書の登録解除(UnRegisterCrl())を実施する際に使用します。不要な場合(個別登録解除が不要の場合。CrlStoreが解放されると、そこに登録されていたCRLは一括で登録解除されますので、その場合は個別登録解除は不要です。)は、未指定とすることができます。 @return 処理の結果が返ります。
*/ nn::Result RegisterCrl(InternalCrl inCrlName, CrlId* pCrlIdCourier=NULL); /*! @brief CRLを登録解除します。 @param[in] certId 登録したCRLのID。RegisterCrl()の引数で取得されたものです。 @return 処理の結果が返ります。
*/ nn::Result UnRegisterCrl(CrlId certId); #ifdef NDEBUG_ENABLE /*** @brief This is for testing purposes only and is used for obtaining the id of this store. @return The id of this store.
*/ CrlStoreId GetId(){return m_crlStoreId;} #endif private: bool m_isInitialized; NN_PADDING3; CrlStoreId m_crlStoreId; /*! @brief 証明書ストアが有効なものか否かを取得します。 @return 処理の結果が返ります。
*/ bool IsValid(){return m_isInitialized;} }; } // end of namespace ssl } // end of namespace nn #endif // __cplusplus #include /*! @addtogroup nn_ssl ssl @{ @defgroup nn_ssl_CrlStore_c CrlStore (C) @brief @ref nn::ssl::CrlStore の C インタフェースモジュールです。 @{ */ /*! @struct nnsslCrlStore @brief SSLのCrlStoreを表す C の構造体です。 @brief 対応するクラス @ref nn::ssl::CrlStore を参照してください。 */ NN_UTIL_DETAIL_CLIBIMPL_DEFINE_BUFFER_CLASS(nnsslCrlStore, nn::ssl::CrlStore, 12, u32); /*! @brief 対応する C++ 関数 @ref nn::ssl::CrlStore::Initialize */ NN_EXTERN_C nnResult nnsslCrlStoreInitialize(nnsslCrlStore* this_); /*! @brief 対応する C++ 関数 @ref nn::ssl::CrlStore::Finalize */ NN_EXTERN_C nnResult nnsslCrlStoreFinalize(nnsslCrlStore* this_); /*! @brief 対応する C++ 関数 @ref nn::ssl::CrlStore::RegisterCrl を参照してください。 */ NN_EXTERN_C nnResult nnsslCrlStoreRegisterCrl(nnsslCrlStore* this_, const u8* pCrlData, size_t certDatasize, NnSslCrlId* pCrlIdCourier); /*! @brief 対応する C++ 関数 @ref nn::ssl::CrlStore::RegisterCrl を参照してください。 */ NN_EXTERN_C nnResult nnsslCrlStoreRegistByInternalCrl(nnsslCrlStore* this_, NnSslInternalCrl certId); /*! @brief 対応する C++ 関数 @ref nn::ssl::CrlStore::UnRegisterCrl を参照してください。 */ NN_EXTERN_C nnResult nnsslCrlStoreUnRegisterCrl(nnsslCrlStore* this_, NnSslCertId certId); /*! @} @} */ #endif /* NN_SSL_SSL_CRLSTORE_H_ */