1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: crypto_Sha1.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: 12449 $ 14 *---------------------------------------------------------------------------*/ 15 16 /*! @file 17 @brief SHA-1 に関する API の宣言 18 19 */ 20 21 #ifndef NN_CRYPTO_CRYPTO_SHA1_H_ 22 #define NN_CRYPTO_CRYPTO_SHA1_H_ 23 24 #include <nn/crypto/crypto_HashContextBase.h> 25 #include <nn/crypto/crypto_ShaBlock512BitContext.h> 26 27 #ifdef __cplusplus 28 29 namespace nn{ namespace crypto{ 30 31 /*! 32 @brief SHA-1 計算用コンテキストオブジェクトです。 33 */ 34 class Sha1Context : public ShaBlock512BitContext 35 { 36 public: 37 static const size_t HASH_SIZE = (160/8); // 160bit 38 39 private: 40 u32 m_H[5]; 41 42 protected: 43 virtual void ProcessBlock(); 44 45 public: 46 47 /*! 48 @brief SHA-1 計算用コンテキストを作成します。初期化は行いません。 49 50 @return 無し。 51 */ Sha1Context()52 Sha1Context() {} 53 54 /*! 55 @brief SHA-1 計算用コンテキストを破棄します。 56 57 @return 無し。 58 */ ~Sha1Context()59 ~Sha1Context() {}; 60 61 /*! 62 @brief SHA-1 計算用コンテキストの初期化処理を行います。 63 64 @return 無し。 65 */ 66 virtual void Initialize(); 67 68 /*! 69 @brief SHA-1 計算用コンテキストの完了処理を行います。 70 71 @return 無し。 72 */ Finalize()73 virtual void Finalize() {} 74 75 /*! 76 @brief SHA-1 ハッシュ値を与えられたデータで更新します。 77 78 @param[in] pData 入力データへのポインタ 79 @param[in] length 入力データ長 80 81 @return 無し。 82 */ 83 virtual void Update(const void* pData, size_t length); 84 85 /*! 86 @brief SHA-1 ハッシュの長さを取得します。 87 88 @return SHA-1 ハッシュの長さ。(バイト数) 89 */ GetHashLength()90 virtual size_t GetHashLength() { return HASH_SIZE; } 91 92 /*! 93 @brief 最終的な SHA-1 ハッシュ計算結果を取得します。 94 95 @param[out] pOut SHA-1 値を格納する場所へのポインタ 96 (GetHashLength() 分のバイト数が必要です。) 97 98 @return 無し。(pOut に SHA-1 計算結果が格納されます。) 99 */ 100 virtual void GetHash(void* pOut); 101 102 }; // sizeof(Sha1Context) == 100 103 104 /*! 105 @brief SHA-1 を計算するための一連の流れをまとめたユーティリティ関数です。 106 107 Update を分割して何回も呼ぶ必要がある場合は使用できません。 108 109 @param[out] pOut SHA-1 値を格納する場所へのポインタ 110 @param[in] pData 入力データのポインタ 111 @param[in] length 入力データ長 112 113 @return 無し。(pOut に SHA-1 計算結果が入ります。) 114 */ 115 void CalculateSha1(void *pOut, const void *pData, size_t length); 116 117 }} // namespace nn::crypto 118 119 #endif // __cplusplus 120 121 122 #endif /* NN_CRYPTO_CRYPTO_SHA1_H_ */ 123