1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: ssl_Common.h 4 5 Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 $Rev: 19716 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_SSL_SSL_COMMON_H_ 17 #define NN_SSL_SSL_COMMON_H_ 18 19 #include <nn/Result.h> 20 #include <nn/Handle.h> 21 22 #ifdef __cplusplus 23 24 namespace nn { 25 namespace ssl { 26 //---------------------------------------- 27 //! @name ライブラリ全体の初期化、終了処理 28 //@{ 29 30 31 /*! 32 @brief SSLライブラリの初期化を実施します。SSLライブラリをリンクしているプロセスは、ライブラリ利用前に一度呼び出す必要があります。 33 @return 処理の結果が返ります。<BR> 34 @retval Description==ER_ALREADY_INITIALIZED 「すでに初期化済み」を表すエラー。 35 */ 36 Result Initialize(void); 37 38 /*! 39 @brief SSLライブラリの終了処理を実施します。SSLライブラリをリンクしているプロセスは、ライブラリ利用終了後に一度呼び出す必要があります。 40 @return 処理の結果が返ります。<BR> 41 @retval Description==ER_NOT_INITIALIZED 「初期化されていない」を表すエラー。 42 */ 43 Result Finalize(void); 44 45 //@} 46 47 //---------------------------------------- 48 //! @name 擬似乱数用関数 49 //@{ 50 51 /*! 52 @brief 乱数用エントロピーを新規に収集します。 53 ※SSLプロセスも自らエントロピーを収集しています。本関数は任意のタイミングで新たにエントロピーを収集しなおさせたい場合に利用します。 54 @return 処理の結果が返ります。<BR> 55 */ 56 Result GatherRandomEntropy( void ); 57 58 /*! 59 @brief 乱数を取得します。 60 61 @param[out] pOutData 乱数を格納するバッファ。 62 @param[in] outDataSize pOutDataのサイズ。 63 64 @return 処理の結果が返ります。<BR> 65 */ 66 Result GenerateRandomBytes( u8 pOutData[], size_t outDataSize ); 67 68 //@} 69 70 namespace { 71 /** 72 @brief コネクション用IPCポートの名称 73 */ 74 const char PORT_NAME_CONNECTION[] = "ssl:C"; 75 76 /** 77 @brief ポートのタイプと、ポート数を表す列挙体 78 */ 79 enum IpcPortType 80 { 81 PORT_CONNECTION, 82 NUM_OF_PORTS 83 }; 84 85 } 86 } // end of namespace ssl 87 } // end of namespace nn 88 89 #endif /*__cplusplus*/ 90 91 92 extern "C" { 93 94 /*! 95 @brief 対応する C++ 関数 @ref nn::ssl::Initialize を参照してください。 96 */ 97 nnResult nnsslInitialize(void); 98 99 /*! 100 @brief 対応する C++ 関数 @ref nn::ssl::Finalize を参照してください。 101 */ 102 nnResult nnsslFinalize(void); 103 104 /*! 105 @brief 対応する C++ 関数 @ref nn::ssl::GatherRandomEntropy を参照してください。 106 */ 107 nnResult nnsslGatherRandomEntropy( void ); 108 109 /*! 110 @brief 対応する C++ 関数 @ref nn::ssl::GenerateRandomBytes を参照してください。 111 */ 112 nnResult nnsslGenerateRandomBytes(u8 pOutData[], size_t outDataSize); 113 114 } /*extern "C"*/ 115 116 #endif /* NN_SSL_SSL_COMMON_H_ */ 117 118