miden-crypto/benches/dsa.rs
benches/dsa.rsRaw
1use criterion::{criterion_group, criterion_main, BatchSize, Criterion};
2use miden_crypto::dsa::{
3 rpo_falcon512::SecretKey as FalconSecretKey, rpo_stark::SecretKey as RpoStarkSecretKey,
4};
5use rand_utils::rand_array;
6
7fn key_gen_falcon(c: &mut Criterion) {
8 c.bench_function("Falcon public key generation", |bench| {
9 bench.iter_batched(|| FalconSecretKey::new(), |sk| sk.public_key(), BatchSize::SmallInput)
10 });
11
12 c.bench_function("Falcon secret key generation", |bench| {
13 bench.iter_batched(|| {}, |_| FalconSecretKey::new(), BatchSize::SmallInput)
14 });
15}
16
17fn key_gen_rpo_stark(c: &mut Criterion) {
18 c.bench_function("RPO-STARK public key generation", |bench| {
19 bench.iter_batched(
20 || RpoStarkSecretKey::random(),
21 |sk| sk.public_key(),
22 BatchSize::SmallInput,
23 )
24 });
25
26 c.bench_function("RPO-STARK secret key generation", |bench| {
27 bench.iter_batched(|| {}, |_| RpoStarkSecretKey::random(), BatchSize::SmallInput)
28 });
29}
30
31fn signature_gen_falcon(c: &mut Criterion) {
32 c.bench_function("Falcon signature generation", |bench| {
33 bench.iter_batched(
34 || (FalconSecretKey::new(), rand_array().into()),
35 |(sk, msg)| sk.sign(msg),
36 BatchSize::SmallInput,
37 )
38 });
39}
40
41fn signature_gen_rpo_stark(c: &mut Criterion) {
42 c.bench_function("RPO-STARK signature generation", |bench| {
43 bench.iter_batched(
44 || (RpoStarkSecretKey::random(), rand_array().into()),
45 |(sk, msg)| sk.sign(msg),
46 BatchSize::SmallInput,
47 )
48 });
49}
50
51fn signature_ver_falcon(c: &mut Criterion) {
52 c.bench_function("Falcon signature verification", |bench| {
53 bench.iter_batched(
54 || {
55 let sk = FalconSecretKey::new();
56 let msg = rand_array().into();
57 (sk.public_key(), msg, sk.sign(msg))
58 },
59 |(pk, msg, sig)| pk.verify(msg, &sig),
60 BatchSize::SmallInput,
61 )
62 });
63}
64
65fn signature_ver_rpo_stark(c: &mut Criterion) {
66 c.bench_function("RPO-STARK signature verification", |bench| {
67 bench.iter_batched(
68 || {
69 let sk = RpoStarkSecretKey::random();
70 let msg = rand_array().into();
71 (sk.public_key(), msg, sk.sign(msg))
72 },
73 |(pk, msg, sig)| pk.verify(msg, &sig),
74 BatchSize::SmallInput,
75 )
76 });
77}
78
79criterion_group!(
80 dsa_group,
81 key_gen_falcon,
82 key_gen_rpo_stark,
83 signature_gen_falcon,
84 signature_gen_rpo_stark,
85 signature_ver_falcon,
86 signature_ver_rpo_stark
87);
88criterion_main!(dsa_group);