1 #ifndef LBN16_H 2 #define LBN16_H 3 4 #include "lbn.h" 5 6 #ifndef BNWORD16 7 #error 16-bit bignum library requires a 16-bit data type 8 #endif 9 10 #ifndef lbnCopy_16 11 void lbnCopy_16(BNWORD16 *dest, BNWORD16 const *src, unsigned len); 12 #endif 13 #ifndef lbnZero_16 14 void lbnZero_16(BNWORD16 *num, unsigned len); 15 #endif 16 #ifndef lbnNeg_16 17 void lbnNeg_16(BNWORD16 *num, unsigned len); 18 #endif 19 20 #ifndef lbnAdd1_16 21 BNWORD16 lbnAdd1_16(BNWORD16 *num, unsigned len, BNWORD16 carry); 22 #endif 23 #ifndef lbnSub1_16 24 BNWORD16 lbnSub1_16(BNWORD16 *num, unsigned len, BNWORD16 borrow); 25 #endif 26 27 #ifndef lbnAddN_16 28 BNWORD16 lbnAddN_16(BNWORD16 *num1, BNWORD16 const *num2, unsigned len); 29 #endif 30 #ifndef lbnSubN_16 31 BNWORD16 lbnSubN_16(BNWORD16 *num1, BNWORD16 const *num2, unsigned len); 32 #endif 33 34 #ifndef lbnCmp_16 35 int lbnCmp_16(BNWORD16 const *num1, BNWORD16 const *num2, unsigned len); 36 #endif 37 38 #ifndef lbnMulN1_16 39 void lbnMulN1_16(BNWORD16 *out, BNWORD16 const *in, unsigned len, BNWORD16 k); 40 #endif 41 #ifndef lbnMulAdd1_16 42 BNWORD16 43 lbnMulAdd1_16(BNWORD16 *out, BNWORD16 const *in, unsigned len, BNWORD16 k); 44 #endif 45 #ifndef lbnMulSub1_16 46 BNWORD16 lbnMulSub1_16(BNWORD16 *out, BNWORD16 const *in, unsigned len, BNWORD16 k); 47 #endif 48 49 #ifndef lbnLshift_16 50 BNWORD16 lbnLshift_16(BNWORD16 *num, unsigned len, unsigned shift); 51 #endif 52 #ifndef lbnDouble_16 53 BNWORD16 lbnDouble_16(BNWORD16 *num, unsigned len); 54 #endif 55 #ifndef lbnRshift_16 56 BNWORD16 lbnRshift_16(BNWORD16 *num, unsigned len, unsigned shift); 57 #endif 58 59 #ifndef lbnMul_16 60 void lbnMul_16(BNWORD16 *prod, BNWORD16 const *num1, unsigned len1, 61 BNWORD16 const *num2, unsigned len2); 62 #endif 63 #ifndef lbnSquare_16 64 void lbnSquare_16(BNWORD16 *prod, BNWORD16 const *num, unsigned len); 65 #endif 66 67 #ifndef lbnNorm_16 68 unsigned lbnNorm_16(BNWORD16 const *num, unsigned len); 69 #endif 70 #ifndef lbnBits_16 71 unsigned lbnBits_16(BNWORD16 const *num, unsigned len); 72 #endif 73 74 #ifndef lbnExtractBigBytes_16 75 void lbnExtractBigBytes_16(BNWORD16 const *bn, unsigned char *buf, 76 unsigned lsbyte, unsigned buflen); 77 #endif 78 #ifndef lbnInsertBigytes_16 79 void lbnInsertBigBytes_16(BNWORD16 *n, unsigned char const *buf, 80 unsigned lsbyte, unsigned buflen); 81 #endif 82 #ifndef lbnExtractLittleBytes_16 83 void lbnExtractLittleBytes_16(BNWORD16 const *bn, unsigned char *buf, 84 unsigned lsbyte, unsigned buflen); 85 #endif 86 #ifndef lbnInsertLittleBytes_16 87 void lbnInsertLittleBytes_16(BNWORD16 *n, unsigned char const *buf, 88 unsigned lsbyte, unsigned buflen); 89 #endif 90 91 #ifndef lbnDiv21_16 92 BNWORD16 lbnDiv21_16(BNWORD16 *q, BNWORD16 nh, BNWORD16 nl, BNWORD16 d); 93 #endif 94 #ifndef lbnDiv1_16 95 BNWORD16 lbnDiv1_16(BNWORD16 *q, BNWORD16 *rem, 96 BNWORD16 const *n, unsigned len, BNWORD16 d); 97 #endif 98 #ifndef lbnModQ_16 99 unsigned lbnModQ_16(BNWORD16 const *n, unsigned len, unsigned d); 100 #endif 101 #ifndef lbnDiv_16 102 BNWORD16 103 lbnDiv_16(BNWORD16 *q, BNWORD16 *n, unsigned nlen, BNWORD16 *d, unsigned dlen); 104 #endif 105 106 #ifndef lbnMontInv1_16 107 BNWORD16 lbnMontInv1_16(BNWORD16 const x); 108 #endif 109 #ifndef lbnMontReduce_16 110 void lbnMontReduce_16(BNWORD16 *n, BNWORD16 const *mod, unsigned const mlen, 111 BNWORD16 inv); 112 #endif 113 #ifndef lbnToMont_16 114 void lbnToMont_16(BNWORD16 *n, unsigned nlen, BNWORD16 *mod, unsigned mlen); 115 #endif 116 #ifndef lbnFromMont_16 117 void lbnFromMont_16(BNWORD16 *n, BNWORD16 *mod, unsigned len); 118 #endif 119 120 #ifndef lbnExpMod_16 121 int lbnExpMod_16(BNWORD16 *result, BNWORD16 const *n, unsigned nlen, 122 BNWORD16 const *exp, unsigned elen, BNWORD16 *mod, unsigned mlen); 123 #endif 124 #if 0 125 #ifndef lbnDoubleExpMod_16 126 int lbnDoubleExpMod_16(BNWORD16 *result, 127 BNWORD16 const *n1, unsigned n1len, BNWORD16 const *e1, unsigned e1len, 128 BNWORD16 const *n2, unsigned n2len, BNWORD16 const *e2, unsigned e2len, 129 BNWORD16 *mod, unsigned mlen); 130 #endif 131 #endif 132 #ifndef lbnTwoExpMod_16 133 int lbnTwoExpMod_16(BNWORD16 *n, BNWORD16 const *exp, unsigned elen, 134 BNWORD16 *mod, unsigned mlen); 135 #endif 136 #if 0 137 #ifndef lbnGcd_16 138 int lbnGcd_16(BNWORD16 *a, unsigned alen, BNWORD16 *b, unsigned blen, 139 unsigned *rlen); 140 #endif 141 #ifndef lbnInv_16 142 int lbnInv_16(BNWORD16 *a, unsigned alen, BNWORD16 const *mod, unsigned mlen); 143 #endif 144 145 int lbnBasePrecompBegin_16(BNWORD16 **array, unsigned n, unsigned bits, 146 BNWORD16 const *g, unsigned glen, BNWORD16 *mod, unsigned mlen); 147 int lbnBasePrecompExp_16(BNWORD16 *result, BNWORD16 const * const *array, 148 unsigned bits, BNWORD16 const *exp, unsigned elen, 149 BNWORD16 const *mod, unsigned mlen); 150 int lbnDoubleBasePrecompExp_16(BNWORD16 *result, unsigned bits, 151 BNWORD16 const * const *array1, BNWORD16 const *exp1, unsigned elen1, 152 BNWORD16 const * const *array2, BNWORD16 const *exp2, 153 unsigned elen2, BNWORD16 const *mod, unsigned mlen); 154 #endif 155 156 #endif /* LBN16_H */ 157