00001 #include "MD5.h"
00002
00003 namespace oasys {
00004
00005 MD5::MD5()
00006 {
00007 init();
00008 }
00009
00011 void
00012 MD5::init()
00013 {
00014 MD5Init(&ctx_);
00015 }
00016
00018 void
00019 MD5::update(const u_char* data, size_t len)
00020 {
00021 MD5Update(&ctx_, (u_char*)data, len);
00022 }
00023
00025 void
00026 MD5::update(const char* data, size_t len)
00027 {
00028 MD5Update(&ctx_, (u_char*)data, len);
00029 }
00030
00032 void
00033 MD5::finalize()
00034 {
00035 MD5Final(digest_, &ctx_);
00036 }
00037
00039 const u_char*
00040 MD5::digest()
00041 {
00042 return digest_;
00043 }
00044
00046 void
00047 MD5::digest_ascii(std::string* str,
00048 const u_char* digest)
00049 {
00050 hex2str(str, digest, MD5LEN);
00051 }
00052
00054 std::string
00055 MD5::digest_ascii(const u_char* digest)
00056 {
00057 std::string str;
00058 digest_ascii(&str, digest);
00059 return str;
00060 }
00061
00063 void
00064 MD5::digest_ascii(std::string* str)
00065 {
00066 digest_ascii(str, digest_);
00067 }
00068
00070 std::string
00071 MD5::digest_ascii()
00072 {
00073 return digest_ascii(digest_);
00074 }
00075
00077 void
00078 MD5::digest_fromascii(const char* str, u_char* digest)
00079 {
00080 str2hex(str, digest, MD5LEN);
00081 }
00082
00083
00084 void
00085 MD5Hash_t::serialize(SerializeAction* a)
00086 {
00087 a->process("hash", reinterpret_cast<char*>(hash_), MD5::MD5LEN);
00088 }
00089
00090 MD5Hash_t&
00091 MD5Hash_t::operator=(const MD5Hash_t& hash)
00092 {
00093 memcpy(hash_, hash.hash_, MD5::MD5LEN);
00094
00095 return *this;
00096 }
00097
00098 };