use commonware_cryptography::bls12381::{ primitives::{ ops::{keypair, sign_message}, variant::MinSig, }, tle::{decrypt, encrypt, Block}, }; use criterion::{criterion_group, BatchSize, Criterion}; use rand::thread_rng; use std::hint::black_box; fn benchmark_tle_decrypt(c: &mut Criterion) { let mut rng = thread_rng(); let (master_secret, master_public) = keypair::<_, MinSig>(&mut rng); let target = 10u64.to_be_bytes(); let message = Block::new([0x42u8; 32]); let signature = sign_message::(&master_secret, None, &target); c.bench_function(module_path!(), |b| { b.iter_batched( || encrypt::<_, MinSig>(&mut rng, master_public, (None, &target), &message), |ciphertext| { black_box(decrypt::(&signature, &ciphertext).unwrap()); }, BatchSize::SmallInput, ); }); } criterion_group! { name = benches; config = Criterion::default().sample_size(10); targets = benchmark_tle_decrypt }