Extract common code out into kdm_for_screen()
[dcpomatic.git] / src / lib / digester.cc
index 70c2babf5e4fd6d054a5db9a5f5594d2f49c3848..452452ba4b1c1091622a001c639446d83f2f2989 100644 (file)
 */
 
 #include "digester.h"
-#include <locked_sstream.h>
+#include "dcpomatic_assert.h"
 #include <nettle/md5.h>
 #include <iomanip>
+#include <cstdio>
 
 using std::string;
 using std::hex;
@@ -57,13 +58,26 @@ Digester::get () const
                unsigned char digest[MD5_DIGEST_SIZE];
                md5_digest (&_context, MD5_DIGEST_SIZE, digest);
 
-               locked_stringstream s;
+               char hex[MD5_DIGEST_SIZE * 2 + 1];
                for (int i = 0; i < MD5_DIGEST_SIZE; ++i) {
-                       s << hex << setfill('0') << setw(2) << ((int) digest[i]);
+                       sprintf(hex + i * 2, "%02x", digest[i]);
                }
 
-               _digest = s.str ();
+               _digest = hex;
        }
 
        return _digest.get ();
 }
+
+void
+Digester::get (uint8_t* buffer) const
+{
+       md5_digest (&_context, MD5_DIGEST_SIZE, buffer);
+}
+
+
+int
+Digester::size () const
+{
+       return MD5_DIGEST_SIZE;
+}