tate_bilinear_pairing.f36m
index
/home/ds/workspace/tate_bilinear_pairing/tate_bilinear_pairing/f36m.py

This module provides operations over the Galois Field $GF(3^{6*m})$, which is
${GF(3^m)[y]/g(y)}[z]/h(z)$ where $g(y)=y^2+1$, $h(z)=z^3-z-1$.
For more information about such extension field, please read 
the paper by T. Kerins, W. P. Marnane, E. M. Popovici, and P.S.L.M. Barreto,
"Efficient hardware for the Tate pairing calculation in characteristic three".

 
Modules
       
tate_bilinear_pairing.f32m

 
Functions
       
add(a, b, c)
addition in $GF(3^{6*m})$
 
:param a: the first operand
:type a: list
:param b: the second operand
:type b: list
:param c: the destination. $c == a+b \in GF(3^{6*m})$
:type c: list
:returns: None
cubic(a)
cubic in GF(3^{6*m})
 
:param a: the operand
:type a: list
:returns: list, $a^3 \in GF(3^{6*m})$
mult(a, b)
multiplication in $GF(3^{6*m})$
 
:param a: the first operand
:type a: list
:param b: the second operand
:type b: list
:returns: list, $c == a*b \in GF(3^{6*m})$
one()
the element with value of one in $GF(3^{6*m})$
power(a, n)
power in GF(3^{6*m})
 
:param a: the operand
:type a: list
:param n: the order of power
:type n: int
:returns: list, $a^n \in GF(3^{6*m})$
random()
a random element in $GF(3^{6*m})$
sub(a, b, c)
subtraction in $GF(3^{6*m})$
 
:param a: the first operand
:type a: list
:param b: the second operand
:type b: list
:param c: the destination. $c == a-b \in GF(3^{6*m})$
:type c: list
:returns: None
zero()
the zero element in $GF(3^{6*m})$