OpenTTD Source: X25519PAKEClientHandler Class Reference

OpenTTD Source 15.0-beta1

Public Member Functions | Private Attributes
X25519PAKEClientHandler Class Reference

Client side handler for using X25519 with a password-authenticated key exchange. More...

`#include <network_crypto_internal.h>`

Inheritance diagram for X25519PAKEClientHandler:

## Public Member Functions
| X25519PAKEClientHandler (const X25519SecretKey &secret_key, std::shared_ptr< NetworkAuthenticationPasswordRequestHandler > handler)
| Create the handler with the given password handler.
virtual RequestResult | ReceiveRequest (struct Packet &p) override
| Read a request from the server.
virtual bool | SendResponse (struct Packet &p) override
| Create the response to send to the server.
virtual std::string_view | GetName () const override
| Get the name of the handler for debug messages.
virtual NetworkAuthenticationMethod | GetAuthenticationMethod () const override
| Get the method this handler is providing functionality for.
virtual bool | ReceiveEnableEncryption (struct Packet &p) override
| Read the request to enable encryption from the server.
virtual std::unique_ptr< NetworkEncryptionHandler > | CreateClientToServerEncryptionHandler () const override
| Create a NetworkEncryptionHandler to encrypt or decrypt messages from the client to the server.
virtual std::unique_ptr< NetworkEncryptionHandler > | CreateServerToClientEncryptionHandler () const override
| Create a NetworkEncryptionHandler to encrypt or decrypt messages from the server to the client.

## Private Attributes
std::shared_ptr< NetworkAuthenticationPasswordRequestHandler > | handler

## Additional Inherited Members
Public Types inherited from NetworkAuthenticationClientHandler
enum | RequestResult { AWAIT_USER_INPUT , READY_FOR_RESPONSE , INVALID }
| The processing result of receiving a request. More...
Static Public Member Functions inherited from NetworkAuthenticationClientHandler
static void | EnsureValidSecretKeyAndUpdatePublicKey (std::string &secret_key, std::string &public_key)
| Ensures that the given secret key is valid, and when not overwrite it with a valid secret key.
static std::unique_ptr< NetworkAuthenticationClientHandler > | Create (std::shared_ptr< NetworkAuthenticationPasswordRequestHandler > password_handler, std::string &secret_key, std::string &public_key)
| Create a NetworkAuthenticationClientHandler.
Protected Types inherited from NetworkAuthenticationClientHandler
enum | RequestResult { AWAIT_USER_INPUT , READY_FOR_RESPONSE , INVALID }
| The processing result of receiving a request. More...
Protected Member Functions inherited from X25519AuthenticationHandler
| X25519AuthenticationHandler (const X25519SecretKey &secret_key)
| Create the handler, and generate the public keys accordingly.
void | SendRequest (struct Packet &p)
bool | ReceiveRequest (struct Packet &p)
| Read the key exchange data from a `Packet` that came from the server,.
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.
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.
std::string | GetPeerPublicKey () const
| Get the public key the peer provided for the key exchange.
void | SendEnableEncryption (struct Packet &p) const
| Send the initial nonce for the encrypted connection.
bool | ReceiveEnableEncryption (struct Packet &p)
| Receive the initial nonce for the encrypted connection.
std::unique_ptr< NetworkEncryptionHandler > | CreateClientToServerEncryptionHandler () const
std::unique_ptr< NetworkEncryptionHandler > | CreateServerToClientEncryptionHandler () const
Static Protected Member Functions inherited from NetworkAuthenticationClientHandler
static void | EnsureValidSecretKeyAndUpdatePublicKey (std::string &secret_key, std::string &public_key)
| Ensures that the given secret key is valid, and when not overwrite it with a valid secret key.
static std::unique_ptr< NetworkAuthenticationClientHandler > | Create (std::shared_ptr< NetworkAuthenticationPasswordRequestHandler > password_handler, std::string &secret_key, std::string &public_key)
| Create a NetworkAuthenticationClientHandler.

## Detailed Description

Client 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 185 of file network_crypto_internal.h.

## Constructor & Destructor Documentation

## ◆ X25519PAKEClientHandler()

X25519PAKEClientHandler::X25519PAKEClientHandler | ( | const X25519SecretKey & | secret_key,
|  | std::shared_ptr< NetworkAuthenticationPasswordRequestHandler > | handler
| ) |  |
| inline

Create the handler with the given password handler.

Parameters

  secret_key | The secret key to initialize this handler with.
  handler | The handler requesting the password from the user, if required.

Definition at line 195 of file network_crypto_internal.h.

## Member Function Documentation

## ◆ CreateClientToServerEncryptionHandler()

virtual std::unique_ptr< NetworkEncryptionHandler > X25519PAKEClientHandler::CreateClientToServerEncryptionHandler | ( |  | ) | const
| inlineoverridevirtual

Create a NetworkEncryptionHandler to encrypt or decrypt messages from the client to the server.

Returns
  The handler for the client to server encryption.

Implements NetworkAuthenticationHandler.

Definition at line 204 of file network_crypto_internal.h.

## ◆ CreateServerToClientEncryptionHandler()

virtual std::unique_ptr< NetworkEncryptionHandler > X25519PAKEClientHandler::CreateServerToClientEncryptionHandler | ( |  | ) | const
| inlineoverridevirtual

Create a NetworkEncryptionHandler to encrypt or decrypt messages from the server to the client.

Returns
  The handler for the server to client encryption.

Implements NetworkAuthenticationHandler.

Definition at line 205 of file network_crypto_internal.h.

## ◆ GetAuthenticationMethod()

virtual NetworkAuthenticationMethod X25519PAKEClientHandler::GetAuthenticationMethod | ( |  | ) | const
| inlineoverridevirtual

Get the method this handler is providing functionality for.

Returns
  The `NetworkAuthenticationMethod`.

Implements NetworkAuthenticationHandler.

Definition at line 201 of file network_crypto_internal.h.

References NETWORK_AUTH_METHOD_X25519_PAKE.

## ◆ GetName()

virtual std::string_view X25519PAKEClientHandler::GetName | ( |  | ) | const
| inlineoverridevirtual

Get the name of the handler for debug messages.

Returns
  The name of the handler.

Implements NetworkAuthenticationHandler.

Definition at line 200 of file network_crypto_internal.h.

## ◆ ReceiveEnableEncryption()

virtual bool X25519PAKEClientHandler::ReceiveEnableEncryption | ( | struct Packet & | p | ) |
| inlineoverridevirtual

Read the request to enable encryption from the server.

Parameters

  p | The request from the server.

Implements NetworkAuthenticationClientHandler.

Definition at line 203 of file network_crypto_internal.h.

References X25519AuthenticationHandler::ReceiveEnableEncryption().

## ◆ ReceiveRequest()

NetworkAuthenticationClientHandler::RequestResult X25519PAKEClientHandler::ReceiveRequest | ( | struct Packet & | p | ) |
| overridevirtual

Read a request from the server.

Parameters

  p | The packet to read the request from.

Returns
  True when valid, otherwise false.

Implements NetworkAuthenticationClientHandler.

Definition at line 318 of file network_crypto.cpp.

References NetworkAuthenticationClientHandler::AWAIT_USER_INPUT, NetworkAuthenticationClientHandler::INVALID, and X25519AuthenticationHandler::ReceiveRequest().

## ◆ SendResponse()

virtual bool X25519PAKEClientHandler::SendResponse | ( | struct Packet & | p | ) |
| inlineoverridevirtual

Create the response to send to the server.

Parameters

  p | The packet to write the response from.

Returns
  True when a valid packet was made, otherwise false.

Implements NetworkAuthenticationClientHandler.

Definition at line 198 of file network_crypto_internal.h.

References X25519AuthenticationHandler::SendResponse().

## Field Documentation

## ◆ handler

std::shared_ptr<NetworkAuthenticationPasswordRequestHandler> X25519PAKEClientHandler::handler
| private

Definition at line 187 of file network_crypto_internal.h.

The documentation for this class was generated from the following files:

- src/network/network_crypto_internal.h
- src/network/network_crypto.cpp