123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- #ifndef EPID_MEMBER_TINY_MATH_VLI_H_
- #define EPID_MEMBER_TINY_MATH_VLI_H_
- #include <stdint.h>
- #include "epid/common/bitsupplier.h"
- typedef struct VeryLargeInt VeryLargeInt;
- typedef struct VeryLargeIntProduct VeryLargeIntProduct;
- uint32_t VliAdd(VeryLargeInt* result, VeryLargeInt const* left,
- VeryLargeInt const* right);
- void VliMul(VeryLargeIntProduct* result, VeryLargeInt const* left,
- VeryLargeInt const* right);
- void VliRShift(VeryLargeInt* result, VeryLargeInt const* in, uint32_t shift);
- uint32_t VliSub(VeryLargeInt* result, VeryLargeInt const* left,
- VeryLargeInt const* right);
- void VliSet(VeryLargeInt* result, VeryLargeInt const* in);
- void VliClear(VeryLargeInt* result);
- int VliIsZero(VeryLargeInt const* in);
- void VliCondSet(VeryLargeInt* result, VeryLargeInt const* true_val,
- VeryLargeInt const* false_val, int truth_val);
- uint32_t VliTestBit(VeryLargeInt const* in, uint32_t bit);
- int VliRand(VeryLargeInt* result, BitSupplier rnd_func, void* rnd_param);
- int VliCmp(VeryLargeInt const* left, VeryLargeInt const* right);
- void VliModAdd(VeryLargeInt* result, VeryLargeInt const* left,
- VeryLargeInt const* right, VeryLargeInt const* mod);
- void VliModSub(VeryLargeInt* result, VeryLargeInt const* left,
- VeryLargeInt const* right, VeryLargeInt const* mod);
- void VliModMul(VeryLargeInt* result, VeryLargeInt const* left,
- VeryLargeInt const* right, VeryLargeInt const* mod);
- void VliModExp(VeryLargeInt* result, VeryLargeInt const* base,
- VeryLargeInt const* exp, VeryLargeInt const* mod);
- void VliModInv(VeryLargeInt* result, VeryLargeInt const* input,
- VeryLargeInt const* mod);
- void VliModSquare(VeryLargeInt* result, VeryLargeInt const* input,
- VeryLargeInt const* mod);
- void VliModBarrett(VeryLargeInt* result, VeryLargeIntProduct const* input,
- VeryLargeInt const* mod);
- #endif
|