// cram_md5.cpp // This file is (C) 2004 Royce Mitchell III // and released under the BSD & LGPL licenses #include "MD5.h" #include "cram_md5.h" #include "base64.h" using std::string; string cram_md5 ( const string& username, const string& password, const string& greeting ) { string challenge = base64_decode ( greeting ); string hmac = HMAC_MD5 ( password, challenge ); //printf ( "(cram_md5): hmac = %s\n", hmac.c_str() ); string raw_response = username; raw_response += " "; raw_response += hmac; //printf ( "(cram_md5): raw_response = %s\n", raw_response.c_str() ); return base64_encode ( raw_response ); }