12 #ifndef BOTAN_POLYN_GF2M_H__
13 #define BOTAN_POLYN_GF2M_H__
15 #include <botan/secmem.h>
16 #include <botan/gf2m_small_m.h>
22 class RandomNumberGenerator;
30 explicit polyn_gf2m( std::shared_ptr<GF2m_Field> sp_field );
63 polyn_gf2m(
int d, std::shared_ptr<GF2m_Field> sp_field);
99 polyn_gf2m(
const uint8_t* mem, uint32_t mem_len, std::shared_ptr<GF2m_Field> sp_field);
104 polyn_gf2m(
int degree,
const unsigned char* mem, uint32_t mem_byte_len, std::shared_ptr<GF2m_Field> sp_field);
106 void encode(uint32_t min_numo_coeffs, uint8_t* mem, uint32_t mem_len)
const;
136 void set_degree(
int d) {
m_deg = d; }
139 void realloc(uint32_t new_size);
bool operator==(const polyn_gf2m &other) const
polyn_gf2m & operator=(const polyn_gf2m &)=default
void degppf(const polyn_gf2m &g, int *p_result)
void add_to_coef(uint32_t i, gf2m v)
void set_coef(uint32_t i, gf2m v)
polyn_gf2m(polyn_gf2m &&other)
gf2m & operator[](size_t i)
bool operator!=(const polyn_gf2m &other) const
std::string to_string() const
void swap(polyn_gf2m &other)
secure_vector< uint8_t > encode() const
std::shared_ptr< GF2m_Field > get_sp_field() const
static std::vector< polyn_gf2m > sqmod_init(const polyn_gf2m &g)
gf2m get_coef(uint32_t i) const
polyn_gf2m & operator=(polyn_gf2m &&other)
std::vector< T, secure_allocator< T >> secure_vector
int calc_degree_secure() const
gf2m get_lead_coef() const
polyn_gf2m sqmod(const std::vector< polyn_gf2m > &sq, int d)
secure_vector< gf2m > coeff
void patchup_deg_secure(uint32_t trgt_deg, volatile gf2m patch_elem)
secure_vector< gf2m > find_roots_gf2m_decomp(const polyn_gf2m &polyn, uint32_t code_length)
static std::vector< polyn_gf2m > sqrt_mod_init(const polyn_gf2m &g)
gf2m random_code_element(unsigned code_length, RandomNumberGenerator &rng)
gf2m operator[](size_t i) const
std::vector< polyn_gf2m > syndrome_init(polyn_gf2m const &generator, std::vector< gf2m > const &support, int n)
static std::pair< polyn_gf2m, polyn_gf2m > eea_with_coefficients(const polyn_gf2m &p, const polyn_gf2m &g, int break_deg)
std::shared_ptr< GF2m_Field > msp_field
gf2m random_gf2m(RandomNumberGenerator &rng)