aboutsummaryrefslogtreecommitdiff
path: root/openssl/src
diff options
context:
space:
mode:
authorSteven Fackler <[email protected]>2017-03-26 05:01:29 +0100
committerGitHub <[email protected]>2017-03-26 05:01:29 +0100
commitba2460d38d489754ba5fa7c89437deb6a45fa43c (patch)
treeea1e30b78ca93d1170a7148b25945e236c5c4a92 /openssl/src
parentMerge pull request #607 from sfackler/set-session (diff)
parentFix order of arguments to BN_rand_range and BN_pseudo_rand_range (diff)
downloadrust-openssl-ba2460d38d489754ba5fa7c89437deb6a45fa43c.tar.xz
rust-openssl-ba2460d38d489754ba5fa7c89437deb6a45fa43c.zip
Merge pull request #606 from cjcole/master
Fix order of arguments to BN_rand_range and BN_pseudo_rand_range
Diffstat (limited to 'openssl/src')
-rw-r--r--openssl/src/bn.rs22
1 files changed, 20 insertions, 2 deletions
diff --git a/openssl/src/bn.rs b/openssl/src/bn.rs
index 5cc27862..a0066da8 100644
--- a/openssl/src/bn.rs
+++ b/openssl/src/bn.rs
@@ -106,12 +106,12 @@ impl BigNumRef {
/// Places a cryptographically-secure pseudo-random number nonnegative
/// number less than `self` in `rnd`.
pub fn rand_range(&self, rnd: &mut BigNumRef) -> Result<(), ErrorStack> {
- unsafe { cvt(ffi::BN_rand_range(self.as_ptr(), rnd.as_ptr())).map(|_| ()) }
+ unsafe { cvt(ffi::BN_rand_range(rnd.as_ptr(), self.as_ptr())).map(|_| ()) }
}
/// The cryptographically weak counterpart to `rand_in_range`.
pub fn pseudo_rand_range(&self, rnd: &mut BigNumRef) -> Result<(), ErrorStack> {
- unsafe { cvt(ffi::BN_pseudo_rand_range(self.as_ptr(), rnd.as_ptr())).map(|_| ()) }
+ unsafe { cvt(ffi::BN_pseudo_rand_range(rnd.as_ptr(), self.as_ptr())).map(|_| ()) }
}
/// Sets bit `n`. Equivalent to `self |= (1 << n)`.
@@ -934,6 +934,24 @@ mod tests {
}
#[test]
+ fn test_rand_range() {
+ let range = BigNum::from_u32(909829283).unwrap();
+ let mut result = BigNum::from_dec_str(
+ &range.to_dec_str().unwrap()).unwrap();
+ range.rand_range(&mut result).unwrap();
+ assert!(result >= BigNum::from_u32(0).unwrap() && result < range);
+ }
+
+ #[test]
+ fn test_pseudo_rand_range() {
+ let range = BigNum::from_u32(909829283).unwrap();
+ let mut result = BigNum::from_dec_str(
+ &range.to_dec_str().unwrap()).unwrap();
+ range.pseudo_rand_range(&mut result).unwrap();
+ assert!(result >= BigNum::from_u32(0).unwrap() && result < range);
+ }
+
+ #[test]
fn test_prime_numbers() {
let a = BigNum::from_u32(19029017).unwrap();
let mut p = BigNum::new().unwrap();