|
| 1 | +//! SM2DSA benchmarks |
| 2 | +
|
| 3 | +use core::hint::black_box; |
| 4 | +use criterion::{ |
| 5 | + BenchmarkGroup, Criterion, criterion_group, criterion_main, measurement::Measurement, |
| 6 | +}; |
| 7 | +use hex_literal::hex; |
| 8 | +use signature::{Signer, Verifier}; |
| 9 | +use sm2::dsa::{Signature, SigningKey}; |
| 10 | + |
| 11 | +const SIGNING_KEY_BYTES: [u8; 32] = |
| 12 | + hex!("1cf6bc6c7f642a84994119e206c9f0753ff100709f4fd12f2338c1be60bf4175"); |
| 13 | + |
| 14 | +fn signing_key() -> SigningKey { |
| 15 | + SigningKey::from_bytes("", &SIGNING_KEY_BYTES.into()).unwrap() |
| 16 | +} |
| 17 | + |
| 18 | +fn bench_sign<M: Measurement>(group: &mut BenchmarkGroup<'_, M>) { |
| 19 | + let sk = black_box(signing_key()); |
| 20 | + let msg = black_box(b"example message"); |
| 21 | + group.bench_function("sign", |b| { |
| 22 | + b.iter(|| { |
| 23 | + let sig: Signature = sk.sign(msg); |
| 24 | + black_box(sig) |
| 25 | + }) |
| 26 | + }); |
| 27 | +} |
| 28 | + |
| 29 | +fn bench_verify<M: Measurement>(group: &mut BenchmarkGroup<'_, M>) { |
| 30 | + let sk = black_box(signing_key()); |
| 31 | + let vk = black_box(sk.verifying_key()); |
| 32 | + let msg = black_box(b"example message"); |
| 33 | + let sig: Signature = black_box(sk.sign(msg)); |
| 34 | + group.bench_function("verify", |b| b.iter(|| vk.verify(msg, &sig))); |
| 35 | +} |
| 36 | + |
| 37 | +fn bench_dsa(c: &mut Criterion) { |
| 38 | + let mut group = c.benchmark_group("SM2DSA"); |
| 39 | + bench_sign(&mut group); |
| 40 | + bench_verify(&mut group); |
| 41 | + group.finish(); |
| 42 | +} |
| 43 | + |
| 44 | +criterion_group!(benches, bench_dsa); |
| 45 | +criterion_main!(benches); |
0 commit comments