1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-05-28 13:01:26 +03:00
2022-01-21 16:43:49 +00:00

83 lines
2.0 KiB
C++

/*
* Copyright (c) 2018 MariaDB Corporation Ab
*
* Use of this software is governed by the Business Source License included
* in the LICENSE.TXT file and at www.mariadb.com/bsl11.
*
* Change Date: 2025-05-25
*
* On the date above, in accordance with the Business Source License, use
* of this software will be governed by version 2 or later of the General
* Public License.
*/
#include <vector>
#include <string>
#include "idberrorinfo.h"
#include "logger.h"
class CSPasswdLogging
{
public:
static CSPasswdLogging* get();
~CSPasswdLogging();
void log(int priority, const char* format, ...);
private:
CSPasswdLogging();
};
/**
* Decrypt an encrypted password using the key loaded at startup. If the password is not encrypted,
* ie is not a HEX string, return the original.
*
* @param input The encrypted password
* @return The decrypted password.
*/
std::string decrypt_password(const std::string& input);
#include <memory>
using ByteVec = std::vector<uint8_t>;
struct evp_cipher_st;
extern const char* const SECRETS_FILENAME;
/**
* Returns the cipher used for password encryption.
*
* @return Cipher
*/
const evp_cipher_st* secrets_cipher();
/**
* Returns encryption key length.
*
* @return Encryption key length
*/
int secrets_keylen();
/**
* Returns initialization vector length.
*
* @return initialization vector length
*/
int secrets_ivlen();
bool load_encryption_keys();
std::string encrypt_password_old(const ByteVec& key, const ByteVec& iv, const std::string& input);
std::string encrypt_password(const ByteVec& key, const std::string& input);
std::string decrypt_password_old(const ByteVec& key, const ByteVec& iv, const std::string& input);
std::string decrypt_password(const ByteVec& key, const std::string& input);
struct ReadKeyResult
{
bool ok{false};
ByteVec key;
ByteVec iv;
};
ReadKeyResult secrets_readkeys(const std::string& filepath);
bool secrets_write_keys(const ByteVec& key, const std::string& filepath, const std::string& owner);