diff options
author | 2012-02-16 21:53:30 +0000 | |
---|---|---|
committer | 2012-02-16 21:53:30 +0000 | |
commit | e055a551c19a2f5e67472faaf16e1131fa36a6ce (patch) | |
tree | c610667dbedc663684ee2e763f1942c056c108db /src/lib | |
parent | a825e9730d32de2f78a6ebdd39e5956898ca150e (diff) |
Remove redundant hashing code, use hashing.h instead.
Remove overabstraction in hash.h; it's ok to hard code the
two types of hashes we have. Even adding another one would
not be very difficult. ;)
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/util/hashing.c | 44 | ||||
-rw-r--r-- | src/lib/util/hashing.h | 24 |
2 files changed, 46 insertions, 22 deletions
diff --git a/src/lib/util/hashing.c b/src/lib/util/hashing.c index 97afb184156..866cec8fc0d 100644 --- a/src/lib/util/hashing.c +++ b/src/lib/util/hashing.c @@ -38,6 +38,7 @@ ***************************************************************************/ #include "hashing.h" +#include "zlib.h" //************************************************************************** @@ -81,10 +82,12 @@ inline int char_to_hex(char c) // from_string - convert from a string //------------------------------------------------- -bool sha1_t::from_string(const char *string) +bool sha1_t::from_string(const char *string, int length) { // must be at least long enough to hold everything - if (strlen(string) < 2 * sizeof(m_raw)) + if (length == -1) + length = strlen(string); + if (length < 2 * sizeof(m_raw)) return false; // iterate through our raw buffer @@ -104,7 +107,7 @@ bool sha1_t::from_string(const char *string) // as_string - convert to a string //------------------------------------------------- -const char *sha1_t::as_string(astring &buffer) +const char *sha1_t::as_string(astring &buffer) const { buffer.reset(); for (int i = 0; i < ARRAY_LENGTH(m_raw); i++) @@ -121,10 +124,12 @@ const char *sha1_t::as_string(astring &buffer) // from_string - convert from a string //------------------------------------------------- -bool md5_t::from_string(const char *string) +bool md5_t::from_string(const char *string, int length) { // must be at least long enough to hold everything - if (strlen(string) < 2 * sizeof(m_raw)) + if (length == -1) + length = strlen(string); + if (length < 2 * sizeof(m_raw)) return false; // iterate through our raw buffer @@ -144,7 +149,7 @@ bool md5_t::from_string(const char *string) // as_string - convert to a string //------------------------------------------------- -const char *md5_t::as_string(astring &buffer) +const char *md5_t::as_string(astring &buffer) const { buffer.reset(); for (int i = 0; i < ARRAY_LENGTH(m_raw); i++) @@ -162,10 +167,12 @@ const char *md5_t::as_string(astring &buffer) // from_string - convert from a string //------------------------------------------------- -bool crc32_t::from_string(const char *string) +bool crc32_t::from_string(const char *string, int length) { // must be at least long enough to hold everything - if (strlen(string) < 2 * sizeof(m_raw)) + if (length == -1) + length = strlen(string); + if (length < 2 * sizeof(m_raw)) return false; // iterate through our raw buffer @@ -185,12 +192,23 @@ bool crc32_t::from_string(const char *string) // as_string - convert to a string //------------------------------------------------- -const char *crc32_t::as_string(astring &buffer) +const char *crc32_t::as_string(astring &buffer) const { return buffer.format("%08x", m_raw); } +//------------------------------------------------- +// append - hash a block of data, appending to +// the currently-accumulated value +//------------------------------------------------- + +void crc32_creator::append(const void *data, UINT32 length) +{ + m_accum.m_raw = crc32(m_accum, reinterpret_cast<const Bytef *>(data), length); +} + + //************************************************************************** // CRC-16 HELPERS @@ -200,10 +218,12 @@ const char *crc32_t::as_string(astring &buffer) // from_string - convert from a string //------------------------------------------------- -bool crc16_t::from_string(const char *string) +bool crc16_t::from_string(const char *string, int length) { // must be at least long enough to hold everything - if (strlen(string) < 2 * sizeof(m_raw)) + if (length == -1) + length = strlen(string); + if (length < 2 * sizeof(m_raw)) return false; // iterate through our raw buffer @@ -223,7 +243,7 @@ bool crc16_t::from_string(const char *string) // as_string - convert to a string //------------------------------------------------- -const char *crc16_t::as_string(astring &buffer) +const char *crc16_t::as_string(astring &buffer) const { return buffer.format("%04x", m_raw); } diff --git a/src/lib/util/hashing.h b/src/lib/util/hashing.h index 8bb59b9c5cc..08aeec5ac60 100644 --- a/src/lib/util/hashing.h +++ b/src/lib/util/hashing.h @@ -44,7 +44,7 @@ #include "osdcore.h" #include "astring.h" -#include "zlib.h" +//#include "zlib.h" #include "md5.h" #include "sha1.h" @@ -62,8 +62,8 @@ struct sha1_t bool operator==(const sha1_t &rhs) const { return memcmp(m_raw, rhs.m_raw, sizeof(m_raw)) == 0; } bool operator!=(const sha1_t &rhs) const { return memcmp(m_raw, rhs.m_raw, sizeof(m_raw)) != 0; } operator UINT8 *() { return m_raw; } - const char *as_string(astring &buffer); - bool from_string(const char *string); + bool from_string(const char *string, int length = -1); + const char *as_string(astring &buffer) const; UINT8 m_raw[20]; static const sha1_t null; }; @@ -113,8 +113,8 @@ struct md5_t bool operator==(const md5_t &rhs) const { return memcmp(m_raw, rhs.m_raw, sizeof(m_raw)) == 0; } bool operator!=(const md5_t &rhs) const { return memcmp(m_raw, rhs.m_raw, sizeof(m_raw)) != 0; } operator UINT8 *() { return m_raw; } - const char *as_string(astring &buffer); - bool from_string(const char *string); + bool from_string(const char *string, int length = -1); + const char *as_string(astring &buffer) const; UINT8 m_raw[16]; static const md5_t null; }; @@ -161,9 +161,11 @@ protected: struct crc32_t { bool operator==(const crc32_t &rhs) const { return m_raw == rhs.m_raw; } + bool operator!=(const crc32_t &rhs) const { return m_raw != rhs.m_raw; } + crc32_t &operator=(const UINT32 crc) { m_raw = crc; return *this; } operator UINT32() const { return m_raw; } - const char *as_string(astring &buffer); - bool from_string(const char *string); + bool from_string(const char *string, int length = -1); + const char *as_string(astring &buffer) const; UINT32 m_raw; static const crc32_t null; }; @@ -179,7 +181,7 @@ public: void reset() { m_accum.m_raw = 0; } // append data - void append(const void *data, UINT32 length) { m_accum.m_raw = crc32(m_accum, reinterpret_cast<const Bytef *>(data), length); } + void append(const void *data, UINT32 length); // finalize and compute the final digest crc32_t finish() { return m_accum; } @@ -205,9 +207,11 @@ protected: struct crc16_t { bool operator==(const crc16_t &rhs) const { return m_raw == rhs.m_raw; } + bool operator!=(const crc16_t &rhs) const { return m_raw != rhs.m_raw; } + crc16_t &operator=(const UINT16 crc) { m_raw = crc; return *this; } operator UINT16() const { return m_raw; } - const char *as_string(astring &buffer); - bool from_string(const char *string); + bool from_string(const char *string, int length = -1); + const char *as_string(astring &buffer) const; UINT16 m_raw; static const crc16_t null; }; |