Use nettle rather then openssl for MD5 digesting.
authorCarl Hetherington <cth@carlh.net>
Mon, 13 Jun 2016 11:23:37 +0000 (12:23 +0100)
committerCarl Hetherington <cth@carlh.net>
Mon, 13 Jun 2016 11:23:37 +0000 (12:23 +0100)
src/lib/digester.cc
src/lib/digester.h
src/lib/wscript
wscript

index 2d25d41d194c3b1c017fb6b878de9230113b9fa0..66e617de81d371c0d8eaf0196569920d5aac45fe 100644 (file)
 
 */
 
-#include <iomanip>
-#include <openssl/md5.h>
 #include "digester.h"
 #include "safe_stringstream.h"
+#include <nettle/md5.h>
+#include <iomanip>
 
 using std::string;
 using std::hex;
@@ -30,7 +30,7 @@ using std::setw;
 
 Digester::Digester ()
 {
-       MD5_Init (&_context);
+       md5_init (&_context);
 }
 
 Digester::~Digester ()
@@ -41,24 +41,24 @@ Digester::~Digester ()
 void
 Digester::add (void const * data, size_t size)
 {
-       MD5_Update (&_context, data, size);
+       md5_update (&_context, size, reinterpret_cast<uint8_t const *> (data));
 }
 
 void
 Digester::add (string const & s)
 {
-       add (s.c_str (), s.length ());
+       add (s.c_str(), s.length());
 }
 
 string
 Digester::get () const
 {
        if (!_digest) {
-               unsigned char digest[MD5_DIGEST_LENGTH];
-               MD5_Final (digest, &_context);
+               unsigned char digest[MD5_DIGEST_SIZE];
+               md5_digest (&_context, MD5_DIGEST_SIZE, digest);
 
                SafeStringStream s;
-               for (int i = 0; i < MD5_DIGEST_LENGTH; ++i) {
+               for (int i = 0; i < MD5_DIGEST_SIZE; ++i) {
                        s << hex << setfill('0') << setw(2) << ((int) digest[i]);
                }
 
index 92eb5faa3bc6684267b91711339f6e2f3be53b87..bec1f6416c02e42096c15691ae8eb595731362ee 100644 (file)
@@ -18,7 +18,7 @@
 
 */
 
-#include <openssl/md5.h>
+#include <nettle/md5.h>
 #include <boost/noncopyable.hpp>
 #include <boost/optional.hpp>
 #include <string>
@@ -41,6 +41,6 @@ public:
        std::string get () const;
 
 private:
-       mutable MD5_CTX _context;
+       mutable md5_ctx _context;
        mutable boost::optional<std::string> _digest;
 };
index fcbccf2b7cbbe59c7c5fbc0785533722e29d965c..22d8c4477202940aa8bdc8bcc447e35f6c512140 100644 (file)
@@ -157,7 +157,7 @@ def build(bld):
                  AVCODEC AVUTIL AVFORMAT AVFILTER SWSCALE
                  BOOST_FILESYSTEM BOOST_THREAD BOOST_DATETIME BOOST_SIGNALS2 BOOST_REGEX
                  SAMPLERATE POSTPROC TIFF MAGICK SSH DCP CXML GLIB LZMA XML++
-                 CURL ZIP FONTCONFIG PANGOMM CAIROMM XMLSEC SUB ICU
+                 CURL ZIP FONTCONFIG PANGOMM CAIROMM XMLSEC SUB ICU NETTLE
                  """
 
     if bld.env.TARGET_OSX:
diff --git a/wscript b/wscript
index 2387d27ccc6ab3478fb5c108fbf72542663d075a..cb4e45f84dfdbf314c8f2fca3eea8c842a606f6d 100644 (file)
--- a/wscript
+++ b/wscript
@@ -308,6 +308,9 @@ def configure(conf):
     else:
         conf.env.LIB_XMLSEC = ['xmlsec1-openssl', 'xmlsec1']
 
+    # nettle
+    config.check_cfg(package="nettle", args='--cflags --libs', uselib_store='NETTLE', mandatory=True)
+
     # FFmpeg
     if conf.options.static_ffmpeg:
         names = ['avformat', 'avfilter', 'avcodec', 'avutil', 'swscale', 'postproc']