int spModMult(DIGIT_T *a, DIGIT_T x, DIGIT_T y, DIGIT_T m) { /* Computes a = (x * y) mod m */ /* Calc p[2] = x * y */ DIGIT_T p[2]; spMultiply(p, x, y); /* Then modulo */ *a = mpShortMod(p, m, 2); return 0; }
bdigit_t bdShortMod(T r, T u, bdigit_t d) /* Returns r = u mod d */ { DIGIT_T rr; assert(r && u); rr = mpShortMod(u->digits, d, u->ndigits); bdSetShort(r, rr); return rr; }