42 lines
970 B
Rust
42 lines
970 B
Rust
// Command for changing the stack size:
|
|
// cargo run --example sign --features std -- --stack-size-kb (new value in KB)
|
|
|
|
extern crate dilithium;
|
|
extern crate rng256;
|
|
extern crate structopt;
|
|
|
|
use dilithium::sign::SecKey;
|
|
use rng256::Rng256;
|
|
use std::thread;
|
|
use structopt::StructOpt;
|
|
|
|
const DEFAULT_STACK_SIZE_KB: &str = "81";
|
|
|
|
#[derive(Debug, StructOpt)]
|
|
struct Opts {
|
|
#[structopt(long, default_value=DEFAULT_STACK_SIZE_KB)]
|
|
stack_size_kb: usize,
|
|
}
|
|
|
|
fn run() {
|
|
let mut rng = rng256::ThreadRng256 {};
|
|
|
|
let sk = SecKey::gensk(&mut rng);
|
|
let mut message = [0; 59];
|
|
rng.fill_bytes(&mut message);
|
|
sk.sign(&message);
|
|
}
|
|
|
|
fn main() {
|
|
let stack_size_kb = Opts::from_args().stack_size_kb;
|
|
|
|
// We bound the stack size for generating keys and signing in Dilithium.
|
|
let child = thread::Builder::new()
|
|
.stack_size(stack_size_kb * 1024)
|
|
.spawn(run)
|
|
.unwrap();
|
|
|
|
// Wait for thread to join
|
|
child.join().unwrap();
|
|
}
|