Botan  1.11.15
Public Member Functions
Botan::gf2m_small_m::Gf2m_Field Class Reference

#include <gf2m_small_m.h>

List of all members.

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)

Detailed Description

Definition at line 24 of file gf2m_small_m.h.


Constructor & Destructor Documentation

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();
   }

Member Function Documentation

Definition at line 95 of file gf2m_small_m.h.

         {
         return m_gf_cardinality;
         }

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.

   {
   s32bit sub_res = static_cast<s32bit>(m_gf_log_table[x]) - static_cast<s32bit>( m_gf_log_table[y]);
   s32bit modq_res = static_cast<s32bit>(_gf_modq_1(sub_res));
   s32bit div_res = static_cast<s32bit>(x) ? static_cast<s32bit>(m_gf_exp_table[modq_res]) : 0;
   return static_cast<gf2m>(div_res);
   }

Definition at line 194 of file gf2m_small_m.h.

   {
   return m_gf_exp_table[_gf_modq_1(a - b)];
   }

Definition at line 186 of file gf2m_small_m.h.

   {
   return _gf_modq_1(m_gf_log_table[x] - m_gf_log_table[y]);
   }

Definition at line 190 of file gf2m_small_m.h.

   {
   return _gf_modq_1(m_gf_log_table[x] - b);
   }

Definition at line 199 of file gf2m_small_m.h.

   {
   return ((x) ? m_gf_exp_table[_gf_modq_1(m_gf_log_table[x] - b)] : 0);
   }

Definition at line 75 of file gf2m_small_m.h.

Referenced by gf_mul_nrr().

         {
         return m_gf_exp_table[i]; /* alpha^i */
         }

Definition at line 204 of file gf2m_small_m.h.

References gf_ord(), and x.

   {
   return m_gf_exp_table[gf_ord() - m_gf_log_table[x]];
   }

Definition at line 208 of file gf2m_small_m.h.

References gf_ord().

   {
   return (gf_ord() - m_gf_log_table[x]);
   }

Definition at line 223 of file gf2m_small_m.h.

References x.

   {
   return m_gf_log_table[x];
   }

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 */
         }

Definition at line 29 of file gf2m_small_m.h.

References gf_mul_fast().

         {
         return ((x) ? gf_mul_fast(x, y) : 0);
         }

Definition at line 117 of file gf2m_small_m.h.

Referenced by gf_mul().

   {
   return ((y) ? m_gf_exp_table[_gf_modq_1(m_gf_log_table[x] + m_gf_log_table[y])] : 0);
   }

Definition at line 122 of file gf2m_small_m.h.

Referenced by gf_mul_rrn(), and gf_mul_rrr().

   {
   return  (a + b);
   }

Definition at line 147 of file gf2m_small_m.h.

Referenced by gf_mul_rnn().

   {
   return (m_gf_log_table[x] + m_gf_log_table[y]);
   }

non-zero operand

Definition at line 176 of file gf2m_small_m.h.

References gf_mul_nrn().

   {
   return gf_mul_nrn( a, y);
   }

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])];
   }

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)));
   }

Definition at line 151 of file gf2m_small_m.h.

References gf_mul_lnn().

   {
   return _gf_modq_1(gf_mul_lnn(x, y));
   }

Definition at line 142 of file gf2m_small_m.h.

References gf_mul_rrn().

   {
   return gf_mul_rrn(a, y);
   }

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)));
   }

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)));
   }

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) );
   }

Definition at line 169 of file gf2m_small_m.h.

References gf_mul_zrz().

   {
   return gf_mul_zrz(y, a);
   }

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;
         }

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];
      }
   }

Definition at line 181 of file gf2m_small_m.h.

   {
   return ((x) ? m_gf_exp_table[_gf_modq_1(m_gf_log_table[x] << (m_gf_extension_degree-1))] : 0);
   }

Definition at line 34 of file gf2m_small_m.h.

         {
         return ((x) ? m_gf_exp_table[_gf_modq_1(m_gf_log_table[x] << 1)] : 0);
         }

Definition at line 213 of file gf2m_small_m.h.

References x.

   {
   return m_gf_log_table[x] << 1;
   }

Definition at line 218 of file gf2m_small_m.h.

   {
   return a << 1;
   }

Definition at line 39 of file gf2m_small_m.h.

         {
         return _gf_modq_1(x << 1);
         }

The documentation for this class was generated from the following files: