mirror of https://github.com/OpenTTD/OpenTTD.git
Codechange: add setting for authorized/secret/public keys
This commit is contained in:
parent
fb9d4afa5c
commit
dd532cbc77
|
@ -91,4 +91,10 @@ static const uint NETWORK_GRF_NAME_LENGTH = 80; ///< Maxim
|
||||||
*/
|
*/
|
||||||
static const uint NETWORK_MAX_GRF_COUNT = 255;
|
static const uint NETWORK_MAX_GRF_COUNT = 255;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The maximum length of the hexadecimal encoded secret keys, in bytes including '\0'.
|
||||||
|
* This is related to \c X25519_KEY_SIZE in the network crypto internals.
|
||||||
|
*/
|
||||||
|
static const uint NETWORK_SECRET_KEY_LENGTH = 32 * 2 + 1;
|
||||||
|
|
||||||
#endif /* NETWORK_CORE_CONFIG_H */
|
#endif /* NETWORK_CORE_CONFIG_H */
|
||||||
|
|
|
@ -137,6 +137,7 @@ private:
|
||||||
"newgrf",
|
"newgrf",
|
||||||
"servers",
|
"servers",
|
||||||
"server_bind_addresses",
|
"server_bind_addresses",
|
||||||
|
"server_authorized_keys",
|
||||||
};
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -1285,6 +1286,7 @@ static void HandleSettingDescs(IniFile &generic_ini, IniFile &private_ini, IniFi
|
||||||
proc_list(private_ini, "server_bind_addresses", _network_bind_list);
|
proc_list(private_ini, "server_bind_addresses", _network_bind_list);
|
||||||
proc_list(private_ini, "servers", _network_host_list);
|
proc_list(private_ini, "servers", _network_host_list);
|
||||||
proc_list(private_ini, "bans", _network_ban_list);
|
proc_list(private_ini, "bans", _network_ban_list);
|
||||||
|
proc_list(private_ini, "server_authorized_keys", _settings_client.network.server_authorized_keys);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -313,9 +313,12 @@ struct NetworkSettings {
|
||||||
std::string server_invite_code_secret; ///< Secret to proof we got this invite code from the Game Coordinator.
|
std::string server_invite_code_secret; ///< Secret to proof we got this invite code from the Game Coordinator.
|
||||||
std::string server_name; ///< name of the server
|
std::string server_name; ///< name of the server
|
||||||
std::string server_password; ///< password for joining this server
|
std::string server_password; ///< password for joining this server
|
||||||
|
std::vector<std::string> server_authorized_keys; ///< Public keys of clients that are authorized to connect to the game.
|
||||||
std::string rcon_password; ///< password for rconsole (server side)
|
std::string rcon_password; ///< password for rconsole (server side)
|
||||||
std::string admin_password; ///< password for the admin network
|
std::string admin_password; ///< password for the admin network
|
||||||
std::string client_name; ///< name of the player (as client)
|
std::string client_name; ///< name of the player (as client)
|
||||||
|
std::string client_secret_key; ///< The secret key of the client for authorized key logins.
|
||||||
|
std::string client_public_key; ///< The public key of the client for authorized key logins.
|
||||||
std::string default_company_pass; ///< default password for new companies in encrypted form
|
std::string default_company_pass; ///< default password for new companies in encrypted form
|
||||||
std::string connect_to_ip; ///< default for the "Add server" query
|
std::string connect_to_ip; ///< default for the "Add server" query
|
||||||
std::string network_id; ///< network ID for servers
|
std::string network_id; ///< network ID for servers
|
||||||
|
|
|
@ -61,6 +61,24 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
|
||||||
def = nullptr
|
def = nullptr
|
||||||
cat = SC_BASIC
|
cat = SC_BASIC
|
||||||
|
|
||||||
|
[SDTC_SSTR]
|
||||||
|
var = network.client_secret_key
|
||||||
|
type = SLE_STR
|
||||||
|
length = NETWORK_SECRET_KEY_LENGTH
|
||||||
|
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
|
||||||
|
def = nullptr
|
||||||
|
; Prevent the user from setting the secret key from the console using 'setting'
|
||||||
|
pre_cb = [](auto) { return false; }
|
||||||
|
|
||||||
|
[SDTC_SSTR]
|
||||||
|
var = network.client_public_key
|
||||||
|
type = SLE_STR
|
||||||
|
length = NETWORK_SECRET_KEY_LENGTH
|
||||||
|
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
|
||||||
|
def = nullptr
|
||||||
|
; Prevent the user from setting the public key from the console using 'setting'
|
||||||
|
pre_cb = [](auto) { return false; }
|
||||||
|
|
||||||
[SDTC_SSTR]
|
[SDTC_SSTR]
|
||||||
var = network.default_company_pass
|
var = network.default_company_pass
|
||||||
type = SLE_STR
|
type = SLE_STR
|
||||||
|
|
|
@ -16,6 +16,9 @@
|
||||||
#include "../network/core/packet.h"
|
#include "../network/core/packet.h"
|
||||||
#include "../string_func.h"
|
#include "../string_func.h"
|
||||||
|
|
||||||
|
/* The length of the hexadecimal representation of a X25519 key must fit in the key length. */
|
||||||
|
static_assert(NETWORK_SECRET_KEY_LENGTH >= X25519_KEY_SIZE * 2 + 1);
|
||||||
|
|
||||||
class MockNetworkSocketHandler : public NetworkSocketHandler {
|
class MockNetworkSocketHandler : public NetworkSocketHandler {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue