Botan
1.11.15
|
#include <gf2m_small_m.h>
Public Member Functions | |
gf2m | get_cardinality () const |
gf2m | get_extension_degree () const |
Gf2m_Field (size_t extdeg) | |
gf2m | gf_div (gf2m x, gf2m y) |
gf2m | gf_div_nrr (gf2m a, gf2m b) |
gf2m | gf_div_rnn (gf2m x, gf2m y) |
gf2m | gf_div_rnr (gf2m x, gf2m b) |
gf2m | gf_div_zzr (gf2m x, gf2m b) |
gf2m | gf_exp (gf2m i) |
gf2m | gf_inv (gf2m x) |
gf2m | gf_inv_rn (gf2m x) |
gf2m | gf_l_from_n (gf2m x) |
gf2m | gf_log (gf2m i) |
gf2m | gf_mul (gf2m x, gf2m y) |
gf2m | gf_mul_fast (gf2m a, gf2m b) |
gf2m | gf_mul_lll (gf2m a, gf2m b) |
gf2m | gf_mul_lnn (gf2m x, gf2m y) |
gf2m | gf_mul_nnr (gf2m y, gf2m a) |
gf2m | gf_mul_nrn (gf2m a, gf2m y) |
gf2m | gf_mul_nrr (gf2m a, gf2m b) |
gf2m | gf_mul_rnn (gf2m x, gf2m y) |
gf2m | gf_mul_rnr (gf2m y, gf2m a) |
gf2m | gf_mul_rrn (gf2m a, gf2m y) |
gf2m | gf_mul_rrr (gf2m a, gf2m b) |
gf2m | gf_mul_zrz (gf2m a, gf2m y) |
gf2m | gf_mul_zzr (gf2m a, gf2m y) |
gf2m | gf_ord () const |
gf2m | gf_pow (gf2m x, int i) |
gf2m | gf_sqrt (gf2m x) |
gf2m | gf_square (gf2m x) |
gf2m | gf_square_ln (gf2m x) |
gf2m | gf_square_rr (gf2m a) |
gf2m | square_rr (gf2m x) |
Definition at line 24 of file gf2m_small_m.h.
Botan::gf2m_small_m::Gf2m_Field::Gf2m_Field | ( | size_t | extdeg | ) |
Definition at line 92 of file gf2m_small_m.cpp.
References MAX_EXT_DEG, and Botan::ASN1::to_string().
{ if(extdeg < 2 || extdeg > MAX_EXT_DEG) throw std::runtime_error("Gf2m_Field does not support degree " + std::to_string(extdeg)); m_gf_extension_degree = extdeg; m_gf_cardinality = 1 << extdeg; m_gf_multiplicative_order = m_gf_cardinality - 1; init_exp(); init_log(); }
gf2m Botan::gf2m_small_m::Gf2m_Field::get_cardinality | ( | ) | const [inline] |
Definition at line 95 of file gf2m_small_m.h.
{
return m_gf_cardinality;
}
gf2m Botan::gf2m_small_m::Gf2m_Field::get_extension_degree | ( | ) | const [inline] |
Definition at line 90 of file gf2m_small_m.h.
Referenced by gf_pow().
{
return m_gf_extension_degree;
}
Definition at line 105 of file gf2m_small_m.cpp.
References x.
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_div_nrr | ( | gf2m | a, |
gf2m | b | ||
) | [inline] |
Definition at line 194 of file gf2m_small_m.h.
{
return m_gf_exp_table[_gf_modq_1(a - b)];
}
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_div_rnn | ( | gf2m | x, |
gf2m | y | ||
) | [inline] |
Definition at line 186 of file gf2m_small_m.h.
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_div_rnr | ( | gf2m | x, |
gf2m | b | ||
) | [inline] |
Definition at line 190 of file gf2m_small_m.h.
{ return _gf_modq_1(m_gf_log_table[x] - b); }
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_div_zzr | ( | gf2m | x, |
gf2m | b | ||
) | [inline] |
Definition at line 199 of file gf2m_small_m.h.
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_exp | ( | gf2m | i | ) | [inline] |
Definition at line 75 of file gf2m_small_m.h.
Referenced by gf_mul_nrr().
{ return m_gf_exp_table[i]; /* alpha^i */ }
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_inv | ( | gf2m | x | ) | [inline] |
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_inv_rn | ( | gf2m | x | ) | [inline] |
Definition at line 208 of file gf2m_small_m.h.
References gf_ord().
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_l_from_n | ( | gf2m | x | ) | [inline] |
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_log | ( | gf2m | i | ) | [inline] |
Definition at line 80 of file gf2m_small_m.h.
Referenced by gf_mul_rrn().
{ return m_gf_log_table[i]; /* return i when x=alpha^i */ }
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_mul | ( | gf2m | x, |
gf2m | y | ||
) | [inline] |
Definition at line 29 of file gf2m_small_m.h.
References gf_mul_fast().
{ return ((x) ? gf_mul_fast(x, y) : 0); }
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_mul_fast | ( | gf2m | a, |
gf2m | b | ||
) | [inline] |
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_mul_lll | ( | gf2m | a, |
gf2m | b | ||
) | [inline] |
Definition at line 122 of file gf2m_small_m.h.
Referenced by gf_mul_rrn(), and gf_mul_rrr().
{
return (a + b);
}
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_mul_lnn | ( | gf2m | x, |
gf2m | y | ||
) | [inline] |
Definition at line 147 of file gf2m_small_m.h.
Referenced by gf_mul_rnn().
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_mul_nnr | ( | gf2m | y, |
gf2m | a | ||
) | [inline] |
non-zero operand
Definition at line 176 of file gf2m_small_m.h.
References gf_mul_nrn().
{ return gf_mul_nrn( a, y); }
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_mul_nrn | ( | gf2m | a, |
gf2m | y | ||
) | [inline] |
Definition at line 156 of file gf2m_small_m.h.
Referenced by gf_mul_nnr(), and gf_mul_zrz().
{ return m_gf_exp_table[_gf_modq_1((a) + m_gf_log_table[y])]; }
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_mul_nrr | ( | gf2m | a, |
gf2m | b | ||
) | [inline] |
Definition at line 132 of file gf2m_small_m.h.
References gf_exp(), and gf_mul_rrr().
{ return (gf_exp(gf_mul_rrr(a, b))); }
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_mul_rnn | ( | gf2m | x, |
gf2m | y | ||
) | [inline] |
Definition at line 151 of file gf2m_small_m.h.
References gf_mul_lnn().
{ return _gf_modq_1(gf_mul_lnn(x, y)); }
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_mul_rnr | ( | gf2m | y, |
gf2m | a | ||
) | [inline] |
Definition at line 142 of file gf2m_small_m.h.
References gf_mul_rrn().
{ return gf_mul_rrn(a, y); }
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_mul_rrn | ( | gf2m | a, |
gf2m | y | ||
) | [inline] |
Definition at line 137 of file gf2m_small_m.h.
References gf_log(), and gf_mul_lll().
Referenced by gf_mul_rnr().
{ return _gf_modq_1(gf_mul_lll(a, gf_log(y))); }
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_mul_rrr | ( | gf2m | a, |
gf2m | b | ||
) | [inline] |
Definition at line 127 of file gf2m_small_m.h.
References gf_mul_lll().
Referenced by gf_mul_nrr().
{ return (_gf_modq_1(gf_mul_lll(a, b))); }
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_mul_zrz | ( | gf2m | a, |
gf2m | y | ||
) | [inline] |
zero operand allowed
Definition at line 164 of file gf2m_small_m.h.
References gf_mul_nrn().
Referenced by gf_mul_zzr().
{ return ( (y == 0) ? 0 : gf_mul_nrn(a, y) ); }
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_mul_zzr | ( | gf2m | a, |
gf2m | y | ||
) | [inline] |
Definition at line 169 of file gf2m_small_m.h.
References gf_mul_zrz().
{ return gf_mul_zrz(y, a); }
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_ord | ( | ) | const [inline] |
Definition at line 85 of file gf2m_small_m.h.
Referenced by gf_inv(), gf_inv_rn(), and gf_pow().
{
return m_gf_multiplicative_order;
}
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_pow | ( | gf2m | x, |
int | i | ||
) |
Definition at line 114 of file gf2m_small_m.cpp.
References get_extension_degree(), gf_ord(), and x.
{ if (i == 0) return 1; else if (x == 0) return 0; else { // i mod (q-1) while (i >> get_extension_degree()) i = (i & (gf_ord())) + (i >> get_extension_degree()); i *= m_gf_log_table[x]; while (i >> get_extension_degree()) i = (i & (gf_ord())) + (i >> get_extension_degree()); return m_gf_exp_table[i]; } }
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_sqrt | ( | gf2m | x | ) | [inline] |
Definition at line 181 of file gf2m_small_m.h.
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_square | ( | gf2m | x | ) | [inline] |
Definition at line 34 of file gf2m_small_m.h.
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_square_ln | ( | gf2m | x | ) | [inline] |
gf2m Botan::gf2m_small_m::Gf2m_Field::gf_square_rr | ( | gf2m | a | ) | [inline] |
Definition at line 218 of file gf2m_small_m.h.
{
return a << 1;
}
gf2m Botan::gf2m_small_m::Gf2m_Field::square_rr | ( | gf2m | x | ) | [inline] |
Definition at line 39 of file gf2m_small_m.h.
{ return _gf_modq_1(x << 1); }