summaryrefslogtreecommitdiff
path: root/IOFileClass
diff options
context:
space:
mode:
authormanzerbredes <loic.guegan_secondary@yahoo.fr>2015-03-20 10:57:03 +0400
committermanzerbredes <loic.guegan_secondary@yahoo.fr>2015-03-20 10:57:03 +0400
commit45f7cc5d27b338dae1d36c211cc5720c82f3de35 (patch)
tree38c356a4e5ba77520e59964f25cde28527e552bd /IOFileClass
parenteb267792cd70a763bf2dcbfce6e7a09251b3913f (diff)
Change file architecture
Diffstat (limited to 'IOFileClass')
-rw-r--r--IOFileClass/FileManIOFile.cpp147
-rw-r--r--IOFileClass/FileManIOFile.hpp133
2 files changed, 0 insertions, 280 deletions
diff --git a/IOFileClass/FileManIOFile.cpp b/IOFileClass/FileManIOFile.cpp
deleted file mode 100644
index ea49201..0000000
--- a/IOFileClass/FileManIOFile.cpp
+++ /dev/null
@@ -1,147 +0,0 @@
-/**
- * @file FileManIOFile.cpp
- * @brief FileManIOFile class definitions
- * @author manzerbredes
- * @date 9 Mars 2015
- *
- * Contain all definitions of FileManIOFile class.
- *
- */
-
-
-#include "FileManIOFile.hpp"
-
-//Constructor with filename
-FileManIOFile::FileManIOFile(std::string filename){
- this->filename=filename;
- this->readable=false;
- this->data="";
- this->key;
-}
-
-//Destructor
-FileManIOFile::~FileManIOFile(){
-}
-
-
-
-//Read the filename with a key
-void FileManIOFile::read(std::string key){
-
- //create file object
- std::ifstream file;
-
- //Clear data
- this->data.clear();
-
- //Open file
- file.open (this->filename, std::ios::in | std::ios::binary);
-
- //Get MD5 of decrypted data
- byte fileMD5[16];
- file.read((char*) fileMD5, sizeof(fileMD5));
-
- //Read all data
- char car;
- file.read(&car, sizeof(car));
-
- while(file){
- this->data+=car,
- file.read(&car, sizeof(car));
-
- }
-
- //Decrypt data
- this->data=this->aes.decrypt(key, this->data);
-
- //Get current MD5 of decrypted data
- byte currentMD5[16];
- this->hash.getMD5_128(this->data, currentMD5, sizeof(currentMD5));
-
- //Compare the 2 MD5 to find if file is fully decrypted
- if(this->hash.compareDigest(fileMD5, currentMD5, sizeof(currentMD5))){
- //Set readable
- this->readable=true;
- //Save the key
- this->hash.getSHA_256(key, this->key, 32);
- }
- else{
- this->readable=false;
- }
-
- //Close file
- file.close();
-
-
-}
-
-
-
-//Write file with key
-void FileManIOFile::write(std::string key,std::string data){
-
- std::string dataEncrypted;
-
- dataEncrypted=this->aes.encrypt(key, data);
-
- this->writeRoutine(data, dataEncrypted);
-
-
-}
-
-//Write file without key
-void FileManIOFile::write(std::string data){
- if(not(this->readable)){
- std::cout << "Can't write data without key (read it before) !" << std::endl;
- std::exit(EXIT_FAILURE);
- }
-
- std::string dataEncrypted;
-
- dataEncrypted=this->aes.encrypt(this->key, data);
- this->writeRoutine(data, dataEncrypted);
-
-
-}
-
-
-
-//Get readable attribute
-bool FileManIOFile::isReadable(){
- return this->readable;
-}
-
-
-
-//Write file
-void FileManIOFile::writeRoutine(std::string data, std::string dataEncrypted){
-
- //Save MD5 of decrypted data
- byte digest[16];
- this->hash.getMD5_128(data, digest, sizeof(digest));
-
- //Create file instance
- std::ofstream file;
-
- //Open it
- file.open(this->filename, std::ios::out | std::ios::binary);
-
- //Write MD5 on 16 first bytes
- file.write((char *) digest,sizeof(digest));
-
- //Write data
- file.write(dataEncrypted.c_str(), dataEncrypted.size());
-
- //Close file
- file.close();
-
- //Save data to attribute
- this->data=data;
-}
-
-
-
-//Get data
-std::string FileManIOFile::getData(){
- return this->data;
-}
diff --git a/IOFileClass/FileManIOFile.hpp b/IOFileClass/FileManIOFile.hpp
deleted file mode 100644
index 221cf13..0000000
--- a/IOFileClass/FileManIOFile.hpp
+++ /dev/null
@@ -1,133 +0,0 @@
-/**
- * @file FileManIOFile.hpp
- * @brief FileManIOFile class definitions
- * @author manzerbredes
- * @date 9 Mars 2015
- *
- * Contain all definitions of FileManIOFile class.
- *
- */
-
-
-#ifndef __FileManIOFile__
-#define __FileManIOFile__
-
-
-//----- std -----
-#include <iostream>
-#include <string>
-#include <fstream>
-
-
-//----- class -----
-#include "HASHCrypt.hpp"
-#include "AESCrypt.hpp"
-
-
-
-
-/**
- * @class FileManIOFile FileManIOFile.hpp "/CryptClass/FileManIOFile.hpp"
- * @brief Class for quick open and close encrypted files.
- * @author manzerbredes
- *
- * -----File organisation-----
- *
- * 16 first bytes : md5 of decrypted data
- * Rest of the file : data encrypted (ASE for now)
- *
- * \bug Need check if file exist and can be opened
- */
-class FileManIOFile {
-
- public:
-
- //Constructor
- FileManIOFile(std::string filename);
-
- //Destructor
- ~FileManIOFile();
-
-
- /**
- * @brief Read encrypted file.
- *
- * @param key : key to encrypt data
- *
- * Read data from "filename" attribute.
- * If file fully decrypted, readable var switch to true,
- * and key saved in key attribute (before been crypted with SHA-256 algorithm).
- *
- */
- void read(std::string key);
-
-
- /**
- * @brief Write data in encrypted file.
- *
- * @param key : key to encrypt data
- * @param data : data to write
- *
- * Write the file with or without key.
- * To write data without key, you need to read it before (to save the key
- * in attribute key).
- *
- */
- void write(std::string key, std::string data);
- void write(std::string data);
-
-
- /**
- * @brief True if file fully decrypted.
- *
- * @return readable attribute
- *
- * Return "readable" attribute.
- *
- */
- bool isReadable();
-
-
- /**
- * @brief Get data attribute.
- *
- * @return data attribute.
- *
- * **Warning** if data not fully decrypted (readable!=true),
- * data will be unreadable (unparsable).
- *
- */
- std::string getData();
-
-
- private:
-
- /**
- * @brief Write data in encrypted file.
- *
- * @param data : data to write (for MD5)
- * @param dataEncrypted : data to write
- *
- * Write encryptedData to filename
- *
- */
- void writeRoutine(std::string data, std::string dataEncrypted);
-
-
- //Attributes:
-
- AESCrypt aes; ///< AES instance
-
- HASHCrypt hash; ///< HASH instance
-
- std::string filename; ///< Filename attribute
-
- std::string data; ///< Data attribute
-
- bool readable; ///< Readable attribute
-
- byte key[32]; ///< Key in SHA-256
-
-};
-
-#endif