author | Michael Krelin <hacker@klever.net> | 2013-02-13 22:32:22 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2013-02-13 22:32:22 (UTC) |
commit | dd545573337e3c54ad4c2c64d72f750ad03aa2c9 (patch) (unidiff) | |
tree | edf4e4294fc20418f5590f2698b8ae9b8bb31c65 /src/eyetil.h | |
parent | d6d845ab3cdbc76943d68329aa0aaa3ddf2af21a (diff) | |
download | iii-dd545573337e3c54ad4c2c64d72f750ad03aa2c9.zip iii-dd545573337e3c54ad4c2c64d72f750ad03aa2c9.tar.gz iii-dd545573337e3c54ad4c2c64d72f750ad03aa2c9.tar.bz2 |
introduced streaming integrity digest updater
Signed-off-by: Michael Krelin <hacker@klever.net>
-rw-r--r-- | src/eyetil.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/eyetil.h b/src/eyetil.h index 7517ba6..8784cb4 100644 --- a/src/eyetil.h +++ b/src/eyetil.h | |||
@@ -65,24 +65,35 @@ template<> inline void md5_digester::update<binary_t>(const binary_t& x) { | |||
65 | 65 | ||
66 | #pragma pack(1) | 66 | #pragma pack(1) |
67 | struct block512_t { | 67 | struct block512_t { |
68 | enum { words = 512 / sizeof(uint16_t) }; | 68 | enum { words = 512 / sizeof(uint16_t) }; |
69 | uint16_t data[words]; | 69 | uint16_t data[words]; |
70 | 70 | ||
71 | inline uint8_t *dptr(size_t o) { return ((uint8_t*)this)+o; } | 71 | inline uint8_t *dptr(size_t o) { return ((uint8_t*)this)+o; } |
72 | 72 | ||
73 | static uint16_t tcpcksum(block512_t& data); | 73 | static uint16_t tcpcksum(block512_t& data); |
74 | }; | 74 | }; |
75 | #pragma pack() | 75 | #pragma pack() |
76 | 76 | ||
77 | struct integrity_digester { | ||
78 | md5_digester md5; | ||
79 | size_t data_size; | ||
80 | block512_t data; | ||
81 | |||
82 | integrity_digester() : data_size(0) { } | ||
83 | void update(const void *d,size_t s); | ||
84 | binary_t final(const std::string& ukey); | ||
85 | }; | ||
86 | |||
87 | |||
77 | class tmpdir_t { | 88 | class tmpdir_t { |
78 | public: | 89 | public: |
79 | std::string dir; | 90 | std::string dir; |
80 | 91 | ||
81 | tmpdir_t(const std::string& dt); | 92 | tmpdir_t(const std::string& dt); |
82 | ~tmpdir_t(); | 93 | ~tmpdir_t(); |
83 | 94 | ||
84 | std::string get_file(const std::string& f); | 95 | std::string get_file(const std::string& f); |
85 | }; | 96 | }; |
86 | 97 | ||
87 | class tarchive_t { | 98 | class tarchive_t { |
88 | public: | 99 | public: |