Intel® Enhanced Privacy ID SDK 2.0.0

Macros | Functions
finitefield.c File Reference

Finite field implementation. More...

`#include <limits.h>`
`#include <string.h>`
`#include "epid/common/math/finitefield.h"`
`#include "epid/common/math/bignum-internal.h"`
`#include "epid/common/math/finitefield-internal.h"`
`#include "epid/common/memory.h"`
`#include "ext/ipp/include/ippcp.h"`
`#include "ext/ipp/include/ippcpepid.h"`

## Macros
#define | RNG_WATCHDOG (10)
| Number of tries for RNG.

## Functions
EpidStatus | InitFiniteFieldFromIpp (IppsGFpState *ipp_ff, FiniteField *ff)
| Initializes a FiniteField structure.
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...
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, void const *ff_elem_str, size_t strlen, FfElement *ff_elem)
| Deserializes a FfElement from a string. More...
EpidStatus | WriteFfElement (FiniteField *ff, FfElement const *ff_elem, void *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 | 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 **p, BigNumStr const **b, size_t m, FfElement *r)
| Multi-exponentiates finite field elements. More...
EpidStatus | FfSscmMultiExp (FiniteField *ff, FfElement const **p, 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, void const *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...

## Detailed Description

Finite field implementation.