26#ifndef ROUTING_CLASSIC_AUTH_INCLUDED
27#define ROUTING_CLASSIC_AUTH_INCLUDED
31#include <system_error>
33#include <openssl/ssl.h>
47using EvpPkey = std::unique_ptr<EVP_PKEY, OsslDeleter<EVP_PKEY>>;
55 std::string_view pubkey);
58 std::string plaintext, EVP_PKEY *pkey);
61 std::string_view ciphertext, EVP_PKEY *priv);
64 SSL_CTX *ssl_ctx, std::string_view encrypted, std::string_view nonce);
67 const EvpPkey &pkey, std::string_view
password, std::string_view nonce);
78 void reset(std::shared_ptr<TlsServerContext> tls_context = {}) {
87 std::string_view encrypted, std::string_view nonce)
const;
Definition: classic_auth.h:49
static stdx::expected< std::string, std::error_code > public_key_encrypt(std::string plaintext, EVP_PKEY *pkey)
Definition: classic_auth.cc:101
static stdx::expected< std::string, std::error_code > private_key_decrypt(std::string_view ciphertext, EVP_PKEY *priv)
Definition: classic_auth.cc:141
static stdx::expected< std::string, std::error_code > rsa_encrypt_password(const EvpPkey &pkey, std::string_view password, std::string_view nonce)
Definition: classic_auth.cc:235
static stdx::expected< std::string, std::error_code > public_key_from_ssl_ctx_as_pem(SSL_CTX *ssl_ctx)
Definition: classic_auth.cc:76
static bool connection_has_public_key(MysqlRoutingClassicConnectionBase *connection)
Definition: classic_auth.cc:267
static std::string_view strip_trailing_null(std::string_view s)
remove trailing \0 in a string_view.
Definition: classic_auth.cc:45
static stdx::expected< std::string, std::error_code > rsa_decrypt_password(SSL_CTX *ssl_ctx, std::string_view encrypted, std::string_view nonce)
Definition: classic_auth.cc:214
static stdx::expected< EvpPkey, std::error_code > public_key_from_pem(std::string_view pubkey)
Definition: classic_auth.cc:89
Definition: classic_connection_base.h:57
Pins one TLS generation for an RSA password exchange.
Definition: classic_auth.h:76
std::shared_ptr< TlsServerContext > tls_context_
Definition: classic_auth.h:90
void reset(std::shared_ptr< TlsServerContext > tls_context={})
Definition: classic_auth.h:78
stdx::expected< std::string, std::error_code > public_key() const
Definition: classic_auth.cc:252
stdx::expected< std::string, std::error_code > decrypt_password(std::string_view encrypted, std::string_view nonce) const
Definition: classic_auth.cc:259
std::unique_ptr< EVP_PKEY, OsslDeleter< EVP_PKEY > > EvpPkey
Definition: classic_auth.cc:69
Definition: expected.h:286
static char * password
Definition: mysql_secure_installation.cc:58
void operator()(EVP_PKEY *k)
Definition: classic_auth.h:44
Definition: classic_auth.h:40