00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef PALUDIS_GUARD_PALUDIS_UTIL_RMD160_HH
00021 #define PALUDIS_GUARD_PALUDIS_UTIL_RMD160_HH 1
00022
00023 #include <iosfwd>
00024 #include <string>
00025 #include <inttypes.h>
00026 #include <paludis/util/attributes.hh>
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 namespace paludis
00039 {
00040
00041
00042
00043
00044
00045 class PALUDIS_VISIBLE RMD160
00046 {
00047 private:
00048 static const PALUDIS_HIDDEN uint8_t _r[80], _rp[80];
00049 static const PALUDIS_HIDDEN uint8_t _s[80], _sp[80];
00050 static const PALUDIS_HIDDEN uint32_t _k[5], _kp[5];
00051
00052 uint32_t _h[5];
00053 uint64_t _size;
00054 bool _done_one_pad;
00055
00056 void PALUDIS_HIDDEN _update(const uint8_t * const block);
00057
00058 inline int PALUDIS_HIDDEN _get(std::istream & stream);
00059
00060 public:
00061
00062
00063
00064 RMD160(std::istream & stream);
00065
00066
00067
00068
00069 std::string hexsum() const;
00070 };
00071
00072 }
00073
00074 #endif
00075