diff --git a/crypto/Cargo.toml b/crypto/Cargo.toml index 87560ab..7d5b908 100644 --- a/crypto/Cargo.toml +++ b/crypto/Cargo.toml @@ -11,8 +11,9 @@ keywords = ["miden", "crypto", "hash", "merkle"] edition = "2021" [dependencies] -winterfell = { git = "https://github.com/novifinancial/winterfell"} -winter_utils = { version = "0.4", package = "winter-utils" } +winter_utils = { version = "0.4.1", package = "winter-utils" } +winter_math = { version = "0.4.1", package = "winter-math" } +winter_crypto = { version = "0.4.1", package = "winter-crypto" } [dev-dependencies] proptest = "1.0.0" diff --git a/crypto/src/hash/rpo/digest.rs b/crypto/src/hash/rpo/digest.rs index da32980..f1ae3c2 100644 --- a/crypto/src/hash/rpo/digest.rs +++ b/crypto/src/hash/rpo/digest.rs @@ -1,7 +1,7 @@ use super::DIGEST_SIZE; +use crate::{ByteReader, ByteWriter, Deserializable, DeserializationError, Serializable}; use crate::{Digest, Felt, StarkField, ZERO}; use core::ops::Deref; -use winterfell::{ByteReader, ByteWriter, Deserializable, DeserializationError, Serializable}; // DIGEST TRAIT IMPLEMENTATIONS // ================================================================================================ @@ -22,7 +22,7 @@ impl RpoDigest256 { where I: Iterator, { - digests.map(|d| d.0.iter()).flatten() + digests.flat_map(|d| d.0.iter()) } } @@ -128,9 +128,8 @@ impl<'a> Iterator for RpoDigest256Iter<'a> { mod tests { use super::RpoDigest256; - use crate::Felt; + use crate::{Deserializable, Felt, Serializable, SliceReader}; use rand_utils::rand_value; - use winterfell::{Deserializable, Serializable, SliceReader}; #[test] fn digest_serialization() { diff --git a/crypto/src/hash/rpo/mds_freq.rs b/crypto/src/hash/rpo/mds_freq.rs index b3a6c90..8766bed 100644 --- a/crypto/src/hash/rpo/mds_freq.rs +++ b/crypto/src/hash/rpo/mds_freq.rs @@ -158,14 +158,14 @@ const fn block3(x: [i64; 3], y: [i64; 3]) -> [i64; 3] { mod tests { use super::super::Rpo256; use crate::hash::rpo::MDS; + use crate::{Felt, FieldElement}; use proptest::prelude::*; - use winterfell::math::{fields::f64::BaseElement, FieldElement}; const STATE_WIDTH: usize = 12; #[inline(always)] - fn apply_mds_naive(state: &mut [BaseElement; STATE_WIDTH]) { - let mut result = [BaseElement::ZERO; STATE_WIDTH]; + fn apply_mds_naive(state: &mut [Felt; STATE_WIDTH]) { + let mut result = [Felt::ZERO; STATE_WIDTH]; result.iter_mut().zip(MDS).for_each(|(r, mds_row)| { state.iter().zip(mds_row).for_each(|(&s, m)| { *r += m * s; @@ -178,11 +178,11 @@ mod tests { #[test] fn mds_freq_proptest(a in any::<[u64;STATE_WIDTH]>()) { - let mut v1 = [BaseElement::ZERO;STATE_WIDTH]; + let mut v1 = [Felt::ZERO;STATE_WIDTH]; let mut v2; for i in 0..STATE_WIDTH { - v1[i] = BaseElement::new(a[i]); + v1[i] = Felt::new(a[i]); } v2 = v1.clone(); diff --git a/crypto/src/hash/rpo/mod.rs b/crypto/src/hash/rpo/mod.rs index b9370cb..cb1f290 100644 --- a/crypto/src/hash/rpo/mod.rs +++ b/crypto/src/hash/rpo/mod.rs @@ -153,7 +153,7 @@ impl HashFn for Rpo256 { // initialize the state by copying the digest elements into the rate portion of the state // (8 total elements), and set the capacity elements to 0. let mut state = [ZERO; STATE_WIDTH]; - let it = Self::Digest::digests_as_elements(values.into_iter()); + let it = Self::Digest::digests_as_elements(values.iter()); for (i, v) in it.enumerate() { state[RATE_RANGE.start + i] = *v; } diff --git a/crypto/src/lib.rs b/crypto/src/lib.rs index dfc1ab2..3f7a48e 100644 --- a/crypto/src/lib.rs +++ b/crypto/src/lib.rs @@ -1,10 +1,12 @@ -pub use winter_utils::{ - ByteReader, ByteWriter, Deserializable, DeserializationError, Serializable, -}; -pub use winterfell::crypto::{Digest, ElementHasher, Hasher as HashFn}; -pub use winterfell::math::{ +pub use winter_crypto::{Digest, ElementHasher, Hasher as HashFn}; +pub use winter_math::{ fields::{f64::BaseElement as Felt, QuadExtension}, - ExtensionOf, FieldElement, StarkField, + log2, ExtensionOf, FieldElement, StarkField, +}; +pub use winter_utils::{ + collections::{BTreeMap, Vec}, + uninit_vector, ByteReader, ByteWriter, Deserializable, DeserializationError, Serializable, + SliceReader, }; pub mod hash; diff --git a/crypto/src/merkle/merkle_path_set.rs b/crypto/src/merkle/merkle_path_set.rs index 0741fdc..6ab7dde 100644 --- a/crypto/src/merkle/merkle_path_set.rs +++ b/crypto/src/merkle/merkle_path_set.rs @@ -1,6 +1,5 @@ use super::{MerkleError, Word}; -use crate::{hash::merge, ZERO}; -use winter_utils::collections::{BTreeMap, Vec}; +use crate::{hash::merge, BTreeMap, Vec, ZERO}; // MERKLE PATH SET // ================================================================================================ diff --git a/crypto/src/merkle/merkle_tree.rs b/crypto/src/merkle/merkle_tree.rs index eec6d02..4a2953a 100644 --- a/crypto/src/merkle/merkle_tree.rs +++ b/crypto/src/merkle/merkle_tree.rs @@ -1,11 +1,9 @@ use super::MerkleError; use crate::{ hash::{merge, Digest}, - Felt, FieldElement, Word, + log2, uninit_vector, Felt, FieldElement, Word, }; use core::slice; -use winter_utils::uninit_vector; -use winterfell::math::log2; // MERKLE TREE // ================================================================================================