summaryrefslogtreecommitdiffstats
path: root/vendor/p384/benches
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:47:55 +0000
commit2aadc03ef15cb5ca5cc2af8a7c08e070742f0ac4 (patch)
tree033cc839730fda84ff08db877037977be94e5e3a /vendor/p384/benches
parentInitial commit. (diff)
downloadcargo-2aadc03ef15cb5ca5cc2af8a7c08e070742f0ac4.tar.xz
cargo-2aadc03ef15cb5ca5cc2af8a7c08e070742f0ac4.zip
Adding upstream version 0.70.1+ds1.upstream/0.70.1+ds1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/p384/benches')
-rw-r--r--vendor/p384/benches/field.rs54
-rw-r--r--vendor/p384/benches/scalar.rs73
2 files changed, 127 insertions, 0 deletions
diff --git a/vendor/p384/benches/field.rs b/vendor/p384/benches/field.rs
new file mode 100644
index 0000000..f1b1d45
--- /dev/null
+++ b/vendor/p384/benches/field.rs
@@ -0,0 +1,54 @@
+//! secp384r1 field element benchmarks
+
+use criterion::{
+ criterion_group, criterion_main, measurement::Measurement, BenchmarkGroup, Criterion,
+};
+use hex_literal::hex;
+use p384::FieldElement;
+
+fn test_field_element_x() -> FieldElement {
+ FieldElement::from_bytes(
+ hex!("c2b47944fb5de342d03285880177ca5f7d0f2fcad7678cce4229d6e1932fcac11bfc3c3e97d942a3c56bf34123013dbf").into()
+ )
+ .unwrap()
+}
+
+fn test_field_element_y() -> FieldElement {
+ FieldElement::from_bytes(
+ hex!("37257906a8223866eda0743c519616a76a758ae58aee81c5fd35fbf3a855b7754a36d4a0672df95d6c44a81cf7620c2d").into()
+ )
+ .unwrap()
+}
+
+fn bench_field_element_mul<'a, M: Measurement>(group: &mut BenchmarkGroup<'a, M>) {
+ let x = test_field_element_x();
+ let y = test_field_element_y();
+ group.bench_function("mul", |b| b.iter(|| &x * &y));
+}
+
+fn bench_field_element_square<'a, M: Measurement>(group: &mut BenchmarkGroup<'a, M>) {
+ let x = test_field_element_x();
+ group.bench_function("square", |b| b.iter(|| x.square()));
+}
+
+fn bench_field_element_sqrt<'a, M: Measurement>(group: &mut BenchmarkGroup<'a, M>) {
+ let x = test_field_element_x();
+ group.bench_function("sqrt", |b| b.iter(|| x.sqrt()));
+}
+
+fn bench_field_element_invert<'a, M: Measurement>(group: &mut BenchmarkGroup<'a, M>) {
+ let x = test_field_element_x();
+ group.bench_function("invert", |b| b.iter(|| x.invert()));
+}
+
+fn bench_field_element(c: &mut Criterion) {
+ let mut group = c.benchmark_group("field element operations");
+ bench_field_element_mul(&mut group);
+ bench_field_element_square(&mut group);
+ bench_field_element_invert(&mut group);
+ bench_field_element_sqrt(&mut group);
+ group.finish();
+}
+
+criterion_group!(benches, bench_field_element);
+criterion_main!(benches);
diff --git a/vendor/p384/benches/scalar.rs b/vendor/p384/benches/scalar.rs
new file mode 100644
index 0000000..3589d79
--- /dev/null
+++ b/vendor/p384/benches/scalar.rs
@@ -0,0 +1,73 @@
+//! secp384r1 scalar arithmetic benchmarks
+
+use criterion::{
+ criterion_group, criterion_main, measurement::Measurement, BenchmarkGroup, Criterion,
+};
+use hex_literal::hex;
+use p384::{elliptic_curve::group::ff::PrimeField, ProjectivePoint, Scalar};
+
+fn test_scalar_x() -> Scalar {
+ Scalar::from_repr(
+ hex!("201b432d8df14324182d6261db3e4b3f46a8284482d52e370da41e6cbdf45ec2952f5db7ccbce3bc29449f4fb080ac97").into()
+ ).unwrap()
+}
+
+fn test_scalar_y() -> Scalar {
+ Scalar::from_repr(
+ hex!("23d9f4ea6d87b7d6163d64256e3449255db14786401a51daa7847161bf56d494325ad2ac8ba928394e01061d882c3528").into()
+ ).unwrap()
+}
+
+fn bench_point_mul<'a, M: Measurement>(group: &mut BenchmarkGroup<'a, M>) {
+ let p = ProjectivePoint::GENERATOR;
+ let m = test_scalar_x();
+ let s = Scalar::from_repr(m.into()).unwrap();
+ group.bench_function("point-scalar mul", |b| b.iter(|| &p * &s));
+}
+
+fn bench_scalar_sub<'a, M: Measurement>(group: &mut BenchmarkGroup<'a, M>) {
+ let x = test_scalar_x();
+ let y = test_scalar_y();
+ group.bench_function("sub", |b| b.iter(|| &x - &y));
+}
+
+fn bench_scalar_add<'a, M: Measurement>(group: &mut BenchmarkGroup<'a, M>) {
+ let x = test_scalar_x();
+ let y = test_scalar_y();
+ group.bench_function("add", |b| b.iter(|| &x + &y));
+}
+
+fn bench_scalar_mul<'a, M: Measurement>(group: &mut BenchmarkGroup<'a, M>) {
+ let x = test_scalar_x();
+ let y = test_scalar_y();
+ group.bench_function("mul", |b| b.iter(|| &x * &y));
+}
+
+fn bench_scalar_negate<'a, M: Measurement>(group: &mut BenchmarkGroup<'a, M>) {
+ let x = test_scalar_x();
+ group.bench_function("negate", |b| b.iter(|| -x));
+}
+
+fn bench_scalar_invert<'a, M: Measurement>(group: &mut BenchmarkGroup<'a, M>) {
+ let x = test_scalar_x();
+ group.bench_function("invert", |b| b.iter(|| x.invert()));
+}
+
+fn bench_point(c: &mut Criterion) {
+ let mut group = c.benchmark_group("point operations");
+ bench_point_mul(&mut group);
+ group.finish();
+}
+
+fn bench_scalar(c: &mut Criterion) {
+ let mut group = c.benchmark_group("scalar operations");
+ bench_scalar_sub(&mut group);
+ bench_scalar_add(&mut group);
+ bench_scalar_mul(&mut group);
+ bench_scalar_negate(&mut group);
+ bench_scalar_invert(&mut group);
+ group.finish();
+}
+
+criterion_group!(benches, bench_point, bench_scalar);
+criterion_main!(benches);