blob: b84ceb5cabf5a338d82ee918765552db9344dd27 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
use crate::{Limb, Uint};
use super::reduction::montgomery_reduction;
pub(crate) const fn mul_montgomery_form<const LIMBS: usize>(
a: &Uint<LIMBS>,
b: &Uint<LIMBS>,
modulus: &Uint<LIMBS>,
mod_neg_inv: Limb,
) -> Uint<LIMBS> {
let product = a.mul_wide(b);
montgomery_reduction::<LIMBS>(&product, modulus, mod_neg_inv)
}
pub(crate) const fn square_montgomery_form<const LIMBS: usize>(
a: &Uint<LIMBS>,
modulus: &Uint<LIMBS>,
mod_neg_inv: Limb,
) -> Uint<LIMBS> {
let product = a.square_wide();
montgomery_reduction::<LIMBS>(&product, modulus, mod_neg_inv)
}
|