21 std::vector<uint8_t>
iv;
25 void set_iv(
const uint8_t* data,
size_t size);
26 std::span<const uint8_t>
get_iv()
const;
32 void deserialise(
const uint8_t*& data,
size_t& size);
35 template <
size_t IV_BYTES>
38 static constexpr size_t IV_SIZE = IV_BYTES;
66 void deserialise(
const std::vector<uint8_t>& serial);
77 std::span<const uint8_t> iv,
78 std::span<const uint8_t> plain,
79 std::span<const uint8_t> aad,
80 std::vector<uint8_t>& cipher,
85 std::span<const uint8_t> iv,
87 std::span<const uint8_t> cipher,
88 std::span<const uint8_t> aad,
89 std::vector<uint8_t>& plain)
const = 0;
95 std::unique_ptr<KeyAesGcm>
make_key_aes_gcm(std::span<const uint8_t> rawKey);
102 if (num_bits != 128 && num_bits != 192 && num_bits != 256)
103 throw std::runtime_error(
"Unsupported key size");
107 static std::vector<uint8_t> default_iv(12, 0);
116 std::span<const uint8_t> key,
117 std::span<const uint8_t> plaintext,
118 const std::vector<uint8_t>& iv = default_iv,
119 const std::vector<uint8_t>& aad = {});
128 std::span<const uint8_t> key,
129 std::span<const uint8_t> ciphertext,
130 const std::vector<uint8_t>& iv = default_iv,
131 const std::vector<uint8_t>& aad = {});
Definition symmetric_key.h:70
virtual bool decrypt(std::span< const uint8_t > iv, const uint8_t tag[GCM_SIZE_TAG], std::span< const uint8_t > cipher, std::span< const uint8_t > aad, std::vector< uint8_t > &plain) const =0
virtual size_t key_size() const =0
virtual ~KeyAesGcm()=default
virtual void encrypt(std::span< const uint8_t > iv, std::span< const uint8_t > plain, std::span< const uint8_t > aad, std::vector< uint8_t > &cipher, uint8_t tag[GCM_SIZE_TAG]) const =0
void check_supported_aes_key_size(size_t num_bits)
Definition symmetric_key.h:100
std::unique_ptr< KeyAesGcm > make_key_aes_gcm(std::span< const uint8_t > rawKey)
Free function implementation.
Definition symmetric_key.cpp:102
std::vector< uint8_t > aes_gcm_decrypt(std::span< const uint8_t > key, std::span< const uint8_t > ciphertext, const std::vector< uint8_t > &iv=default_iv, const std::vector< uint8_t > &aad={})
Definition symmetric_key.cpp:123
EntropyPtr get_entropy()
Definition entropy.cpp:10
std::shared_ptr< Entropy > EntropyPtr
Definition entropy.h:33
constexpr size_t GCM_SIZE_TAG
Definition symmetric_key.h:14
std::vector< uint8_t > aes_gcm_encrypt(std::span< const uint8_t > key, std::span< const uint8_t > plaintext, const std::vector< uint8_t > &iv=default_iv, const std::vector< uint8_t > &aad={})
Definition symmetric_key.cpp:107
constexpr size_t GCM_DEFAULT_KEY_SIZE
Definition symmetric_key.h:12
Definition symmetric_key.h:57
void deserialise(const std::vector< uint8_t > &serial)
Definition symmetric_key.cpp:93
GcmCipher()
GcmCipher implementation.
std::vector< uint8_t > serialise()
Definition symmetric_key.cpp:78
StandardGcmHeader hdr
Definition symmetric_key.h:58
std::vector< uint8_t > cipher
Definition symmetric_key.h:59