# # # patch "botan/md5.cpp" # from [40281ca3954ec3c595fb975ab52edcd02a80e031] # to [70854c883cc5e7c89045e021834fe6f9e6da393a] # ============================================================ --- botan/md5.cpp 40281ca3954ec3c595fb975ab52edcd02a80e031 +++ botan/md5.cpp 70854c883cc5e7c89045e021834fe6f9e6da393a @@ -1,13 +1,58 @@ /************************************************* * MD5 Source File * * (C) 1999-2005 The Botan Project * *************************************************/ #include +#include namespace Botan { +namespace { + /************************************************* +* MD5 FF Function * +*************************************************/ +inline void FF(u32bit& A, u32bit B, u32bit C, u32bit D, u32bit msg, + byte S, u32bit magic) + { + A += (D ^ (B & (C ^ D))) + msg + magic; + A = rotate_left(A, S) + B; + } + +/************************************************* +* MD5 GG Function * +*************************************************/ +inline void GG(u32bit& A, u32bit B, u32bit C, u32bit D, u32bit msg, + byte S, u32bit magic) + { + A += (C ^ (D & (B ^ C))) + msg + magic; + A = rotate_left(A, S) + B; + } + +/************************************************* +* MD5 HH Function * +*************************************************/ +inline void HH(u32bit& A, u32bit B, u32bit C, u32bit D, u32bit msg, + byte S, u32bit magic) + { + A += (B ^ C ^ D) + msg + magic; + A = rotate_left(A, S) + B; + } + +/************************************************* +* MD5 II Function * +*************************************************/ +inline void II(u32bit& A, u32bit B, u32bit C, u32bit D, u32bit msg, + byte S, u32bit magic) + { + A += (C ^ (B | ~D)) + msg + magic; + A = rotate_left(A, S) + B; + } + +} + +/************************************************* * MD5 Compression Function * *************************************************/ void MD5::hash(const byte input[]) @@ -66,46 +111,6 @@ } /************************************************* -* MD5 FF Function * -*************************************************/ -void MD5::FF(u32bit& A, u32bit B, u32bit C, u32bit D, u32bit msg, - byte S, u32bit magic) - { - A += (D ^ (B & (C ^ D))) + msg + magic; - A = rotate_left(A, S) + B; - } - -/************************************************* -* MD5 GG Function * -*************************************************/ -void MD5::GG(u32bit& A, u32bit B, u32bit C, u32bit D, u32bit msg, - byte S, u32bit magic) - { - A += (C ^ (D & (B ^ C))) + msg + magic; - A = rotate_left(A, S) + B; - } - -/************************************************* -* MD5 HH Function * -*************************************************/ -void MD5::HH(u32bit& A, u32bit B, u32bit C, u32bit D, u32bit msg, - byte S, u32bit magic) - { - A += (B ^ C ^ D) + msg + magic; - A = rotate_left(A, S) + B; - } - -/************************************************* -* MD5 II Function * -*************************************************/ -void MD5::II(u32bit& A, u32bit B, u32bit C, u32bit D, u32bit msg, - byte S, u32bit magic) - { - A += (C ^ (B | ~D)) + msg + magic; - A = rotate_left(A, S) + B; - } - -/************************************************* * Clear memory of sensitive data * *************************************************/ void MD5::clear() throw()