diff --git a/.gitignore b/.gitignore index a423ba7..47fe4dc 100644 --- a/.gitignore +++ b/.gitignore @@ -380,4 +380,5 @@ test7/ test8/ test9/ test10/ -testx/ \ No newline at end of file +testx/ +testv/ \ No newline at end of file diff --git a/ChunkManager.cpp b/ChunkManager.cpp index e443766..58529ed 100644 --- a/ChunkManager.cpp +++ b/ChunkManager.cpp @@ -13,7 +13,7 @@ ChunkManager::~ChunkManager() // Dzielenie vectora na chunki dokładnie po 128KB // Kompresowanie chunków bez nagłówka //----------------------------------------------------------------------------- -std::vector ChunkManager::chunked(const std::vector& raw, const bool& encrypt) +std::vector ChunkManager::chunked(const std::vector& raw, const bool& compress, const bool& encrypt) { //std::vector blockSizes; @@ -117,7 +117,7 @@ std::vector ChunkManager::compress_data(const std::vector& input) //----------------------------------------------------------------------------- // Dekompresja blokowa //----------------------------------------------------------------------------- -std::vector ChunkManager::dechunked(const std::vector& zip, const bool& encrypt) +std::vector ChunkManager::dechunked(const std::vector& zip, const bool& compress, const bool& encrypt) { size_t offset = 0; const uint16_t chunkLen = getIntFromVector(zip, offset); diff --git a/ChunkManager.h b/ChunkManager.h index 3a2b83c..a98de14 100644 --- a/ChunkManager.h +++ b/ChunkManager.h @@ -31,10 +31,10 @@ public: ~ChunkManager(); // Kompresja danych - std::vector chunked(const std::vector&, const bool&); + std::vector chunked(const std::vector&, const bool&, const bool&); // Dekompresja - std::vector dechunked(const std::vector&, const bool&); + std::vector dechunked(const std::vector&, const bool&, const bool&); private: EncryptionManager eman; diff --git a/CreateCargo.cpp b/CreateCargo.cpp index ac99a67..04743d3 100644 --- a/CreateCargo.cpp +++ b/CreateCargo.cpp @@ -25,6 +25,7 @@ CreateCargo::CreateCargo() , version(VERSION) , methodFlags(0) , offset(0) + , hppKey(false) { // TODO Auto-generated constructor stub } @@ -87,9 +88,9 @@ bool CreateCargo::Create(const std::string& path, const int16_t& flag) } // Zapisywanie klucza szyfrującego - if (flag == 2 || flag == 3) + if (flag == 2 || flag == 3 || encList.size() > 0) { - crypt.saveKey(catalogPath); + crypt.saveKey(catalogPath, hppKey); } return true; @@ -194,15 +195,15 @@ void CreateCargo::computingBytes(const int16_t& flag, std::vector& input, switch (flag) { case 1: - output = cm.chunked(input, false); + output = cm.chunked(input, true, false); break; case 2: - output = crypt.encrypt(input); + output = cm.chunked(input, false, true); break; case 3: - output = crypt.encrypt(cm.chunked(input, false)); + output = cm.chunked(input, true, true); break; default: @@ -287,6 +288,8 @@ void CreateCargo::GetFilters(const std::string& filterFile) // Lista plików do pominięcia ignoreList = jslist[KEY_IGNORE].get>(); + + hppKey = jslist["keyhpp"]; } //----------------------------------------------------------------------------- diff --git a/CreateCargo.h b/CreateCargo.h index 1d3c8b6..e11d253 100644 --- a/CreateCargo.h +++ b/CreateCargo.h @@ -73,6 +73,7 @@ private: std::vector filesList; EncryptionManager crypt; + bool hppKey; // listy wyjątków std::vector ignoreList; diff --git a/EncryptionManager.cpp b/EncryptionManager.cpp index e5ec07c..546471e 100644 --- a/EncryptionManager.cpp +++ b/EncryptionManager.cpp @@ -8,6 +8,7 @@ EncryptionManager::EncryptionManager() } keyReady = false; + generateKeys(); } std::vector EncryptionManager::encrypt(const std::vector& raw) @@ -15,7 +16,7 @@ std::vector EncryptionManager::encrypt(const std::vector& raw) std::vector crypt(raw.size()); // Generowanie kluczy - generateKeys(); + // generateKeys(); if (crypto_stream_chacha20_ietf_xor_ic( reinterpret_cast(crypt.data()), @@ -40,7 +41,7 @@ void EncryptionManager::generateKeys() keyReady = true; } -void EncryptionManager::saveKey(const std::string& path) +void EncryptionManager::saveKey(const std::string& path, bool hpp) { const int sig = SIGNATURE_KEY_FILE; const short ver = VERSION; @@ -73,7 +74,7 @@ void EncryptionManager::saveKey(const std::string& path) file.close(); - //saveCppHeadFile(path); + if (hpp) {saveCppHeadFile(path);} } // Generowanie pliku nagłówkowego CPP z kluczem i nonce diff --git a/EncryptionManager.h b/EncryptionManager.h index bee6845..4f06a06 100644 --- a/EncryptionManager.h +++ b/EncryptionManager.h @@ -23,7 +23,7 @@ public: std::vector encrypt(const std::vector&); std::vector decrypt(const std::vector&); - void saveKey(const std::string&); + void saveKey(const std::string&, bool); void loadKey(const std::string&); private: diff --git a/ExtractCargo.cpp b/ExtractCargo.cpp index 13bde7f..d6a4289 100644 --- a/ExtractCargo.cpp +++ b/ExtractCargo.cpp @@ -144,15 +144,15 @@ void ExtractCargo::computingBytes(const std::vector& input, std::vector