From 55d37c8a890e08e6dd910f79a63ab323a1786aa9 Mon Sep 17 00:00:00 2001 From: curiecrypt Date: Thu, 20 Nov 2025 19:31:35 +0300 Subject: [PATCH 1/3] Modules created and reorganized --- mithril-stm/src/lib.rs | 73 ++----------------- .../merkle_tree/commitment.rs | 13 ++-- .../merkle_tree/leaf.rs | 6 +- .../merkle_tree/mod.rs | 0 .../merkle_tree/path.rs | 7 +- .../merkle_tree/tree.rs | 7 +- mithril-stm/src/membership_commitment/mod.rs | 3 + .../proof => proof_system}/concatenation.rs | 10 +-- .../proof => proof_system}/mod.rs | 0 .../aggregate_signature/aggregate_key.rs | 2 +- .../aggregate_signature/basic_verifier.rs | 9 +-- .../aggregate_signature/clerk.rs | 2 +- .../{ => protocol}/aggregate_signature/mod.rs | 6 +- .../aggregate_signature/signature.rs | 12 +-- .../src/{ => protocol}/eligibility_check.rs | 0 mithril-stm/src/{ => protocol}/error.rs | 7 +- .../src/{ => protocol}/key_registration.rs | 9 +-- mithril-stm/src/protocol/mod.rs | 66 +++++++++++++++++ mithril-stm/src/{ => protocol}/parameters.rs | 2 +- .../{ => protocol}/participant/initializer.rs | 7 +- .../src/{ => protocol}/participant/mod.rs | 0 .../src/{ => protocol}/participant/signer.rs | 6 +- .../{ => protocol}/single_signature/mod.rs | 0 .../single_signature/signature.rs | 6 +- .../signature_registered_party.rs | 6 +- .../bls_multi_signature/helper.rs | 4 +- .../bls_multi_signature/mod.rs | 6 +- .../proof_of_possession.rs | 7 +- .../bls_multi_signature/signature.rs | 10 +-- .../bls_multi_signature/signing_key.rs | 5 +- .../bls_multi_signature/verification_key.rs | 5 +- mithril-stm/src/signature_scheme/mod.rs | 4 + .../signature_scheme/schnorr_signature/mod.rs | 1 + 33 files changed, 148 insertions(+), 153 deletions(-) rename mithril-stm/src/{ => membership_commitment}/merkle_tree/commitment.rs (98%) rename mithril-stm/src/{ => membership_commitment}/merkle_tree/leaf.rs (94%) rename mithril-stm/src/{ => membership_commitment}/merkle_tree/mod.rs (100%) rename mithril-stm/src/{ => membership_commitment}/merkle_tree/path.rs (98%) rename mithril-stm/src/{ => membership_commitment}/merkle_tree/tree.rs (99%) create mode 100644 mithril-stm/src/membership_commitment/mod.rs rename mithril-stm/src/{aggregate_signature/proof => proof_system}/concatenation.rs (97%) rename mithril-stm/src/{aggregate_signature/proof => proof_system}/mod.rs (100%) rename mithril-stm/src/{ => protocol}/aggregate_signature/aggregate_key.rs (95%) rename mithril-stm/src/{ => protocol}/aggregate_signature/basic_verifier.rs (97%) rename mithril-stm/src/{ => protocol}/aggregate_signature/clerk.rs (99%) rename mithril-stm/src/{ => protocol}/aggregate_signature/mod.rs (99%) rename mithril-stm/src/{ => protocol}/aggregate_signature/signature.rs (97%) rename mithril-stm/src/{ => protocol}/eligibility_check.rs (100%) rename mithril-stm/src/{ => protocol}/error.rs (97%) rename mithril-stm/src/{ => protocol}/key_registration.rs (95%) create mode 100644 mithril-stm/src/protocol/mod.rs rename mithril-stm/src/{ => protocol}/parameters.rs (98%) rename mithril-stm/src/{ => protocol}/participant/initializer.rs (98%) rename mithril-stm/src/{ => protocol}/participant/mod.rs (100%) rename mithril-stm/src/{ => protocol}/participant/signer.rs (96%) rename mithril-stm/src/{ => protocol}/single_signature/mod.rs (100%) rename mithril-stm/src/{ => protocol}/single_signature/signature.rs (97%) rename mithril-stm/src/{ => protocol}/single_signature/signature_registered_party.rs (95%) rename mithril-stm/src/{ => signature_scheme}/bls_multi_signature/helper.rs (96%) rename mithril-stm/src/{ => signature_scheme}/bls_multi_signature/mod.rs (98%) rename mithril-stm/src/{ => signature_scheme}/bls_multi_signature/proof_of_possession.rs (95%) rename mithril-stm/src/{ => signature_scheme}/bls_multi_signature/signature.rs (97%) rename mithril-stm/src/{ => signature_scheme}/bls_multi_signature/signing_key.rs (94%) rename mithril-stm/src/{ => signature_scheme}/bls_multi_signature/verification_key.rs (98%) create mode 100644 mithril-stm/src/signature_scheme/mod.rs create mode 100644 mithril-stm/src/signature_scheme/schnorr_signature/mod.rs diff --git a/mithril-stm/src/lib.rs b/mithril-stm/src/lib.rs index 940a2a9ec7b..2b29356a994 100644 --- a/mithril-stm/src/lib.rs +++ b/mithril-stm/src/lib.rs @@ -111,31 +111,18 @@ //! # } //! ``` -mod aggregate_signature; -mod bls_multi_signature; -mod eligibility_check; -mod error; -mod key_registration; -mod merkle_tree; -mod parameters; -mod participant; +mod membership_commitment; #[cfg(feature = "future_snark")] mod schnorr_signature; -mod single_signature; -pub use aggregate_signature::{ - AggregateSignature, AggregateSignatureType, AggregateVerificationKey, BasicVerifier, Clerk, -}; -pub use error::{ - AggregateSignatureError, AggregationError, MultiSignatureError, RegisterError, SignatureError, -}; -pub use key_registration::{ClosedKeyRegistration, KeyRegistration}; -pub use parameters::Parameters; -pub use participant::{Initializer, Signer, VerificationKey, VerificationKeyProofOfPossession}; -pub use single_signature::{SingleSignature, SingleSignatureWithRegisteredParty}; +mod proof_system; +mod protocol; +mod signature_scheme; + +pub use protocol::*; #[cfg(feature = "benchmark-internals")] -pub use bls_multi_signature::{ +pub use signature_scheme::{ BlsProofOfPossession, BlsSignature, BlsSigningKey, BlsVerificationKey, BlsVerificationKeyProofOfPossession, }; @@ -155,49 +142,3 @@ pub type StmError = anyhow::Error; /// Mithril-stm result type pub type StmResult = anyhow::Result; - -// Aliases -#[deprecated(since = "0.5.0", note = "Use `AggregateSignature` instead")] -pub use aggregate_signature::AggregateSignature as StmAggrSig; - -#[deprecated(since = "0.5.0", note = "Use `AggregateVerificationKey` instead")] -pub use aggregate_signature::AggregateVerificationKey as StmAggrVerificationKey; - -#[deprecated(since = "0.5.0", note = "Use `Clerk` instead")] -pub use aggregate_signature::Clerk as StmClerk; - -#[deprecated(since = "0.5.0", note = "Use `ClosedKeyRegistration` instead")] -pub use key_registration::ClosedKeyRegistration as ClosedKeyReg; - -#[deprecated(since = "0.5.0", note = "Use `KeyRegistration` instead")] -pub use key_registration::KeyRegistration as KeyReg; - -#[deprecated(since = "0.5.0", note = "Use `Parameters` instead")] -pub use parameters::Parameters as StmParameters; - -#[deprecated(since = "0.5.0", note = "Use `Initializer` instead")] -pub use participant::Initializer as StmInitializer; - -#[deprecated(since = "0.5.0", note = "Use `Signer` instead")] -pub use participant::Signer as StmSigner; - -#[deprecated(since = "0.5.0", note = "Use `VerificationKey` instead")] -pub use participant::VerificationKey as StmVerificationKey; - -#[deprecated( - since = "0.5.0", - note = "Use `VerificationKeyProofOfPossession` instead" -)] -pub use participant::VerificationKeyProofOfPossession as StmVerificationKeyPoP; - -#[deprecated(since = "0.5.0", note = "Use `SingleSignature` instead")] -pub use single_signature::SingleSignature as StmSig; - -#[deprecated(since = "0.5.0", note = "Use `BasicVerifier` instead")] -pub use aggregate_signature::BasicVerifier as CoreVerifier; - -#[deprecated( - since = "0.5.0", - note = "Use `SingleSignatureWithRegisteredParty` instead" -)] -pub use single_signature::SingleSignatureWithRegisteredParty as StmSigRegParty; diff --git a/mithril-stm/src/merkle_tree/commitment.rs b/mithril-stm/src/membership_commitment/merkle_tree/commitment.rs similarity index 98% rename from mithril-stm/src/merkle_tree/commitment.rs rename to mithril-stm/src/membership_commitment/merkle_tree/commitment.rs index 131a02c8ebb..e5289d42182 100644 --- a/mithril-stm/src/merkle_tree/commitment.rs +++ b/mithril-stm/src/membership_commitment/merkle_tree/commitment.rs @@ -1,12 +1,13 @@ -use std::marker::PhantomData; - +use anyhow::{Context, anyhow}; use blake2::digest::{Digest, FixedOutput}; use serde::{Deserialize, Serialize}; +use std::marker::PhantomData; + +use crate::membership_commitment::merkle_tree::{ + MerkleBatchPath, MerklePath, MerkleTreeLeaf, parent, sibling, +}; +use crate::{MerkleTreeError, StmResult}; -use crate::StmResult; -use crate::error::MerkleTreeError; -use crate::merkle_tree::{MerkleBatchPath, MerklePath, MerkleTreeLeaf, parent, sibling}; -use anyhow::{Context, anyhow}; /// `MerkleTree` commitment. /// This structure differs from `MerkleTree` in that it does not contain all elements, which are not always necessary. /// Instead, it only contains the root of the tree. diff --git a/mithril-stm/src/merkle_tree/leaf.rs b/mithril-stm/src/membership_commitment/merkle_tree/leaf.rs similarity index 94% rename from mithril-stm/src/merkle_tree/leaf.rs rename to mithril-stm/src/membership_commitment/merkle_tree/leaf.rs index de01655d850..a84e2faca0b 100644 --- a/mithril-stm/src/merkle_tree/leaf.rs +++ b/mithril-stm/src/membership_commitment/merkle_tree/leaf.rs @@ -2,10 +2,10 @@ use std::cmp::Ordering; use serde::{Deserialize, Serialize}; -use crate::StmResult; -use crate::bls_multi_signature::BlsVerificationKey; -use crate::error::MerkleTreeError; +use crate::signature_scheme::BlsVerificationKey; +use crate::{MerkleTreeError, StmResult}; use crate::{Stake, VerificationKey}; + /// The values that are committed in the Merkle Tree. /// Namely, a verified `VerificationKey` and its corresponding stake. #[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize, Hash)] diff --git a/mithril-stm/src/merkle_tree/mod.rs b/mithril-stm/src/membership_commitment/merkle_tree/mod.rs similarity index 100% rename from mithril-stm/src/merkle_tree/mod.rs rename to mithril-stm/src/membership_commitment/merkle_tree/mod.rs diff --git a/mithril-stm/src/merkle_tree/path.rs b/mithril-stm/src/membership_commitment/merkle_tree/path.rs similarity index 98% rename from mithril-stm/src/merkle_tree/path.rs rename to mithril-stm/src/membership_commitment/merkle_tree/path.rs index 5ba011bffa0..80aaa9c0c89 100644 --- a/mithril-stm/src/merkle_tree/path.rs +++ b/mithril-stm/src/membership_commitment/merkle_tree/path.rs @@ -1,9 +1,8 @@ -use std::marker::PhantomData; - -use crate::StmResult; -use crate::error::MerkleTreeError; use blake2::digest::{Digest, FixedOutput}; use serde::{Deserialize, Serialize}; +use std::marker::PhantomData; + +use crate::{MerkleTreeError, StmResult}; /// Path of hashes from root to leaf in a Merkle Tree. /// Contains all hashes on the path, and the index of the leaf. diff --git a/mithril-stm/src/merkle_tree/tree.rs b/mithril-stm/src/membership_commitment/merkle_tree/tree.rs similarity index 99% rename from mithril-stm/src/merkle_tree/tree.rs rename to mithril-stm/src/membership_commitment/merkle_tree/tree.rs index 68c947f1504..0afacb14384 100644 --- a/mithril-stm/src/merkle_tree/tree.rs +++ b/mithril-stm/src/membership_commitment/merkle_tree/tree.rs @@ -3,12 +3,11 @@ use std::marker::PhantomData; use blake2::digest::{Digest, FixedOutput}; use serde::{Deserialize, Serialize}; -use crate::StmResult; -use crate::error::MerkleTreeError; -use crate::merkle_tree::{ +use crate::membership_commitment::merkle_tree::{ MerkleBatchPath, MerklePath, MerkleTreeBatchCommitment, MerkleTreeCommitment, MerkleTreeLeaf, left_child, parent, right_child, sibling, }; +use crate::{MerkleTreeError, StmResult}; /// Tree of hashes, providing a commitment of data and its ordering. #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] @@ -270,7 +269,7 @@ impl MerkleTree { #[cfg(test)] mod tests { use super::*; - use crate::bls_multi_signature::BlsVerificationKey; + use crate::signature_scheme::BlsVerificationKey; use blake2::{Blake2b, digest::consts::U32}; use proptest::collection::vec; use proptest::prelude::*; diff --git a/mithril-stm/src/membership_commitment/mod.rs b/mithril-stm/src/membership_commitment/mod.rs new file mode 100644 index 00000000000..3f2e7669206 --- /dev/null +++ b/mithril-stm/src/membership_commitment/mod.rs @@ -0,0 +1,3 @@ +mod merkle_tree; + +pub use merkle_tree::*; diff --git a/mithril-stm/src/aggregate_signature/proof/concatenation.rs b/mithril-stm/src/proof_system/concatenation.rs similarity index 97% rename from mithril-stm/src/aggregate_signature/proof/concatenation.rs rename to mithril-stm/src/proof_system/concatenation.rs index f619b359efe..83b3243d4df 100644 --- a/mithril-stm/src/aggregate_signature/proof/concatenation.rs +++ b/mithril-stm/src/proof_system/concatenation.rs @@ -3,13 +3,11 @@ use blake2::digest::{Digest, FixedOutput}; use serde::{Deserialize, Serialize}; -use crate::aggregate_signature::clerk::Clerk; -use crate::bls_multi_signature::{BlsSignature, BlsVerificationKey}; -use crate::key_registration::RegisteredParty; -use crate::merkle_tree::MerkleBatchPath; +use crate::membership_commitment::MerkleBatchPath; +use crate::signature_scheme::{BlsSignature, BlsVerificationKey}; use crate::{ - AggregateSignatureError, AggregateVerificationKey, BasicVerifier, Parameters, SingleSignature, - SingleSignatureWithRegisteredParty, StmResult, + AggregateSignatureError, AggregateVerificationKey, BasicVerifier, Clerk, Parameters, + RegisteredParty, SingleSignature, SingleSignatureWithRegisteredParty, StmResult, }; /// `ConcatenationProof` uses the "concatenation" proving system (as described in Section 4.3 of the original paper.) diff --git a/mithril-stm/src/aggregate_signature/proof/mod.rs b/mithril-stm/src/proof_system/mod.rs similarity index 100% rename from mithril-stm/src/aggregate_signature/proof/mod.rs rename to mithril-stm/src/proof_system/mod.rs diff --git a/mithril-stm/src/aggregate_signature/aggregate_key.rs b/mithril-stm/src/protocol/aggregate_signature/aggregate_key.rs similarity index 95% rename from mithril-stm/src/aggregate_signature/aggregate_key.rs rename to mithril-stm/src/protocol/aggregate_signature/aggregate_key.rs index e7be9328cf6..215a8e9d9dd 100644 --- a/mithril-stm/src/aggregate_signature/aggregate_key.rs +++ b/mithril-stm/src/protocol/aggregate_signature/aggregate_key.rs @@ -1,7 +1,7 @@ use blake2::digest::{Digest, FixedOutput}; use serde::{Deserialize, Serialize}; -use crate::merkle_tree::{MerkleBatchPath, MerkleTreeBatchCommitment}; +use crate::membership_commitment::{MerkleBatchPath, MerkleTreeBatchCommitment}; use crate::{ClosedKeyRegistration, Stake}; /// Stm aggregate key (batch compatible), which contains the merkle tree commitment and the total stake of the system. diff --git a/mithril-stm/src/aggregate_signature/basic_verifier.rs b/mithril-stm/src/protocol/aggregate_signature/basic_verifier.rs similarity index 97% rename from mithril-stm/src/aggregate_signature/basic_verifier.rs rename to mithril-stm/src/protocol/aggregate_signature/basic_verifier.rs index cad572f0176..88168594ad7 100644 --- a/mithril-stm/src/aggregate_signature/basic_verifier.rs +++ b/mithril-stm/src/protocol/aggregate_signature/basic_verifier.rs @@ -1,12 +1,11 @@ use anyhow::{Context, anyhow}; use std::collections::{BTreeMap, HashMap, HashSet}; -use crate::bls_multi_signature::{BlsSignature, BlsVerificationKey}; -use crate::key_registration::RegisteredParty; -use crate::merkle_tree::MerkleTreeLeaf; +use crate::membership_commitment::MerkleTreeLeaf; +use crate::signature_scheme::{BlsSignature, BlsVerificationKey}; use crate::{ - AggregationError, Index, Parameters, SingleSignature, SingleSignatureWithRegisteredParty, - Stake, StmResult, + AggregationError, Index, Parameters, RegisteredParty, SingleSignature, + SingleSignatureWithRegisteredParty, Stake, StmResult, }; /// Full node verifier including the list of eligible signers and the total stake of the system. diff --git a/mithril-stm/src/aggregate_signature/clerk.rs b/mithril-stm/src/protocol/aggregate_signature/clerk.rs similarity index 99% rename from mithril-stm/src/aggregate_signature/clerk.rs rename to mithril-stm/src/protocol/aggregate_signature/clerk.rs index c540305c4b1..fddbe9feb01 100644 --- a/mithril-stm/src/aggregate_signature/clerk.rs +++ b/mithril-stm/src/protocol/aggregate_signature/clerk.rs @@ -1,7 +1,7 @@ use crate::{ AggregateSignature, AggregateSignatureType, AggregateVerificationKey, ClosedKeyRegistration, Index, Parameters, Signer, SingleSignature, Stake, StmResult, VerificationKey, - aggregate_signature::ConcatenationProof, + proof_system::ConcatenationProof, }; use anyhow::Context; use blake2::digest::{Digest, FixedOutput}; diff --git a/mithril-stm/src/aggregate_signature/mod.rs b/mithril-stm/src/protocol/aggregate_signature/mod.rs similarity index 99% rename from mithril-stm/src/aggregate_signature/mod.rs rename to mithril-stm/src/protocol/aggregate_signature/mod.rs index 65b009189ee..21a80cc9546 100644 --- a/mithril-stm/src/aggregate_signature/mod.rs +++ b/mithril-stm/src/protocol/aggregate_signature/mod.rs @@ -1,13 +1,11 @@ mod aggregate_key; mod basic_verifier; mod clerk; -mod proof; mod signature; pub use aggregate_key::*; pub use basic_verifier::*; pub use clerk::*; -pub use proof::*; pub use signature::*; #[cfg(test)] @@ -26,9 +24,9 @@ mod tests { use crate::{ AggregateSignature, AggregateSignatureType, AggregationError, BasicVerifier, Clerk, Initializer, KeyRegistration, Parameters, Signer, SingleSignature, - SingleSignatureWithRegisteredParty, Stake, bls_multi_signature::BlsVerificationKey, + SingleSignatureWithRegisteredParty, Stake, StmResult, + membership_commitment::MerkleBatchPath, signature_scheme::BlsVerificationKey, }; - use crate::{StmResult, merkle_tree::MerkleBatchPath}; type Sig = AggregateSignature; type D = Blake2b; diff --git a/mithril-stm/src/aggregate_signature/signature.rs b/mithril-stm/src/protocol/aggregate_signature/signature.rs similarity index 97% rename from mithril-stm/src/aggregate_signature/signature.rs rename to mithril-stm/src/protocol/aggregate_signature/signature.rs index dc8c6fb3a77..03fdc4cf40d 100644 --- a/mithril-stm/src/aggregate_signature/signature.rs +++ b/mithril-stm/src/protocol/aggregate_signature/signature.rs @@ -6,11 +6,11 @@ use anyhow::anyhow; use blake2::digest::{Digest, FixedOutput}; use serde::{Deserialize, Serialize}; -use crate::error::AggregateSignatureError; -use crate::merkle_tree::MerkleBatchPath; -use crate::{AggregateVerificationKey, Parameters, StmResult}; - -use super::ConcatenationProof; +use crate::membership_commitment::MerkleBatchPath; +use crate::{ + AggregateSignatureError, AggregateVerificationKey, Parameters, StmResult, + proof_system::ConcatenationProof, +}; /// The type of STM aggregate signature. #[derive(Default, Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)] @@ -211,7 +211,7 @@ mod tests { use rand_chacha::ChaCha20Rng; use rand_core::SeedableRng; - use crate::bls_multi_signature::{BlsSigningKey, BlsVerificationKeyProofOfPossession}; + use crate::signature_scheme::{BlsSigningKey, BlsVerificationKeyProofOfPossession}; use crate::{ AggregateSignature, AggregateSignatureType, Clerk, ClosedKeyRegistration, KeyRegistration, Parameters, Signer, diff --git a/mithril-stm/src/eligibility_check.rs b/mithril-stm/src/protocol/eligibility_check.rs similarity index 100% rename from mithril-stm/src/eligibility_check.rs rename to mithril-stm/src/protocol/eligibility_check.rs diff --git a/mithril-stm/src/error.rs b/mithril-stm/src/protocol/error.rs similarity index 97% rename from mithril-stm/src/error.rs rename to mithril-stm/src/protocol/error.rs index 800777d2514..d872954ecd9 100644 --- a/mithril-stm/src/error.rs +++ b/mithril-stm/src/protocol/error.rs @@ -2,11 +2,10 @@ use anyhow::anyhow; use blst::BLST_ERROR; -use crate::StmResult; -use crate::aggregate_signature::AggregateSignatureType; -use crate::bls_multi_signature::{ +use crate::signature_scheme::{ BlsSignature, BlsVerificationKey, BlsVerificationKeyProofOfPossession, }; +use crate::{AggregateSignatureType, StmResult}; /// Error types for multi signatures. #[derive(Debug, thiserror::Error, Eq, PartialEq)] @@ -123,7 +122,7 @@ pub enum RegisterError { UnregisteredInitializer, } -pub(crate) fn blst_error_to_stm_error( +pub fn blst_error_to_stm_error( e: BLST_ERROR, sig: Option, key: Option, diff --git a/mithril-stm/src/key_registration.rs b/mithril-stm/src/protocol/key_registration.rs similarity index 95% rename from mithril-stm/src/key_registration.rs rename to mithril-stm/src/protocol/key_registration.rs index 319325ba463..3a9f59942b4 100644 --- a/mithril-stm/src/key_registration.rs +++ b/mithril-stm/src/protocol/key_registration.rs @@ -7,10 +7,9 @@ use std::{ use anyhow::anyhow; use blake2::digest::{Digest, FixedOutput}; -use crate::bls_multi_signature::{BlsVerificationKey, BlsVerificationKeyProofOfPossession}; -use crate::error::RegisterError; -use crate::merkle_tree::{MerkleTree, MerkleTreeLeaf}; -use crate::{Stake, StmResult}; +use crate::membership_commitment::{MerkleTree, MerkleTreeLeaf}; +use crate::signature_scheme::{BlsVerificationKey, BlsVerificationKeyProofOfPossession}; +use crate::{RegisterError, Stake, StmResult}; /// Stores a registered party with its public key and the associated stake. pub type RegisteredParty = MerkleTreeLeaf; @@ -94,7 +93,7 @@ mod tests { use rand_chacha::ChaCha20Rng; use rand_core::SeedableRng; - use crate::bls_multi_signature::BlsSigningKey; + use crate::signature_scheme::BlsSigningKey; use super::*; diff --git a/mithril-stm/src/protocol/mod.rs b/mithril-stm/src/protocol/mod.rs new file mode 100644 index 00000000000..d073ceef031 --- /dev/null +++ b/mithril-stm/src/protocol/mod.rs @@ -0,0 +1,66 @@ +mod aggregate_signature; +mod eligibility_check; +mod error; +mod key_registration; +mod parameters; +mod participant; +mod single_signature; + +pub use aggregate_signature::{ + AggregateSignature, AggregateSignatureType, AggregateVerificationKey, BasicVerifier, Clerk, +}; +pub(crate) use eligibility_check::is_lottery_won; +pub use error::{ + AggregateSignatureError, AggregationError, MerkleTreeError, MultiSignatureError, RegisterError, + SignatureError, blst_error_to_stm_error, +}; +pub use key_registration::{ClosedKeyRegistration, KeyRegistration, RegisteredParty}; +pub use parameters::Parameters; +pub use participant::{Initializer, Signer, VerificationKey, VerificationKeyProofOfPossession}; +pub use single_signature::{SingleSignature, SingleSignatureWithRegisteredParty}; + +// Aliases +#[deprecated(since = "0.5.0", note = "Use `AggregateSignature` instead")] +pub use aggregate_signature::AggregateSignature as StmAggrSig; + +#[deprecated(since = "0.5.0", note = "Use `AggregateVerificationKey` instead")] +pub use aggregate_signature::AggregateVerificationKey as StmAggrVerificationKey; + +#[deprecated(since = "0.5.0", note = "Use `Clerk` instead")] +pub use aggregate_signature::Clerk as StmClerk; + +#[deprecated(since = "0.5.0", note = "Use `BasicVerifier` instead")] +pub use aggregate_signature::BasicVerifier as CoreVerifier; + +#[deprecated(since = "0.5.0", note = "Use `Parameters` instead")] +pub use parameters::Parameters as StmParameters; + +#[deprecated(since = "0.5.0", note = "Use `ClosedKeyRegistration` instead")] +pub use key_registration::ClosedKeyRegistration as ClosedKeyReg; + +#[deprecated(since = "0.5.0", note = "Use `KeyRegistration` instead")] +pub use key_registration::KeyRegistration as KeyReg; + +#[deprecated(since = "0.5.0", note = "Use `SingleSignature` instead")] +pub use single_signature::SingleSignature as StmSig; + +#[deprecated( + since = "0.5.0", + note = "Use `SingleSignatureWithRegisteredParty` instead" +)] +pub use single_signature::SingleSignatureWithRegisteredParty as StmSigRegParty; + +#[deprecated(since = "0.5.0", note = "Use `Initializer` instead")] +pub use participant::Initializer as StmInitializer; + +#[deprecated(since = "0.5.0", note = "Use `Signer` instead")] +pub use participant::Signer as StmSigner; + +#[deprecated(since = "0.5.0", note = "Use `VerificationKey` instead")] +pub use participant::VerificationKey as StmVerificationKey; + +#[deprecated( + since = "0.5.0", + note = "Use `VerificationKeyProofOfPossession` instead" +)] +pub use participant::VerificationKeyProofOfPossession as StmVerificationKeyPoP; diff --git a/mithril-stm/src/parameters.rs b/mithril-stm/src/protocol/parameters.rs similarity index 98% rename from mithril-stm/src/parameters.rs rename to mithril-stm/src/protocol/parameters.rs index dff838d8f6c..ef392df0ecf 100644 --- a/mithril-stm/src/parameters.rs +++ b/mithril-stm/src/protocol/parameters.rs @@ -1,6 +1,6 @@ use serde::{Deserialize, Serialize}; -use crate::error::RegisterError; +use crate::RegisterError; /// Used to set protocol parameters. // todo: this is the criteria to consider parameters valid: diff --git a/mithril-stm/src/participant/initializer.rs b/mithril-stm/src/protocol/participant/initializer.rs similarity index 98% rename from mithril-stm/src/participant/initializer.rs rename to mithril-stm/src/protocol/participant/initializer.rs index 5471e25adfb..7a2050a1cb5 100644 --- a/mithril-stm/src/participant/initializer.rs +++ b/mithril-stm/src/protocol/participant/initializer.rs @@ -3,9 +3,10 @@ use digest::FixedOutput; use rand_core::{CryptoRng, RngCore}; use serde::{Deserialize, Serialize}; -use crate::bls_multi_signature::{BlsSigningKey, BlsVerificationKeyProofOfPossession}; -use crate::{Parameters, RegisterError, Signer, Stake}; -use crate::{StmResult, key_registration::*}; +use crate::signature_scheme::{BlsSigningKey, BlsVerificationKeyProofOfPossession}; +use crate::{ + ClosedKeyRegistration, Parameters, RegisterError, RegisteredParty, Signer, Stake, StmResult, +}; use anyhow::anyhow; /// Wrapper of the MultiSignature Verification key with proof of possession diff --git a/mithril-stm/src/participant/mod.rs b/mithril-stm/src/protocol/participant/mod.rs similarity index 100% rename from mithril-stm/src/participant/mod.rs rename to mithril-stm/src/protocol/participant/mod.rs diff --git a/mithril-stm/src/participant/signer.rs b/mithril-stm/src/protocol/participant/signer.rs similarity index 96% rename from mithril-stm/src/participant/signer.rs rename to mithril-stm/src/protocol/participant/signer.rs index da9a06f8d60..71b71c8b244 100644 --- a/mithril-stm/src/participant/signer.rs +++ b/mithril-stm/src/protocol/participant/signer.rs @@ -1,9 +1,7 @@ use blake2::digest::{Digest, FixedOutput}; -use crate::bls_multi_signature::{BlsSignature, BlsSigningKey, BlsVerificationKey}; -use crate::eligibility_check::is_lottery_won; -use crate::key_registration::ClosedKeyRegistration; -use crate::{Parameters, SingleSignature, Stake}; +use crate::signature_scheme::{BlsSignature, BlsSigningKey, BlsVerificationKey}; +use crate::{ClosedKeyRegistration, Parameters, SingleSignature, Stake, is_lottery_won}; /// Wrapper of the MultiSignature Verification key pub type VerificationKey = BlsVerificationKey; diff --git a/mithril-stm/src/single_signature/mod.rs b/mithril-stm/src/protocol/single_signature/mod.rs similarity index 100% rename from mithril-stm/src/single_signature/mod.rs rename to mithril-stm/src/protocol/single_signature/mod.rs diff --git a/mithril-stm/src/single_signature/signature.rs b/mithril-stm/src/protocol/single_signature/signature.rs similarity index 97% rename from mithril-stm/src/single_signature/signature.rs rename to mithril-stm/src/protocol/single_signature/signature.rs index e55d6cab48d..d4b1b1835ee 100644 --- a/mithril-stm/src/single_signature/signature.rs +++ b/mithril-stm/src/protocol/single_signature/signature.rs @@ -6,8 +6,8 @@ use std::{ use blake2::digest::{Digest, FixedOutput}; use serde::{Deserialize, Serialize}; -use crate::bls_multi_signature::BlsSignature; -use crate::eligibility_check::is_lottery_won; +use crate::protocol::eligibility_check::is_lottery_won; +use crate::signature_scheme::BlsSignature; use crate::{ AggregateVerificationKey, Index, Parameters, SignatureError, Stake, StmResult, VerificationKey, }; @@ -207,7 +207,7 @@ mod tests { use rand_chacha::ChaCha20Rng; use rand_core::SeedableRng; - use crate::bls_multi_signature::{BlsSigningKey, BlsVerificationKeyProofOfPossession}; + use crate::signature_scheme::{BlsSigningKey, BlsVerificationKeyProofOfPossession}; use crate::{ClosedKeyRegistration, KeyRegistration, Parameters, Signer, SingleSignature}; type D = Blake2b; diff --git a/mithril-stm/src/single_signature/signature_registered_party.rs b/mithril-stm/src/protocol/single_signature/signature_registered_party.rs similarity index 95% rename from mithril-stm/src/single_signature/signature_registered_party.rs rename to mithril-stm/src/protocol/single_signature/signature_registered_party.rs index b3db1bd6e16..cd1a82d1616 100644 --- a/mithril-stm/src/single_signature/signature_registered_party.rs +++ b/mithril-stm/src/protocol/single_signature/signature_registered_party.rs @@ -1,9 +1,7 @@ use blake2::digest::{Digest, FixedOutput}; use serde::{Deserialize, Serialize, Serializer, ser::SerializeTuple}; -use crate::StmResult; -use crate::key_registration::RegisteredParty; -use crate::{SignatureError, SingleSignature}; +use crate::{RegisteredParty, SignatureError, SingleSignature, StmResult}; /// Signature with its registered party. #[derive(Debug, Clone, Hash, Deserialize, Eq, PartialEq, Ord, PartialOrd)] @@ -60,7 +58,7 @@ mod tests { use rand_chacha::ChaCha20Rng; use rand_core::SeedableRng; - use crate::bls_multi_signature::{BlsSigningKey, BlsVerificationKeyProofOfPossession}; + use crate::signature_scheme::{BlsSigningKey, BlsVerificationKeyProofOfPossession}; use crate::{ ClosedKeyRegistration, KeyRegistration, Parameters, Signer, SingleSignatureWithRegisteredParty, diff --git a/mithril-stm/src/bls_multi_signature/helper.rs b/mithril-stm/src/signature_scheme/bls_multi_signature/helper.rs similarity index 96% rename from mithril-stm/src/bls_multi_signature/helper.rs rename to mithril-stm/src/signature_scheme/bls_multi_signature/helper.rs index bdc09056fee..8eeae988526 100644 --- a/mithril-stm/src/bls_multi_signature/helper.rs +++ b/mithril-stm/src/signature_scheme/bls_multi_signature/helper.rs @@ -8,10 +8,10 @@ pub(crate) mod unsafe_helpers { min_sig::{PublicKey as BlstVk, SecretKey as BlstSk, Signature as BlstSig}, }; - use crate::error::MultiSignatureError::SerializationError; use crate::{ + MultiSignatureError::SerializationError, StmResult, - bls_multi_signature::{BlsProofOfPossession, BlsVerificationKey}, + signature_scheme::{BlsProofOfPossession, BlsVerificationKey}, }; /// Check manually if the pairing `e(g1,mvk) = e(k2,g2)` holds. diff --git a/mithril-stm/src/bls_multi_signature/mod.rs b/mithril-stm/src/signature_scheme/bls_multi_signature/mod.rs similarity index 98% rename from mithril-stm/src/bls_multi_signature/mod.rs rename to mithril-stm/src/signature_scheme/bls_multi_signature/mod.rs index 9f0ba22cc01..64967d6e0a2 100644 --- a/mithril-stm/src/bls_multi_signature/mod.rs +++ b/mithril-stm/src/signature_scheme/bls_multi_signature/mod.rs @@ -94,10 +94,8 @@ mod tests { use rand_chacha::ChaCha20Rng; use rand_core::{RngCore, SeedableRng}; - use crate::RegisterError; - use crate::bls_multi_signature::helper::unsafe_helpers::{p1_affine_to_sig, p2_affine_to_vk}; - use crate::error::MultiSignatureError; - use crate::key_registration::KeyRegistration; + use crate::signature_scheme::helper::unsafe_helpers::{p1_affine_to_sig, p2_affine_to_vk}; + use crate::{KeyRegistration, MultiSignatureError, RegisterError}; use super::*; diff --git a/mithril-stm/src/bls_multi_signature/proof_of_possession.rs b/mithril-stm/src/signature_scheme/bls_multi_signature/proof_of_possession.rs similarity index 95% rename from mithril-stm/src/bls_multi_signature/proof_of_possession.rs rename to mithril-stm/src/signature_scheme/bls_multi_signature/proof_of_possession.rs index ae645143db2..cc5eb82f9d0 100644 --- a/mithril-stm/src/bls_multi_signature/proof_of_possession.rs +++ b/mithril-stm/src/signature_scheme/bls_multi_signature/proof_of_possession.rs @@ -1,9 +1,8 @@ use blst::{blst_p1, min_sig::Signature as BlstSig}; -use crate::error::{MultiSignatureError, blst_error_to_stm_error}; use crate::{ - StmResult, - bls_multi_signature::{ + MultiSignatureError, StmResult, blst_error_to_stm_error, + signature_scheme::{ BlsSigningKey, POP, helper::unsafe_helpers::{compress_p1, scalar_to_pk_in_g1, uncompress_p1}, }, @@ -79,7 +78,7 @@ mod tests { use rand_chacha::ChaCha20Rng; use rand_core::SeedableRng; - use crate::bls_multi_signature::{BlsProofOfPossession, BlsSigningKey}; + use crate::signature_scheme::{BlsProofOfPossession, BlsSigningKey}; const GOLDEN_JSON: &str = r#"[168,50,233,193,15,136,65,72,123,148,129,176,38,198,209,47,28,204,176,144,57,251,42,28,66,76,89,97,158,63,54,198,194,176,135,221,14,185,197,225,202,98,243,74,233,225,143,151,147,177,170,117,66,165,66,62,33,216,232,75,68,114,195,22,100,65,44,198,4,166,102,233,253,240,59,175,60,117,142,114,140,122,17,87,110,187,1,17,10,195,154,13,249,86,54,226]"#; diff --git a/mithril-stm/src/bls_multi_signature/signature.rs b/mithril-stm/src/signature_scheme/bls_multi_signature/signature.rs similarity index 97% rename from mithril-stm/src/bls_multi_signature/signature.rs rename to mithril-stm/src/signature_scheme/bls_multi_signature/signature.rs index 8c428b9da3c..a0a3c4030d3 100644 --- a/mithril-stm/src/bls_multi_signature/signature.rs +++ b/mithril-stm/src/signature_scheme/bls_multi_signature/signature.rs @@ -10,12 +10,8 @@ use blst::{ use digest::consts::U16; use crate::{ - Index, - error::{MultiSignatureError, blst_error_to_stm_error}, -}; -use crate::{ - StmResult, - bls_multi_signature::{ + Index, MultiSignatureError, StmResult, blst_error_to_stm_error, + signature_scheme::{ BlsVerificationKey, helper::unsafe_helpers::{p1_affine_to_sig, p2_affine_to_vk, sig_to_p1, vk_from_p2_affine}, }, @@ -220,7 +216,7 @@ mod tests { use rand_chacha::ChaCha20Rng; use rand_core::SeedableRng; - use crate::bls_multi_signature::{BlsSignature, BlsSigningKey}; + use crate::signature_scheme::{BlsSignature, BlsSigningKey}; const GOLDEN_JSON: &str = r#"[132,95,124,197,185,105,193,171,114,182,52,171,205,119,202,188,2,213,61,125,219,242,10,131,53,219,53,197,157,42,152,194,234,161,244,204,2,134,47,179,176,49,200,232,120,241,180,246]"#; diff --git a/mithril-stm/src/bls_multi_signature/signing_key.rs b/mithril-stm/src/signature_scheme/bls_multi_signature/signing_key.rs similarity index 94% rename from mithril-stm/src/bls_multi_signature/signing_key.rs rename to mithril-stm/src/signature_scheme/bls_multi_signature/signing_key.rs index d3f0a18d85d..bf33b6175a8 100644 --- a/mithril-stm/src/bls_multi_signature/signing_key.rs +++ b/mithril-stm/src/signature_scheme/bls_multi_signature/signing_key.rs @@ -1,9 +1,8 @@ use blst::min_sig::SecretKey as BlstSk; use rand_core::{CryptoRng, RngCore}; -use crate::StmResult; -use crate::bls_multi_signature::signature::BlsSignature; -use crate::error::{MultiSignatureError, blst_error_to_stm_error}; +use crate::signature_scheme::BlsSignature; +use crate::{MultiSignatureError, StmResult, blst_error_to_stm_error}; /// MultiSig secret key, which is a wrapper over the BlstSk type from the blst /// library. diff --git a/mithril-stm/src/bls_multi_signature/verification_key.rs b/mithril-stm/src/signature_scheme/bls_multi_signature/verification_key.rs similarity index 98% rename from mithril-stm/src/bls_multi_signature/verification_key.rs rename to mithril-stm/src/signature_scheme/bls_multi_signature/verification_key.rs index f9e0182d6ce..9e827e22ee5 100644 --- a/mithril-stm/src/bls_multi_signature/verification_key.rs +++ b/mithril-stm/src/signature_scheme/bls_multi_signature/verification_key.rs @@ -12,10 +12,9 @@ use blst::{ }; use serde::{Deserialize, Serialize}; -use crate::error::{MultiSignatureError, blst_error_to_stm_error}; use crate::{ - StmResult, - bls_multi_signature::{ + MultiSignatureError, StmResult, blst_error_to_stm_error, + signature_scheme::{ BlsProofOfPossession, BlsSigningKey, POP, helper::unsafe_helpers::verify_pairing, }, }; diff --git a/mithril-stm/src/signature_scheme/mod.rs b/mithril-stm/src/signature_scheme/mod.rs new file mode 100644 index 00000000000..97cd5a5fef3 --- /dev/null +++ b/mithril-stm/src/signature_scheme/mod.rs @@ -0,0 +1,4 @@ +mod bls_multi_signature; +mod schnorr_signature; + +pub use bls_multi_signature::*; diff --git a/mithril-stm/src/signature_scheme/schnorr_signature/mod.rs b/mithril-stm/src/signature_scheme/schnorr_signature/mod.rs new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/mithril-stm/src/signature_scheme/schnorr_signature/mod.rs @@ -0,0 +1 @@ + From 4be46d27f9c6568447df3ad678992a5fa35c8c4c Mon Sep 17 00:00:00 2001 From: curiecrypt Date: Thu, 27 Nov 2025 19:43:08 +0300 Subject: [PATCH 2/3] schnorr module integrated into signature_scheme --- Cargo.lock | 2 +- mithril-stm/CHANGELOG.md | 6 ++++++ mithril-stm/Cargo.toml | 2 +- mithril-stm/src/lib.rs | 7 ++----- mithril-stm/src/schnorr_signature/mod.rs | 16 ---------------- mithril-stm/src/signature_scheme/mod.rs | 4 ++++ .../schnorr_signature/error.rs | 0 .../signature_scheme/schnorr_signature/mod.rs | 15 +++++++++++++++ .../schnorr_signature/signature.rs | 8 ++++---- .../schnorr_signature/signing_key.rs | 8 ++++---- .../schnorr_signature/utils.rs | 2 +- .../schnorr_signature/verification_key.rs | 6 +++--- 12 files changed, 41 insertions(+), 35 deletions(-) delete mode 100644 mithril-stm/src/schnorr_signature/mod.rs rename mithril-stm/src/{ => signature_scheme}/schnorr_signature/error.rs (100%) rename mithril-stm/src/{ => signature_scheme}/schnorr_signature/signature.rs (97%) rename mithril-stm/src/{ => signature_scheme}/schnorr_signature/signing_key.rs (97%) rename mithril-stm/src/{ => signature_scheme}/schnorr_signature/utils.rs (97%) rename mithril-stm/src/{ => signature_scheme}/schnorr_signature/verification_key.rs (95%) diff --git a/Cargo.lock b/Cargo.lock index 394d0316aa0..ec4900eab74 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4273,7 +4273,7 @@ dependencies = [ [[package]] name = "mithril-stm" -version = "0.6.1" +version = "0.6.2" dependencies = [ "anyhow", "blake2 0.10.6", diff --git a/mithril-stm/CHANGELOG.md b/mithril-stm/CHANGELOG.md index 10175890122..f3aa3bcf4eb 100644 --- a/mithril-stm/CHANGELOG.md +++ b/mithril-stm/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 0.6.2 (11-27-2025) + +### Changed + +- Stm library re-organized for SNARK-friendliness. + ## 0.6.1 (11-27-2025) ### Added diff --git a/mithril-stm/Cargo.toml b/mithril-stm/Cargo.toml index 3e2c3e95abc..96d5ba19d03 100644 --- a/mithril-stm/Cargo.toml +++ b/mithril-stm/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mithril-stm" -version = "0.6.1" +version = "0.6.2" edition = { workspace = true } authors = { workspace = true } homepage = { workspace = true } diff --git a/mithril-stm/src/lib.rs b/mithril-stm/src/lib.rs index 2b29356a994..a6b06f0f9ca 100644 --- a/mithril-stm/src/lib.rs +++ b/mithril-stm/src/lib.rs @@ -112,9 +112,6 @@ //! ``` mod membership_commitment; -#[cfg(feature = "future_snark")] -mod schnorr_signature; - mod proof_system; mod protocol; mod signature_scheme; @@ -127,8 +124,8 @@ pub use signature_scheme::{ BlsVerificationKeyProofOfPossession, }; -#[cfg(feature = "future_snark")] -pub use schnorr_signature::{SchnorrSignature, SchnorrSigningKey, SchnorrVerificationKey}; +#[cfg(all(feature = "benchmark-internals", feature = "future_snark"))] +pub use signature_scheme::{SchnorrSignature, SchnorrSigningKey, SchnorrVerificationKey}; /// The quantity of stake held by a party, represented as a `u64`. pub type Stake = u64; diff --git a/mithril-stm/src/schnorr_signature/mod.rs b/mithril-stm/src/schnorr_signature/mod.rs deleted file mode 100644 index 722e38d5df4..00000000000 --- a/mithril-stm/src/schnorr_signature/mod.rs +++ /dev/null @@ -1,16 +0,0 @@ -mod error; -mod signature; -mod signing_key; -mod utils; -mod verification_key; - -pub use error::*; -pub use signature::*; -pub use signing_key::*; -pub(crate) use utils::*; -pub use verification_key::*; - -use dusk_jubjub::Fq as JubjubBase; - -/// A DST (Domain Separation Tag) to distinguish between use of Poseidon hash -const DST_SIGNATURE: JubjubBase = JubjubBase::from_raw([0u64, 0, 0, 0]); diff --git a/mithril-stm/src/signature_scheme/mod.rs b/mithril-stm/src/signature_scheme/mod.rs index 97cd5a5fef3..dc41111b482 100644 --- a/mithril-stm/src/signature_scheme/mod.rs +++ b/mithril-stm/src/signature_scheme/mod.rs @@ -1,4 +1,8 @@ mod bls_multi_signature; +#[cfg(feature = "future_snark")] mod schnorr_signature; pub use bls_multi_signature::*; + +#[cfg(feature = "future_snark")] +pub use schnorr_signature::*; diff --git a/mithril-stm/src/schnorr_signature/error.rs b/mithril-stm/src/signature_scheme/schnorr_signature/error.rs similarity index 100% rename from mithril-stm/src/schnorr_signature/error.rs rename to mithril-stm/src/signature_scheme/schnorr_signature/error.rs diff --git a/mithril-stm/src/signature_scheme/schnorr_signature/mod.rs b/mithril-stm/src/signature_scheme/schnorr_signature/mod.rs index 8b137891791..722e38d5df4 100644 --- a/mithril-stm/src/signature_scheme/schnorr_signature/mod.rs +++ b/mithril-stm/src/signature_scheme/schnorr_signature/mod.rs @@ -1 +1,16 @@ +mod error; +mod signature; +mod signing_key; +mod utils; +mod verification_key; +pub use error::*; +pub use signature::*; +pub use signing_key::*; +pub(crate) use utils::*; +pub use verification_key::*; + +use dusk_jubjub::Fq as JubjubBase; + +/// A DST (Domain Separation Tag) to distinguish between use of Poseidon hash +const DST_SIGNATURE: JubjubBase = JubjubBase::from_raw([0u64, 0, 0, 0]); diff --git a/mithril-stm/src/schnorr_signature/signature.rs b/mithril-stm/src/signature_scheme/schnorr_signature/signature.rs similarity index 97% rename from mithril-stm/src/schnorr_signature/signature.rs rename to mithril-stm/src/signature_scheme/schnorr_signature/signature.rs index 451799cc777..f8612c6268d 100644 --- a/mithril-stm/src/schnorr_signature/signature.rs +++ b/mithril-stm/src/signature_scheme/schnorr_signature/signature.rs @@ -8,9 +8,9 @@ use group::{Group, GroupEncoding}; use crate::{ StmResult, - schnorr_signature::{ - DST_SIGNATURE, SchnorrSignatureError, SchnorrVerificationKey, - get_coordinates_several_points, is_on_curve, + signature_scheme::{ + SchnorrSignatureError, SchnorrVerificationKey, get_coordinates_several_points, is_on_curve, + schnorr_signature::DST_SIGNATURE, }, }; @@ -211,7 +211,7 @@ mod tests { use rand_chacha::ChaCha20Rng; use rand_core::SeedableRng; - use crate::schnorr_signature::{SchnorrSignature, SchnorrSigningKey}; + use crate::{SchnorrSignature, SchnorrSigningKey}; const GOLDEN_BYTES: &[u8; 96] = &[ 143, 53, 198, 62, 178, 1, 88, 253, 21, 92, 100, 13, 72, 180, 198, 127, 39, 175, 102, diff --git a/mithril-stm/src/schnorr_signature/signing_key.rs b/mithril-stm/src/signature_scheme/schnorr_signature/signing_key.rs similarity index 97% rename from mithril-stm/src/schnorr_signature/signing_key.rs rename to mithril-stm/src/signature_scheme/schnorr_signature/signing_key.rs index 58675ae11c3..a8b78a6d50c 100644 --- a/mithril-stm/src/schnorr_signature/signing_key.rs +++ b/mithril-stm/src/signature_scheme/schnorr_signature/signing_key.rs @@ -9,9 +9,9 @@ use rand_core::{CryptoRng, RngCore}; use crate::{ StmResult, - schnorr_signature::{ - DST_SIGNATURE, SchnorrSignature, SchnorrSignatureError, SchnorrVerificationKey, - generate_non_zero_scalar, get_coordinates_several_points, + signature_scheme::{ + SchnorrSignature, SchnorrSignatureError, SchnorrVerificationKey, generate_non_zero_scalar, + get_coordinates_several_points, schnorr_signature::DST_SIGNATURE, }, }; @@ -193,7 +193,7 @@ mod tests { use rand_chacha::ChaCha20Rng; use rand_core::SeedableRng; - use crate::schnorr_signature::SchnorrSigningKey; + use crate::SchnorrSigningKey; const GOLDEN_BYTES: &[u8; 32] = &[ 126, 191, 239, 197, 88, 151, 248, 254, 187, 143, 86, 35, 29, 62, 90, 13, 196, 71, 234, diff --git a/mithril-stm/src/schnorr_signature/utils.rs b/mithril-stm/src/signature_scheme/schnorr_signature/utils.rs similarity index 97% rename from mithril-stm/src/schnorr_signature/utils.rs rename to mithril-stm/src/signature_scheme/schnorr_signature/utils.rs index a92a3d8fb02..5e375fa7f37 100644 --- a/mithril-stm/src/schnorr_signature/utils.rs +++ b/mithril-stm/src/signature_scheme/schnorr_signature/utils.rs @@ -7,7 +7,7 @@ use ff::Field; use group::Curve; use rand_core::{CryptoRng, RngCore}; -use crate::{StmResult, schnorr_signature::SchnorrSignatureError}; +use crate::{StmResult, signature_scheme::SchnorrSignatureError}; /// Check if the given point is on the curve using its coordinates pub fn is_on_curve(point: JubjubExtended) -> bool { diff --git a/mithril-stm/src/schnorr_signature/verification_key.rs b/mithril-stm/src/signature_scheme/schnorr_signature/verification_key.rs similarity index 95% rename from mithril-stm/src/schnorr_signature/verification_key.rs rename to mithril-stm/src/signature_scheme/schnorr_signature/verification_key.rs index 70d9938ba55..bccb65a5949 100644 --- a/mithril-stm/src/schnorr_signature/verification_key.rs +++ b/mithril-stm/src/signature_scheme/schnorr_signature/verification_key.rs @@ -2,7 +2,7 @@ use anyhow::{Context, anyhow}; use dusk_jubjub::SubgroupPoint as JubjubSubgroup; use group::{Group, GroupEncoding}; -use crate::{StmResult, schnorr_signature::SchnorrSignatureError}; +use crate::{StmResult, signature_scheme::SchnorrSignatureError}; /// Schnorr verification key, it consists of a point on the Jubjub curve /// vk = g * sk, where g is a generator @@ -59,7 +59,7 @@ mod tests { use rand_chacha::ChaCha20Rng; use rand_core::SeedableRng; - use crate::schnorr_signature::{SchnorrSigningKey, SchnorrVerificationKey}; + use crate::signature_scheme::{SchnorrSigningKey, SchnorrVerificationKey}; #[test] fn generate_verification_key() { @@ -112,7 +112,7 @@ mod tests { use rand_chacha::ChaCha20Rng; use rand_core::SeedableRng; - use crate::schnorr_signature::{SchnorrSigningKey, SchnorrVerificationKey}; + use crate::signature_scheme::{SchnorrSigningKey, SchnorrVerificationKey}; const GOLDEN_BYTES: &[u8; 32] = &[ 144, 52, 95, 161, 127, 253, 49, 32, 140, 217, 231, 207, 32, 238, 244, 196, 97, 241, 47, From fe11a485e9a7a84e31c1dc02a41ae67a7e80c09b Mon Sep 17 00:00:00 2001 From: curiecrypt Date: Thu, 27 Nov 2025 21:39:01 +0300 Subject: [PATCH 3/3] imports organized --- .../merkle_tree/commitment.rs | 4 +--- .../membership_commitment/merkle_tree/leaf.rs | 9 ++++----- .../membership_commitment/merkle_tree/tree.rs | 14 +++++++------- mithril-stm/src/proof_system/concatenation.rs | 5 ++--- .../aggregate_signature/aggregate_key.rs | 6 ++++-- .../aggregate_signature/basic_verifier.rs | 4 ++-- .../src/protocol/aggregate_signature/clerk.rs | 11 ++++++----- .../src/protocol/aggregate_signature/mod.rs | 7 +++---- .../protocol/aggregate_signature/signature.rs | 15 ++++++--------- mithril-stm/src/protocol/error.rs | 6 +++--- mithril-stm/src/protocol/key_registration.rs | 13 +++++++------ .../src/protocol/participant/initializer.rs | 7 ++++--- mithril-stm/src/protocol/participant/signer.rs | 6 ++++-- .../src/protocol/single_signature/signature.rs | 16 ++++++++-------- .../signature_registered_party.rs | 5 +++-- .../signature_scheme/bls_multi_signature/mod.rs | 2 +- .../bls_multi_signature/proof_of_possession.rs | 10 ++++------ .../bls_multi_signature/signature.rs | 13 +++++-------- .../bls_multi_signature/signing_key.rs | 2 +- .../bls_multi_signature/verification_key.rs | 8 ++------ .../signature_scheme/schnorr_signature/error.rs | 2 +- .../schnorr_signature/signature.rs | 10 ++++------ .../schnorr_signature/signing_key.rs | 10 ++++------ .../signature_scheme/schnorr_signature/utils.rs | 3 ++- .../schnorr_signature/verification_key.rs | 3 ++- 25 files changed, 90 insertions(+), 101 deletions(-) diff --git a/mithril-stm/src/membership_commitment/merkle_tree/commitment.rs b/mithril-stm/src/membership_commitment/merkle_tree/commitment.rs index e5289d42182..561c9038380 100644 --- a/mithril-stm/src/membership_commitment/merkle_tree/commitment.rs +++ b/mithril-stm/src/membership_commitment/merkle_tree/commitment.rs @@ -3,9 +3,7 @@ use blake2::digest::{Digest, FixedOutput}; use serde::{Deserialize, Serialize}; use std::marker::PhantomData; -use crate::membership_commitment::merkle_tree::{ - MerkleBatchPath, MerklePath, MerkleTreeLeaf, parent, sibling, -}; +use super::{MerkleBatchPath, MerklePath, MerkleTreeLeaf, parent, sibling}; use crate::{MerkleTreeError, StmResult}; /// `MerkleTree` commitment. diff --git a/mithril-stm/src/membership_commitment/merkle_tree/leaf.rs b/mithril-stm/src/membership_commitment/merkle_tree/leaf.rs index a84e2faca0b..9c1cbd2f558 100644 --- a/mithril-stm/src/membership_commitment/merkle_tree/leaf.rs +++ b/mithril-stm/src/membership_commitment/merkle_tree/leaf.rs @@ -1,10 +1,9 @@ -use std::cmp::Ordering; - use serde::{Deserialize, Serialize}; +use std::cmp::Ordering; -use crate::signature_scheme::BlsVerificationKey; -use crate::{MerkleTreeError, StmResult}; -use crate::{Stake, VerificationKey}; +use crate::{ + MerkleTreeError, Stake, StmResult, VerificationKey, signature_scheme::BlsVerificationKey, +}; /// The values that are committed in the Merkle Tree. /// Namely, a verified `VerificationKey` and its corresponding stake. diff --git a/mithril-stm/src/membership_commitment/merkle_tree/tree.rs b/mithril-stm/src/membership_commitment/merkle_tree/tree.rs index 0afacb14384..acd4de54247 100644 --- a/mithril-stm/src/membership_commitment/merkle_tree/tree.rs +++ b/mithril-stm/src/membership_commitment/merkle_tree/tree.rs @@ -1,9 +1,8 @@ -use std::marker::PhantomData; - use blake2::digest::{Digest, FixedOutput}; use serde::{Deserialize, Serialize}; +use std::marker::PhantomData; -use crate::membership_commitment::merkle_tree::{ +use super::{ MerkleBatchPath, MerklePath, MerkleTreeBatchCommitment, MerkleTreeCommitment, MerkleTreeLeaf, left_child, parent, right_child, sibling, }; @@ -268,13 +267,14 @@ impl MerkleTree { #[cfg(test)] mod tests { - use super::*; - use crate::signature_scheme::BlsVerificationKey; use blake2::{Blake2b, digest::consts::U32}; - use proptest::collection::vec; - use proptest::prelude::*; + use proptest::{collection::vec, prelude::*}; use rand::{rng, seq::IteratorRandom}; + use crate::signature_scheme::BlsVerificationKey; + + use super::*; + fn pow2_plus1(h: usize) -> usize { 1 + 2_usize.pow(h as u32) } diff --git a/mithril-stm/src/proof_system/concatenation.rs b/mithril-stm/src/proof_system/concatenation.rs index 83b3243d4df..84dc64711c4 100644 --- a/mithril-stm/src/proof_system/concatenation.rs +++ b/mithril-stm/src/proof_system/concatenation.rs @@ -1,13 +1,12 @@ use anyhow::Context; use blake2::digest::{Digest, FixedOutput}; - use serde::{Deserialize, Serialize}; -use crate::membership_commitment::MerkleBatchPath; -use crate::signature_scheme::{BlsSignature, BlsVerificationKey}; use crate::{ AggregateSignatureError, AggregateVerificationKey, BasicVerifier, Clerk, Parameters, RegisteredParty, SingleSignature, SingleSignatureWithRegisteredParty, StmResult, + membership_commitment::MerkleBatchPath, + signature_scheme::{BlsSignature, BlsVerificationKey}, }; /// `ConcatenationProof` uses the "concatenation" proving system (as described in Section 4.3 of the original paper.) diff --git a/mithril-stm/src/protocol/aggregate_signature/aggregate_key.rs b/mithril-stm/src/protocol/aggregate_signature/aggregate_key.rs index 215a8e9d9dd..cbd1f40f536 100644 --- a/mithril-stm/src/protocol/aggregate_signature/aggregate_key.rs +++ b/mithril-stm/src/protocol/aggregate_signature/aggregate_key.rs @@ -1,8 +1,10 @@ use blake2::digest::{Digest, FixedOutput}; use serde::{Deserialize, Serialize}; -use crate::membership_commitment::{MerkleBatchPath, MerkleTreeBatchCommitment}; -use crate::{ClosedKeyRegistration, Stake}; +use crate::{ + ClosedKeyRegistration, Stake, + membership_commitment::{MerkleBatchPath, MerkleTreeBatchCommitment}, +}; /// Stm aggregate key (batch compatible), which contains the merkle tree commitment and the total stake of the system. /// Batch Compat Merkle tree commitment includes the number of leaves in the tree in order to obtain batch path. diff --git a/mithril-stm/src/protocol/aggregate_signature/basic_verifier.rs b/mithril-stm/src/protocol/aggregate_signature/basic_verifier.rs index 88168594ad7..b398b773fc0 100644 --- a/mithril-stm/src/protocol/aggregate_signature/basic_verifier.rs +++ b/mithril-stm/src/protocol/aggregate_signature/basic_verifier.rs @@ -1,11 +1,11 @@ use anyhow::{Context, anyhow}; use std::collections::{BTreeMap, HashMap, HashSet}; -use crate::membership_commitment::MerkleTreeLeaf; -use crate::signature_scheme::{BlsSignature, BlsVerificationKey}; use crate::{ AggregationError, Index, Parameters, RegisteredParty, SingleSignature, SingleSignatureWithRegisteredParty, Stake, StmResult, + membership_commitment::MerkleTreeLeaf, + signature_scheme::{BlsSignature, BlsVerificationKey}, }; /// Full node verifier including the list of eligible signers and the total stake of the system. diff --git a/mithril-stm/src/protocol/aggregate_signature/clerk.rs b/mithril-stm/src/protocol/aggregate_signature/clerk.rs index fddbe9feb01..d4d6ea05fd0 100644 --- a/mithril-stm/src/protocol/aggregate_signature/clerk.rs +++ b/mithril-stm/src/protocol/aggregate_signature/clerk.rs @@ -1,8 +1,3 @@ -use crate::{ - AggregateSignature, AggregateSignatureType, AggregateVerificationKey, ClosedKeyRegistration, - Index, Parameters, Signer, SingleSignature, Stake, StmResult, VerificationKey, - proof_system::ConcatenationProof, -}; use anyhow::Context; use blake2::digest::{Digest, FixedOutput}; @@ -12,6 +7,12 @@ use anyhow::anyhow; #[cfg(feature = "future_proof_system")] use crate::AggregationError; +use super::{AggregateSignature, AggregateSignatureType, AggregateVerificationKey}; +use crate::{ + ClosedKeyRegistration, Index, Parameters, Signer, SingleSignature, Stake, StmResult, + VerificationKey, proof_system::ConcatenationProof, +}; + /// `Clerk` can verify and aggregate `SingleSignature`s and verify `AggregateSignature`s. /// Clerks can only be generated with the registration closed. /// This avoids that a Merkle Tree is computed before all parties have registered. diff --git a/mithril-stm/src/protocol/aggregate_signature/mod.rs b/mithril-stm/src/protocol/aggregate_signature/mod.rs index 21a80cc9546..317afb68ba4 100644 --- a/mithril-stm/src/protocol/aggregate_signature/mod.rs +++ b/mithril-stm/src/protocol/aggregate_signature/mod.rs @@ -10,8 +10,6 @@ pub use signature::*; #[cfg(test)] mod tests { - use std::collections::{HashMap, HashSet}; - use blake2::{Blake2b, digest::consts::U32}; use proptest::{ collection::{hash_map, vec}, @@ -20,10 +18,11 @@ mod tests { }; use rand_chacha::ChaCha20Rng; use rand_core::{RngCore, SeedableRng}; + use std::collections::{HashMap, HashSet}; + use super::{AggregateSignature, AggregateSignatureType, BasicVerifier, Clerk}; use crate::{ - AggregateSignature, AggregateSignatureType, AggregationError, BasicVerifier, Clerk, - Initializer, KeyRegistration, Parameters, Signer, SingleSignature, + AggregationError, Initializer, KeyRegistration, Parameters, Signer, SingleSignature, SingleSignatureWithRegisteredParty, Stake, StmResult, membership_commitment::MerkleBatchPath, signature_scheme::BlsVerificationKey, }; diff --git a/mithril-stm/src/protocol/aggregate_signature/signature.rs b/mithril-stm/src/protocol/aggregate_signature/signature.rs index 03fdc4cf40d..fcd74406ee0 100644 --- a/mithril-stm/src/protocol/aggregate_signature/signature.rs +++ b/mithril-stm/src/protocol/aggregate_signature/signature.rs @@ -1,14 +1,11 @@ -use std::collections::HashMap; -use std::fmt::Display; -use std::hash::Hash; - use anyhow::anyhow; use blake2::digest::{Digest, FixedOutput}; use serde::{Deserialize, Serialize}; +use std::{collections::HashMap, fmt::Display, hash::Hash}; -use crate::membership_commitment::MerkleBatchPath; +use super::AggregateVerificationKey; use crate::{ - AggregateSignatureError, AggregateVerificationKey, Parameters, StmResult, + AggregateSignatureError, Parameters, StmResult, membership_commitment::MerkleBatchPath, proof_system::ConcatenationProof, }; @@ -211,10 +208,10 @@ mod tests { use rand_chacha::ChaCha20Rng; use rand_core::SeedableRng; - use crate::signature_scheme::{BlsSigningKey, BlsVerificationKeyProofOfPossession}; + use super::{AggregateSignature, AggregateSignatureType}; use crate::{ - AggregateSignature, AggregateSignatureType, Clerk, ClosedKeyRegistration, - KeyRegistration, Parameters, Signer, + Clerk, ClosedKeyRegistration, KeyRegistration, Parameters, Signer, + signature_scheme::{BlsSigningKey, BlsVerificationKeyProofOfPossession}, }; type D = Blake2b; diff --git a/mithril-stm/src/protocol/error.rs b/mithril-stm/src/protocol/error.rs index d872954ecd9..8bb8e12309c 100644 --- a/mithril-stm/src/protocol/error.rs +++ b/mithril-stm/src/protocol/error.rs @@ -2,10 +2,10 @@ use anyhow::anyhow; use blst::BLST_ERROR; -use crate::signature_scheme::{ - BlsSignature, BlsVerificationKey, BlsVerificationKeyProofOfPossession, +use crate::{ + AggregateSignatureType, StmResult, + signature_scheme::{BlsSignature, BlsVerificationKey, BlsVerificationKeyProofOfPossession}, }; -use crate::{AggregateSignatureType, StmResult}; /// Error types for multi signatures. #[derive(Debug, thiserror::Error, Eq, PartialEq)] diff --git a/mithril-stm/src/protocol/key_registration.rs b/mithril-stm/src/protocol/key_registration.rs index 3a9f59942b4..eb6d66b4bfa 100644 --- a/mithril-stm/src/protocol/key_registration.rs +++ b/mithril-stm/src/protocol/key_registration.rs @@ -1,15 +1,16 @@ //! Key registration functionality. +use anyhow::anyhow; +use blake2::digest::{Digest, FixedOutput}; use std::{ collections::{HashMap, hash_map::Entry}, sync::Arc, }; -use anyhow::anyhow; -use blake2::digest::{Digest, FixedOutput}; - -use crate::membership_commitment::{MerkleTree, MerkleTreeLeaf}; -use crate::signature_scheme::{BlsVerificationKey, BlsVerificationKeyProofOfPossession}; -use crate::{RegisterError, Stake, StmResult}; +use crate::{ + RegisterError, Stake, StmResult, + membership_commitment::{MerkleTree, MerkleTreeLeaf}, + signature_scheme::{BlsVerificationKey, BlsVerificationKeyProofOfPossession}, +}; /// Stores a registered party with its public key and the associated stake. pub type RegisteredParty = MerkleTreeLeaf; diff --git a/mithril-stm/src/protocol/participant/initializer.rs b/mithril-stm/src/protocol/participant/initializer.rs index 7a2050a1cb5..daff6272ae0 100644 --- a/mithril-stm/src/protocol/participant/initializer.rs +++ b/mithril-stm/src/protocol/participant/initializer.rs @@ -1,13 +1,14 @@ +use anyhow::anyhow; use blake2::digest::Digest; use digest::FixedOutput; use rand_core::{CryptoRng, RngCore}; use serde::{Deserialize, Serialize}; -use crate::signature_scheme::{BlsSigningKey, BlsVerificationKeyProofOfPossession}; +use super::Signer; use crate::{ - ClosedKeyRegistration, Parameters, RegisterError, RegisteredParty, Signer, Stake, StmResult, + ClosedKeyRegistration, Parameters, RegisterError, RegisteredParty, Stake, StmResult, + signature_scheme::{BlsSigningKey, BlsVerificationKeyProofOfPossession}, }; -use anyhow::anyhow; /// Wrapper of the MultiSignature Verification key with proof of possession pub type VerificationKeyProofOfPossession = BlsVerificationKeyProofOfPossession; diff --git a/mithril-stm/src/protocol/participant/signer.rs b/mithril-stm/src/protocol/participant/signer.rs index 71b71c8b244..a0f845d780d 100644 --- a/mithril-stm/src/protocol/participant/signer.rs +++ b/mithril-stm/src/protocol/participant/signer.rs @@ -1,7 +1,9 @@ use blake2::digest::{Digest, FixedOutput}; -use crate::signature_scheme::{BlsSignature, BlsSigningKey, BlsVerificationKey}; -use crate::{ClosedKeyRegistration, Parameters, SingleSignature, Stake, is_lottery_won}; +use crate::{ + ClosedKeyRegistration, Parameters, SingleSignature, Stake, is_lottery_won, + signature_scheme::{BlsSignature, BlsSigningKey, BlsVerificationKey}, +}; /// Wrapper of the MultiSignature Verification key pub type VerificationKey = BlsVerificationKey; diff --git a/mithril-stm/src/protocol/single_signature/signature.rs b/mithril-stm/src/protocol/single_signature/signature.rs index d4b1b1835ee..568603ede17 100644 --- a/mithril-stm/src/protocol/single_signature/signature.rs +++ b/mithril-stm/src/protocol/single_signature/signature.rs @@ -1,17 +1,15 @@ +use anyhow::{Context, anyhow}; +use blake2::digest::{Digest, FixedOutput}; +use serde::{Deserialize, Serialize}; use std::{ cmp::Ordering, hash::{Hash, Hasher}, }; -use blake2::digest::{Digest, FixedOutput}; -use serde::{Deserialize, Serialize}; - -use crate::protocol::eligibility_check::is_lottery_won; -use crate::signature_scheme::BlsSignature; use crate::{ AggregateVerificationKey, Index, Parameters, SignatureError, Stake, StmResult, VerificationKey, + is_lottery_won, signature_scheme::BlsSignature, }; -use anyhow::{Context, anyhow}; /// Signature created by a single party who has won the lottery. #[derive(Debug, Clone, Serialize, Deserialize)] @@ -207,8 +205,10 @@ mod tests { use rand_chacha::ChaCha20Rng; use rand_core::SeedableRng; - use crate::signature_scheme::{BlsSigningKey, BlsVerificationKeyProofOfPossession}; - use crate::{ClosedKeyRegistration, KeyRegistration, Parameters, Signer, SingleSignature}; + use crate::{ + ClosedKeyRegistration, KeyRegistration, Parameters, Signer, SingleSignature, + signature_scheme::{BlsSigningKey, BlsVerificationKeyProofOfPossession}, + }; type D = Blake2b; diff --git a/mithril-stm/src/protocol/single_signature/signature_registered_party.rs b/mithril-stm/src/protocol/single_signature/signature_registered_party.rs index cd1a82d1616..a72ee0d97cf 100644 --- a/mithril-stm/src/protocol/single_signature/signature_registered_party.rs +++ b/mithril-stm/src/protocol/single_signature/signature_registered_party.rs @@ -1,7 +1,8 @@ use blake2::digest::{Digest, FixedOutput}; use serde::{Deserialize, Serialize, Serializer, ser::SerializeTuple}; -use crate::{RegisteredParty, SignatureError, SingleSignature, StmResult}; +use super::SingleSignature; +use crate::{RegisteredParty, SignatureError, StmResult}; /// Signature with its registered party. #[derive(Debug, Clone, Hash, Deserialize, Eq, PartialEq, Ord, PartialOrd)] @@ -58,10 +59,10 @@ mod tests { use rand_chacha::ChaCha20Rng; use rand_core::SeedableRng; - use crate::signature_scheme::{BlsSigningKey, BlsVerificationKeyProofOfPossession}; use crate::{ ClosedKeyRegistration, KeyRegistration, Parameters, Signer, SingleSignatureWithRegisteredParty, + signature_scheme::{BlsSigningKey, BlsVerificationKeyProofOfPossession}, }; type D = Blake2b; diff --git a/mithril-stm/src/signature_scheme/bls_multi_signature/mod.rs b/mithril-stm/src/signature_scheme/bls_multi_signature/mod.rs index 64967d6e0a2..fc3c3bc1646 100644 --- a/mithril-stm/src/signature_scheme/bls_multi_signature/mod.rs +++ b/mithril-stm/src/signature_scheme/bls_multi_signature/mod.rs @@ -94,7 +94,7 @@ mod tests { use rand_chacha::ChaCha20Rng; use rand_core::{RngCore, SeedableRng}; - use crate::signature_scheme::helper::unsafe_helpers::{p1_affine_to_sig, p2_affine_to_vk}; + use super::helper::unsafe_helpers::{p1_affine_to_sig, p2_affine_to_vk}; use crate::{KeyRegistration, MultiSignatureError, RegisterError}; use super::*; diff --git a/mithril-stm/src/signature_scheme/bls_multi_signature/proof_of_possession.rs b/mithril-stm/src/signature_scheme/bls_multi_signature/proof_of_possession.rs index cc5eb82f9d0..41035e41af1 100644 --- a/mithril-stm/src/signature_scheme/bls_multi_signature/proof_of_possession.rs +++ b/mithril-stm/src/signature_scheme/bls_multi_signature/proof_of_possession.rs @@ -1,12 +1,10 @@ use blst::{blst_p1, min_sig::Signature as BlstSig}; -use crate::{ - MultiSignatureError, StmResult, blst_error_to_stm_error, - signature_scheme::{ - BlsSigningKey, POP, - helper::unsafe_helpers::{compress_p1, scalar_to_pk_in_g1, uncompress_p1}, - }, +use super::{ + BlsSigningKey, POP, + helper::unsafe_helpers::{compress_p1, scalar_to_pk_in_g1, uncompress_p1}, }; +use crate::{MultiSignatureError, StmResult, blst_error_to_stm_error}; /// MultiSig proof of possession, which contains two elements from G1. However, /// the two elements have different types: `k1` is represented as a BlstSig diff --git a/mithril-stm/src/signature_scheme/bls_multi_signature/signature.rs b/mithril-stm/src/signature_scheme/bls_multi_signature/signature.rs index a0a3c4030d3..3ad44712dd0 100644 --- a/mithril-stm/src/signature_scheme/bls_multi_signature/signature.rs +++ b/mithril-stm/src/signature_scheme/bls_multi_signature/signature.rs @@ -1,6 +1,4 @@ use anyhow::{Context, anyhow}; -use std::{cmp::Ordering, iter::Sum}; - use blake2::{Blake2b, Blake2b512, Digest}; use blst::{ blst_p1, blst_p2, @@ -8,14 +6,13 @@ use blst::{ p1_affines, p2_affines, }; use digest::consts::U16; +use std::{cmp::Ordering, iter::Sum}; -use crate::{ - Index, MultiSignatureError, StmResult, blst_error_to_stm_error, - signature_scheme::{ - BlsVerificationKey, - helper::unsafe_helpers::{p1_affine_to_sig, p2_affine_to_vk, sig_to_p1, vk_from_p2_affine}, - }, +use super::{ + BlsVerificationKey, + helper::unsafe_helpers::{p1_affine_to_sig, p2_affine_to_vk, sig_to_p1, vk_from_p2_affine}, }; +use crate::{Index, MultiSignatureError, StmResult, blst_error_to_stm_error}; /// MultiSig signature, which is a wrapper over the `BlstSig` type. #[derive(Debug, Clone, Copy, PartialEq, Eq)] diff --git a/mithril-stm/src/signature_scheme/bls_multi_signature/signing_key.rs b/mithril-stm/src/signature_scheme/bls_multi_signature/signing_key.rs index bf33b6175a8..6108d9f6374 100644 --- a/mithril-stm/src/signature_scheme/bls_multi_signature/signing_key.rs +++ b/mithril-stm/src/signature_scheme/bls_multi_signature/signing_key.rs @@ -1,7 +1,7 @@ use blst::min_sig::SecretKey as BlstSk; use rand_core::{CryptoRng, RngCore}; -use crate::signature_scheme::BlsSignature; +use super::BlsSignature; use crate::{MultiSignatureError, StmResult, blst_error_to_stm_error}; /// MultiSig secret key, which is a wrapper over the BlstSk type from the blst diff --git a/mithril-stm/src/signature_scheme/bls_multi_signature/verification_key.rs b/mithril-stm/src/signature_scheme/bls_multi_signature/verification_key.rs index 9e827e22ee5..1247115d28f 100644 --- a/mithril-stm/src/signature_scheme/bls_multi_signature/verification_key.rs +++ b/mithril-stm/src/signature_scheme/bls_multi_signature/verification_key.rs @@ -12,12 +12,8 @@ use blst::{ }; use serde::{Deserialize, Serialize}; -use crate::{ - MultiSignatureError, StmResult, blst_error_to_stm_error, - signature_scheme::{ - BlsProofOfPossession, BlsSigningKey, POP, helper::unsafe_helpers::verify_pairing, - }, -}; +use super::{BlsProofOfPossession, BlsSigningKey, POP, helper::unsafe_helpers::verify_pairing}; +use crate::{MultiSignatureError, StmResult, blst_error_to_stm_error}; /// MultiSig verification key, which is a wrapper over the BlstVk (element in G2) /// from the blst library. diff --git a/mithril-stm/src/signature_scheme/schnorr_signature/error.rs b/mithril-stm/src/signature_scheme/schnorr_signature/error.rs index 4d6ce92ecfe..fa1701a4641 100644 --- a/mithril-stm/src/signature_scheme/schnorr_signature/error.rs +++ b/mithril-stm/src/signature_scheme/schnorr_signature/error.rs @@ -1,5 +1,5 @@ #[cfg(feature = "future_snark")] -use crate::{SchnorrSignature, SchnorrVerificationKey}; +use super::{SchnorrSignature, SchnorrVerificationKey}; /// Error types for Schnorr signatures. #[cfg(feature = "future_snark")] diff --git a/mithril-stm/src/signature_scheme/schnorr_signature/signature.rs b/mithril-stm/src/signature_scheme/schnorr_signature/signature.rs index f8612c6268d..6ddf3bcfba2 100644 --- a/mithril-stm/src/signature_scheme/schnorr_signature/signature.rs +++ b/mithril-stm/src/signature_scheme/schnorr_signature/signature.rs @@ -6,13 +6,11 @@ use dusk_jubjub::{ use dusk_poseidon::{Domain, Hash}; use group::{Group, GroupEncoding}; -use crate::{ - StmResult, - signature_scheme::{ - SchnorrSignatureError, SchnorrVerificationKey, get_coordinates_several_points, is_on_curve, - schnorr_signature::DST_SIGNATURE, - }, +use super::{ + DST_SIGNATURE, SchnorrSignatureError, SchnorrVerificationKey, get_coordinates_several_points, + is_on_curve, }; +use crate::StmResult; /// Structure of the Schnorr signature to use with the SNARK /// diff --git a/mithril-stm/src/signature_scheme/schnorr_signature/signing_key.rs b/mithril-stm/src/signature_scheme/schnorr_signature/signing_key.rs index a8b78a6d50c..ef2148f39d1 100644 --- a/mithril-stm/src/signature_scheme/schnorr_signature/signing_key.rs +++ b/mithril-stm/src/signature_scheme/schnorr_signature/signing_key.rs @@ -7,13 +7,11 @@ use dusk_poseidon::{Domain, Hash}; use group::Group; use rand_core::{CryptoRng, RngCore}; -use crate::{ - StmResult, - signature_scheme::{ - SchnorrSignature, SchnorrSignatureError, SchnorrVerificationKey, generate_non_zero_scalar, - get_coordinates_several_points, schnorr_signature::DST_SIGNATURE, - }, +use super::{ + DST_SIGNATURE, SchnorrSignature, SchnorrSignatureError, SchnorrVerificationKey, + generate_non_zero_scalar, get_coordinates_several_points, }; +use crate::StmResult; /// Schnorr Signing key, it is essentially a random scalar of the Jubjub scalar field #[derive(Debug, Clone)] diff --git a/mithril-stm/src/signature_scheme/schnorr_signature/utils.rs b/mithril-stm/src/signature_scheme/schnorr_signature/utils.rs index 5e375fa7f37..44b53f83181 100644 --- a/mithril-stm/src/signature_scheme/schnorr_signature/utils.rs +++ b/mithril-stm/src/signature_scheme/schnorr_signature/utils.rs @@ -7,7 +7,8 @@ use ff::Field; use group::Curve; use rand_core::{CryptoRng, RngCore}; -use crate::{StmResult, signature_scheme::SchnorrSignatureError}; +use super::SchnorrSignatureError; +use crate::StmResult; /// Check if the given point is on the curve using its coordinates pub fn is_on_curve(point: JubjubExtended) -> bool { diff --git a/mithril-stm/src/signature_scheme/schnorr_signature/verification_key.rs b/mithril-stm/src/signature_scheme/schnorr_signature/verification_key.rs index bccb65a5949..a2b671fd7fc 100644 --- a/mithril-stm/src/signature_scheme/schnorr_signature/verification_key.rs +++ b/mithril-stm/src/signature_scheme/schnorr_signature/verification_key.rs @@ -2,7 +2,8 @@ use anyhow::{Context, anyhow}; use dusk_jubjub::SubgroupPoint as JubjubSubgroup; use group::{Group, GroupEncoding}; -use crate::{StmResult, signature_scheme::SchnorrSignatureError}; +use super::SchnorrSignatureError; +use crate::StmResult; /// Schnorr verification key, it consists of a point on the Jubjub curve /// vk = g * sk, where g is a generator