OpenTTD Source
20241121-master-g67a0fccfad
|
Server side handler for using X25519 with a password-authenticated key exchange. More...
#include <network_crypto_internal.h>
Public Member Functions | |
X25519PAKEServerHandler (const X25519SecretKey &secret_key, const NetworkAuthenticationPasswordProvider *password_provider) | |
Create the handler with the given password provider. More... | |
virtual void | SendRequest (struct Packet &p) override |
Create the request to send to the client. More... | |
virtual ResponseResult | ReceiveResponse (struct Packet &p) override |
Read the response from the client. More... | |
virtual std::string_view | GetName () const override |
Get the name of the handler for debug messages. More... | |
virtual NetworkAuthenticationMethod | GetAuthenticationMethod () const override |
Get the method this handler is providing functionality for. More... | |
virtual bool | CanBeUsed () const override |
Checks whether this handler can be used with the current configuration. More... | |
virtual std::string | GetPeerPublicKey () const override |
Get the public key the peer provided during the authentication. More... | |
virtual void | SendEnableEncryption (struct Packet &p) override |
Create the request to enable encryption to the client. More... | |
virtual std::unique_ptr< NetworkEncryptionHandler > | CreateClientToServerEncryptionHandler () const override |
Create a NetworkEncryptionHandler to encrypt or decrypt messages from the client to the server. More... | |
virtual std::unique_ptr< NetworkEncryptionHandler > | CreateServerToClientEncryptionHandler () const override |
Create a NetworkEncryptionHandler to encrypt or decrypt messages from the server to the client. More... | |
Private Attributes | |
const NetworkAuthenticationPasswordProvider * | password_provider |
The password to check against. | |
Additional Inherited Members | |
Public Types inherited from NetworkAuthenticationServerHandler | |
enum | ResponseResult { AUTHENTICATED , NOT_AUTHENTICATED , RETRY_NEXT_METHOD } |
The processing result of receiving a response. More... | |
Static Public Member Functions inherited from NetworkAuthenticationServerHandler | |
static std::unique_ptr< NetworkAuthenticationServerHandler > | Create (const NetworkAuthenticationPasswordProvider *password_provider, const NetworkAuthenticationAuthorizedKeyHandler *authorized_key_handler, NetworkAuthenticationMethodMask client_supported_method_mask=~static_cast< NetworkAuthenticationMethodMask >(0)) |
Create a NetworkAuthenticationServerHandler. More... | |
Protected Types inherited from NetworkAuthenticationServerHandler | |
enum | ResponseResult { AUTHENTICATED , NOT_AUTHENTICATED , RETRY_NEXT_METHOD } |
The processing result of receiving a response. More... | |
Protected Member Functions inherited from X25519AuthenticationHandler | |
X25519AuthenticationHandler (const X25519SecretKey &secret_key) | |
Create the handler, and generate the public keys accordingly. More... | |
void | SendRequest (struct Packet &p) |
bool | ReceiveRequest (struct Packet &p) |
Read the key exchange data from a Packet that came from the server,. More... | |
bool | SendResponse (struct Packet &p, std::string_view derived_key_extra_payload) |
Perform the key exchange, and when that is correct fill the Packet with the appropriate data. More... | |
NetworkAuthenticationServerHandler::ResponseResult | ReceiveResponse (struct Packet &p, std::string_view derived_key_extra_payload) |
Read the key exchange data from a Packet that came from the client, and check whether the client passes the key exchange successfully. More... | |
std::string | GetPeerPublicKey () const |
Get the public key the peer provided for the key exchange. More... | |
void | SendEnableEncryption (struct Packet &p) const |
Send the initial nonce for the encrypted connection. More... | |
bool | ReceiveEnableEncryption (struct Packet &p) |
Receive the initial nonce for the encrypted connection. More... | |
std::unique_ptr< NetworkEncryptionHandler > | CreateClientToServerEncryptionHandler () const |
std::unique_ptr< NetworkEncryptionHandler > | CreateServerToClientEncryptionHandler () const |
Static Protected Member Functions inherited from NetworkAuthenticationServerHandler | |
static std::unique_ptr< NetworkAuthenticationServerHandler > | Create (const NetworkAuthenticationPasswordProvider *password_provider, const NetworkAuthenticationAuthorizedKeyHandler *authorized_key_handler, NetworkAuthenticationMethodMask client_supported_method_mask=~static_cast< NetworkAuthenticationMethodMask >(0)) |
Create a NetworkAuthenticationServerHandler. More... | |
Server side handler for using X25519 with a password-authenticated key exchange.
This follows the method described in X25519AuthenticationHandler
, were the password is the extra payload.
Definition at line 213 of file network_crypto_internal.h.
|
inline |
Create the handler with the given password provider.
secret_key | The secret key to initialize this handler with. |
password_provider | The provider for the passwords. |
Definition at line 222 of file network_crypto_internal.h.
|
inlineoverridevirtual |
Checks whether this handler can be used with the current configuration.
For example when there is no password, the handler cannot be used.
Implements NetworkAuthenticationServerHandler.
Definition at line 229 of file network_crypto_internal.h.
References NetworkAuthenticationPasswordProvider::GetPassword().
|
inlineoverridevirtual |
Create a NetworkEncryptionHandler to encrypt or decrypt messages from the client to the server.
Implements NetworkAuthenticationHandler.
Definition at line 233 of file network_crypto_internal.h.
|
inlineoverridevirtual |
Create a NetworkEncryptionHandler to encrypt or decrypt messages from the server to the client.
Implements NetworkAuthenticationHandler.
Definition at line 234 of file network_crypto_internal.h.
|
inlineoverridevirtual |
Get the method this handler is providing functionality for.
NetworkAuthenticationMethod
. Implements NetworkAuthenticationHandler.
Definition at line 228 of file network_crypto_internal.h.
References NETWORK_AUTH_METHOD_X25519_PAKE.
|
inlineoverridevirtual |
Get the name of the handler for debug messages.
Implements NetworkAuthenticationHandler.
Definition at line 227 of file network_crypto_internal.h.
|
inlineoverridevirtual |
Get the public key the peer provided during the authentication.
Implements NetworkAuthenticationServerHandler.
Definition at line 231 of file network_crypto_internal.h.
References X25519AuthenticationHandler::GetPeerPublicKey().
|
inlineoverridevirtual |
Read the response from the client.
p | The packet to read the response from. |
ResponseResult
describing the result. Implements NetworkAuthenticationServerHandler.
Definition at line 225 of file network_crypto_internal.h.
References NetworkAuthenticationPasswordProvider::GetPassword(), and X25519AuthenticationHandler::ReceiveResponse().
|
inlineoverridevirtual |
Create the request to enable encryption to the client.
p | The packet to write the enable encryption request to. |
Implements NetworkAuthenticationServerHandler.
Definition at line 232 of file network_crypto_internal.h.
References X25519AuthenticationHandler::SendEnableEncryption().
|
inlineoverridevirtual |
Create the request to send to the client.
p | The packet to write the request to. |
Implements NetworkAuthenticationServerHandler.
Definition at line 224 of file network_crypto_internal.h.