Fix zeroization timeline in multiexp, cargo machete

This commit is contained in:
Luke Parker
2025-08-20 00:35:56 -04:00
parent 38bda1d586
commit 677a2e5749
4 changed files with 4 additions and 5 deletions

1
Cargo.lock generated
View File

@@ -2705,7 +2705,6 @@ dependencies = [
"merlin", "merlin",
"sha2", "sha2",
"std-shims", "std-shims",
"subtle",
"zeroize", "zeroize",
] ]

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "multiexp" name = "multiexp"
version = "0.4.1" version = "0.4.2"
description = "Multiexponentiation algorithms for ff/group" description = "Multiexponentiation algorithms for ff/group"
license = "MIT" license = "MIT"
repository = "https://github.com/serai-dex/serai/tree/develop/crypto/multiexp" repository = "https://github.com/serai-dex/serai/tree/develop/crypto/multiexp"

View File

@@ -25,13 +25,14 @@ pub(crate) fn pippenger<G: Zeroize + Group<Scalar: PrimeFieldBits>>(
for p in 0 .. bits.len() { for p in 0 .. bits.len() {
buckets[usize::from(bits[p][n])] += pairs[p].1; buckets[usize::from(bits[p][n])] += pairs[p].1;
} }
buckets.zeroize();
let mut intermediate_sum = G::identity(); let mut intermediate_sum = G::identity();
for b in (1 .. buckets.len()).rev() { for b in (1 .. buckets.len()).rev() {
intermediate_sum += buckets[b]; intermediate_sum += buckets[b];
res += intermediate_sum; res += intermediate_sum;
} }
buckets.zeroize();
} }
bits.zeroize(); bits.zeroize();

View File

@@ -19,7 +19,6 @@ workspace = true
[dependencies] [dependencies]
std-shims = { path = "../../common/std-shims", version = "0.1.4", default-features = false } std-shims = { path = "../../common/std-shims", version = "0.1.4", default-features = false }
subtle = { version = "^2.4", default-features = false }
zeroize = { version = "^1.5", default-features = false } zeroize = { version = "^1.5", default-features = false }
digest = { version = "0.10", default-features = false, features = ["core-api"] } digest = { version = "0.10", default-features = false, features = ["core-api"] }
@@ -32,7 +31,7 @@ sha2 = { version = "0.10", default-features = false }
blake2 = { version = "0.10", default-features = false } blake2 = { version = "0.10", default-features = false }
[features] [features]
std = ["std-shims/std", "subtle/std", "zeroize/std", "digest/std", "blake2?/std", "merlin?/std"] std = ["std-shims/std", "zeroize/std", "digest/std", "blake2?/std", "merlin?/std"]
recommended = ["blake2"] recommended = ["blake2"]
tests = [] tests = []
default = ["std"] default = ["std"]