/** * @file FileManIOFile.cpp * @brief FileManIOFile class definitions * @author manzerbredes * @date 9 Mars 2015 * * Contain all definitions of FileManIOFile class. * */ #include "FileManIOFile.hpp" #include // This might be necessary FileManIOFile::FileManIOFile(std::string filename){ this->filename=filename; this->readable=false; this->data=""; } FileManIOFile::~FileManIOFile(){ } bool FileManIOFile::isReadable(){ return this->readable; } void FileManIOFile::read(std::string key){ AESCrypt aes; HASHCrypt hash; std::ifstream file; this->data.clear(); file.open (this->filename, std::ios::in | std::ios::binary); byte fileMD5[16]; file.read((char*) fileMD5, sizeof(fileMD5)); char car; file.read(&car, sizeof(car)); while(file){ this->data+=car, file.read(&car, sizeof(car)); } this->data=aes.decrypt(key, this->data); byte currentMD5[16]; hash.getMD5_128(this->data, currentMD5, sizeof(currentMD5)); if(hash.compareDigest(fileMD5, currentMD5, sizeof(currentMD5))){ this->readable=true; } else{ this->readable=false; } file.close(); } void FileManIOFile::write(std::string key, std::string data){ AESCrypt aes; HASHCrypt hash; std::string dataEncrypted=aes.encrypt(key, data); byte digest[16]; hash.getMD5_128(data, digest, sizeof(digest)); std::ofstream file; file.open(this->filename, std::ios::out | std::ios::binary); file.write((char *) digest,sizeof(digest)); file.write(dataEncrypted.c_str(), dataEncrypted.size()); file.close(); this->data=data; } std::string FileManIOFile::getData(){ return this->data; }