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: 30214 $ 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 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 34 @retval ResultSuccess 処理に成功しました。SSLライブラリは使用可能です。 35 @retval ResultClientProcessMaxErr 同時利用可能なクライアントプロセス最大数のプロセスがすでに利用中を表すエラー。ある程度の時間を待機することで(その間に他モジュールが @ref Finalize を実行すれば)、再実行が成功する場合があります。 36 @retval ResultIpcSessionMaxErr 同時に接続可能なIPCセッション数のセッションがすでに接続中を表すエラー。ある程度の時間を待機することで(その間に他のIPCセッションが成功すれば)、再実行が成功する場合があります。 37 @retval ResultAlreadyInitializedErr 「すでに初期化済みです」を表すエラー。SSLライブラリはすでに使用可能です。 38 @retval 上記以外 想定外のエラー(エラー内容については、@ref ssl_Result.h を参照)。 39 */ 40 Result Initialize(void); 41 42 /*! 43 @brief SSLライブラリの終了処理を実施します。SSLライブラリをリンクしているプロセスは、ライブラリ利用終了後に一度呼び出す必要があります。 44 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 45 @retval ResultSuccess 処理に成功しました。 46 @retval ResultNotInitializedErr 「初期化されていない」を表すエラー。Finalizeの実行は不要です。 47 @retval 上記以外 想定外のエラー(エラー内容については、@ref ssl_Result.h を参照)。 48 */ 49 Result Finalize(void); 50 51 //@} 52 53 //---------------------------------------- 54 //! @name 擬似乱数用関数 55 //@{ 56 57 /*! 58 @brief 乱数用エントロピーを新規に収集します。 59 ※SSLプロセスも自らエントロピーを収集しています。本関数は任意のタイミングで新たにエントロピーを収集しなおさせたい場合に利用します。 60 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 61 @retval ResultSuccess 処理に成功しました。 62 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::ssl::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 63 @retval 上記以外 想定外のエラー(エラー内容については、@ref ssl_Result.h を参照)。 64 */ 65 Result GatherRandomEntropy( void ); 66 67 /*! 68 @brief 乱数を取得します。 69 70 @param[out] pOutData 乱数を格納するバッファ。 71 @param[in] outDataSize pOutDataのサイズ。 72 73 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 74 @retval ResultSuccess 処理に成功しました。 75 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::ssl::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 76 @retval 上記以外 想定外のエラー(エラー内容については、@ref ssl_Result.h を参照)。 77 */ 78 Result GenerateRandomBytes( u8 pOutData[], size_t outDataSize ); 79 80 //@} 81 82 namespace { 83 /** 84 @brief コネクション用IPCポートの名称 85 */ 86 const char PORT_NAME_CONNECTION[] = "ssl:C"; 87 88 /** 89 @brief ポートのタイプと、ポート数を表す列挙体 90 */ 91 enum IpcPortType 92 { 93 PORT_CONNECTION, 94 NUM_OF_PORTS 95 }; 96 97 } 98 } // end of namespace ssl 99 } // end of namespace nn 100 101 #endif /*__cplusplus*/ 102 103 104 extern "C" { 105 106 /*! 107 @brief 対応する C++ 関数 @ref nn::ssl::Initialize を参照してください。 108 */ 109 nnResult nnsslInitialize(void); 110 111 /*! 112 @brief 対応する C++ 関数 @ref nn::ssl::Finalize を参照してください。 113 */ 114 nnResult nnsslFinalize(void); 115 116 /*! 117 @brief 対応する C++ 関数 @ref nn::ssl::GatherRandomEntropy を参照してください。 118 */ 119 nnResult nnsslGatherRandomEntropy( void ); 120 121 /*! 122 @brief 対応する C++ 関数 @ref nn::ssl::GenerateRandomBytes を参照してください。 123 */ 124 nnResult nnsslGenerateRandomBytes(u8 pOutData[], size_t outDataSize); 125 126 } /*extern "C"*/ 127 128 #endif /* NN_SSL_SSL_COMMON_H_ */ 129 130