23#ifndef STREAM_CIPHER_INCLUDED
24#define STREAM_CIPHER_INCLUDED
26#include <openssl/evp.h>
106 virtual bool encrypt(
unsigned char *dest,
const unsigned char *src,
120 virtual bool decrypt(
unsigned char *dest,
const unsigned char *src,
189template <Cipher_type TYPE>
199 void close()
override;
200 bool encrypt(
unsigned char *dest,
const unsigned char *src,
202 bool decrypt(
unsigned char *dest,
const unsigned char *src,
The class implements AES-CTR encryption/decryption.
Definition: stream_cipher.h:190
static const int PASSWORD_LENGTH
Definition: stream_cipher.h:192
bool open(const Key_string &password, int header_size) override
Open the cipher with given password.
Definition: stream_cipher.cc:44
static const int FILE_KEY_LENGTH
Definition: stream_cipher.h:194
unsigned char m_file_key[FILE_KEY_LENGTH]
Definition: stream_cipher.h:210
bool encrypt(unsigned char *dest, const unsigned char *src, int length) override
Encrypt data.
Definition: stream_cipher.cc:141
void deinit_cipher()
Destroy OpenSSL cipher related context.
Definition: stream_cipher.cc:135
unsigned char m_iv[AES_BLOCK_SIZE]
Definition: stream_cipher.h:212
static const int AES_BLOCK_SIZE
Definition: stream_cipher.h:193
bool decrypt(unsigned char *dest, const unsigned char *src, int length) override
Decrypt data.
Definition: stream_cipher.cc:161
bool set_stream_offset(uint64_t offset) override
Support encrypting/decrypting data at random position of a stream.
Definition: stream_cipher.cc:81
~Aes_ctr_cipher() override
Definition: stream_cipher.cc:71
bool init_cipher(uint64_t offset)
Initialize OpenSSL cipher related context and IV.
Definition: stream_cipher.cc:103
EVP_CIPHER_CTX * m_ctx
Definition: stream_cipher.h:208
void close() override
Close the cipher.
Definition: stream_cipher.cc:76
The class provides standards to be used by the Aes_ctr ciphers.
Definition: stream_cipher.h:150
static const int AES_BLOCK_SIZE
Definition: stream_cipher.h:153
static std::unique_ptr< Stream_cipher > get_encryptor()
Returns a new unique Stream_cipher encryptor.
Definition: stream_cipher.cc:33
static std::unique_ptr< Stream_cipher > get_decryptor()
Returns a new unique Stream_cipher decryptor.
Definition: stream_cipher.cc:38
static const int PASSWORD_LENGTH
Definition: stream_cipher.h:152
static const EVP_MD * get_evp_md()
Returns the message digest function to be uses when opening the cipher.
Definition: stream_cipher.h:160
static const int FILE_KEY_LENGTH
Definition: stream_cipher.h:154
static const EVP_CIPHER * get_evp_cipher()
Returns the cipher to be uses when using the cipher.
Definition: stream_cipher.h:166
This abstract class represents the interface of a replication logs encryption cipher that can be used...
Definition: stream_cipher.h:77
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:31
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:142
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:55
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:75
class Aes_ctr_cipher< Cipher_type::ENCRYPT > Aes_ctr_encryptor
Definition: stream_cipher.h:229
std::basic_string< unsigned char > Key_string
Definition: stream_cipher.h:37
Cipher_type
Definition: stream_cipher.h:181
class Aes_ctr_cipher< Cipher_type::DECRYPT > Aes_ctr_decryptor
Definition: stream_cipher.h:230