CTR-Pia  5.4.3
Game Communication Engine
 全て クラス ネームスペース 関数 変数 型定義 列挙型 列挙型の値 ページ
common_SignatureSetting.h
1 /*--------------------------------------------------------------------------------*
2  Copyright (C)Nintendo All rights reserved.
3 
4  These coded instructions, statements, and computer programs contain proprietary
5  information of Nintendo and/or its licensed developers and are protected by
6  national and international copyright laws. They may not be disclosed to third
7  parties or copied or duplicated in any form, in whole or in part, without the
8  prior written consent of Nintendo.
9 
10  The content herein is highly confidential and should be handled accordingly.
11  *--------------------------------------------------------------------------------*/
12 
13 
14 #pragma once
15 
16 #include <nn/pia/common/common_Definitions.h>
17 
18 
19 namespace nn
20 {
21 namespace pia
22 {
23 namespace common
24 {
25 
26 
27 /*!
28  @brief 署名の設定情報を保持するクラスです。
29 
30  */
32 {
33 public:
34  static const uint32_t SignatureKeyDataSizeMax = 32; //!< 署名に用いられる鍵データの最大バイト数です。
35 
36  /*!
37  @brief 署名アルゴリズムの種類を表します。
38  */
39  enum Mode
40  {
41  Mode_Nothing = 0, //!< 署名無し
42  Mode_HmacMd5 //!< HMAC-MD5 による署名
43  };
44 
45 
46  /*!
47  @brief コンストラクタです。署名アルゴリズムと鍵を指定して初期化します。
48 
49  @param[in] mode 署名アルゴリズムの種類を指定します。
50  @param[in] cpKeyData 鍵データのアドレスを設定します。このインスタンスが無くなるか再設定されるまで、参照先のデータの寿命を維持する必要があります。
51  @param[in] keySize 鍵データのサイズ(バイト数)を指定します。
52  */
53  SignatureSetting(Mode mode, const void* cpKeyData, uint32_t keySize);
54 
55 
56  /*!
57  @brief コンストラクタです。鍵を指定して既定のアルゴリズム(HMAC-MD5)で初期化します。
58 
59  @param[in] cpKeyData 鍵データのアドレスを設定します。このインスタンスが無くなるか再設定されるまで、参照先のデータの寿命を維持する必要があります。
60  @param[in] keySize 鍵データのサイズ(バイト数)を指定します。
61  */
62  SignatureSetting(const void* cpKeyData, uint32_t keySize);
63 
64 
65  /*!
66  @brief コンストラクタです。署名なしとして初期化します。
67  */
69  : m_Mode(Mode_Nothing), m_cpKeyData(NULL), m_KeySize(0)
70  {
71  }
72 
73  /*!
74  @brief デストラクタです。
75  */
77  {
78  }
79 
80  /*!
81  @brief 署名の設定を指定します。
82 
83  @param[in] mode 署名アルゴリズムの種類を指定します。
84  @param[in] cpKeyData 鍵データのアドレスを設定します。このインスタンスが無くなるか再設定されるまで、参照先のデータの寿命を維持する必要があります。
85  @param[in] keySize 鍵データのサイズ(バイト数)を指定します。
86 
87  @return 正しく設定された場合、成功を表す Result が返されます。
88  @retval ResultInvalidArgument 引数の指定が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
89  */
90  Result Set(Mode mode, const void* cpKeyData, uint32_t keySize);
91 
92 
93  /*!
94  @brief 指定されている署名アルゴリズムを取得します。
95  @return 指定されている署名アルゴリズムです。
96  */
97  Mode GetMode() const
98  {
99  return m_Mode;
100  }
101 
102 
103  /*!
104  @brief 指定されている鍵データのアドレスを取得します。
105  @return 指定されている鍵データのアドレスです。
106  */
107  const void* GetKeyData() const
108  {
109  return m_cpKeyData;
110  }
111 
112 
113  /*!
114  @brief 指定されている鍵データのサイズを取得します。
115  @return 指定されている鍵データのサイズ(バイト数)です。
116  */
117  uint32_t GetKeySize() const
118  {
119  return m_KeySize;
120  }
121 
122  virtual void Trace(uint64_t flag) const;
123 
124  /*!
125  @brief 署名なしを表す署名設定クラスのインスタンスです。
126  */
128 
129 private:
130  Mode m_Mode;
131  const void* m_cpKeyData;
132  uint32_t m_KeySize;
133 };
134 }
135 }
136 } // end of namespace nn::pia::common