Wstępnie dodana klasa zarządzania szyfrowaniem. Dodana funckja szyfrująca i generowanie kluczy. Nie osadzono w klasie create cargo
This commit is contained in:
parent
de7ced2939
commit
b80d983bc7
6 changed files with 67 additions and 14 deletions
|
|
@ -36,6 +36,7 @@
|
||||||
#include "Txtpp.h"
|
#include "Txtpp.h"
|
||||||
#include "xxhash.h"
|
#include "xxhash.h"
|
||||||
#include "CompressingManager.h"
|
#include "CompressingManager.h"
|
||||||
|
#include "EncryptionManager.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -72,7 +73,7 @@ private:
|
||||||
|
|
||||||
std::vector<std::string> filesList;
|
std::vector<std::string> filesList;
|
||||||
|
|
||||||
|
EncryptionManager crypt;
|
||||||
|
|
||||||
// listy wyj¹tków
|
// listy wyj¹tków
|
||||||
std::vector<std::string> ignoreList;
|
std::vector<std::string> ignoreList;
|
||||||
|
|
|
||||||
28
EncryptionManager.cpp
Normal file
28
EncryptionManager.cpp
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
#include "EncryptionManager.h"
|
||||||
|
|
||||||
|
EncryptionManager::EncryptionManager()
|
||||||
|
{
|
||||||
|
if (sodium_init() < 0) {
|
||||||
|
throw std::runtime_error("libsodium init failed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<char> EncryptionManager::encrypt(const std::vector<char>& raw)
|
||||||
|
{
|
||||||
|
randombytes_buf(key.data(), key.size());
|
||||||
|
randombytes_buf(nonce.data(), nonce.size());
|
||||||
|
|
||||||
|
std::vector<char> crypt(raw.size());
|
||||||
|
|
||||||
|
if (crypto_stream_chacha20_ietf_xor_ic(
|
||||||
|
reinterpret_cast<unsigned char*>(crypt.data()),
|
||||||
|
reinterpret_cast<const unsigned char*>(raw.data()),
|
||||||
|
static_cast<unsigned long long>(raw.size()),
|
||||||
|
nonce.data(),
|
||||||
|
0,
|
||||||
|
key.data()) != 0) {
|
||||||
|
throw std::runtime_error("crypto_stream_chacha20_ietf_xor_ic failed");
|
||||||
|
}
|
||||||
|
|
||||||
|
return crypt;
|
||||||
|
}
|
||||||
20
EncryptionManager.h
Normal file
20
EncryptionManager.h
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <sodium.h>
|
||||||
|
#include <vector>
|
||||||
|
#include <array>
|
||||||
|
#include <stdexcept>
|
||||||
|
|
||||||
|
class EncryptionManager
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
EncryptionManager();
|
||||||
|
~EncryptionManager() = default;
|
||||||
|
|
||||||
|
std::vector<char> encrypt(const std::vector<char>&);
|
||||||
|
//std::vector<char> decrypt(const std::vector<char>&);
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::array<unsigned char, crypto_stream_chacha20_ietf_KEYBYTES> key{};
|
||||||
|
std::array<unsigned char, crypto_stream_chacha20_ietf_NONCEBYTES> nonce{};
|
||||||
|
};
|
||||||
|
|
@ -44,6 +44,8 @@ void RenderHelp()
|
||||||
" -p Pack files from the specified directory \n"
|
" -p Pack files from the specified directory \n"
|
||||||
" -e Pack and encrypted from the specified directory \n"
|
" -e Pack and encrypted from the specified directory \n"
|
||||||
" -f Pack the files according to the guidelines given in the <directory>.txt \n"
|
" -f Pack the files according to the guidelines given in the <directory>.txt \n"
|
||||||
|
" -s Pack and encrypted \n"
|
||||||
|
" -cs Pack and compress \n"
|
||||||
" \n"
|
" \n"
|
||||||
"Extracting: \n"
|
"Extracting: \n"
|
||||||
" -x Extract files from the specified container \n"
|
" -x Extract files from the specified container \n"
|
||||||
|
|
@ -55,7 +57,7 @@ void RenderHelp()
|
||||||
"Keys: \n"
|
"Keys: \n"
|
||||||
" \n"
|
" \n"
|
||||||
" {compress} - Compressing files \n"
|
" {compress} - Compressing files \n"
|
||||||
" {crypt} - Encrypted files with AES256 \n"
|
" {crypt} - Encrypted files with ChaCha20 \n"
|
||||||
" {ignore} - Ignoring concrete files \n"
|
" {ignore} - Ignoring concrete files \n"
|
||||||
" \n"
|
" \n"
|
||||||
" /path/to/file.ext - Concrete file \n"
|
" /path/to/file.ext - Concrete file \n"
|
||||||
|
|
|
||||||
|
|
@ -104,13 +104,13 @@
|
||||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||||
<AdditionalIncludeDirectories>3rd\crc\include;3rd\ftxui\include;3rd\lz4\include</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>3rd\crc\include;3rd\ftxui\include;3rd\libsodium\include;3rd\lz4\include</AdditionalIncludeDirectories>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<AdditionalLibraryDirectories>3rd\ftxui\Debug;3rd\lz4\lib</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>3rd\ftxui\Debug;3rd\lz4\lib;3rd\libsodium\lib\Debug</AdditionalLibraryDirectories>
|
||||||
<AdditionalDependencies>liblz4_static.lib;ftxui-component.lib;ftxui-dom.lib;ftxui-screen.lib</AdditionalDependencies>
|
<AdditionalDependencies>liblz4_static.lib;ftxui-component.lib;ftxui-dom.lib;ftxui-screen.lib;libsodium.lib</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
|
@ -122,18 +122,19 @@
|
||||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||||
<AdditionalIncludeDirectories>3rd\crc\include;3rd\ftxui\include;3rd\lz4\include</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>3rd\crc\include;3rd\ftxui\include;3rd\libsodium\include;3rd\lz4\include</AdditionalIncludeDirectories>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<AdditionalLibraryDirectories>3rd\ftxui\Release;3rd\lz4\lib</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>3rd\libsodium\lib\Release;3rd\ftxui\Release;3rd\lz4\lib</AdditionalLibraryDirectories>
|
||||||
<AdditionalDependencies>liblz4_static.lib;ftxui-component.lib;ftxui-dom.lib;ftxui-screen.lib</AdditionalDependencies>
|
<AdditionalDependencies>liblz4_static.lib;ftxui-component.lib;ftxui-dom.lib;ftxui-screen.lib;libsodium.lib</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="CompressingManager.cpp" />
|
<ClCompile Include="CompressingManager.cpp" />
|
||||||
<ClCompile Include="CreateCargo.cpp" />
|
<ClCompile Include="CreateCargo.cpp" />
|
||||||
|
<ClCompile Include="EncryptionManager.cpp" />
|
||||||
<ClCompile Include="ExtractCargo.cpp" />
|
<ClCompile Include="ExtractCargo.cpp" />
|
||||||
<ClCompile Include="Interface.cpp" />
|
<ClCompile Include="Interface.cpp" />
|
||||||
<ClCompile Include="ViewCargo.cpp" />
|
<ClCompile Include="ViewCargo.cpp" />
|
||||||
|
|
@ -143,6 +144,7 @@
|
||||||
<ClInclude Include="CompressingManager.h" />
|
<ClInclude Include="CompressingManager.h" />
|
||||||
<ClInclude Include="CreateCargo.h" />
|
<ClInclude Include="CreateCargo.h" />
|
||||||
<ClInclude Include="DataStruct.h" />
|
<ClInclude Include="DataStruct.h" />
|
||||||
|
<ClInclude Include="EncryptionManager.h" />
|
||||||
<ClInclude Include="ExtractCargo.h" />
|
<ClInclude Include="ExtractCargo.h" />
|
||||||
<ClInclude Include="Interface.h" />
|
<ClInclude Include="Interface.h" />
|
||||||
<ClInclude Include="Txtpp.h" />
|
<ClInclude Include="Txtpp.h" />
|
||||||
|
|
|
||||||
|
|
@ -27,15 +27,15 @@
|
||||||
<ClCompile Include="ViewCargo.cpp">
|
<ClCompile Include="ViewCargo.cpp">
|
||||||
<Filter>Pliki źródłowe</Filter>
|
<Filter>Pliki źródłowe</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="xxhash.c">
|
|
||||||
<Filter>Pliki źródłowe</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="Interface.cpp">
|
<ClCompile Include="Interface.cpp">
|
||||||
<Filter>Pliki źródłowe</Filter>
|
<Filter>Pliki źródłowe</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="CompressingManager.cpp">
|
<ClCompile Include="CompressingManager.cpp">
|
||||||
<Filter>Pliki źródłowe</Filter>
|
<Filter>Pliki źródłowe</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="EncryptionManager.cpp">
|
||||||
|
<Filter>Pliki źródłowe</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="CreateCargo.h">
|
<ClInclude Include="CreateCargo.h">
|
||||||
|
|
@ -53,15 +53,15 @@
|
||||||
<ClInclude Include="DataStruct.h">
|
<ClInclude Include="DataStruct.h">
|
||||||
<Filter>Pliki nagłówkowe</Filter>
|
<Filter>Pliki nagłówkowe</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="xxhash.h">
|
|
||||||
<Filter>Pliki nagłówkowe</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="Interface.h">
|
<ClInclude Include="Interface.h">
|
||||||
<Filter>Pliki nagłówkowe</Filter>
|
<Filter>Pliki nagłówkowe</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="CompressingManager.h">
|
<ClInclude Include="CompressingManager.h">
|
||||||
<Filter>Pliki nagłówkowe</Filter>
|
<Filter>Pliki nagłówkowe</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="EncryptionManager.h">
|
||||||
|
<Filter>Pliki nagłówkowe</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Image Include="icon.ico">
|
<Image Include="icon.ico">
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue