Finite field interface. More...
#include "epid/common/bitsupplier.h"#include "epid/common/errors.h"#include "epid/common/math/bignum.h"#include "epid/common/stdtypes.h"#include "epid/common/types.h"Typedefs | |
| typedef struct FiniteField | FiniteField |
| A finite field. | |
| typedef struct FfElement | FfElement |
| An element in a finite field. | |
Functions | |
| EpidStatus | NewFiniteField (BigNumStr const *prime, FiniteField **ff) |
| Creates new finite field. More... | |
| EpidStatus | NewFiniteFieldViaBinomalExtension (FiniteField const *ground_field, FfElement const *ground_element, int degree, FiniteField **ff) |
| Creates a new finite field using binomial extension. More... | |
| EpidStatus | NewFiniteFieldViaPolynomialExtension (FiniteField const *ground_field, BigNumStr const *irr_polynomial, int degree, FiniteField **ff) |
| Creates a new finite field using polynomial extension. More... | |
| void | DeleteFiniteField (FiniteField **ff) |
| Frees a previously allocated FiniteField. More... | |
| EpidStatus | NewFfElement (FiniteField const *ff, FfElement **new_ff_elem) |
| Creates a new finite field element. More... | |
| void | DeleteFfElement (FfElement **ff_elem) |
| Frees a previously allocated FfElement. More... | |
| EpidStatus | ReadFfElement (FiniteField *ff, ConstOctStr ff_elem_str, size_t strlen, FfElement *ff_elem) |
| Deserializes a FfElement from a string. More... | |
| EpidStatus | InitFfElementFromBn (FiniteField *ff, BigNum *bn, FfElement *ff_elem) |
| Initializes an existing FfElement from a BigNum. More... | |
| EpidStatus | WriteFfElement (FiniteField *ff, FfElement const *ff_elem, OctStr ff_elem_str, size_t strlen) |
| Serializes a finite field element to a string. More... | |
| EpidStatus | FfNeg (FiniteField *ff, FfElement const *a, FfElement *r) |
| Calculates the additive inverse of a finite field element. More... | |
| EpidStatus | FfInv (FiniteField *ff, FfElement const *a, FfElement *r) |
| Calculates the multiplicative inverse of a finite field element. More... | |
| EpidStatus | FfAdd (FiniteField *ff, FfElement const *a, FfElement const *b, FfElement *r) |
| Adds two finite field elements. More... | |
| EpidStatus | FfSub (FiniteField *ff, FfElement const *a, FfElement const *b, FfElement *r) |
| Subtracts two finite field elements. More... | |
| EpidStatus | FfMul (FiniteField *ff, FfElement const *a, FfElement const *b, FfElement *r) |
| Multiplies two finite field elements. More... | |
| EpidStatus | FfIsZero (FiniteField *ff, FfElement const *a, bool *is_zero) |
| Checks if given finite field element is the additive identity (zero). More... | |
| EpidStatus | FfExp (FiniteField *ff, FfElement const *a, BigNum const *b, FfElement *r) |
| Raises an element of a finite field to a power. More... | |
| EpidStatus | FfMultiExp (FiniteField *ff, FfElement const **a, BigNumStr const **b, size_t m, FfElement *r) |
| Multi-exponentiates finite field elements. More... | |
| EpidStatus | FfMultiExpBn (FiniteField *ff, FfElement const **a, BigNum const **b, size_t m, FfElement *r) |
| Multi-exponentiates finite field elements. More... | |
| EpidStatus | FfSscmMultiExp (FiniteField *ff, FfElement const **a, BigNumStr const **b, size_t m, FfElement *r) |
| Software side-channel mitigated implementation of FfMultiExp. More... | |
| EpidStatus | FfIsEqual (FiniteField *ff, FfElement const *a, FfElement const *b, bool *is_equal) |
| Checks if two finite field elements are equal. More... | |
| EpidStatus | FfHash (FiniteField *ff, ConstOctStr msg, size_t msg_len, HashAlg hash_alg, FfElement *r) |
| Hashes an arbitrary message to an element in a finite field. More... | |
| EpidStatus | FfGetRandom (FiniteField *ff, BigNumStr const *low_bound, BitSupplier rnd_func, void *rnd_param, FfElement *r) |
| Generate random finite field element. More... | |
| EpidStatus | FfSqrt (FiniteField *ff, FfElement const *a, FfElement *r) |
| Finds a square root of a finite field element. More... | |
Finite field interface.