123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- /*
- * Copyright (c) 1995 Colin Plumb. All rights reserved.
- * For licensing and other legal details, see the file legal.c.
- */
- #ifndef LBN64_H
- #define LBN64_H
- #include "lbn.h"
- #ifndef BNWORD64
- #error 64-bit bignum library requires a 64-bit data type
- #endif
- #ifndef lbnCopy_64
- void lbnCopy_64(BNWORD64 *dest, BNWORD64 const *src, unsigned len);
- #endif
- #ifndef lbnZero_64
- void lbnZero_64(BNWORD64 *num, unsigned len);
- #endif
- #ifndef lbnNeg_64
- void lbnNeg_64(BNWORD64 *num, unsigned len);
- #endif
- #ifndef lbnAdd1_64
- BNWORD64 lbnAdd1_64(BNWORD64 *num, unsigned len, BNWORD64 carry);
- #endif
- #ifndef lbnSub1_64
- BNWORD64 lbnSub1_64(BNWORD64 *num, unsigned len, BNWORD64 borrow);
- #endif
- #ifndef lbnAddN_64
- BNWORD64 lbnAddN_64(BNWORD64 *num1, BNWORD64 const *num2, unsigned len);
- #endif
- #ifndef lbnSubN_64
- BNWORD64 lbnSubN_64(BNWORD64 *num1, BNWORD64 const *num2, unsigned len);
- #endif
- #ifndef lbnCmp_64
- int lbnCmp_64(BNWORD64 const *num1, BNWORD64 const *num2, unsigned len);
- #endif
- #ifndef lbnMulN1_64
- void lbnMulN1_64(BNWORD64 *out, BNWORD64 const *in, unsigned len, BNWORD64 k);
- #endif
- #ifndef lbnMulAdd1_64
- BNWORD64
- lbnMulAdd1_64(BNWORD64 *out, BNWORD64 const *in, unsigned len, BNWORD64 k);
- #endif
- #ifndef lbnMulSub1_64
- BNWORD64 lbnMulSub1_64(BNWORD64 *out, BNWORD64 const *in, unsigned len, BNWORD64 k);
- #endif
- #ifndef lbnLshift_64
- BNWORD64 lbnLshift_64(BNWORD64 *num, unsigned len, unsigned shift);
- #endif
- #ifndef lbnDouble_64
- BNWORD64 lbnDouble_64(BNWORD64 *num, unsigned len);
- #endif
- #ifndef lbnRshift_64
- BNWORD64 lbnRshift_64(BNWORD64 *num, unsigned len, unsigned shift);
- #endif
- #ifndef lbnMul_64
- void lbnMul_64(BNWORD64 *prod, BNWORD64 const *num1, unsigned len1,
- BNWORD64 const *num2, unsigned len2);
- #endif
- #ifndef lbnSquare_64
- void lbnSquare_64(BNWORD64 *prod, BNWORD64 const *num, unsigned len);
- #endif
- #ifndef lbnNorm_64
- unsigned lbnNorm_64(BNWORD64 const *num, unsigned len);
- #endif
- #ifndef lbnBits_64
- unsigned lbnBits_64(BNWORD64 const *num, unsigned len);
- #endif
- #ifndef lbnExtractBigBytes_64
- void lbnExtractBigBytes_64(BNWORD64 const *bn, unsigned char *buf,
- unsigned lsbyte, unsigned buflen);
- #endif
- #ifndef lbnInsertBigytes_64
- void lbnInsertBigBytes_64(BNWORD64 *n, unsigned char const *buf,
- unsigned lsbyte, unsigned buflen);
- #endif
- #ifndef lbnExtractLittleBytes_64
- void lbnExtractLittleBytes_64(BNWORD64 const *bn, unsigned char *buf,
- unsigned lsbyte, unsigned buflen);
- #endif
- #ifndef lbnInsertLittleBytes_64
- void lbnInsertLittleBytes_64(BNWORD64 *n, unsigned char const *buf,
- unsigned lsbyte, unsigned buflen);
- #endif
- #ifndef lbnDiv21_64
- BNWORD64 lbnDiv21_64(BNWORD64 *q, BNWORD64 nh, BNWORD64 nl, BNWORD64 d);
- #endif
- #ifndef lbnDiv1_64
- BNWORD64 lbnDiv1_64(BNWORD64 *q, BNWORD64 *rem,
- BNWORD64 const *n, unsigned len, BNWORD64 d);
- #endif
- #ifndef lbnModQ_64
- unsigned lbnModQ_64(BNWORD64 const *n, unsigned len, unsigned d);
- #endif
- #ifndef lbnDiv_64
- BNWORD64
- lbnDiv_64(BNWORD64 *q, BNWORD64 *n, unsigned nlen, BNWORD64 *d, unsigned dlen);
- #endif
- #ifndef lbnMontInv1_64
- BNWORD64 lbnMontInv1_64(BNWORD64 const x);
- #endif
- #ifndef lbnMontReduce_64
- void lbnMontReduce_64(BNWORD64 *n, BNWORD64 const *mod, unsigned const mlen,
- BNWORD64 inv);
- #endif
- #ifndef lbnToMont_64
- void lbnToMont_64(BNWORD64 *n, unsigned nlen, BNWORD64 *mod, unsigned mlen);
- #endif
- #ifndef lbnFromMont_64
- void lbnFromMont_64(BNWORD64 *n, BNWORD64 *mod, unsigned len);
- #endif
- #ifndef lbnExpMod_64
- int lbnExpMod_64(BNWORD64 *result, BNWORD64 const *n, unsigned nlen,
- BNWORD64 const *exp, unsigned elen, BNWORD64 *mod, unsigned mlen);
- #endif
- #ifndef lbnDoubleExpMod_64
- int lbnDoubleExpMod_64(BNWORD64 *result,
- BNWORD64 const *n1, unsigned n1len, BNWORD64 const *e1, unsigned e1len,
- BNWORD64 const *n2, unsigned n2len, BNWORD64 const *e2, unsigned e2len,
- BNWORD64 *mod, unsigned mlen);
- #endif
- #ifndef lbnTwoExpMod_64
- int lbnTwoExpMod_64(BNWORD64 *n, BNWORD64 const *exp, unsigned elen,
- BNWORD64 *mod, unsigned mlen);
- #endif
- #ifndef lbnGcd_64
- int lbnGcd_64(BNWORD64 *a, unsigned alen, BNWORD64 *b, unsigned blen,
- unsigned *rlen);
- #endif
- #ifndef lbnInv_64
- int lbnInv_64(BNWORD64 *a, unsigned alen, BNWORD64 const *mod, unsigned mlen);
- #endif
- int lbnBasePrecompBegin_64(BNWORD64 **array, unsigned n, unsigned bits,
- BNWORD64 const *g, unsigned glen, BNWORD64 *mod, unsigned mlen);
- int lbnBasePrecompExp_64(BNWORD64 *result, BNWORD64 const * const *array,
- unsigned bits, BNWORD64 const *exp, unsigned elen,
- BNWORD64 const *mod, unsigned mlen);
- int lbnDoubleBasePrecompExp_64(BNWORD64 *result, unsigned bits,
- BNWORD64 const * const *array1, BNWORD64 const *exp1, unsigned elen1,
- BNWORD64 const * const *array2, BNWORD64 const *exp2,
- unsigned elen2, BNWORD64 const *mod, unsigned mlen);
- #endif /* LBN64_H */
|