35 static std::unique_ptr<StreamCipher>
create(std::string_view algo_spec, std::string_view
provider =
"");
44 static std::unique_ptr<StreamCipher>
create_or_throw(std::string_view algo_spec, std::string_view
provider =
"");
49 static std::vector<std::string>
providers(std::string_view algo_spec);
69 void cipher(std::span<const uint8_t> in, std::span<uint8_t> out);
97 template <concepts::resizable_
byte_buffer T = secure_vector<u
int8_t>>
124 void encipher(std::span<uint8_t> inout) {
cipher(inout.data(), inout.data(), inout.size()); }
131 void encrypt(std::span<uint8_t> inout) {
cipher(inout.data(), inout.data(), inout.size()); }
138 void decrypt(std::span<uint8_t> inout) {
cipher(inout.data(), inout.data(), inout.size()); }
185 virtual size_t default_iv_length()
const;
201 virtual std::unique_ptr<StreamCipher>
new_object()
const = 0;
216 virtual void seek(uint64_t offset) = 0;
222 virtual std::string
provider()
const {
return "base"; }
228 virtual void cipher_bytes(
const uint8_t in[], uint8_t out[],
size_t len) = 0;