Enigma  3.2.0
A Simple, Reliable and Efficient Encryption Tool
RSA Class Reference

#include <RSA.hpp>

Inheritance diagram for RSA:
Algorithm

Classes

struct  RSASettings
 

Public Member Functions

 RSA (const Algorithm::Intent intent) noexcept
 
 ~RSA () noexcept override
 
void setSettings (RSASettings &&settings)
 
std::vector< byte > Encrypt (const std::string &password, const byte *buffer, const std::size_t buffSize) override
 
std::vector< byte > Encrypt (const std::string &password, const std::vector< byte > &buffer) override
 
std::vector< byte > Decrypt (const std::string &password, const byte *cipher, const std::size_t cipherSize) override
 
std::vector< byte > Decrypt (const std::string &password, const std::vector< byte > &cipher) override
 
void Encrypt (const std::string &password, const fs::path &in_filename, const fs::path &out_filename) override
 
void Decrypt (const std::string &password, const fs::path &in_filename, const fs::path &out_filename) override
 
bool SignAndVerify (const std::vector< byte > &message)
 
std::string getPrivateKey () const
 
std::string getPublicKey () const
 
std::size_t getMaximumBufferSize () const
 
- Public Member Functions inherited from Algorithm
 ENIGMA_ENUM_CLASS_BITWISE_OPERATORS (Intent, Enigma::byte)
 
 Algorithm (const Type type, const Intent intent=Intent::Encrypt|Intent::Decrypt) noexcept
 
virtual ~Algorithm () noexcept
 
Type GetType () const noexcept
 
void SetType (const Type type) noexcept
 
std::string GetTypeString () const noexcept
 

Static Public Member Functions

static std::size_t getMaximumBufferSizeFromKeySize (const std::size_t keySize)
 
- Static Public Member Functions inherited from Algorithm
static std::unique_ptr< AlgorithmCreateFromName (const std::string &name, const Intent intent)
 
static std::unique_ptr< AlgorithmCreateFromType (const Type type, const Intent intent)
 
static std::string AlgoTypeEnumToStr (const Algorithm::Type e) noexcept
 
static std::string GetSupportedAlgorithmsStr () noexcept
 
static std::vector< std::pair< std::string, Algorithm::Type > > GetSupportedAlgorithms () noexcept
 

Static Public Attributes

static const std::map< std::size_t, std::string_view > RECOMMENDED_KEY_SIZES
 Key, description. More...
 
- Static Public Attributes inherited from Algorithm
static const std::unordered_map< Type, std::string_view > ALGORITHM_DESCRIPTIONS
 

Additional Inherited Members

- Public Types inherited from Algorithm
enum class  Intent : Enigma::byte { None = 0 << 0 , Encrypt = 1 << 1 , Decrypt = 1 << 2 , All = Encrypt | Decrypt }
 
enum class  Type : byte {
  AES = 0x01 , Twofish , TripleDES , Blowfish ,
  IDEA , ChaCha20Poly1305 , RSA , Camellia ,
  Serpent
}
 
- Static Protected Member Functions inherited from Algorithm
static std::vector< byte > GenerateRandomIV (const std::size_t size)
 
- Protected Attributes inherited from Algorithm
Type m_type {}
 
Intent m_intent {}
 
- Static Protected Attributes inherited from Algorithm
static std::unique_ptr< CryptoPP::AutoSeededRandomPool > m_auto_seeded_random_pool {nullptr}
 

Detailed Description

RSA-AES-GCM Algorithm Encryptor/Decryptor

RSA is a public-key cryptosystem, one of the oldest widely used for secure data transmission

Definition at line 16 of file RSA.hpp.

Constructor & Destructor Documentation

◆ RSA()

RSA::RSA ( const Algorithm::Intent  intent)
explicitnoexcept
Parameters
intentOperation, Encrypt or Decrypt

◆ ~RSA()

RSA::~RSA ( )
overridenoexcept

Member Function Documentation

◆ Decrypt() [1/3]

std::vector<byte> RSA::Decrypt ( const std::string &  password,
const byte *  cipher,
const std::size_t  cipherSize 
)
overridevirtual

Decrypts cipher with password

Parameters
passwordPassword used in encryption
cipherCipher with Enigma meta data
Returns
Recovered Buffer
Exceptions
throwsCryptoPP::Exception, std::exception on failure

Implements Algorithm.

◆ Decrypt() [2/3]

void RSA::Decrypt ( const std::string &  password,
const fs::path &  in_filename,
const fs::path &  out_filename 
)
overridevirtual

Decrypts a file with password

Parameters
passwordPassword used in encryption
in_filenameFilename to decrypt
out_filenameFilename to recover
Exceptions
throwsCryptoPP::Exception, std::exception on failure

Implements Algorithm.

◆ Decrypt() [3/3]

std::vector<byte> RSA::Decrypt ( const std::string &  password,
const std::vector< byte > &  cipher 
)
overridevirtual

Implements Algorithm.

◆ Encrypt() [1/3]

std::vector<byte> RSA::Encrypt ( const std::string &  password,
const byte *  buffer,
const std::size_t  buffSize 
)
overridevirtual

Encrypts buffer with password

Parameters
passwordEncryption password
bufferBuffer to encrypt (text, binary...) an array of bytes
Returns
Cipher with Enigma meta data
Exceptions
throwsCryptoPP::Exception, std::exception on failure

Implements Algorithm.

◆ Encrypt() [2/3]

void RSA::Encrypt ( const std::string &  password,
const fs::path &  in_filename,
const fs::path &  out_filename 
)
overridevirtual

Encrypts a file with password

Parameters
passwordEncryption password
in_filenameFilename to encrypt
out_filenameFilename to store encrypted cipher
Exceptions
throwsCryptoPP::Exception, std::exception on failure

Implements Algorithm.

◆ Encrypt() [3/3]

std::vector<byte> RSA::Encrypt ( const std::string &  password,
const std::vector< byte > &  buffer 
)
overridevirtual

Implements Algorithm.

◆ getMaximumBufferSize()

std::size_t RSA::getMaximumBufferSize ( ) const

◆ getMaximumBufferSizeFromKeySize()

static std::size_t RSA::getMaximumBufferSizeFromKeySize ( const std::size_t  keySize)
static

◆ getPrivateKey()

std::string RSA::getPrivateKey ( ) const

◆ getPublicKey()

std::string RSA::getPublicKey ( ) const

◆ setSettings()

void RSA::setSettings ( RSASettings &&  settings)

◆ SignAndVerify()

bool RSA::SignAndVerify ( const std::vector< byte > &  message)
inline

todo:

Returns

Definition at line 53 of file RSA.hpp.

Member Data Documentation

◆ RECOMMENDED_KEY_SIZES

const std::map<std::size_t, std::string_view> RSA::RECOMMENDED_KEY_SIZES
inlinestatic
Initial value:
= {
{2048, "Secure for use at least until 2030."},
{3072, "Secure for use beyond 2030."},
{4096, "Secure for longer-term security needs."},
{8192, "Very high security but very slow. Suitable for cases requiring extremely high security,\nthough it's rarely used in practice due to performance concerns."},
{16384, "Almost never used due to extreme computational cost.\nThis key size will take about ~5 minutes to complete"},
{32768, "Theoretical and impractical for most applications\ndue to excessive computational and storage requirements.\nThis key size will take a lot of time to complete"},
}

Key, description.

Definition at line 109 of file RSA.hpp.


The documentation for this class was generated from the following file: