43 m_key(key), m_initializationVector(GenerateIV(ivSize, ivGenerationInCtrMode)), m_failure(false) { Validate(); }
49 m_key(key), m_initializationVector(initializationVector), m_tag(tag), m_failure(false) { Validate(); }
55 m_key(
std::move(key)), m_initializationVector(
std::move(initializationVector)), m_tag(
std::move(tag)), m_failure(false) { Validate(); }
66 m_key(
std::move(toMove.m_key)),
67 m_initializationVector(
std::move(toMove.m_initializationVector)),
68 m_tag(
std::move(toMove.m_tag)),
69 m_failure(toMove.m_failure)
81 m_key = std::move(toMove.m_key);
82 m_initializationVector = std::move(toMove.m_initializationVector);
83 m_tag = std::move(toMove.m_tag);
84 m_failure = toMove.m_failure;
97 operator bool()
const {
return Good(); }
123 virtual void Reset() = 0;
136 inline bool Fail()
const {
return m_failure; }
137 inline bool Good()
const {
return !Fail(); }
144 static CryptoBuffer GenerateIV(
size_t ivLengthBytes,
bool ctrMode =
false);
149 static CryptoBuffer GenerateKey(
size_t keyLengthBytes = SYMMETRIC_KEY_LENGTH);
172 virtual std::shared_ptr<SymmetricCipher> CreateImplementation(
const CryptoBuffer& key)
const = 0;
SymmetricCipher(SymmetricCipher &&toMove)
CryptoBuffer m_initializationVector
SymmetricCipher & operator=(SymmetricCipher &&toMove)
static const size_t SYMMETRIC_KEY_LENGTH
SymmetricCipher(const CryptoBuffer &key, size_t ivSize, bool ivGenerationInCtrMode=false)
SymmetricCipher(CryptoBuffer &&key, CryptoBuffer &&initializationVector, CryptoBuffer &&tag=CryptoBuffer(0))
const CryptoBuffer & GetTag() const
virtual ~SymmetricCipherFactory()
static const size_t MIN_IV_LENGTH
virtual void InitStaticState()
SymmetricCipher(const CryptoBuffer &key, const CryptoBuffer &initializationVector, const CryptoBuffer &tag=CryptoBuffer(0))
const CryptoBuffer & GetIV() const
JSON (JavaScript Object Notation).
virtual void CleanupStaticState()