Skip to content

Commit dc2d840

Browse files
authored
sm2: add dev macro-based benchmarks (#1594)
Similar to e.g. #1589
1 parent cf754cb commit dc2d840

File tree

7 files changed

+83
-3
lines changed

7 files changed

+83
-3
lines changed

.github/workflows/sm2.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,15 @@ concurrency:
2626
cancel-in-progress: true
2727

2828
jobs:
29+
benches:
30+
runs-on: ubuntu-latest
31+
steps:
32+
- uses: actions/checkout@v6
33+
- uses: dtolnay/rust-toolchain@master
34+
with:
35+
toolchain: 1.85.0 # MSRV
36+
- run: cargo build --all-features --benches
37+
2938
build:
3039
runs-on: ubuntu-latest
3140
strategy:

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bp256/benches/field.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ const FE_B: FieldElement = FieldElement::from_hex_vartime(
1313
"547ef835c3dac4fd97f8461a14611dc9c27745132ded8e545c1d54c72f046997",
1414
);
1515

16-
primefield::bench_field!(bench_ecdsa, "FieldElement", FE_A, FE_B);
17-
criterion_group!(benches, bench_ecdsa);
16+
primefield::bench_field!(bench_field, "FieldElement", FE_A, FE_B);
17+
criterion_group!(benches, bench_field);
1818
criterion_main!(benches);

sm2/Cargo.toml

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,11 @@ sm3 = { version = "0.5.0-rc.3", optional = true, default-features = false }
3232
der = { version = "0.8.0-rc.10", optional = true }
3333

3434
[dev-dependencies]
35+
criterion = "0.7"
36+
elliptic-curve = { version = "0.14.0-rc.20", default-features = false, features = ["dev"] }
37+
getrandom = { version = "0.4.0-rc.0", features = ["sys_rng"] }
3538
hex-literal = "1"
3639
proptest = "1"
37-
getrandom = { version = "0.4.0-rc.0", features = ["sys_rng"] }
3840

3941
[features]
4042
default = ["arithmetic", "dsa", "getrandom", "pke", "pem", "std"]
@@ -50,5 +52,20 @@ pem = ["elliptic-curve/pem", "pkcs8"]
5052
pkcs8 = ["elliptic-curve/pkcs8", "der"]
5153
serde = ["elliptic-curve/serde", "primeorder?/serde", "serdect"]
5254

55+
[[bench]]
56+
name = "field"
57+
harness = false
58+
required-features = ["arithmetic"]
59+
60+
[[bench]]
61+
name = "point"
62+
harness = false
63+
required-features = ["arithmetic"]
64+
65+
[[bench]]
66+
name = "scalar"
67+
harness = false
68+
required-features = ["arithmetic"]
69+
5370
[package.metadata.docs.rs]
5471
all-features = true

sm2/benches/field.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
//! sm2 `FieldElement` benchmarks
2+
3+
use criterion::{criterion_group, criterion_main};
4+
use primeorder::PrimeCurveParams;
5+
use sm2::Sm2;
6+
7+
type FieldElement = <Sm2 as PrimeCurveParams>::FieldElement;
8+
9+
const FE_A: FieldElement = FieldElement::from_hex_vartime(
10+
"32C4AE2C1F1981195F9904466A39C9948FE30BBFF2660BE1715A4589334C74C7",
11+
);
12+
const FE_B: FieldElement = FieldElement::from_hex_vartime(
13+
"BC3736A2F4F6779C59BDCEE36B692153D0A9877CC62A474002DF32E52139F0A0",
14+
);
15+
16+
primefield::bench_field!(bench_field, "FieldElement", FE_A, FE_B);
17+
criterion_group!(benches, bench_field);
18+
criterion_main!(benches);

sm2/benches/point.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
//! sm2r1 `ProjectivePoint` benchmarks
2+
3+
use criterion::{criterion_group, criterion_main};
4+
use sm2::{ProjectivePoint, Scalar};
5+
6+
const SCALAR_A: Scalar =
7+
Scalar::from_hex_vartime("9bb0d8b72602b70dd5cfed99607a2e2c021dd0fe3b3af842df02c06f8c1a0f4e");
8+
const SCALAR_B: Scalar =
9+
Scalar::from_hex_vartime("6494152e2b6c34768296d2ea0e984f89a77f0d7399b70f2e29789128423a9bea");
10+
const SCALAR_C: Scalar =
11+
Scalar::from_hex_vartime("a316f6a92d2f8359218cf9f68900d9f791ad2ad77aee07686adeb5ec7c7b8cb3");
12+
13+
elliptic_curve::bench_projective!(
14+
bench_projective,
15+
"ProjectivePoint",
16+
ProjectivePoint::GENERATOR * SCALAR_A,
17+
ProjectivePoint::GENERATOR * SCALAR_B,
18+
SCALAR_C
19+
);
20+
21+
criterion_group!(benches, bench_projective);
22+
criterion_main!(benches);

sm2/benches/scalar.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
//! sm2 `Scalar` benchmarks
2+
3+
use criterion::{criterion_group, criterion_main};
4+
use sm2::Scalar;
5+
6+
const SCALAR_A: Scalar =
7+
Scalar::from_hex_vartime("9bb0d8b72602b70dd5cfed99607a2e2c021dd0fe3b3af842df02c06f8c1a0f4e");
8+
const SCALAR_B: Scalar =
9+
Scalar::from_hex_vartime("6494152e2b6c34768296d2ea0e984f89a77f0d7399b70f2e29789128423a9bea");
10+
11+
primefield::bench_field!(bench_scalar, "Scalar", SCALAR_A, SCALAR_B);
12+
criterion_group!(benches, bench_scalar);
13+
criterion_main!(benches);

0 commit comments

Comments
 (0)