use super::BoxedMontyForm;
use crate::{BoxedUint, PowBoundedExp, modular::pow::pow_montgomery_form_amm};
impl BoxedMontyForm {
#[must_use]
pub fn pow(&self, exponent: &BoxedUint) -> Self {
self.pow_bounded_exp(exponent, exponent.bits_precision())
}
#[must_use]
pub fn pow_bounded_exp(&self, exponent: &BoxedUint, exponent_bits: u32) -> Self {
Self {
montgomery_form: pow_montgomery_form_amm(
&self.montgomery_form,
exponent,
exponent_bits,
&self.params,
),
params: self.params.clone(),
}
}
}
impl PowBoundedExp<BoxedUint> for BoxedMontyForm {
fn pow_bounded_exp(&self, exponent: &BoxedUint, exponent_bits: u32) -> Self {
self.pow_bounded_exp(exponent, exponent_bits)
}
}