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 "xxhash.h"
|
||||
#include "CompressingManager.h"
|
||||
#include "EncryptionManager.h"
|
||||
|
||||
|
||||
|
||||
|
|
@ -72,7 +73,7 @@ private:
|
|||
|
||||
std::vector<std::string> filesList;
|
||||
|
||||
|
||||
EncryptionManager crypt;
|
||||
|
||||
// listy wyj¹tków
|
||||
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"
|
||||
" -e Pack and encrypted from the specified directory \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"
|
||||
"Extracting: \n"
|
||||
" -x Extract files from the specified container \n"
|
||||
|
|
@ -55,7 +57,7 @@ void RenderHelp()
|
|||
"Keys: \n"
|
||||
" \n"
|
||||
" {compress} - Compressing files \n"
|
||||
" {crypt} - Encrypted files with AES256 \n"
|
||||
" {crypt} - Encrypted files with ChaCha20 \n"
|
||||
" {ignore} - Ignoring concrete files \n"
|
||||
" \n"
|
||||
" /path/to/file.ext - Concrete file \n"
|
||||
|
|
|
|||
|
|
@ -104,13 +104,13 @@
|
|||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<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>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>3rd\ftxui\Debug;3rd\lz4\lib</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>liblz4_static.lib;ftxui-component.lib;ftxui-dom.lib;ftxui-screen.lib</AdditionalDependencies>
|
||||
<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;libsodium.lib</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
|
|
@ -122,18 +122,19 @@
|
|||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<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>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>3rd\ftxui\Release;3rd\lz4\lib</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>liblz4_static.lib;ftxui-component.lib;ftxui-dom.lib;ftxui-screen.lib</AdditionalDependencies>
|
||||
<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;libsodium.lib</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="CompressingManager.cpp" />
|
||||
<ClCompile Include="CreateCargo.cpp" />
|
||||
<ClCompile Include="EncryptionManager.cpp" />
|
||||
<ClCompile Include="ExtractCargo.cpp" />
|
||||
<ClCompile Include="Interface.cpp" />
|
||||
<ClCompile Include="ViewCargo.cpp" />
|
||||
|
|
@ -143,6 +144,7 @@
|
|||
<ClInclude Include="CompressingManager.h" />
|
||||
<ClInclude Include="CreateCargo.h" />
|
||||
<ClInclude Include="DataStruct.h" />
|
||||
<ClInclude Include="EncryptionManager.h" />
|
||||
<ClInclude Include="ExtractCargo.h" />
|
||||
<ClInclude Include="Interface.h" />
|
||||
<ClInclude Include="Txtpp.h" />
|
||||
|
|
|
|||
|
|
@ -27,15 +27,15 @@
|
|||
<ClCompile Include="ViewCargo.cpp">
|
||||
<Filter>Pliki źródłowe</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="xxhash.c">
|
||||
<Filter>Pliki źródłowe</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Interface.cpp">
|
||||
<Filter>Pliki źródłowe</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="CompressingManager.cpp">
|
||||
<Filter>Pliki źródłowe</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="EncryptionManager.cpp">
|
||||
<Filter>Pliki źródłowe</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="CreateCargo.h">
|
||||
|
|
@ -53,15 +53,15 @@
|
|||
<ClInclude Include="DataStruct.h">
|
||||
<Filter>Pliki nagłówkowe</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="xxhash.h">
|
||||
<Filter>Pliki nagłówkowe</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Interface.h">
|
||||
<Filter>Pliki nagłówkowe</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="CompressingManager.h">
|
||||
<Filter>Pliki nagłówkowe</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="EncryptionManager.h">
|
||||
<Filter>Pliki nagłówkowe</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="icon.ico">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue