use commonware_cryptography::{
Signer,
ed25519::PrivateKey,
handshake::sake::{Context, Error, Version, dial_end, dial_start, listen_end, listen_start},
transcript::Transcript,
};
use commonware_math::algebra::Random;
use commonware_utils::test_rng;
use criterion::{Criterion, criterion_group};
fn connect() -> Result<(Transcript, Transcript), Error> {
let mut rng = test_rng();
let dialer_crypto = PrivateKey::random(&mut rng);
let listener_crypto = PrivateKey::random(&mut rng);
let (d_state, msg1) = dial_start(
&mut rng,
Context::new(
b"bench_namespace",
0,
0..1,
dialer_crypto.clone(),
listener_crypto.public_key(),
Version::V1,
),
);
let (l_state, msg2) = listen_start(
&mut rng,
Context::new(
b"bench_namespace",
0,
0..1,
listener_crypto,
dialer_crypto.public_key(),
Version::V1,
),
msg1,
)?;
let (msg3, dialer) = dial_end(d_state, msg2)?;
let listener = listen_end(l_state, msg3)?;
Ok((dialer, listener))
}
fn bench_connect(c: &mut Criterion) {
c.bench_function(module_path!(), |b| b.iter(|| connect().unwrap()));
}
criterion_group!(benches, bench_connect);