diff --git a/Cargo.lock b/Cargo.lock index 3f95bf34..5ca04615 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2698,13 +2698,13 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flexible-transcript" -version = "0.3.3" +version = "0.3.4" dependencies = [ "blake2", "digest 0.10.7", "merlin", - "rustversion", "sha2", + "std-shims", "subtle", "zeroize", ] diff --git a/crypto/ciphersuite/Cargo.toml b/crypto/ciphersuite/Cargo.toml index e2af42aa..ee2b103c 100644 --- a/crypto/ciphersuite/Cargo.toml +++ b/crypto/ciphersuite/Cargo.toml @@ -7,7 +7,7 @@ repository = "https://github.com/serai-dex/serai/tree/develop/crypto/ciphersuite authors = ["Luke Parker "] keywords = ["ciphersuite", "ff", "group"] edition = "2021" -rust-version = "1.73" +rust-version = "1.66" [package.metadata.docs.rs] all-features = true diff --git a/crypto/dkg/Cargo.toml b/crypto/dkg/Cargo.toml index c9f2642b..4802034d 100644 --- a/crypto/dkg/Cargo.toml +++ b/crypto/dkg/Cargo.toml @@ -7,7 +7,7 @@ repository = "https://github.com/serai-dex/serai/tree/develop/crypto/dkg" authors = ["Luke Parker "] keywords = ["dkg", "multisig", "threshold", "ff", "group"] edition = "2021" -rust-version = "1.73" +rust-version = "1.66" [package.metadata.docs.rs] all-features = true diff --git a/crypto/dkg/dealer/Cargo.toml b/crypto/dkg/dealer/Cargo.toml index 78b37167..0b1b81bf 100644 --- a/crypto/dkg/dealer/Cargo.toml +++ b/crypto/dkg/dealer/Cargo.toml @@ -7,7 +7,7 @@ repository = "https://github.com/serai-dex/serai/tree/develop/crypto/dkg/dealer" authors = ["Luke Parker "] keywords = ["dkg", "multisig", "threshold", "ff", "group"] edition = "2021" -rust-version = "1.73" +rust-version = "1.66" [package.metadata.docs.rs] all-features = true diff --git a/crypto/dkg/recovery/Cargo.toml b/crypto/dkg/recovery/Cargo.toml index 9c85d701..db09125b 100644 --- a/crypto/dkg/recovery/Cargo.toml +++ b/crypto/dkg/recovery/Cargo.toml @@ -7,7 +7,7 @@ repository = "https://github.com/serai-dex/serai/tree/develop/crypto/dkg/recover authors = ["Luke Parker "] keywords = ["dkg", "multisig", "threshold", "ff", "group"] edition = "2021" -rust-version = "1.73" +rust-version = "1.66" [package.metadata.docs.rs] all-features = true diff --git a/crypto/transcript/Cargo.toml b/crypto/transcript/Cargo.toml index 39d84bb9..b15c009e 100644 --- a/crypto/transcript/Cargo.toml +++ b/crypto/transcript/Cargo.toml @@ -1,13 +1,13 @@ [package] name = "flexible-transcript" -version = "0.3.3" +version = "0.3.4" description = "A simple transcript trait definition, along with viable options" license = "MIT" repository = "https://github.com/serai-dex/serai/tree/develop/crypto/transcript" authors = ["Luke Parker "] keywords = ["transcript"] edition = "2021" -rust-version = "1.73" +rust-version = "1.66" [package.metadata.docs.rs] all-features = true @@ -17,7 +17,7 @@ rustdoc-args = ["--cfg", "docsrs"] workspace = true [dependencies] -rustversion = "1" +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 } @@ -32,8 +32,7 @@ sha2 = { version = "0.10", default-features = false } blake2 = { version = "0.10", default-features = false } [features] -std = ["subtle/std", "zeroize/std", "digest/std", "blake2?/std", "merlin?/std"] +std = ["std-shims/std", "subtle/std", "zeroize/std", "digest/std", "blake2?/std", "merlin?/std"] recommended = ["blake2"] -merlin = ["dep:merlin"] tests = [] default = ["std"] diff --git a/crypto/transcript/src/lib.rs b/crypto/transcript/src/lib.rs index 3956f51d..988ab039 100644 --- a/crypto/transcript/src/lib.rs +++ b/crypto/transcript/src/lib.rs @@ -2,6 +2,9 @@ #![doc = include_str!("../README.md")] #![no_std] +#[allow(unused_imports)] +use std_shims::prelude::*; + use zeroize::Zeroize; use digest::{ @@ -159,35 +162,12 @@ where // These writes may be optimized out if they're never read // Attempt to get them marked as read - #[rustversion::since(1.66)] fn mark_read(transcript: &DigestTranscript) { // Just get a challenge from the state let mut challenge = core::hint::black_box(transcript.0.clone().finalize()); challenge.as_mut().zeroize(); } - #[rustversion::before(1.66)] - fn mark_read(transcript: &mut DigestTranscript) { - // Get a challenge - let challenge = transcript.0.clone().finalize(); - - // Attempt to use subtle's, non-exposed black_box function, by creating a Choice from this - // challenge - - let mut read = 0; - for byte in challenge.as_ref() { - read ^= byte; - } - challenge.as_mut().zeroize(); - - // Since this Choice isn't further read, its creation may be optimized out, including its - // internal black_box - // This remains our best attempt - let mut choice = bool::from(subtle::Choice::from(read >> 7)); - read.zeroize(); - choice.zeroize(); - } - mark_read(self) } } diff --git a/crypto/transcript/src/tests.rs b/crypto/transcript/src/tests.rs index ce5a0a1c..2308d5a5 100644 --- a/crypto/transcript/src/tests.rs +++ b/crypto/transcript/src/tests.rs @@ -1,6 +1,8 @@ use crate::Transcript; /// Test the sanity of a transcript. +/// +/// This will panic if sanity checks fail. pub fn test_transcript>() { // Ensure distinct names cause distinct challenges {