Lines Matching refs:Ri
374 BIGNUM *Ri, *R;
380 if ((Ri = BN_CTX_get(ctx)) == NULL)
417 if ((BN_mod_inverse(Ri, R, &tmod, ctx)) == NULL)
419 if (!BN_lshift(Ri, Ri, 2 * BN_BITS2))
420 goto err; /* R*Ri */
421 if (!BN_is_zero(Ri)) {
422 if (!BN_sub_word(Ri, 1))
426 if (bn_expand(Ri, (int)sizeof(BN_ULONG) * 2) == NULL)
428 /* Ri-- (mod double word size) */
429 Ri->neg = 0;
430 Ri->d[0] = BN_MASK2;
431 Ri->d[1] = BN_MASK2;
432 Ri->top = 2;
434 if (!BN_div(Ri, NULL, Ri, &tmod, ctx))
437 * Ni = (R*Ri-1)/N, keep only couple of least significant words:
439 mont->n0[0] = (Ri->top > 0) ? Ri->d[0] : 0;
440 mont->n0[1] = (Ri->top > 1) ? Ri->d[1] : 0;
449 /* Ri = R^-1 mod N */
450 if ((BN_mod_inverse(Ri, R, &tmod, ctx)) == NULL)
452 if (!BN_lshift(Ri, Ri, BN_BITS2))
453 goto err; /* R*Ri */
454 if (!BN_is_zero(Ri)) {
455 if (!BN_sub_word(Ri, 1))
459 if (!BN_set_word(Ri, BN_MASK2))
460 goto err; /* Ri-- (mod word size) */
462 if (!BN_div(Ri, NULL, Ri, &tmod, ctx))
465 * Ni = (R*Ri-1)/N, keep only least significant word:
467 mont->n0[0] = (Ri->top > 0) ? Ri->d[0] : 0;
477 /* Ri = R^-1 mod N */
478 if ((BN_mod_inverse(Ri, R, &mont->N, ctx)) == NULL)
480 if (!BN_lshift(Ri, Ri, mont->ri))
481 goto err; /* R*Ri */
482 if (!BN_sub_word(Ri, 1))
485 * Ni = (R*Ri-1) / N
487 if (!BN_div(&(mont->Ni), NULL, Ri, &mont->N, ctx))