File tree 2 files changed +6
-1
lines changed
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;
17
17
fn calculate_bounds ( size : u32 ) -> ( BoxedUint , BoxedUint ) {
18
18
let lower = two ( ) . shl ( size - 1 ) ;
19
19
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) ;
20
22
21
23
( lower, upper)
22
24
}
Original file line number Diff line number Diff line change @@ -41,8 +41,10 @@ pub fn common(
41
41
break ' gen_m m;
42
42
}
43
43
} ;
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;
45
46
let p = m - mr + BoxedUint :: one ( ) ;
47
+ let p = p. shorten ( q. bits_precision ( ) ) ;
46
48
let p = NonZero :: new ( p) . unwrap ( ) ;
47
49
48
50
if crypto_primes:: is_prime_with_rng ( rng, & * p) {
@@ -54,6 +56,7 @@ pub fn common(
54
56
// Generate g using the unverifiable method as defined by Appendix A.2.1
55
57
let e = ( & * p - & BoxedUint :: one ( ) ) / & q;
56
58
let mut h = BoxedUint :: one ( ) ;
59
+ let mut h = BoxedUint :: one ( ) . widen ( q. bits_precision ( ) ) ;
57
60
let g = loop {
58
61
let params = BoxedMontyParams :: new_vartime ( Odd :: new ( ( * p) . clone ( ) ) . unwrap ( ) ) ;
59
62
let form = BoxedMontyForm :: new ( h. clone ( ) , params) ;
You can’t perform that action at this time.
0 commit comments