X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FSupport%2FMD5.cpp;h=ceab580984d436fb52a760609aea3f5568d0f64d;hb=d3fc10a52532a8da060f8d00a9c545e0a6ce156e;hp=ce99ab6abc8315d30643566a33a3638f17fffe79;hpb=800e6ee52fd32e0b129cbccd811166d7e215e6ad;p=oota-llvm.git diff --git a/lib/Support/MD5.cpp b/lib/Support/MD5.cpp index ce99ab6abc8..ceab580984d 100644 --- a/lib/Support/MD5.cpp +++ b/lib/Support/MD5.cpp @@ -183,7 +183,7 @@ MD5::MD5() : a(0x67452301), b(0xefcdab89), c(0x98badcfe), d(0x10325476), hi(0), lo(0) { } -/// Incrementally add \p size of \p data to the hash. +/// Incrementally add the bytes in \p Data to the hash. void MD5::update(ArrayRef Data) { MD5_u32plus saved_lo; unsigned long used, free; @@ -208,20 +208,28 @@ void MD5::update(ArrayRef Data) { memcpy(&buffer[used], Ptr, free); Ptr = Ptr + free; Size -= free; - body(ArrayRef(buffer, 64)); + body(makeArrayRef(buffer, 64)); } if (Size >= 64) { - Ptr = body(ArrayRef(Ptr, Size & ~(unsigned long) 0x3f)); + Ptr = body(makeArrayRef(Ptr, Size & ~(unsigned long) 0x3f)); Size &= 0x3f; } memcpy(buffer, Ptr, Size); } +/// Add the bytes in the StringRef \p Str to the hash. +// Note that this isn't a string and so this won't include any trailing NULL +// bytes. +void MD5::update(StringRef Str) { + ArrayRef SVal((const uint8_t *)Str.data(), Str.size()); + update(SVal); +} + /// \brief Finish the hash and place the resulting hash into \p result. /// \param result is assumed to be a minimum of 16-bytes in size. -void MD5::final(MD5Result &result) { +void MD5::final(MD5Result &Result) { unsigned long used, free; used = lo & 0x3f; @@ -232,7 +240,7 @@ void MD5::final(MD5Result &result) { if (free < 8) { memset(&buffer[used], 0, free); - body(ArrayRef(buffer, 64)); + body(makeArrayRef(buffer, 64)); used = 0; free = 64; } @@ -249,30 +257,30 @@ void MD5::final(MD5Result &result) { buffer[62] = hi >> 16; buffer[63] = hi >> 24; - body(ArrayRef(buffer, 64)); - - result[0] = a; - result[1] = a >> 8; - result[2] = a >> 16; - result[3] = a >> 24; - result[4] = b; - result[5] = b >> 8; - result[6] = b >> 16; - result[7] = b >> 24; - result[8] = c; - result[9] = c >> 8; - result[10] = c >> 16; - result[11] = c >> 24; - result[12] = d; - result[13] = d >> 8; - result[14] = d >> 16; - result[15] = d >> 24; + body(makeArrayRef(buffer, 64)); + + Result[0] = a; + Result[1] = a >> 8; + Result[2] = a >> 16; + Result[3] = a >> 24; + Result[4] = b; + Result[5] = b >> 8; + Result[6] = b >> 16; + Result[7] = b >> 24; + Result[8] = c; + Result[9] = c >> 8; + Result[10] = c >> 16; + Result[11] = c >> 24; + Result[12] = d; + Result[13] = d >> 8; + Result[14] = d >> 16; + Result[15] = d >> 24; } -void MD5::stringifyResult(MD5Result &result, SmallString<32> &Str) { +void MD5::stringifyResult(MD5Result &Result, SmallString<32> &Str) { raw_svector_ostream Res(Str); for (int i = 0; i < 16; ++i) - Res << format("%.2x", result[i]); + Res << format("%.2x", Result[i]); } }