24#ifndef STREAM_CIPHER_INCLUDED
25#define STREAM_CIPHER_INCLUDED
27#include <openssl/evp.h>
42 std::basic_string<unsigned char, my_char_traits<unsigned char>>;
111 virtual bool encrypt(
unsigned char *dest,
const unsigned char *src,
125 virtual bool decrypt(
unsigned char *dest,
const unsigned char *src,
194template <Cipher_type TYPE>
204 void close()
override;
205 bool encrypt(
unsigned char *dest,
const unsigned char *src,
207 bool decrypt(
unsigned char *dest,
const unsigned char *src,
The class implements AES-CTR encryption/decryption.
Definition: stream_cipher.h:195
static const int PASSWORD_LENGTH
Definition: stream_cipher.h:197
bool open(const Key_string &password, int header_size) override
Open the cipher with given password.
Definition: stream_cipher.cc:45
static const int FILE_KEY_LENGTH
Definition: stream_cipher.h:199
unsigned char m_file_key[FILE_KEY_LENGTH]
Definition: stream_cipher.h:215
bool encrypt(unsigned char *dest, const unsigned char *src, int length) override
Encrypt data.
Definition: stream_cipher.cc:142
void deinit_cipher()
Destroy OpenSSL cipher related context.
Definition: stream_cipher.cc:136
unsigned char m_iv[AES_BLOCK_SIZE]
Definition: stream_cipher.h:217
static const int AES_BLOCK_SIZE
Definition: stream_cipher.h:198
~Aes_ctr_cipher() override
Definition: stream_cipher.cc:72
bool decrypt(unsigned char *dest, const unsigned char *src, int length) override
Decrypt data.
Definition: stream_cipher.cc:162
bool set_stream_offset(uint64_t offset) override
Support encrypting/decrypting data at random position of a stream.
Definition: stream_cipher.cc:82
bool init_cipher(uint64_t offset)
Initialize OpenSSL cipher related context and IV.
Definition: stream_cipher.cc:104
EVP_CIPHER_CTX * m_ctx
Definition: stream_cipher.h:213
void close() override
Close the cipher.
Definition: stream_cipher.cc:77
The class provides standards to be used by the Aes_ctr ciphers.
Definition: stream_cipher.h:155
static const int AES_BLOCK_SIZE
Definition: stream_cipher.h:158
static std::unique_ptr< Stream_cipher > get_encryptor()
Returns a new unique Stream_cipher encryptor.
Definition: stream_cipher.cc:34
static std::unique_ptr< Stream_cipher > get_decryptor()
Returns a new unique Stream_cipher decryptor.
Definition: stream_cipher.cc:39
static const int PASSWORD_LENGTH
Definition: stream_cipher.h:157
static const EVP_MD * get_evp_md()
Returns the message digest function to be uses when opening the cipher.
Definition: stream_cipher.h:165
static const int FILE_KEY_LENGTH
Definition: stream_cipher.h:159
static const EVP_CIPHER * get_evp_cipher()
Returns the cipher to be uses when using the cipher.
Definition: stream_cipher.h:171
This abstract class represents the interface of a replication logs encryption cipher that can be used...
Definition: stream_cipher.h:82
virtual bool decrypt(unsigned char *dest, const unsigned char *src, int length)=0
Decrypt data.
int get_header_size()
Returns the size of the header of the stream being encrypted/decrypted.
Definition: stream_cipher.cc:32
virtual bool set_stream_offset(uint64_t offset)=0
Support encrypting/decrypting data at random position of a stream.
virtual bool open(const Key_string &password, int header_size)=0
Open the cipher with given password.
int m_header_size
Definition: stream_cipher.h:147
virtual void close()=0
Close the cipher.
virtual bool encrypt(unsigned char *dest, const unsigned char *src, int length)=0
Encrypt data.
virtual ~Stream_cipher()=default
const EVP_MD * my_EVP_sha512()
Definition: my_ssl_algo_cache.cc:103
const EVP_CIPHER * my_EVP_aes_256_ctr()
Definition: my_ssl_algo_cache.cc:271
static char * password
Definition: mysql_secure_installation.cc:58
bool length(const dd::Spatial_reference_system *srs, const Geometry *g1, double *length, bool *null) noexcept
Computes the length of linestrings and multilinestrings.
Definition: length.cc:76
class Aes_ctr_cipher< Cipher_type::ENCRYPT > Aes_ctr_encryptor
Definition: stream_cipher.h:234
std::basic_string< unsigned char, my_char_traits< unsigned char > > Key_string
Definition: stream_cipher.h:42
Cipher_type
Definition: stream_cipher.h:186
class Aes_ctr_cipher< Cipher_type::DECRYPT > Aes_ctr_decryptor
Definition: stream_cipher.h:235