/* * 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 */