Struct openssl::bn::BigNum
[−]
pub struct BigNum(_);
Methods
impl BigNum[src]
pub fn new() -> Result<BigNum, ErrorStack>[src]
Creates a new BigNum with the value 0.
pub fn from_u32(n: u32) -> Result<BigNum, ErrorStack>[src]
Creates a new BigNum with the given value.
pub fn from_dec_str(s: &str) -> Result<BigNum, ErrorStack>[src]
Creates a BigNum from a decimal string.
pub fn from_hex_str(s: &str) -> Result<BigNum, ErrorStack>[src]
Creates a BigNum from a hexadecimal string.
pub fn get_rfc2409_prime_768() -> Result<BigNum, ErrorStack>[src]
pub fn get_rfc2409_prime_1024() -> Result<BigNum, ErrorStack>[src]
pub fn get_rfc3526_prime_1536() -> Result<BigNum, ErrorStack>[src]
pub fn get_rfc3526_prime_2048() -> Result<BigNum, ErrorStack>[src]
pub fn get_rfc3526_prime_3072() -> Result<BigNum, ErrorStack>[src]
pub fn get_rfc3526_prime_4096() -> Result<BigNum, ErrorStack>[src]
pub fn get_rfc3526_prime_6144() -> Result<BigNum, ErrorStack>[src]
pub fn get_rfc3526_prime_8192() -> Result<BigNum, ErrorStack>[src]
pub fn from_slice(n: &[u8]) -> Result<BigNum, ErrorStack>[src]
Creates a new BigNum from an unsigned, big-endian encoded number of arbitrary length.
let bignum = BigNum::from_slice(&[0x12, 0x00, 0x34]).unwrap(); assert_eq!(bignum, BigNum::from_u32(0x120034).unwrap());
Methods from Deref<Target = BigNumRef>
pub fn clear(&mut self)[src]
Erases the memory used by this BigNum, resetting its value to 0.
This can be used to destroy sensitive data such as keys when they are no longer needed.
pub fn add_word(&mut self, w: u32) -> Result<(), ErrorStack>[src]
Adds a u32 to self.
pub fn sub_word(&mut self, w: u32) -> Result<(), ErrorStack>[src]
Subtracts a u32 from self.
pub fn mul_word(&mut self, w: u32) -> Result<(), ErrorStack>[src]
Multiplies a u32 by self.
pub fn div_word(&mut self, w: u32) -> Result<u64, ErrorStack>[src]
Divides self by a u32, returning the remainder.
pub fn mod_word(&self, w: u32) -> Result<u64, ErrorStack>[src]
Returns the result of self modulo w.
pub fn rand_range(&self, rnd: &mut BigNumRef) -> Result<(), ErrorStack>[src]
Places a cryptographically-secure pseudo-random number nonnegative
number less than self in rnd.
pub fn pseudo_rand_range(&self, rnd: &mut BigNumRef) -> Result<(), ErrorStack>[src]
The cryptographically weak counterpart to rand_in_range.
pub fn set_bit(&mut self, n: i32) -> Result<(), ErrorStack>[src]
Sets bit n. Equivalent to self |= (1 << n).
When setting a bit outside of self, it is expanded.
pub fn clear_bit(&mut self, n: i32) -> Result<(), ErrorStack>[src]
Clears bit n, setting it to 0. Equivalent to self &= ~(1 << n).
When clearing a bit outside of self, an error is returned.
pub fn is_bit_set(&self, n: i32) -> bool[src]
Returns true if the nth bit of self is set to 1, false otherwise.
pub fn mask_bits(&mut self, n: i32) -> Result<(), ErrorStack>[src]
Truncates self to the lowest n bits.
An error occurs if self is already shorter than n bits.
pub fn lshift1(&mut self, a: &BigNumRef) -> Result<(), ErrorStack>[src]
Places a << 1 in self.
pub fn rshift1(&mut self, a: &BigNumRef) -> Result<(), ErrorStack>[src]
Places a >> 1 in self.
pub fn checked_add(
&mut self,
a: &BigNumRef,
b: &BigNumRef
) -> Result<(), ErrorStack>[src]
&mut self,
a: &BigNumRef,
b: &BigNumRef
) -> Result<(), ErrorStack>
Places a + b in self.
pub fn checked_sub(
&mut self,
a: &BigNumRef,
b: &BigNumRef
) -> Result<(), ErrorStack>[src]
&mut self,
a: &BigNumRef,
b: &BigNumRef
) -> Result<(), ErrorStack>
Places a - b in self.
pub fn lshift(&mut self, a: &BigNumRef, n: i32) -> Result<(), ErrorStack>[src]
Places a << n in self.
pub fn rshift(&mut self, a: &BigNumRef, n: i32) -> Result<(), ErrorStack>[src]
Places a >> n in self.
pub fn to_owned(&self) -> Result<BigNum, ErrorStack>[src]
pub fn set_negative(&mut self, negative: bool)[src]
Sets the sign of self.
pub fn ucmp(&self, oth: &BigNumRef) -> Ordering[src]
Compare the absolute values of self and oth.
let s = -BigNum::from_u32(8).unwrap(); let o = BigNum::from_u32(8).unwrap(); assert_eq!(s.ucmp(&o), Ordering::Equal);
pub fn is_negative(&self) -> bool[src]
pub fn num_bits(&self) -> i32[src]
Returns the number of significant bits in self.
pub fn num_bytes(&self) -> i32[src]
Returns the size of self in bytes.
pub fn rand(
&mut self,
bits: i32,
msb: MsbOption,
odd: bool
) -> Result<(), ErrorStack>[src]
&mut self,
bits: i32,
msb: MsbOption,
odd: bool
) -> Result<(), ErrorStack>
Generates a cryptographically strong pseudo-random BigNum, placing it in self.
Parameters
bits: Length of the number in bits.msb: The desired properties of the number.odd: Iftrue, the generated number will be odd.
pub fn pseudo_rand(
&mut self,
bits: i32,
msb: MsbOption,
odd: bool
) -> Result<(), ErrorStack>[src]
&mut self,
bits: i32,
msb: MsbOption,
odd: bool
) -> Result<(), ErrorStack>
The cryptographically weak counterpart to rand.
pub fn generate_prime(
&mut self,
bits: i32,
safe: bool,
add: Option<&BigNumRef>,
rem: Option<&BigNumRef>
) -> Result<(), ErrorStack>[src]
&mut self,
bits: i32,
safe: bool,
add: Option<&BigNumRef>,
rem: Option<&BigNumRef>
) -> Result<(), ErrorStack>
Generates a prime number, placing it in self.
Parameters
bits: The length of the prime in bits (lower bound).safe: If true, returns a "safe" primepso that(p-1)/2is also prime.add/rem: Ifaddis set toSome(add),p % add == remwill hold, wherepis the generated prime andremis1if not specified (None).
pub fn checked_mul(
&mut self,
a: &BigNumRef,
b: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>[src]
&mut self,
a: &BigNumRef,
b: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>
Places the result of a * b in self.
pub fn checked_div(
&mut self,
a: &BigNumRef,
b: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>[src]
&mut self,
a: &BigNumRef,
b: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>
Places the result of a / b in self.
pub fn checked_rem(
&mut self,
a: &BigNumRef,
b: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>[src]
&mut self,
a: &BigNumRef,
b: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>
Places the result of a % b in self.
pub fn div_rem(
&mut self,
rem: &mut BigNumRef,
a: &BigNumRef,
b: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>[src]
&mut self,
rem: &mut BigNumRef,
a: &BigNumRef,
b: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>
Places the result of a / b in self and a % b in rem.
pub fn sqr(
&mut self,
a: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>[src]
&mut self,
a: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>
Places the result of a² in self.
pub fn nnmod(
&mut self,
a: &BigNumRef,
m: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>[src]
&mut self,
a: &BigNumRef,
m: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>
Places the result of a mod m in self.
pub fn mod_add(
&mut self,
a: &BigNumRef,
b: &BigNumRef,
m: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>[src]
&mut self,
a: &BigNumRef,
b: &BigNumRef,
m: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>
Places the result of (a + b) mod m in self.
pub fn mod_sub(
&mut self,
a: &BigNumRef,
b: &BigNumRef,
m: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>[src]
&mut self,
a: &BigNumRef,
b: &BigNumRef,
m: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>
Places the result of (a - b) mod m in self.
pub fn mod_mul(
&mut self,
a: &BigNumRef,
b: &BigNumRef,
m: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>[src]
&mut self,
a: &BigNumRef,
b: &BigNumRef,
m: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>
Places the result of (a * b) mod m in self.
pub fn mod_sqr(
&mut self,
a: &BigNumRef,
m: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>[src]
&mut self,
a: &BigNumRef,
m: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>
Places the result of a² mod m in self.
pub fn exp(
&mut self,
a: &BigNumRef,
p: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>[src]
&mut self,
a: &BigNumRef,
p: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>
Places the result of a^p in self.
pub fn mod_exp(
&mut self,
a: &BigNumRef,
p: &BigNumRef,
m: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>[src]
&mut self,
a: &BigNumRef,
p: &BigNumRef,
m: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>
Places the result of a^p mod m in self.
pub fn mod_inverse(
&mut self,
a: &BigNumRef,
n: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>[src]
&mut self,
a: &BigNumRef,
n: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>
Places the inverse of a modulo n in self.
pub fn gcd(
&mut self,
a: &BigNumRef,
b: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>[src]
&mut self,
a: &BigNumRef,
b: &BigNumRef,
ctx: &mut BigNumContextRef
) -> Result<(), ErrorStack>
Places the greatest common denominator of a and b in self.
pub fn is_prime(
&self,
checks: i32,
ctx: &mut BigNumContextRef
) -> Result<bool, ErrorStack>[src]
&self,
checks: i32,
ctx: &mut BigNumContextRef
) -> Result<bool, ErrorStack>
Checks whether self is prime.
Performs a Miller-Rabin probabilistic primality test with checks iterations.
Returns true if self is prime with an error probability of less than 0.25 ^ checks.
pub fn is_prime_fasttest(
&self,
checks: i32,
ctx: &mut BigNumContextRef,
do_trial_division: bool
) -> Result<bool, ErrorStack>[src]
&self,
checks: i32,
ctx: &mut BigNumContextRef,
do_trial_division: bool
) -> Result<bool, ErrorStack>
Checks whether self is prime with optional trial division.
If do_trial_division is true, first performs trial division by a number of small primes.
Then, like is_prime, performs a Miller-Rabin probabilistic primality test with checks
iterations.
Return Value
Returns true if self is prime with an error probability of less than 0.25 ^ checks.
pub fn to_vec(&self) -> Vec<u8>[src]
Returns a big-endian byte vector representation of the absolute value of self.
self can be recreated by using from_slice.
let s = -BigNum::from_u32(4543).unwrap(); let r = BigNum::from_u32(4543).unwrap(); let s_vec = s.to_vec(); assert_eq!(BigNum::from_slice(&s_vec).unwrap(), r);
pub fn to_dec_str(&self) -> Result<OpensslString, ErrorStack>[src]
Returns a decimal string representation of self.
let s = -BigNum::from_u32(12345).unwrap(); assert_eq!(&**s.to_dec_str().unwrap(), "-12345");
pub fn to_hex_str(&self) -> Result<OpensslString, ErrorStack>[src]
Returns a hexadecimal string representation of self.
let s = -BigNum::from_u32(0x99ff).unwrap(); assert_eq!(&**s.to_hex_str().unwrap(), "-99FF");
pub fn to_asn1_integer(&self) -> Result<Asn1Integer, ErrorStack>[src]
Returns an Asn1Integer containing the value of self.
Trait Implementations
impl ForeignType for BigNum
type CType = BIGNUM
The raw C type.
type Ref = BigNumRef
The type representing a reference to this type.
unsafe fn from_ptr(ptr: *mut BIGNUM) -> BigNum
Constructs an instance of this type from its raw type.
fn as_ptr(&self) -> *mut BIGNUM
Returns a raw pointer to the wrapped value.
impl Drop for BigNum
impl Deref for BigNum
type Target = BigNumRef
The resulting type after dereferencing.
fn deref(&self) -> &BigNumRef
Dereferences the value.
impl DerefMut for BigNum
impl AsRef<BigNumRef> for BigNum[src]
impl Debug for BigNum[src]
impl Display for BigNum[src]
fn fmt(&self, f: &mut Formatter) -> Result[src]
Formats the value using the given formatter. Read more
impl PartialEq for BigNum[src]
fn eq(&self, oth: &BigNum) -> bool[src]
This method tests for self and other values to be equal, and is used by ==. Read more
fn ne(&self, other: &Rhs) -> bool1.0.0[src]
This method tests for !=.
impl PartialEq<BigNumRef> for BigNum[src]
fn eq(&self, oth: &BigNumRef) -> bool[src]
This method tests for self and other values to be equal, and is used by ==. Read more
fn ne(&self, other: &Rhs) -> bool1.0.0[src]
This method tests for !=.
impl Eq for BigNum[src]
impl PartialOrd for BigNum[src]
fn partial_cmp(&self, oth: &BigNum) -> Option<Ordering>[src]
This method returns an ordering between self and other values if one exists. Read more
fn lt(&self, other: &Rhs) -> bool1.0.0[src]
This method tests less than (for self and other) and is used by the < operator. Read more
fn le(&self, other: &Rhs) -> bool1.0.0[src]
This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
fn gt(&self, other: &Rhs) -> bool1.0.0[src]
This method tests greater than (for self and other) and is used by the > operator. Read more
fn ge(&self, other: &Rhs) -> bool1.0.0[src]
This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
impl PartialOrd<BigNumRef> for BigNum[src]
fn partial_cmp(&self, oth: &BigNumRef) -> Option<Ordering>[src]
This method returns an ordering between self and other values if one exists. Read more
fn lt(&self, other: &Rhs) -> bool1.0.0[src]
This method tests less than (for self and other) and is used by the < operator. Read more
fn le(&self, other: &Rhs) -> bool1.0.0[src]
This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
fn gt(&self, other: &Rhs) -> bool1.0.0[src]
This method tests greater than (for self and other) and is used by the > operator. Read more
fn ge(&self, other: &Rhs) -> bool1.0.0[src]
This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
impl Ord for BigNum[src]
fn cmp(&self, oth: &BigNum) -> Ordering[src]
This method returns an Ordering between self and other. Read more
fn max(self, other: Self) -> Self1.21.0[src]
Compares and returns the maximum of two values. Read more
fn min(self, other: Self) -> Self1.21.0[src]
Compares and returns the minimum of two values. Read more
impl<'a, 'b> Add<&'b BigNumRef> for &'a BigNum[src]
type Output = BigNum
The resulting type after applying the + operator.
fn add(self, oth: &BigNumRef) -> BigNum[src]
Performs the + operation.
impl<'a, 'b> Add<&'b BigNum> for &'a BigNum[src]
type Output = BigNum
The resulting type after applying the + operator.
fn add(self, oth: &BigNum) -> BigNum[src]
Performs the + operation.
impl<'a, 'b> Sub<&'b BigNumRef> for &'a BigNum[src]
type Output = BigNum
The resulting type after applying the - operator.
fn sub(self, oth: &BigNumRef) -> BigNum[src]
Performs the - operation.
impl<'a, 'b> Sub<&'b BigNum> for &'a BigNum[src]
type Output = BigNum
The resulting type after applying the - operator.
fn sub(self, oth: &BigNum) -> BigNum[src]
Performs the - operation.
impl<'a, 'b> Mul<&'b BigNumRef> for &'a BigNum[src]
type Output = BigNum
The resulting type after applying the * operator.
fn mul(self, oth: &BigNumRef) -> BigNum[src]
Performs the * operation.
impl<'a, 'b> Mul<&'b BigNum> for &'a BigNum[src]
type Output = BigNum
The resulting type after applying the * operator.
fn mul(self, oth: &BigNum) -> BigNum[src]
Performs the * operation.
impl<'a, 'b> Div<&'b BigNumRef> for &'a BigNum[src]
type Output = BigNum
The resulting type after applying the / operator.
fn div(self, oth: &BigNumRef) -> BigNum[src]
Performs the / operation.
impl<'a, 'b> Div<&'b BigNum> for &'a BigNum[src]
type Output = BigNum
The resulting type after applying the / operator.
fn div(self, oth: &BigNum) -> BigNum[src]
Performs the / operation.
impl<'a, 'b> Rem<&'b BigNumRef> for &'a BigNum[src]
type Output = BigNum
The resulting type after applying the % operator.
fn rem(self, oth: &BigNumRef) -> BigNum[src]
Performs the % operation.
impl<'a, 'b> Rem<&'b BigNum> for &'a BigNum[src]
type Output = BigNum
The resulting type after applying the % operator.
fn rem(self, oth: &BigNum) -> BigNum[src]
Performs the % operation.
impl<'a> Shl<i32> for &'a BigNum[src]
type Output = BigNum
The resulting type after applying the << operator.
fn shl(self, n: i32) -> BigNum[src]
Performs the << operation.
impl<'a> Shr<i32> for &'a BigNum[src]
type Output = BigNum
The resulting type after applying the >> operator.
fn shr(self, n: i32) -> BigNum[src]
Performs the >> operation.
impl<'a> Neg for &'a BigNum[src]
type Output = BigNum
The resulting type after applying the - operator.
fn neg(self) -> BigNum[src]
Performs the unary - operation.