8#ifndef BOTAN_GOST_28147_89_H_
9#define BOTAN_GOST_28147_89_H_
11#include <botan/block_cipher.h>
28 uint8_t
sbox_entry(
size_t row,
size_t col)
const;
39 uint8_t
sbox_pair(
size_t row,
size_t col)
const;
51 const uint8_t* m_sboxes;
60 void encrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const override;
61 void decrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const override;
63 void clear()
override;
65 std::string
name()
const override;
67 std::unique_ptr<BlockCipher>
new_object()
const override {
68 return std::make_unique<GOST_28147_89>(m_SBOX, m_name);
81 m_SBOX(other_SBOX), m_EK(8), m_name(
name) {}
84 void key_schedule(std::span<const uint8_t> key)
override;
90 std::vector<uint32_t> m_SBOX;
uint8_t sbox_pair(size_t row, size_t col) const
std::string param_name() const
uint8_t sbox_entry(size_t row, size_t col) const
GOST_28147_89_Params(std::string_view name="R3411_94_TestParam")
void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override
void decrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override
GOST_28147_89(std::string_view param_name)
std::unique_ptr< BlockCipher > new_object() const override
std::string name() const override
GOST_28147_89(const std::vector< uint32_t > &other_SBOX, std::string_view name)
GOST_28147_89(const GOST_28147_89_Params ¶ms)
bool has_keying_material() const override
int(* final)(unsigned char *, CTX *)
std::vector< T, secure_allocator< T > > secure_vector