Skip to content

Commit 4182ba0

Browse files
Add Invert to MontyForm supertraits (#1226)
Signed-off-by: Andrew Whitehead <cywolf@gmail.com>
1 parent e458a92 commit 4182ba0

4 files changed

Lines changed: 14 additions & 4 deletions

File tree

src/modular/boxed_monty_form/invert.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ impl BoxedMontyParams {
6464
#[cfg(test)]
6565
mod tests {
6666
use crate::{
67-
BoxedUint,
67+
BoxedUint, Invert,
6868
modular::{BoxedMontyForm, BoxedMontyParams},
6969
};
7070
use hex_literal::hex;
@@ -92,8 +92,11 @@ mod tests {
9292
let x_mod = BoxedMontyForm::new(x, &params);
9393

9494
let inv = x_mod.invert().unwrap();
95-
let res = x_mod * inv;
95+
let res = &x_mod * &inv;
9696

9797
assert!(bool::from(res.retrieve().is_one()));
98+
99+
let inv_trait = Invert::invert(&x_mod).unwrap();
100+
assert_eq!(inv_trait, inv);
98101
}
99102
}

src/modular/const_monty_form/invert.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ impl<MOD: ConstMontyParams<LIMBS>, const LIMBS: usize> Invert for ConstMontyForm
9595
#[cfg(test)]
9696
mod tests {
9797
use super::ConstMontyParams;
98-
use crate::{U256, const_monty_form, const_monty_params};
98+
use crate::{Invert, U256, const_monty_form, const_monty_params};
9999

100100
const_monty_params!(
101101
Modulus,
@@ -115,5 +115,8 @@ mod tests {
115115
let res = x_mod * inv;
116116

117117
assert_eq!(res.retrieve(), U256::ONE);
118+
119+
let inv_trait = Invert::invert(&x_mod).unwrap();
120+
assert_eq!(inv_trait, inv);
118121
}
119122
}

src/modular/fixed_monty_form/invert.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ impl<const LIMBS: usize> FixedMontyParams<LIMBS> {
9191
#[cfg(test)]
9292
mod tests {
9393
use super::{FixedMontyForm, FixedMontyParams};
94-
use crate::{Odd, U256};
94+
use crate::{Invert, Odd, U256};
9595

9696
fn params() -> FixedMontyParams<{ U256::LIMBS }> {
9797
FixedMontyParams::new_vartime(Odd::<U256>::from_be_hex(
@@ -110,5 +110,8 @@ mod tests {
110110
let res = x_monty * inv;
111111

112112
assert_eq!(res.retrieve(), U256::ONE);
113+
114+
let inv_trait = Invert::invert(&x_monty).unwrap();
115+
assert_eq!(inv_trait, inv);
113116
}
114117
}

src/traits.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1155,6 +1155,7 @@ pub trait MontyForm:
11551155
+ CtSelect
11561156
+ Debug
11571157
+ Eq
1158+
+ Invert<Output = CtOption<Self>>
11581159
+ Sized
11591160
+ Send
11601161
+ Sync

0 commit comments

Comments
 (0)