24#ifndef STREAM_CIPHER_INCLUDED
25#define STREAM_CIPHER_INCLUDED
27#include <openssl/evp.h>
107 virtual bool encrypt(
unsigned char *dest,
const unsigned char *src,
121 virtual bool decrypt(
unsigned char *dest,
const unsigned char *src,
190template <Cipher_type TYPE>
200 void close()
override;
201 bool encrypt(
unsigned char *dest,
const unsigned char *src,
203 bool decrypt(
unsigned char *dest,
const unsigned char *src,
The class implements AES-CTR encryption/decryption.
Definition: stream_cipher.h:191
static const int PASSWORD_LENGTH
Definition: stream_cipher.h:193
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:195
unsigned char m_file_key[FILE_KEY_LENGTH]
Definition: stream_cipher.h:211
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:213
static const int AES_BLOCK_SIZE
Definition: stream_cipher.h:194
~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:209
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:151
static const int AES_BLOCK_SIZE
Definition: stream_cipher.h:154
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:153
static const EVP_MD * get_evp_md()
Returns the message digest function to be uses when opening the cipher.
Definition: stream_cipher.h:161
static const int FILE_KEY_LENGTH
Definition: stream_cipher.h:155
static const EVP_CIPHER * get_evp_cipher()
Returns the cipher to be uses when using the cipher.
Definition: stream_cipher.h:167
This abstract class represents the interface of a replication logs encryption cipher that can be used...
Definition: stream_cipher.h:78
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:143
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
static char * password
Definition: mysql_secure_installation.cc:56
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:230
std::basic_string< unsigned char > Key_string
Definition: stream_cipher.h:38
Cipher_type
Definition: stream_cipher.h:182
class Aes_ctr_cipher< Cipher_type::DECRYPT > Aes_ctr_decryptor
Definition: stream_cipher.h:231