aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralpine <[email protected]>2020-06-26 14:06:25 +0200
committeralpine <[email protected]>2020-06-26 14:06:25 +0200
commitd89852b672d038ad07198dfeb6a5b1e89be84bb5 (patch)
treee04e7cfcccf6b96af19678db79eba56acd57deed
parentRemoved xor on streaming for now. (diff)
downloadloader-d89852b672d038ad07198dfeb6a5b1e89be84bb5.tar.xz
loader-d89852b672d038ad07198dfeb6a5b1e89be84bb5.zip
Added server certificate verification on client.
Xor is now used only with messages.
-rw-r--r--.clang-format68
-rw-r--r--CMakeLists.txt5
-rw-r--r--client/src/client/client.cpp4
-rw-r--r--client/src/client/client.h7
-rw-r--r--client/src/client/packet.h11
-rw-r--r--client/src/main.cpp2
-rw-r--r--server/src/client/client.h1
-rw-r--r--server/src/server/packet.h10
-rw-r--r--server/src/server/ssl.h2
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;
}