From 783197aaa13abbfb7757ecec912dfe9cb6e52c75 Mon Sep 17 00:00:00 2001 From: manzerbredes Date: Wed, 11 Mar 2015 09:51:03 +0400 Subject: Implement FileManIOFileClass, general bug correction. --- IOFileClass/FileManIOFile.cpp | 98 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) (limited to 'IOFileClass/FileManIOFile.cpp') diff --git a/IOFileClass/FileManIOFile.cpp b/IOFileClass/FileManIOFile.cpp index e69de29..d0ae1f2 100644 --- a/IOFileClass/FileManIOFile.cpp +++ b/IOFileClass/FileManIOFile.cpp @@ -0,0 +1,98 @@ +/** + * @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; +} -- cgit v1.2.3