Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 17dd504a7a | |||
| 4ba59fb23f | |||
| 9f52bdd54c | |||
| 9e5e728438 | |||
| 29e90938c5 | |||
| d20bee9e60 |
@@ -38,23 +38,4 @@ namespace ColumnLynx::Utils {
|
||||
inline std::string uint8ArrayToString(const uint8_t* data, size_t length) {
|
||||
return std::string(reinterpret_cast<const char*>(data), length);
|
||||
}
|
||||
|
||||
inline constexpr uint64_t bswap64(uint64_t x) {
|
||||
return ((x & 0x00000000000000FFULL) << 56) |
|
||||
((x & 0x000000000000FF00ULL) << 40) |
|
||||
((x & 0x0000000000FF0000ULL) << 24) |
|
||||
((x & 0x00000000FF000000ULL) << 8) |
|
||||
((x & 0x000000FF00000000ULL) >> 8) |
|
||||
((x & 0x0000FF0000000000ULL) >> 24) |
|
||||
((x & 0x00FF000000000000ULL) >> 40) |
|
||||
((x & 0xFF00000000000000ULL) >> 56);
|
||||
}
|
||||
|
||||
inline constexpr uint64_t htobe64(uint64_t x) {
|
||||
return bswap64(x); // host -> big-endian (for little-endian hosts)
|
||||
}
|
||||
|
||||
inline constexpr uint64_t be64toh(uint64_t x) {
|
||||
return bswap64(x); // big-endian -> host (for little-endian hosts)
|
||||
}
|
||||
};
|
||||
@@ -63,7 +63,7 @@ int main(int argc, char** argv) {
|
||||
WintunInitialize();
|
||||
#endif
|
||||
|
||||
std::shared_ptr<VirtualInterface> tun = std::make_shared<VirtualInterface>("utun1");
|
||||
std::shared_ptr<VirtualInterface> tun = std::make_shared<VirtualInterface>("utun0");
|
||||
log("Using virtual interface: " + tun->getName());
|
||||
|
||||
LibSodiumWrapper sodiumWrapper = LibSodiumWrapper();
|
||||
@@ -111,4 +111,4 @@ int main(int argc, char** argv) {
|
||||
} catch (const std::exception& e) {
|
||||
error("Client error: " + std::string(e.what()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -247,9 +247,6 @@ namespace ColumnLynx::Net::TCP {
|
||||
|
||||
std::memcpy(&mConnectionSessionID, decrypted.data(), sizeof(mConnectionSessionID));
|
||||
std::memcpy(&mTunConfig, decrypted.data() + sizeof(mConnectionSessionID), sizeof(Protocol::TunConfig));
|
||||
|
||||
mConnectionSessionID = Utils::be64toh(mConnectionSessionID);
|
||||
|
||||
Utils::log("Connection established with Session ID: " + std::to_string(mConnectionSessionID));
|
||||
|
||||
if (mSessionIDRef) { // Copy to the global reference
|
||||
|
||||
@@ -173,6 +173,8 @@ namespace ColumnLynx::Net::TCP {
|
||||
// Make a Session ID
|
||||
randombytes_buf(&mConnectionSessionID, sizeof(mConnectionSessionID));
|
||||
|
||||
// TODO: Make the session ID little-endian for network transmission
|
||||
|
||||
// Encrypt the Session ID with the established AES key (using symmetric encryption, nonce can be all zeros for this purpose)
|
||||
Nonce symNonce{}; // All zeros
|
||||
|
||||
@@ -188,10 +190,8 @@ namespace ColumnLynx::Net::TCP {
|
||||
|
||||
SessionRegistry::getInstance().lockIP(mConnectionSessionID, clientIP);
|
||||
|
||||
uint64_t sessionIDNet = Utils::htobe64(mConnectionSessionID);
|
||||
|
||||
std::vector<uint8_t> payload(sizeof(uint64_t) + sizeof(tunConfig));
|
||||
std::memcpy(payload.data(), &sessionIDNet, sizeof(uint64_t));
|
||||
std::memcpy(payload.data(), &mConnectionSessionID, sizeof(uint64_t));
|
||||
std::memcpy(payload.data() + sizeof(uint64_t), &tunConfig, sizeof(tunConfig));
|
||||
|
||||
std::vector<uint8_t> encryptedPayload = Utils::LibSodiumWrapper::encryptMessage(
|
||||
|
||||
Reference in New Issue
Block a user