Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 #include "HashMD5.h"
00023 
00024 ATSHashMD5::ATSHashMD5(void) {
00025     EVP_DigestInit(&ctx, EVP_md5());
00026     md_len = 0;
00027     finalized = false;
00028 }
00029 
00030 void
00031 ATSHashMD5::update(const void *data, size_t len) {
00032     if (!finalized) {
00033         EVP_DigestUpdate(&ctx, data, len);
00034     }
00035 }
00036 
00037 void
00038 ATSHashMD5::final(void) {
00039     if (!finalized) {
00040         EVP_DigestFinal_ex(&ctx, md_value, &md_len);
00041         finalized = true;
00042     }
00043 }
00044 
00045 const void *
00046 ATSHashMD5::get(void) const {
00047     if (finalized) {
00048         return (void *) md_value;
00049     } else {
00050         return NULL;
00051     }
00052 }
00053 
00054 size_t
00055 ATSHashMD5::size(void) const {
00056     return EVP_MD_CTX_size(&ctx);
00057 }
00058 
00059 void
00060 ATSHashMD5::clear(void) {
00061     EVP_MD_CTX_cleanup(&ctx);
00062     EVP_DigestInit(&ctx, EVP_md5());
00063     md_len = 0;
00064     finalized = false;
00065 }
00066 
00067 ATSHashMD5::~ATSHashMD5() {
00068     EVP_MD_CTX_cleanup(&ctx);
00069 }