25#ifndef ROUTING_CLASSIC_AUTH_INCLUDED
26#define ROUTING_CLASSIC_AUTH_INCLUDED
30#include <system_error>
32#include <openssl/ssl.h>
45using EvpPkey = std::unique_ptr<EVP_PKEY, OsslDeleter<EVP_PKEY>>;
53 std::string_view pubkey);
56 std::string plaintext, EVP_PKEY *pkey);
59 std::string_view ciphertext, EVP_PKEY *priv);
62 SSL_CTX *ssl_ctx, std::string_view encrypted, std::string_view nonce);
65 const EvpPkey &pkey, std::string_view
password, std::string_view nonce);
Definition: classic_auth.h:47
static stdx::expected< std::string, std::error_code > public_key_encrypt(std::string plaintext, EVP_PKEY *pkey)
Definition: classic_auth.cc:124
static stdx::expected< std::string, std::error_code > private_key_decrypt(std::string_view ciphertext, EVP_PKEY *priv)
Definition: classic_auth.cc:165
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:275
static stdx::expected< std::string, std::error_code > public_key_from_ssl_ctx_as_pem(SSL_CTX *ssl_ctx)
Definition: classic_auth.cc:85
static bool connection_has_public_key(MysqlRoutingClassicConnectionBase *connection)
Definition: classic_auth.cc:292
static std::string_view strip_trailing_null(std::string_view s)
remove trailing \0 in a string_view.
Definition: classic_auth.cc:44
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:245
static stdx::expected< EvpPkey, std::error_code > public_key_from_pem(std::string_view pubkey)
Definition: classic_auth.cc:111
Definition: classic_connection_base.h:257
std::unique_ptr< EVP_PKEY, OsslDeleter< EVP_PKEY > > EvpPkey
Definition: classic_auth.cc:75
Definition: expected.h:943
static char * password
Definition: mysql_secure_installation.cc:57
void operator()(EVP_PKEY *k)
Definition: classic_auth.h:42
Definition: classic_auth.h:38