File tree Expand file tree Collapse file tree 2 files changed +6
-1
lines changed
Expand file tree Collapse file tree 2 files changed +6
-1
lines changed Original file line number Diff line number Diff line change @@ -17,6 +17,8 @@ pub use self::keypair::keypair;
1717fn calculate_bounds ( size : u32 ) -> ( BoxedUint , BoxedUint ) {
1818 let lower = two ( ) . shl ( size - 1 ) ;
1919 let upper = two ( ) . shl ( size) ;
20+ let lower = BoxedUint :: one ( ) . widen ( size + 1 ) . shl ( size - 1 ) ;
21+ let upper = BoxedUint :: one ( ) . widen ( size + 1 ) . shl ( size) ;
2022
2123 ( lower, upper)
2224}
Original file line number Diff line number Diff line change @@ -41,8 +41,10 @@ pub fn common(
4141 break ' gen_m m;
4242 }
4343 } ;
44- let mr = & m % NonZero :: new ( two ( ) * & * q) . unwrap ( ) ;
44+ let rem = NonZero :: new ( ( two ( ) * & * q) . widen ( m. bits_precision ( ) ) ) . unwrap ( ) ;
45+ let mr = & m % & rem;
4546 let p = m - mr + BoxedUint :: one ( ) ;
47+ let p = p. shorten ( q. bits_precision ( ) ) ;
4648 let p = NonZero :: new ( p) . unwrap ( ) ;
4749
4850 if crypto_primes:: is_prime_with_rng ( rng, & * p) {
@@ -54,6 +56,7 @@ pub fn common(
5456 // Generate g using the unverifiable method as defined by Appendix A.2.1
5557 let e = ( & * p - & BoxedUint :: one ( ) ) / & q;
5658 let mut h = BoxedUint :: one ( ) ;
59+ let mut h = BoxedUint :: one ( ) . widen ( q. bits_precision ( ) ) ;
5760 let g = loop {
5861 let params = BoxedMontyParams :: new_vartime ( Odd :: new ( ( * p) . clone ( ) ) . unwrap ( ) ) ;
5962 let form = BoxedMontyForm :: new ( h. clone ( ) , params) ;
You can’t perform that action at this time.
0 commit comments