From 7eac0222e62dfac715299e0b4d18d070bda0ecd4 Mon Sep 17 00:00:00 2001 From: Michael Hansen Date: Tue, 12 Apr 2011 23:08:24 -0700 Subject: [PATCH] Swap DH key bytes to maintain compatability with PC's server.ini format --- .../pfConsole/pfConsoleCommandsNet.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Sources/Plasma/FeatureLib/pfConsole/pfConsoleCommandsNet.cpp b/Sources/Plasma/FeatureLib/pfConsole/pfConsoleCommandsNet.cpp index b3145a78..2e59c2c3 100644 --- a/Sources/Plasma/FeatureLib/pfConsole/pfConsoleCommandsNet.cpp +++ b/Sources/Plasma/FeatureLib/pfConsole/pfConsoleCommandsNet.cpp @@ -1062,6 +1062,14 @@ PF_CONSOLE_CMD( * ***/ +//TODO: Fix Plasma to use OpenSSL's byte order (or better yet, to use OpenSSL), +// so this hack isn't needed +static void swap_key_bytes(byte keyData[]) +{ + for (size_t i = 0; i < (kNetDiffieHellmanKeyBits / 16); ++i) + std::swap(keyData[i], keyData[ (kNetDiffieHellmanKeyBits / 8) - i - 1 ]); +} + //============================================================================ // Server group PF_CONSOLE_GROUP(Server) @@ -1140,6 +1148,7 @@ PF_CONSOLE_CMD( Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0], kNetDiffieHellmanKeyBits / 8, kAuthDhNData); + swap_key_bytes(kAuthDhNData); } //============================================================================ @@ -1158,6 +1167,7 @@ PF_CONSOLE_CMD( Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0], kNetDiffieHellmanKeyBits / 8, kAuthDhXData); + swap_key_bytes(kAuthDhXData); } @@ -1193,6 +1203,7 @@ PF_CONSOLE_CMD( Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0], kNetDiffieHellmanKeyBits / 8, kCsrDhNData); + swap_key_bytes(kCsrDhNData); } //============================================================================ @@ -1211,6 +1222,7 @@ PF_CONSOLE_CMD( Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0], kNetDiffieHellmanKeyBits / 8, kCsrDhXData); + swap_key_bytes(kCsrDhXData); } @@ -1234,6 +1246,7 @@ PF_CONSOLE_CMD( Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0], kNetDiffieHellmanKeyBits / 8, kGameDhNData); + swap_key_bytes(kGameDhNData); } //============================================================================ @@ -1252,6 +1265,7 @@ PF_CONSOLE_CMD( Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0], kNetDiffieHellmanKeyBits / 8, kGameDhXData); + swap_key_bytes(kGameDhXData); } @@ -1287,6 +1301,7 @@ PF_CONSOLE_CMD( Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0], kNetDiffieHellmanKeyBits / 8, kGateKeeperDhNData); + swap_key_bytes(kGateKeeperDhNData); } //============================================================================ @@ -1305,4 +1320,5 @@ PF_CONSOLE_CMD( Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0], kNetDiffieHellmanKeyBits / 8, kGateKeeperDhXData); + swap_key_bytes(kGateKeeperDhXData); }