diff options
| author | alpine <[email protected]> | 2020-06-26 14:06:25 +0200 |
|---|---|---|
| committer | alpine <[email protected]> | 2020-06-26 14:06:25 +0200 |
| commit | d89852b672d038ad07198dfeb6a5b1e89be84bb5 (patch) | |
| tree | e04e7cfcccf6b96af19678db79eba56acd57deed | |
| parent | Removed xor on streaming for now. (diff) | |
| download | loader-d89852b672d038ad07198dfeb6a5b1e89be84bb5.tar.xz loader-d89852b672d038ad07198dfeb6a5b1e89be84bb5.zip | |
Added server certificate verification on client.
Xor is now used only with messages.
| -rw-r--r-- | .clang-format | 68 | ||||
| -rw-r--r-- | CMakeLists.txt | 5 | ||||
| -rw-r--r-- | client/src/client/client.cpp | 4 | ||||
| -rw-r--r-- | client/src/client/client.h | 7 | ||||
| -rw-r--r-- | client/src/client/packet.h | 11 | ||||
| -rw-r--r-- | client/src/main.cpp | 2 | ||||
| -rw-r--r-- | server/src/client/client.h | 1 | ||||
| -rw-r--r-- | server/src/server/packet.h | 10 | ||||
| -rw-r--r-- | server/src/server/ssl.h | 2 |
9 files changed, 27 insertions, 83 deletions
diff --git a/.clang-format b/.clang-format deleted file mode 100644 index 744b7c2..0000000 --- a/.clang-format +++ /dev/null @@ -1,68 +0,0 @@ -AccessModifierOffset: -4 -AlignAfterOpenBracket: Align -AlignConsecutiveAssignments: true -AlignConsecutiveDeclarations: true -AlignEscapedNewlines: Left -AlignOperands: true -AlignTrailingComments: false -AllowAllParametersOfDeclarationOnNextLine: true -AllowShortBlocksOnASingleLine: true -AllowShortCaseLabelsOnASingleLine: false -AllowShortFunctionsOnASingleLine: All -AllowShortIfStatementsOnASingleLine: false -AllowShortLoopsOnASingleLine: false -AlwaysBreakAfterReturnType: None -AlwaysBreakBeforeMultilineStrings: false -AlwaysBreakTemplateDeclarations: true -BinPackArguments: false -BinPackParameters: false - -BreakBeforeBraces: Custom -BraceWrapping: - AfterClass: false - AfterControlStatement: false - AfterEnum: false - AfterFunction: true - AfterNamespace: false - AfterStruct: false - AfterUnion: false - BeforeCatch: true - BeforeElse: true - SplitEmptyFunction: false - SplitEmptyRecord: false - SplitEmptyNamespace: false - -ExperimentalAutoDetectBinPacking: false -BreakBeforeBinaryOperators: None -BreakBeforeInheritanceComma: false -BreakBeforeTernaryOperators: true -BreakConstructorInitializers: BeforeComma -BreakStringLiterals: false -ColumnLimit: 90 -CompactNamespaces: true -ConstructorInitializerAllOnOneLineOrOnePerLine: true -ConstructorInitializerIndentWidth: 4 -Cpp11BracedListStyle: false -DerivePointerAlignment: false -PointerAlignment: Left -FixNamespaceComments: true -IndentCaseLabels: false -# IndentPPDirectives: AfterHash -IndentWrappedFunctionNames: false -KeepEmptyLinesAtTheStartOfBlocks: false -Language: Cpp -SortIncludes: false -MaxEmptyLinesToKeep: 2 -NamespaceIndentation: All -ReflowComments: true -SortUsingDeclarations: false -SpaceAfterTemplateKeyword: false -SpaceBeforeParens: Never -SpaceInEmptyParentheses: false -SpacesInAngles: false -Standard: Cpp11 -TabWidth: 4 -UseTab: Never -IndentWidth: 4 -PenaltyReturnTypeOnItsOwnLine: 125 -PenaltyBreakComment: 10
\ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 95ff2a3..c4fcef4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,6 +2,11 @@ cmake_minimum_required(VERSION 3.14) project(server-client) +find_package(LLVM REQUIRED CONFIG) + +message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}") +message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}") + if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) endif() diff --git a/client/src/client/client.cpp b/client/src/client/client.cpp index c82af1e..32a5b37 100644 --- a/client/src/client/client.cpp +++ b/client/src/client/client.cpp @@ -8,7 +8,7 @@ void tcp::client::start(const std::string_view server_ip, const uint16_t port) { int ret = SSL_CTX_load_verify_locations(m_ssl_ctx, "ssl/rootCA.crt", nullptr); if (ret != 1) { - io::logger->error("failed to load ca"); + io::logger->error("failed to load ca."); return; } SSL_CTX_set_verify(m_ssl_ctx, SSL_VERIFY_PEER, 0); @@ -39,7 +39,7 @@ void tcp::client::start(const std::string_view server_ip, const uint16_t port) { if (ret != 1) { ret = SSL_get_error(m_server_ssl, ret); - io::logger->error("ssl connection failed, code {}", ret); + io::logger->error("secure connection failed, code {}", ret); return; } diff --git a/client/src/client/client.h b/client/src/client/client.h index 1fc5191..2e4374f 100644 --- a/client/src/client/client.h +++ b/client/src/client/client.h @@ -1,15 +1,14 @@ #pragma once #include "../util/io.h" #include "../util/events.h" -#include "../util/enc.h" #include "packet.h" namespace tcp { struct version_t { - uint8_t major = 0; - uint8_t minor = 1; - uint8_t patch = 0; + uint8_t major; + uint8_t minor; + uint8_t patch; }; class client { diff --git a/client/src/client/packet.h b/client/src/client/packet.h index df44041..d6594b9 100644 --- a/client/src/client/packet.h +++ b/client/src/client/packet.h @@ -1,4 +1,5 @@ #pragma once +#include "../util/enc.h" namespace tcp { constexpr size_t session_id_len = 10; @@ -23,10 +24,13 @@ struct packet_t { return; } - session_id = msg.substr(0, session_id_len); + message = msg; + enc::decrypt_message(message); - action = msg[session_id_len]; - message = msg.substr(session_id_len); + session_id = message.substr(0, session_id_len); + + action = message[session_id_len]; + message = message.substr(session_id_len); } else { session_id = session; @@ -38,6 +42,7 @@ struct packet_t { session_id.clear(); return; } + enc::encrypt_message(message); } } diff --git a/client/src/main.cpp b/client/src/main.cpp index 410197f..220afd6 100644 --- a/client/src/main.cpp +++ b/client/src/main.cpp @@ -18,7 +18,7 @@ int main(int argc, char* argv[]) { // first packet is the session id and current version if (packet.id == 1) { client.session_id = packet.session_id; - tcp::version_t v; + tcp::version_t v{0, 1, 0}; auto version = fmt::format("{}.{}.{}", v.major, v.minor, v.patch); if(version != packet.message) { io::logger->error("please update your client"); diff --git a/server/src/client/client.h b/server/src/client/client.h index 9459eb6..1dbb8d5 100644 --- a/server/src/client/client.h +++ b/server/src/client/client.h @@ -1,6 +1,5 @@ #pragma once #include "../server/packet.h" -#include "../util/enc.h" namespace tcp { diff --git a/server/src/server/packet.h b/server/src/server/packet.h index b31f033..57c6229 100644 --- a/server/src/server/packet.h +++ b/server/src/server/packet.h @@ -1,4 +1,5 @@ #pragma once +#include "../util/enc.h" namespace tcp { constexpr size_t session_id_len = 10; @@ -20,10 +21,12 @@ struct packet_t { return; } - session_id = msg.substr(0, session_id_len); + message = msg; + enc::decrypt_message(message); + session_id = message.substr(0, session_id_len); - action = msg[session_id_len]; - message = msg.substr(session_id_len); + action = message[session_id_len]; + message = message.substr(session_id_len); } else { if (msg.size() > message_len) { io::logger->error("packet message exceeds limit"); @@ -33,6 +36,7 @@ struct packet_t { session_id = session; message = fmt::format("{}{}", session_id, msg); + enc::encrypt_message(message); } } diff --git a/server/src/server/ssl.h b/server/src/server/ssl.h index 30a4faa..344064d 100644 --- a/server/src/server/ssl.h +++ b/server/src/server/ssl.h @@ -20,6 +20,7 @@ class ssl { return false; } + SSL_CTX_set_verify(m_ctx, SSL_VERIFY_PEER, 0); int res = SSL_CTX_use_certificate_chain_file(m_ctx, m_cert.data()); if (res != 1) { io::logger->error("failed to load certificate."); @@ -47,7 +48,6 @@ class ssl { return false; } - SSL_CTX_set_verify(m_ctx, SSL_VERIFY_PEER, 0); return true; } |