pumpkin/src/lib.rs

81 lines
1.8 KiB
Rust
Raw Normal View History

#![feature(test)]
2015-10-06 23:12:26 -04:00
/// # The Pumpkin Prime Number Generator
///
/// The `pumpkin` prime number generator library can be used to generate
/// prime numbers of any reasonable length, suitable for any cryptographic
/// purpose. All numbers generated are seeded from the operating system's
/// secure source of entrophy and are verified using three different primality
/// tests.
///
/// Primes have to be AT LEAST 512-bits long. Any lower bit-length will
/// immediately fail.
///
2015-10-12 22:01:09 -04:00
/// ## Examples
2015-10-06 23:12:26 -04:00
///
/// ```
2015-10-12 22:01:09 -04:00
/// extern crate pumpkin;
2015-10-06 23:12:26 -04:00
///
2015-10-12 22:01:09 -04:00
/// use pumpkin::Prime;
2015-10-06 23:12:26 -04:00
///
/// fn main() {
/// // Generate a 2048-bit prime number
2015-10-12 22:01:09 -04:00
/// let p = Prime::new(2048);
/// let q = Prime::new(2048);
2015-10-06 23:12:26 -04:00
///
2015-10-12 22:01:09 -04:00
/// let r = p * q;
/// println!("{}", r); // Some ridiculously large number
2015-10-06 23:12:26 -04:00
/// }
/// ```
2015-10-08 00:49:01 -04:00
#[macro_use] extern crate custom_derive;
#[macro_use] extern crate newtype_derive;
extern crate ramp;
2015-09-28 00:25:30 -04:00
extern crate rand;
extern crate test;
2015-09-28 00:25:30 -04:00
2015-10-12 22:01:09 -04:00
mod prime;
pub use prime::Prime;
#[cfg(test)]
mod tests {
use rand::OsRng;
use super::*;
use test::Bencher;
#[test]
#[should_panic]
fn test_new_small_prime() {
Prime::new(511);
}
#[test]
#[should_panic]
fn test_new_small_prime_from_rng() {
let mut rngesus = match OsRng::new() {
Ok(rng) => rng,
Err(reason) => panic!("An error occurred when initializing the RNG: {}", reason)
};
Prime::from_rng(511, &mut rngesus);
}
#[bench]
#[ignore]
fn bench_generate_512_bit_prime(b: &mut Bencher) {
b.iter(|| Prime::new(512));
}
#[bench]
#[ignore]
fn bench_generate_1024_bit_prime(b: &mut Bencher) {
b.iter(|| Prime::new(1024));
}
#[bench]
#[ignore]
fn bench_generate_2048_bit_prime(b: &mut Bencher) {
b.iter(|| Prime::new(2048));
}
}