diff --git a/Cargo.lock b/Cargo.lock index 7b6fa723..e244b6dc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1696,11 +1696,9 @@ dependencies = [ "dleq", "flexible-transcript", "group", - "hex", "multiexp", "rand_core 0.6.4", "schnorr-signatures", - "subtle", "thiserror", "zeroize", ] @@ -3081,15 +3079,6 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" -[[package]] -name = "hkdf" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" -dependencies = [ - "hmac 0.12.1", -] - [[package]] name = "hmac" version = "0.8.1" @@ -4610,7 +4599,6 @@ version = "0.1.2" dependencies = [ "crypto-bigint", "dalek-ff-group", - "digest 0.10.6", "ff", "ff-group-tests", "generic-array 0.14.6", @@ -4680,7 +4668,6 @@ dependencies = [ name = "modular-frost" version = "0.5.0" dependencies = [ - "chacha20 0.9.0", "ciphersuite", "dalek-ff-group", "digest 0.10.6", @@ -4689,7 +4676,6 @@ dependencies = [ "flexible-transcript", "group", "hex", - "hkdf", "minimal-ed448", "multiexp", "rand_chacha 0.3.1", diff --git a/coins/monero/Cargo.toml b/coins/monero/Cargo.toml index e3255099..4093f745 100644 --- a/coins/monero/Cargo.toml +++ b/coins/monero/Cargo.toml @@ -12,7 +12,6 @@ all-features = true rustdoc-args = ["--cfg", "docsrs"] [dependencies] -hex-literal = "0.3" lazy_static = "1" thiserror = "1" @@ -22,12 +21,12 @@ rand = "0.8" rand_distr = "0.4" zeroize = { version = "^1.5", features = ["zeroize_derive"] } -subtle = "2.4" +subtle = "^2.4" sha3 = "0.10" blake2 = { version = "0.10", optional = true } -curve25519-dalek = { version = "3", features = ["std"] } +curve25519-dalek = { version = "^3.2", features = ["std"] } group = { version = "0.12" } dalek-ff-group = { path = "../../crypto/dalek-ff-group", version = "0.1" } @@ -54,6 +53,8 @@ dalek-ff-group = { path = "../../crypto/dalek-ff-group", version = "0.1" } monero-generators = { path = "generators", version = "0.1" } [dev-dependencies] +hex-literal = "0.3" + tokio = { version = "1", features = ["full"] } frost = { package = "modular-frost", path = "../../crypto/frost", version = "0.5", features = ["ed25519", "tests"] } diff --git a/coins/monero/generators/Cargo.toml b/coins/monero/generators/Cargo.toml index 0f626f17..b450e2ea 100644 --- a/coins/monero/generators/Cargo.toml +++ b/coins/monero/generators/Cargo.toml @@ -14,7 +14,7 @@ rustdoc-args = ["--cfg", "docsrs"] [dependencies] lazy_static = "1" -subtle = "2.4" +subtle = "^2.4" sha3 = "0.10" diff --git a/crypto/ciphersuite/Cargo.toml b/crypto/ciphersuite/Cargo.toml index 163e7981..ec7c3d71 100644 --- a/crypto/ciphersuite/Cargo.toml +++ b/crypto/ciphersuite/Cargo.toml @@ -16,7 +16,7 @@ rustdoc-args = ["--cfg", "docsrs"] rand_core = "0.6" zeroize = { version = "^1.5", features = ["zeroize_derive"] } -subtle = "2" +subtle = "^2.4" digest = "0.10" transcript = { package = "flexible-transcript", path = "../transcript", version = "0.2" } diff --git a/crypto/dalek-ff-group/Cargo.toml b/crypto/dalek-ff-group/Cargo.toml index a0b336a2..bea86d89 100644 --- a/crypto/dalek-ff-group/Cargo.toml +++ b/crypto/dalek-ff-group/Cargo.toml @@ -17,15 +17,15 @@ rand_core = "0.6" digest = "0.10" zeroize = { version = "^1.5", features = ["zeroize_derive"] } -subtle = "2.4" +subtle = "^2.4" -ff = "0.12" +ff = { version = "0.12", features = ["bits"] } group = "0.12" crypto-bigint = "0.4" sha2 = "0.9" -curve25519-dalek = "3.2" +curve25519-dalek = "^3.2" [dev-dependencies] ff-group-tests = { path = "../ff-group-tests" } diff --git a/crypto/dalek-ff-group/src/field.rs b/crypto/dalek-ff-group/src/field.rs index 694de783..8c9a927d 100644 --- a/crypto/dalek-ff-group/src/field.rs +++ b/crypto/dalek-ff-group/src/field.rs @@ -9,7 +9,7 @@ use subtle::{ use crypto_bigint::{Integer, Encoding, U256, U512}; -use ff::{Field, PrimeField, FieldBits, PrimeFieldBits}; +use group::ff::{Field, PrimeField, FieldBits, PrimeFieldBits}; use crate::{constant_time, math, from_uint}; diff --git a/crypto/dalek-ff-group/src/lib.rs b/crypto/dalek-ff-group/src/lib.rs index 1d2e7083..9ff5f76a 100644 --- a/crypto/dalek-ff-group/src/lib.rs +++ b/crypto/dalek-ff-group/src/lib.rs @@ -32,8 +32,11 @@ use dalek::{ }, }; -use ff::{Field, PrimeField, FieldBits, PrimeFieldBits}; -use group::{Group, GroupEncoding, prime::PrimeGroup}; +use group::{ + ff::{Field, PrimeField, FieldBits, PrimeFieldBits}, + Group, GroupEncoding, + prime::PrimeGroup, +}; pub mod field; diff --git a/crypto/dkg/Cargo.toml b/crypto/dkg/Cargo.toml index c45f3c00..00fa973a 100644 --- a/crypto/dkg/Cargo.toml +++ b/crypto/dkg/Cargo.toml @@ -18,9 +18,6 @@ thiserror = "1" rand_core = "0.6" zeroize = { version = "^1.5", features = ["zeroize_derive"] } -subtle = "2" - -hex = "0.4" transcript = { package = "flexible-transcript", path = "../transcript", version = "0.2", features = ["recommended"] } chacha20 = { version = "0.9", features = ["zeroize"] } diff --git a/crypto/dkg/src/encryption.rs b/crypto/dkg/src/encryption.rs index e4aab0dd..e7047065 100644 --- a/crypto/dkg/src/encryption.rs +++ b/crypto/dkg/src/encryption.rs @@ -66,7 +66,7 @@ impl EncryptionKeyMessage { buf } - // Used by tests + #[cfg(any(test, feature = "tests"))] pub(crate) fn enc_key(&self) -> C::G { self.enc_key } diff --git a/crypto/dleq/Cargo.toml b/crypto/dleq/Cargo.toml index 71745a11..da114e0f 100644 --- a/crypto/dleq/Cargo.toml +++ b/crypto/dleq/Cargo.toml @@ -12,10 +12,10 @@ all-features = true rustdoc-args = ["--cfg", "docsrs"] [dependencies] -thiserror = "1" +thiserror = { version = "1", optional = true } rand_core = "0.6" -zeroize = { version = "1.3", features = ["zeroize_derive"] } +zeroize = { version = "^1.5", features = ["zeroize_derive"] } digest = "0.10" @@ -39,7 +39,7 @@ transcript = { package = "flexible-transcript", path = "../transcript", features [features] std = [] serialize = ["std"] -experimental = ["std", "multiexp"] +experimental = ["std", "thiserror", "multiexp"] secure_capacity_difference = [] # Only applies to experimental, yet is default to ensure security diff --git a/crypto/ed448/Cargo.toml b/crypto/ed448/Cargo.toml index 78758090..50a98c2f 100644 --- a/crypto/ed448/Cargo.toml +++ b/crypto/ed448/Cargo.toml @@ -16,12 +16,11 @@ rustdoc-args = ["--cfg", "docsrs"] lazy_static = "1" rand_core = "0.6" -digest = "0.10" zeroize = { version = "^1.5", features = ["zeroize_derive"] } -subtle = "2.4" +subtle = "^2.4" -ff = "0.12" +ff = { version = "0.12", features = ["bits"] } group = "0.12" generic-array = "0.14" diff --git a/crypto/ed448/src/backend.rs b/crypto/ed448/src/backend.rs index 484df359..617dfb5e 100644 --- a/crypto/ed448/src/backend.rs +++ b/crypto/ed448/src/backend.rs @@ -11,7 +11,7 @@ macro_rules! field { use generic_array::{typenum::U57, GenericArray}; use crypto_bigint::{Integer, Encoding}; - use ff::{Field, PrimeField, FieldBits, PrimeFieldBits}; + use group::ff::{Field, PrimeField, FieldBits, PrimeFieldBits}; // Needed to publish for some reason? Yet not actually needed #[allow(unused_imports)] diff --git a/crypto/ed448/src/point.rs b/crypto/ed448/src/point.rs index 2cce0a37..25916b95 100644 --- a/crypto/ed448/src/point.rs +++ b/crypto/ed448/src/point.rs @@ -12,8 +12,11 @@ use subtle::{Choice, CtOption, ConstantTimeEq, ConditionallySelectable, Conditio use crypto_bigint::U512; -use ff::{Field, PrimeField, PrimeFieldBits}; -use group::{Group, GroupEncoding, prime::PrimeGroup}; +use group::{ + ff::{Field, PrimeField, PrimeFieldBits}, + Group, GroupEncoding, + prime::PrimeGroup, +}; use crate::{ scalar::{Scalar, MODULUS as SCALAR_MODULUS}, diff --git a/crypto/frost/Cargo.toml b/crypto/frost/Cargo.toml index f03d7a87..2cbfcf89 100644 --- a/crypto/frost/Cargo.toml +++ b/crypto/frost/Cargo.toml @@ -19,24 +19,19 @@ rand_core = "0.6" rand_chacha = "0.3" zeroize = { version = "^1.5", features = ["zeroize_derive"] } -subtle = "2" +subtle = "^2.4" -hex = "0.4" +hex = { version = "0.4", optional = true } digest = "0.10" - -hkdf = "0.12" -chacha20 = { version = "0.9", features = ["zeroize"] } +transcript = { package = "flexible-transcript", path = "../transcript", version = "0.2", features = ["recommended"] } group = "0.12" +ciphersuite = { path = "../ciphersuite", version = "0.1", features = ["std"] } dalek-ff-group = { path = "../dalek-ff-group", version = "^0.1.2", optional = true } minimal-ed448 = { path = "../ed448", version = "^0.1.2", optional = true } -ciphersuite = { path = "../ciphersuite", version = "0.1", features = ["std"] } - -transcript = { package = "flexible-transcript", path = "../transcript", version = "0.2", features = ["recommended"] } - multiexp = { path = "../multiexp", version = "0.2", features = ["batch"] } schnorr = { package = "schnorr-signatures", path = "../schnorr", version = "0.2" } @@ -58,4 +53,4 @@ p256 = ["ciphersuite/p256"] ed448 = ["minimal-ed448", "ciphersuite/ed448"] -tests = ["dkg/tests"] +tests = ["hex", "dkg/tests"] diff --git a/crypto/frost/src/sign.rs b/crypto/frost/src/sign.rs index 089c82c3..a92732eb 100644 --- a/crypto/frost/src/sign.rs +++ b/crypto/frost/src/sign.rs @@ -11,10 +11,7 @@ use zeroize::{Zeroize, Zeroizing}; use transcript::Transcript; -use group::{ - ff::{Field, PrimeField}, - GroupEncoding, -}; +use group::{ff::PrimeField, GroupEncoding}; use multiexp::BatchVerifier; use crate::{ @@ -198,6 +195,8 @@ impl Writable for SignatureShare { #[cfg(any(test, feature = "tests"))] impl SignatureShare { pub(crate) fn invalidate(&mut self) { + use group::ff::Field; + self.0 += C::F::one(); } }