Lines Matching defs:mont

126 static int BN_from_montgomery_word(BIGNUM *ret, BIGNUM *r, BN_MONT_CTX *mont);
130 BN_MONT_CTX *mont, BN_CTX *ctx)
135 int num = mont->N.top;
140 if (bn_mul_mont(r->d, a->d, b->d, mont->N.d, mont->n0, num)) {
164 if (!BN_from_montgomery_word(r, tmp, mont))
167 if (!BN_from_montgomery(r, tmp, mont, ctx))
178 static int BN_from_montgomery_word(BIGNUM *ret, BIGNUM *r, BN_MONT_CTX *mont)
184 n = &(mont->N);
208 n0 = mont->n0[0];
290 int BN_from_montgomery(BIGNUM *ret, const BIGNUM *a, BN_MONT_CTX *mont,
299 retn = BN_from_montgomery_word(ret, t, mont);
312 BN_mask_bits(t1, mont->ri);
314 if (!BN_mul(t2, t1, &mont->Ni, ctx))
316 BN_mask_bits(t2, mont->ri);
318 if (!BN_mul(t1, t2, &mont->N, ctx))
322 if (!BN_rshift(ret, t2, mont->ri))
325 if (BN_ucmp(ret, &(mont->N)) >= 0) {
326 if (!BN_usub(ret, ret, &(mont->N)))
359 void BN_MONT_CTX_free(BN_MONT_CTX *mont)
361 if (mont == NULL)
364 BN_clear_free(&(mont->RR));
365 BN_clear_free(&(mont->N));
366 BN_clear_free(&(mont->Ni));
367 if (mont->flags & BN_FLG_MALLOCED)
368 OPENSSL_free(mont);
371 int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx)
382 R = &(mont->RR); /* grab RR as a temp */
383 if (!BN_copy(&(mont->N), mod))
385 mont->N.neg = 0;
397 mont->ri = (BN_num_bits(mod) + (BN_BITS2 - 1)) / BN_BITS2 * BN_BITS2;
439 mont->n0[0] = (Ri->top > 0) ? Ri->d[0] : 0;
440 mont->n0[1] = (Ri->top > 1) ? Ri->d[1] : 0;
467 mont->n0[0] = (Ri->top > 0) ? Ri->d[0] : 0;
468 mont->n0[1] = 0;
473 mont->ri = BN_num_bits(&mont->N);
475 if (!BN_set_bit(R, mont->ri))
478 if ((BN_mod_inverse(Ri, R, &mont->N, ctx)) == NULL)
480 if (!BN_lshift(Ri, Ri, mont->ri))
487 if (!BN_div(&(mont->Ni), NULL, Ri, &mont->N, ctx))
493 BN_zero(&(mont->RR));
494 if (!BN_set_bit(&(mont->RR), mont->ri * 2))
496 if (!BN_mod(&(mont->RR), &(mont->RR), &(mont->N), ctx))