X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fdigester.cc;h=8542c75a13358a0a97dc9c2fa51e5c86c63ec8b4;hb=e7d8a70a16f972de2861bb1464dec6df3d26c579;hp=66e617de81d371c0d8eaf0196569920d5aac45fe;hpb=283205f4bff717d0f70b5a4464df4ebd3581a51b;p=dcpomatic.git diff --git a/src/lib/digester.cc b/src/lib/digester.cc index 66e617de8..8542c75a1 100644 --- a/src/lib/digester.cc +++ b/src/lib/digester.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2016 Carl Hetherington + Copyright (C) 2014-2021 Carl Hetherington This file is part of DCP-o-matic. @@ -18,38 +18,46 @@ */ + #include "digester.h" -#include "safe_stringstream.h" +#include "dcpomatic_assert.h" #include #include +#include + using std::string; using std::hex; using std::setfill; using std::setw; + Digester::Digester () { md5_init (&_context); } + Digester::~Digester () { get (); } + void Digester::add (void const * data, size_t size) { - md5_update (&_context, size, reinterpret_cast (data)); + md5_update (&_context, size, reinterpret_cast(data)); } + void Digester::add (string const & s) { add (s.c_str(), s.length()); } + string Digester::get () const { @@ -57,13 +65,27 @@ Digester::get () const unsigned char digest[MD5_DIGEST_SIZE]; md5_digest (&_context, MD5_DIGEST_SIZE, digest); - SafeStringStream 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; +}