From: Aki Tuomi Date: Mon, 27 May 2013 09:17:13 +0000 (+0300) Subject: Changed to use PolarSSL md5 hashing X-Git-Tag: auth-3.3-rc1~1^2~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=62ac758d390a8bd70208afd4270fd8893c19becc;p=pdns Changed to use PolarSSL md5 hashing --- diff --git a/pdns/md5.hh b/pdns/md5.hh index d559a4ff5..46b47f9c3 100644 --- a/pdns/md5.hh +++ b/pdns/md5.hh @@ -3,32 +3,37 @@ #include #include +#ifdef HAVE_LIBPOLARSSLSSL +#include +#else +#include "ext/polarssl-1.1.2/include/polarssl/md5.h" +#endif + class MD5Summer { public: - MD5Summer(); - void feed(const std::string &str); - void feed(const char* ptr, size_t len); - const std::string get() const; - - struct md5_context - { - uint32_t total[2]; - uint32_t state[4]; - uint8_t buffer[64]; + MD5Summer() { md5_starts(&d_context); }; + void feed(const std::string &str) { feed(str.c_str(), str.length()); } + void feed(const char* ptr, size_t len) { md5_update(&d_context, reinterpret_cast(ptr), len); }; + const std::string get() const { + md5_context ctx2; + unsigned char result[16] = {0}; + ctx2=d_context; + md5_finish(&ctx2, result); + return std::string(result, result + sizeof result); }; - private: MD5Summer(const MD5Summer&); MD5Summer& operator=(const MD5Summer&); - struct md5_context d_context; + + md5_context d_context; }; inline std::string pdns_md5sum(const std::string& input) { - MD5Summer md5; - md5.feed(input); - return md5.get(); + unsigned char result[16] = {0}; + md5(reinterpret_cast(input.c_str()), input.length(), result); + return std::string(result, result + sizeof result); } #endif /* md5.h */