elligator2.rs
1 // Copyright (c) 2019-2025 Alpha-Delta Network Inc. 2 // This file is part of the alphavm library. 3 4 // Licensed under the Apache License, Version 2.0 (the "License"); 5 // you may not use this file except in compliance with the License. 6 // You may obtain a copy of the License at: 7 8 // http://www.apache.org/licenses/LICENSE-2.0 9 10 // Unless required by applicable law or agreed to in writing, software 11 // distributed under the License is distributed on an "AS IS" BASIS, 12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 // See the License for the specific language governing permissions and 14 // limitations under the License. 15 16 #[macro_use] 17 extern crate criterion; 18 19 use alphavm_console_algorithms::Elligator2; 20 use alphavm_console_types::prelude::*; 21 use alphavm_utilities::{TestRng, Uniform}; 22 23 use criterion::Criterion; 24 25 fn elligator2_256(c: &mut Criterion) { 26 let rng = &mut TestRng::default(); 27 28 let input = Field::rand(rng); 29 c.bench_function(&format!("Elligator2 - Field of {}-bits", Field::<Console>::size_in_bits()), |b| { 30 b.iter(|| { 31 let (_group, _sign) = Elligator2::<Console>::encode(&input).unwrap(); 32 }) 33 }); 34 } 35 36 criterion_group! { 37 name = elligator2; 38 config = Criterion::default().sample_size(1000); 39 targets = elligator2_256 40 } 41 42 criterion_main!(elligator2);