diff --git a/.rustfmt.toml b/.rustfmt.toml index c1578aaf..3a3f3f1d 100644 --- a/.rustfmt.toml +++ b/.rustfmt.toml @@ -1 +1,2 @@ imports_granularity = "Module" +group_imports = "StdExternalCrate" diff --git a/rust/attest/src/cds2.rs b/rust/attest/src/cds2.rs index c4b911b9..e34ee77f 100644 --- a/rust/attest/src/cds2.rs +++ b/rust/attest/src/cds2.rs @@ -5,9 +5,9 @@ use std::collections::HashMap; -use crate::constants::ENCLAVE_ID_CDSI_STAGING_AND_PROD; use prost::Message; +use crate::constants::ENCLAVE_ID_CDSI_STAGING_AND_PROD; use crate::dcap; use crate::enclave::{Handshake, Result}; use crate::proto::cds2; diff --git a/rust/attest/src/cert_chain.rs b/rust/attest/src/cert_chain.rs index 01a9b565..4b16ceeb 100644 --- a/rust/attest/src/cert_chain.rs +++ b/rust/attest/src/cert_chain.rs @@ -3,6 +3,8 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use std::time::SystemTime; + use boring_signal::ec::EcKey; use boring_signal::pkey::Public; use boring_signal::stack::{Stack, Stackable}; @@ -10,8 +12,6 @@ use boring_signal::x509::crl::X509CRLRef; use boring_signal::x509::store::X509StoreRef; use boring_signal::x509::{X509StoreContext, X509}; -use std::time::SystemTime; - use crate::error::ContextError; use crate::expireable::Expireable; @@ -162,7 +162,7 @@ impl Expireable for CertChain { #[cfg(test)] /// Utilities for creating test certificates / crls pub mod testutil { - use super::CertChain; + use std::borrow::Borrow; use boring_signal::asn1::{Asn1Integer, Asn1IntegerRef, Asn1Time}; use boring_signal::bn::{BigNum, MsbOption}; @@ -173,7 +173,8 @@ pub mod testutil { use boring_signal::x509::crl::{X509CRLBuilder, X509Revoked, X509CRL}; use boring_signal::x509::extension::BasicConstraints; use boring_signal::x509::{X509Name, X509}; - use std::borrow::Borrow; + + use super::CertChain; /// generate EC private key fn pkey() -> PKey { @@ -309,15 +310,15 @@ pub mod testutil { #[cfg(test)] mod test { - use super::testutil::*; - use super::*; - use assert_matches::assert_matches; use boring_signal::nid::Nid; use boring_signal::x509::store::{X509Store, X509StoreBuilder}; use boring_signal::x509::verify::X509VerifyFlags; use boring_signal::x509::X509Ref; + use super::testutil::*; + use super::*; + fn names(certs: &[X509]) -> Vec { certs .iter() diff --git a/rust/attest/src/dcap.rs b/rust/attest/src/dcap.rs index dbb7f9d6..4f420a84 100644 --- a/rust/attest/src/dcap.rs +++ b/rust/attest/src/dcap.rs @@ -22,7 +22,6 @@ // Curve signing key, using the NIST p-256 curve. use std::collections::HashMap; - use std::time::SystemTime; use boring_signal::asn1::{Asn1Time, Asn1TimeRef}; @@ -651,12 +650,12 @@ mod test { use std::time::{Duration, SystemTime}; - use crate::dcap::endorsements::{QeTcbLevel, TcbInfoVersion}; - use crate::dcap::fakes::FakeAttestation; use boring_signal::bn::BigNum; use hex_literal::hex; use super::*; + use crate::dcap::endorsements::{QeTcbLevel, TcbInfoVersion}; + use crate::dcap::fakes::FakeAttestation; const EXPECTED_MRENCLAVE: MREnclave = hex!("337ac97ce088a132daeb1308ea3159f807de4a827e875b2c90ce21bf4751196f"); diff --git a/rust/attest/src/dcap/endorsements.rs b/rust/attest/src/dcap/endorsements.rs index c157cd66..8acb51a3 100644 --- a/rust/attest/src/dcap/endorsements.rs +++ b/rust/attest/src/dcap/endorsements.rs @@ -8,6 +8,8 @@ //! through the Intel Provisioning Certification Service (PCS), or a cache (PCCS). //! For specification of the json data structures within the OE structures, //! see +use std::time::SystemTime; + use boring_signal::ec::EcKeyRef; use boring_signal::ecdsa::{EcdsaSig, EcdsaSigRef}; use boring_signal::pkey::Public; @@ -16,8 +18,6 @@ use serde::Deserialize; use serde_json::value::RawValue; use strum::EnumCount; -use std::time::SystemTime; - use crate::cert_chain::CertChain; use crate::dcap::ecdsa::{deserialize_ecdsa_signature, EcdsaSigned}; use crate::dcap::revocation_list::RevocationList; diff --git a/rust/attest/src/dcap/evidence.rs b/rust/attest/src/dcap/evidence.rs index 628f512b..2c8d36c1 100644 --- a/rust/attest/src/dcap/evidence.rs +++ b/rust/attest/src/dcap/evidence.rs @@ -5,9 +5,10 @@ //! DCAP quote (Open Enclave "evidence"), ported from Open Enclave headers in v0.17.7. -use sha2::Digest; use std::collections::HashMap; +use sha2::Digest; + use crate::dcap::sgx_quote::SgxQuote; use crate::dcap::{Error, Expireable}; use crate::endian::UInt64LE; @@ -152,9 +153,10 @@ impl CustomClaims<'_> { #[cfg(test)] mod test { + use hex_literal::hex; + use super::*; use crate::dcap::MREnclave; - use hex_literal::hex; const EXPECTED_MRENCLAVE: MREnclave = hex!("337ac97ce088a132daeb1308ea3159f807de4a827e875b2c90ce21bf4751196f"); diff --git a/rust/attest/src/dcap/fakes.rs b/rust/attest/src/dcap/fakes.rs index 684ad0c6..9d238779 100644 --- a/rust/attest/src/dcap/fakes.rs +++ b/rust/attest/src/dcap/fakes.rs @@ -12,13 +12,8 @@ //! 3. Manipulate the default evidence/endorsements //! 4. Create the final evidence/endorsements with [`FakeAttestation::sign`] -use crate::cert_chain::testutil::TestCert; -use crate::cert_chain::CertChain; -use crate::dcap::ecdsa::EcdsaSigned; -use crate::dcap::endorsements::SgxEndorsements; -use crate::dcap::evidence::Evidence; -use crate::dcap::revocation_list::RevocationList; -use crate::dcap::{attest_impl, Attestation}; +use std::time::SystemTime; + use boring_signal::asn1::{Asn1Integer, Asn1IntegerRef}; use boring_signal::bn::{BigNum, BigNumContext}; use boring_signal::ec::{EcGroup, EcKey, EcKeyRef}; @@ -28,7 +23,13 @@ use boring_signal::nid::Nid; use boring_signal::pkey::{PKey, Private, Public}; use chrono::Utc; -use std::time::SystemTime; +use crate::cert_chain::testutil::TestCert; +use crate::cert_chain::CertChain; +use crate::dcap::ecdsa::EcdsaSigned; +use crate::dcap::endorsements::SgxEndorsements; +use crate::dcap::evidence::Evidence; +use crate::dcap::revocation_list::RevocationList; +use crate::dcap::{attest_impl, Attestation}; const EVIDENCE_BYTES: &[u8] = include_bytes!("../../tests/data/dcap.evidence"); const ENDORSEMENT_BYTES: &[u8] = include_bytes!("../../tests/data/dcap.endorsements"); diff --git a/rust/attest/src/dcap/revocation_list.rs b/rust/attest/src/dcap/revocation_list.rs index 053b9fd7..e06434e7 100644 --- a/rust/attest/src/dcap/revocation_list.rs +++ b/rust/attest/src/dcap/revocation_list.rs @@ -3,12 +3,14 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::dcap::{Error, Expireable, Result}; -use boring_signal::nid::Nid; -use boring_signal::x509::crl::{X509CRLRef, X509CRL}; use std::collections::HashSet; use std::time::SystemTime; +use boring_signal::nid::Nid; +use boring_signal::x509::crl::{X509CRLRef, X509CRL}; + +use crate::dcap::{Error, Expireable, Result}; + #[derive(Debug)] pub(crate) struct RevocationList { crl: X509CRL, diff --git a/rust/attest/src/dcap/sgx_quote.rs b/rust/attest/src/dcap/sgx_quote.rs index 0bb32918..886c6cce 100644 --- a/rust/attest/src/dcap/sgx_quote.rs +++ b/rust/attest/src/dcap/sgx_quote.rs @@ -7,6 +7,8 @@ //! //! See section A.4 +use std::time::SystemTime; + use boring_signal::bn::BigNum; use boring_signal::ec::{EcGroup, EcKey}; use boring_signal::ecdsa::{EcdsaSig, EcdsaSigRef}; @@ -16,8 +18,6 @@ use boring_signal::pkey::Public; use sha2::Digest; use zerocopy::{AsBytes, FromBytes, FromZeroes}; -use std::time::SystemTime; - use crate::cert_chain::CertChain; use crate::dcap::ecdsa::{ecdsa_signature_from_bytes, EcdsaSigned}; use crate::dcap::sgx_report_body::SgxReportBody; @@ -325,13 +325,12 @@ static_assertions::const_assert_eq!(578, std::mem::size_of:: = std::result::Result; diff --git a/rust/attest/src/hsm_enclave.rs b/rust/attest/src/hsm_enclave.rs index dfa19946..9e690981 100644 --- a/rust/attest/src/hsm_enclave.rs +++ b/rust/attest/src/hsm_enclave.rs @@ -7,9 +7,10 @@ #![warn(missing_docs)] -use log::*; use std::fmt; +use log::*; + use crate::{client_connection, snow_resolver}; /// Error types for HSM enclave. diff --git a/rust/attest/src/ias.rs b/rust/attest/src/ias.rs index a16220f1..ce6535fb 100644 --- a/rust/attest/src/ias.rs +++ b/rust/attest/src/ias.rs @@ -134,9 +134,10 @@ impl CertChain { #[cfg(test)] mod test { + use std::time::Duration; + use boring_signal::base64::decode_block; use chrono::DateTime; - use std::time::Duration; use super::*; diff --git a/rust/attest/src/nitro.rs b/rust/attest/src/nitro.rs index e123eaa2..d1afb05c 100644 --- a/rust/attest/src/nitro.rs +++ b/rust/attest/src/nitro.rs @@ -15,13 +15,12 @@ use prost::{DecodeError, Message}; use sha2::{Digest, Sha384}; use subtle::ConstantTimeEq; +use crate::constants::NITRO_EXPECTED_PCRS; use crate::enclave::{self, Claims, Handshake}; use crate::proto; use crate::svr2::RaftConfig; use crate::util::SmallMap; -use crate::constants::NITRO_EXPECTED_PCRS; - // A type for Platform Configuration Register values // They are Sha-384 hashes, 48 byte long. // https://docs.aws.amazon.com/enclaves/latest/user/set-up-attestation.html#where diff --git a/rust/attest/src/sgx_session.rs b/rust/attest/src/sgx_session.rs index a48ccb26..009d922a 100644 --- a/rust/attest/src/sgx_session.rs +++ b/rust/attest/src/sgx_session.rs @@ -110,9 +110,8 @@ pub mod testutil { mod tests { use std::time::{Duration, SystemTime}; - use crate::client_connection; - use super::*; + use crate::client_connection; #[test] fn test_clock_skew() { diff --git a/rust/attest/src/svr2.rs b/rust/attest/src/svr2.rs index 7e74ba75..bbfaa292 100644 --- a/rust/attest/src/svr2.rs +++ b/rust/attest/src/svr2.rs @@ -3,11 +3,11 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use prost::Message; + use crate::constants::{ ACCEPTABLE_SW_ADVISORIES, DEFAULT_SW_ADVISORIES, EXPECTED_RAFT_CONFIG_SVR2, }; -use prost::Message; - use crate::enclave::{Error, Handshake, Result}; use crate::proto::svr; diff --git a/rust/attest/src/tpm2snp.rs b/rust/attest/src/tpm2snp.rs index 77f127f9..cc2de4b8 100644 --- a/rust/attest/src/tpm2snp.rs +++ b/rust/attest/src/tpm2snp.rs @@ -11,13 +11,12 @@ use boring_signal::x509::X509; use prost::Message; use crate::cert_chain::{self, CertChain}; +use crate::constants::TPM2SNP_EXPECTED_PCRS; use crate::enclave::{Claims, Error, Handshake, Result, UnvalidatedHandshake}; use crate::expireable::Expireable as _; use crate::proto::{svr, svr3}; use crate::svr2::RaftConfig; -use crate::constants::TPM2SNP_EXPECTED_PCRS; - mod snp; mod tpm2; @@ -224,10 +223,12 @@ fn verify_tpm2_quote<'a>( #[cfg(test)] mod test { - use super::*; - use hex_literal::hex; use std::time::Duration; + use hex_literal::hex; + + use super::*; + #[test] fn full_tpm2snp_attestation() { let attestation_data = include_bytes!("../tests/data/tpm2snp_attestation_msg.dat"); diff --git a/rust/attest/src/tpm2snp/tpm2.rs b/rust/attest/src/tpm2snp/tpm2.rs index cab73795..a14f3f86 100644 --- a/rust/attest/src/tpm2snp/tpm2.rs +++ b/rust/attest/src/tpm2snp/tpm2.rs @@ -358,11 +358,12 @@ impl<'a> View<'a> { #[cfg(test)] mod test { - use super::*; use assert_matches::assert_matches; use hex_literal::hex; use test_case::test_case; + use super::*; + const VALID_SIGNATURE: &[u8] = include_bytes!("../../tests/data/tpm2_valid_signature.dat"); const VALID_REPORT: &[u8] = include_bytes!("../../tests/data/tpm2_valid_report.dat"); const VALID_PCRS: &[u8] = include_bytes!("../../tests/data/tpm2_valid_pcrs.dat"); diff --git a/rust/attest/src/util.rs b/rust/attest/src/util.rs index 8f83b633..d8e11bb0 100644 --- a/rust/attest/src/util.rs +++ b/rust/attest/src/util.rs @@ -97,9 +97,8 @@ pub(crate) fn system_time_to_asn1_time( #[cfg(test)] mod test { - use crate::endian::{UInt16LE, UInt32LE, UInt64LE}; - use super::*; + use crate::endian::{UInt16LE, UInt32LE, UInt64LE}; #[test] fn test_strip_trailing_null_byte() { diff --git a/rust/bridge/ffi/src/lib.rs b/rust/bridge/ffi/src/lib.rs index 0a660b6c..a929a974 100644 --- a/rust/bridge/ffi/src/lib.rs +++ b/rust/bridge/ffi/src/lib.rs @@ -6,6 +6,9 @@ #![allow(clippy::missing_safety_doc)] #![warn(clippy::unwrap_used)] +use std::ffi::{c_char, c_uchar, c_uint, CString}; +use std::panic::AssertUnwindSafe; + use futures_util::FutureExt; use libsignal_bridge::ffi::*; #[cfg(feature = "libsignal-bridge-testing")] @@ -13,9 +16,6 @@ use libsignal_bridge::ffi::*; use libsignal_bridge_testing::*; use libsignal_protocol::*; -use std::ffi::{c_char, c_uchar, c_uint, CString}; -use std::panic::AssertUnwindSafe; - pub mod logging; #[no_mangle] diff --git a/rust/bridge/jni/src/lib.rs b/rust/bridge/jni/src/lib.rs index fdc657d4..8d3d9e65 100644 --- a/rust/bridge/jni/src/lib.rs +++ b/rust/bridge/jni/src/lib.rs @@ -6,12 +6,10 @@ #![allow(clippy::missing_safety_doc)] #![deny(clippy::unwrap_used)] -use jni::objects::{JByteArray, JClass, JLongArray, JObject, JString}; -use jni::JNIEnv; - #[cfg(not(target_os = "android"))] use jni::objects::{AutoLocal, JList, JMap, JValue}; - +use jni::objects::{JByteArray, JClass, JLongArray, JObject, JString}; +use jni::JNIEnv; use libsignal_bridge::jni::*; use libsignal_bridge::jni_args; use libsignal_bridge::net::TokioAsyncContext; diff --git a/rust/bridge/jni/src/logging.rs b/rust/bridge/jni/src/logging.rs index 527a4c50..086e82e3 100644 --- a/rust/bridge/jni/src/logging.rs +++ b/rust/bridge/jni/src/logging.rs @@ -3,12 +3,13 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use std::panic::{catch_unwind, AssertUnwindSafe}; +use std::process::abort; + use jni::objects::{AutoLocal, GlobalRef, JClass, JObject, JValue}; use jni::sys::jint; use jni::{JNIEnv, JavaVM}; use libsignal_bridge::{describe_panic, jni_args}; -use std::panic::{catch_unwind, AssertUnwindSafe}; -use std::process::abort; // Keep this in sync with SignalProtocolLogger.java, as well as the list below. #[derive(Clone, Copy)] diff --git a/rust/bridge/node/futures/src/executor.rs b/rust/bridge/node/futures/src/executor.rs index 7de26e23..c25178ce 100644 --- a/rust/bridge/node/futures/src/executor.rs +++ b/rust/bridge/node/futures/src/executor.rs @@ -3,12 +3,13 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use neon::prelude::*; use std::future::Future; use std::pin::Pin; use std::sync::{Arc, Mutex}; use std::task::{Poll, Wake}; +use neon::prelude::*; + /// Adds support for executing futures on a Neon [Channel][]. /// /// [Channel]: https://docs.rs/neon/0.9.0/neon/event/struct.Channel.html diff --git a/rust/bridge/node/futures/src/future.rs b/rust/bridge/node/futures/src/future.rs index b991a9ea..83e9c655 100644 --- a/rust/bridge/node/futures/src/future.rs +++ b/rust/bridge/node/futures/src/future.rs @@ -3,7 +3,6 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use neon::prelude::*; use std::future::Future; use std::marker::PhantomData; use std::mem; @@ -12,6 +11,8 @@ use std::pin::Pin; use std::sync::{Arc, Mutex, Weak}; use std::task::{Poll, Waker}; +use neon::prelude::*; + use crate::result::*; use crate::util::call_method; diff --git a/rust/bridge/node/futures/src/promise.rs b/rust/bridge/node/futures/src/promise.rs index ac44a236..3dadbe81 100644 --- a/rust/bridge/node/futures/src/promise.rs +++ b/rust/bridge/node/futures/src/promise.rs @@ -3,11 +3,12 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use std::future::Future; +use std::panic::{catch_unwind, AssertUnwindSafe, UnwindSafe}; + use futures_util::FutureExt; use neon::prelude::*; use neon::types::JsPromise; -use std::future::Future; -use std::panic::{catch_unwind, AssertUnwindSafe, UnwindSafe}; use crate::executor::{AssertSendSafe, ChannelEx}; use crate::util::describe_panic; diff --git a/rust/bridge/node/futures/src/util.rs b/rust/bridge/node/futures/src/util.rs index 2d35a5ce..c7d21015 100644 --- a/rust/bridge/node/futures/src/util.rs +++ b/rust/bridge/node/futures/src/util.rs @@ -3,9 +3,10 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use neon::prelude::*; use std::any::Any; +use neon::prelude::*; + // See https://github.com/rust-lang/rfcs/issues/1389 pub(crate) fn describe_panic(any: &Box) -> String { if let Some(msg) = any.downcast_ref::<&str>() { diff --git a/rust/bridge/node/futures/tests-node-module/src/lib.rs b/rust/bridge/node/futures/tests-node-module/src/lib.rs index e3695ebc..f86a0f1e 100644 --- a/rust/bridge/node/futures/tests-node-module/src/lib.rs +++ b/rust/bridge/node/futures/tests-node-module/src/lib.rs @@ -3,9 +3,10 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use std::sync::Arc; + use neon::prelude::*; use signal_neon_futures::*; -use std::sync::Arc; mod panics_and_throws; use panics_and_throws::*; diff --git a/rust/bridge/node/futures/tests-node-module/src/store_like.rs b/rust/bridge/node/futures/tests-node-module/src/store_like.rs index 0adc7f22..528126b7 100644 --- a/rust/bridge/node/futures/tests-node-module/src/store_like.rs +++ b/rust/bridge/node/futures/tests-node-module/src/store_like.rs @@ -3,11 +3,11 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use futures_util::try_join; -use neon::prelude::*; use std::panic::AssertUnwindSafe; use std::sync::Arc; +use futures_util::try_join; +use neon::prelude::*; use signal_neon_futures::*; struct NameStore { diff --git a/rust/bridge/node/src/lib.rs b/rust/bridge/node/src/lib.rs index 83336a8d..1e63a9d9 100644 --- a/rust/bridge/node/src/lib.rs +++ b/rust/bridge/node/src/lib.rs @@ -15,13 +15,13 @@ use minidump_unwind::Symbolizer; use neon::prelude::*; use neon::types::buffer::TypedArray; +mod logging; + // Import bridged functions. Without this, the compiler and/or linker are too // smart and don't include the symbols in the library. #[allow(unused)] use libsignal_bridge_testing::*; -mod logging; - #[neon::main] fn main(mut cx: ModuleContext) -> NeonResult<()> { libsignal_bridge::node::register(&mut cx)?; diff --git a/rust/bridge/shared/src/crypto.rs b/rust/bridge/shared/src/crypto.rs index dd78d742..1c55f6f9 100644 --- a/rust/bridge/shared/src/crypto.rs +++ b/rust/bridge/shared/src/crypto.rs @@ -4,12 +4,11 @@ // use ::signal_crypto; -use libsignal_bridge_macros::*; -use signal_crypto::{Aes256Ctr32, CryptographicHash, CryptographicMac, Error, Result}; - use aes_gcm_siv::aead::generic_array::typenum::Unsigned; use aes_gcm_siv::{AeadCore, AeadInPlace, KeyInit}; +use libsignal_bridge_macros::*; use libsignal_bridge_types::crypto::{Aes256GcmDecryption, Aes256GcmEncryption, Aes256GcmSiv}; +use signal_crypto::{Aes256Ctr32, CryptographicHash, CryptographicMac, Error, Result}; use crate::support::*; use crate::*; diff --git a/rust/bridge/shared/src/ias.rs b/rust/bridge/shared/src/ias.rs index 5588605c..f4cb353e 100644 --- a/rust/bridge/shared/src/ias.rs +++ b/rust/bridge/shared/src/ias.rs @@ -3,10 +3,10 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use ::attest::ias; use libsignal_bridge_macros::*; use crate::*; -use ::attest::ias; #[bridge_fn(jni = false, node = false)] pub fn verify_signature( diff --git a/rust/bridge/shared/src/incremental_mac.rs b/rust/bridge/shared/src/incremental_mac.rs index b3d658c0..0ea02361 100644 --- a/rust/bridge/shared/src/incremental_mac.rs +++ b/rust/bridge/shared/src/incremental_mac.rs @@ -3,12 +3,10 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use hmac::digest::{crypto_common, OutputSizeUser}; - use crypto_common::KeyInit; use hmac::digest::typenum::Unsigned; +use hmac::digest::{crypto_common, OutputSizeUser}; use hmac::Hmac; - use libsignal_bridge_macros::*; use libsignal_bridge_types::incremental_mac::*; use libsignal_protocol::incremental_mac::{calculate_chunk_size, Incremental}; diff --git a/rust/bridge/shared/src/lib.rs b/rust/bridge/shared/src/lib.rs index 930c50af..fef0d91a 100644 --- a/rust/bridge/shared/src/lib.rs +++ b/rust/bridge/shared/src/lib.rs @@ -13,22 +13,12 @@ pub use libsignal_bridge_types::{ bridge_as_handle, bridge_deserialize, bridge_fixed_length_serializable_fns, bridge_get, bridge_handle_fns, bridge_serializable_handle_fns, describe_panic, io, support, }; - -#[cfg(feature = "node")] -pub use libsignal_bridge_types::node_register; #[cfg(feature = "ffi")] -pub use libsignal_bridge_types::{ffi_arg_type, ffi_result_type}; +pub use libsignal_bridge_types::{ffi, ffi_arg_type, ffi_result_type}; #[cfg(feature = "jni")] -pub use libsignal_bridge_types::{jni_arg_type, jni_args, jni_class_name, jni_result_type}; - -#[cfg(feature = "ffi")] -pub use libsignal_bridge_types::ffi; - -#[cfg(feature = "jni")] -pub use libsignal_bridge_types::jni; - +pub use libsignal_bridge_types::{jni, jni_arg_type, jni_args, jni_class_name, jni_result_type}; #[cfg(feature = "node")] -pub use libsignal_bridge_types::node; +pub use libsignal_bridge_types::{node, node_register}; pub mod logging; diff --git a/rust/bridge/shared/src/logging.rs b/rust/bridge/shared/src/logging.rs index de42c996..6edb8d90 100644 --- a/rust/bridge/shared/src/logging.rs +++ b/rust/bridge/shared/src/logging.rs @@ -45,10 +45,10 @@ pub fn log_enabled_in_apps(metadata: &log::Metadata) -> bool { #[cfg(test)] mod tests { - use super::*; - use test_case::test_matrix; + use super::*; + #[test_matrix([ "libsignal_foo", "signal_foo", diff --git a/rust/bridge/shared/src/media.rs b/rust/bridge/shared/src/media.rs index 5a65a61a..3073c755 100644 --- a/rust/bridge/shared/src/media.rs +++ b/rust/bridge/shared/src/media.rs @@ -8,16 +8,11 @@ use libsignal_bridge_types::media::SanitizedMetadata; use signal_media::sanitize::{mp4, webp}; use crate::io::{AsyncInput, InputStream, SyncInput, SyncInputStream}; - // Not used by the Java bridge. #[allow(unused_imports)] use crate::support::*; use crate::*; -// Will be unused when building for Node only. -#[allow(unused_imports)] -use futures_util::FutureExt; - bridge_handle_fns!(SanitizedMetadata); /// Exposed so that we have an easy method to invoke from Java to test whether libsignal was diff --git a/rust/bridge/shared/src/message_backup.rs b/rust/bridge/shared/src/message_backup.rs index 89f24350..65bf9b76 100644 --- a/rust/bridge/shared/src/message_backup.rs +++ b/rust/bridge/shared/src/message_backup.rs @@ -7,7 +7,6 @@ use libsignal_bridge_macros::*; use libsignal_bridge_types::message_backup::*; use libsignal_message_backup::backup::Purpose; use libsignal_message_backup::frame::LimitedReaderFactory; - use libsignal_message_backup::{BackupReader, ReadResult}; use libsignal_protocol::Aci; diff --git a/rust/bridge/shared/src/net.rs b/rust/bridge/shared/src/net.rs index b8ebeb07..d1beae0b 100644 --- a/rust/bridge/shared/src/net.rs +++ b/rust/bridge/shared/src/net.rs @@ -7,15 +7,13 @@ use std::convert::TryInto as _; use std::num::{NonZeroU16, NonZeroU32}; use base64::prelude::{Engine, BASE64_STANDARD}; -use rand::rngs::OsRng; - use libsignal_bridge_macros::{bridge_fn, bridge_io}; use libsignal_bridge_types::net::Svr3Clients; +pub use libsignal_bridge_types::net::{ConnectionManager, Environment, TokioAsyncContext}; use libsignal_net::auth::Auth; use libsignal_net::svr3::traits::*; use libsignal_net::svr3::{self, migrate_backup, restore_with_fallback, OpaqueMaskedShareSet}; - -pub use libsignal_bridge_types::net::{ConnectionManager, Environment, TokioAsyncContext}; +use rand::rngs::OsRng; use crate::support::*; use crate::*; @@ -162,9 +160,10 @@ async fn Svr3Remove( #[cfg(test)] mod test { - use super::*; use test_case::test_case; + use super::*; + #[test_case(Environment::Staging; "staging")] #[test_case(Environment::Prod; "prod")] fn can_create_connection_manager(env: Environment) { diff --git a/rust/bridge/shared/src/net/cdsi.rs b/rust/bridge/shared/src/net/cdsi.rs index e00f5305..63a7ab84 100644 --- a/rust/bridge/shared/src/net/cdsi.rs +++ b/rust/bridge/shared/src/net/cdsi.rs @@ -10,7 +10,6 @@ use libsignal_bridge_types::net::cdsi::{CdsiLookup, LookupRequest}; use libsignal_bridge_types::net::{ConnectionManager, TokioAsyncContext}; use libsignal_net::auth::Auth; use libsignal_net::cdsi::{self, AciAndAccessKey, LookupResponse, E164}; - use libsignal_protocol::{Aci, SignalProtocolError}; use crate::support::*; diff --git a/rust/bridge/shared/src/net/chat.rs b/rust/bridge/shared/src/net/chat.rs index fbb049c2..00f0db91 100644 --- a/rust/bridge/shared/src/net/chat.rs +++ b/rust/bridge/shared/src/net/chat.rs @@ -221,11 +221,12 @@ async fn ServerMessageAck_SendStatus( #[cfg(test)] mod test { - use super::*; - use crate::net::{ConnectionManager, ConnectionManager_set_proxy, Environment}; use assert_matches::assert_matches; use libsignal_net::chat::ChatServiceError; + use super::*; + use crate::net::{ConnectionManager, ConnectionManager_set_proxy, Environment}; + // Normally we would write this test in the app languages, but it depends on timeouts. // Using a paused tokio runtime auto-advances time when there's no other work to be done. #[tokio::test(start_paused = true)] diff --git a/rust/bridge/shared/src/pin.rs b/rust/bridge/shared/src/pin.rs index 9e45b352..fee844b5 100644 --- a/rust/bridge/shared/src/pin.rs +++ b/rust/bridge/shared/src/pin.rs @@ -3,13 +3,13 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use ::attest::svr2::lookup_groupid; +use ::signal_pin::{local_pin_hash, verify_local_pin_hash, PinHash, Result}; use libsignal_bridge_macros::*; +use signal_pin::Error; use crate::support::*; use crate::*; -use ::attest::svr2::lookup_groupid; -use ::signal_pin::{local_pin_hash, verify_local_pin_hash, PinHash, Result}; -use signal_pin::Error; bridge_handle_fns!(PinHash, node = false); diff --git a/rust/bridge/shared/src/protocol.rs b/rust/bridge/shared/src/protocol.rs index b0f056fd..6fffd017 100644 --- a/rust/bridge/shared/src/protocol.rs +++ b/rust/bridge/shared/src/protocol.rs @@ -3,6 +3,9 @@ // SPDX-License-Identifier: AGPL-3.0-only // +// Will be unused when building for Node only. +#[allow(unused_imports)] +use futures_util::FutureExt; use libsignal_bridge_macros::*; #[cfg(feature = "jni")] use libsignal_bridge_types::jni; @@ -11,10 +14,6 @@ use libsignal_protocol::*; use static_assertions::const_assert_eq; use uuid::Uuid; -// Will be unused when building for Node only. -#[allow(unused_imports)] -use futures_util::FutureExt; - use crate::support::*; use crate::*; diff --git a/rust/bridge/shared/src/usernames.rs b/rust/bridge/shared/src/usernames.rs index 83a91168..de5fd359 100644 --- a/rust/bridge/shared/src/usernames.rs +++ b/rust/bridge/shared/src/usernames.rs @@ -3,17 +3,16 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use libsignal_bridge_macros::*; - -#[allow(unused_imports)] -use crate::support::*; -use crate::*; - #[allow(unused_imports)] use ::usernames::{ create_for_username, decrypt_username, NicknameLimits, Username, UsernameError, UsernameLinkError, }; +use libsignal_bridge_macros::*; + +#[allow(unused_imports)] +use crate::support::*; +use crate::*; #[bridge_fn] pub fn Username_Hash(username: String) -> Result<[u8; 32], UsernameError> { diff --git a/rust/bridge/shared/src/zkgroup.rs b/rust/bridge/shared/src/zkgroup.rs index 76f8c910..6a44f5d3 100644 --- a/rust/bridge/shared/src/zkgroup.rs +++ b/rust/bridge/shared/src/zkgroup.rs @@ -7,26 +7,23 @@ use ::zkgroup; use libsignal_bridge_macros::*; use libsignal_bridge_types::zkgroup::validate_serialization; use libsignal_protocol::{Aci, Pni, ServiceId}; - +use uuid::Uuid; use zkgroup::auth::*; +use zkgroup::backups::{ + BackupAuthCredential, BackupAuthCredentialPresentation, BackupAuthCredentialRequest, + BackupAuthCredentialRequestContext, BackupAuthCredentialResponse, BackupLevel, +}; use zkgroup::call_links::*; use zkgroup::generic_server_params::*; use zkgroup::groups::*; use zkgroup::profiles::*; use zkgroup::receipts::*; +pub(crate) use zkgroup::Timestamp; use zkgroup::*; -use uuid::Uuid; -use zkgroup::backups::{ - BackupAuthCredential, BackupAuthCredentialPresentation, BackupAuthCredentialRequest, - BackupAuthCredentialRequestContext, BackupAuthCredentialResponse, BackupLevel, -}; - use crate::support::*; use crate::*; -pub(crate) use zkgroup::Timestamp; - bridge_fixed_length_serializable_fns!(ExpiringProfileKeyCredential); bridge_fixed_length_serializable_fns!(ExpiringProfileKeyCredentialResponse); bridge_fixed_length_serializable_fns!(GroupMasterKey); diff --git a/rust/bridge/shared/testing/src/convert.rs b/rust/bridge/shared/testing/src/convert.rs index cd83e536..963b5136 100644 --- a/rust/bridge/shared/testing/src/convert.rs +++ b/rust/bridge/shared/testing/src/convert.rs @@ -3,6 +3,8 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use std::future::Future; + use futures_util::{AsyncReadExt as _, FutureExt}; use io::{AsyncInput, InputStream}; use libsignal_bridge_macros::*; @@ -10,8 +12,6 @@ use libsignal_bridge_types::support::*; use libsignal_bridge_types::*; use libsignal_protocol::SignalProtocolError; -use std::future::Future; - use crate::types::*; pub struct NonSuspendingBackgroundThreadRuntime; diff --git a/rust/bridge/shared/testing/src/lib.rs b/rust/bridge/shared/testing/src/lib.rs index ef9479ef..ed0cbadf 100644 --- a/rust/bridge/shared/testing/src/lib.rs +++ b/rust/bridge/shared/testing/src/lib.rs @@ -7,11 +7,10 @@ compile_error!("Feature \"ffi\", \"jni\", or \"node\" must be enabled for this crate."); use libsignal_bridge_macros::bridge_fn; -use libsignal_bridge_types::support::*; -use libsignal_bridge_types::*; - #[cfg(feature = "node")] pub use libsignal_bridge_types::node; +use libsignal_bridge_types::support::*; +use libsignal_bridge_types::*; #[bridge_fn] pub fn test_only_fn_returns_123() -> u32 { diff --git a/rust/bridge/shared/testing/src/types.rs b/rust/bridge/shared/testing/src/types.rs index cd624cc8..5214dcfa 100644 --- a/rust/bridge/shared/testing/src/types.rs +++ b/rust/bridge/shared/testing/src/types.rs @@ -6,10 +6,9 @@ #[allow(unused_imports)] use libsignal_protocol::SignalProtocolError; -use crate::*; - #[cfg(feature = "jni")] use crate::jni::HandleJniError; +use crate::*; /// A syntactic wrapper for a type that allows it to ignored by the macros in ffi/convert.rs and /// jni/convert.rs, and by gen_ts_decl.py. diff --git a/rust/bridge/shared/types/src/ffi/chat.rs b/rust/bridge/shared/types/src/ffi/chat.rs index 15afe59e..d93d1fe1 100644 --- a/rust/bridge/shared/types/src/ffi/chat.rs +++ b/rust/bridge/shared/types/src/ffi/chat.rs @@ -3,12 +3,12 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use super::*; - -use crate::net::chat::{ChatListener, MakeChatListener, ServerMessageAck}; +use std::ffi::{c_uchar, c_void}; use libsignal_net::chat::ChatServiceError; -use std::ffi::{c_uchar, c_void}; + +use super::*; +use crate::net::chat::{ChatListener, MakeChatListener, ServerMessageAck}; type ReceivedIncomingMessage = extern "C" fn( ctx: *mut c_void, diff --git a/rust/bridge/shared/types/src/ffi/convert.rs b/rust/bridge/shared/types/src/ffi/convert.rs index 03e27bee..135e8971 100644 --- a/rust/bridge/shared/types/src/ffi/convert.rs +++ b/rust/bridge/shared/types/src/ffi/convert.rs @@ -12,12 +12,11 @@ use libsignal_protocol::*; use paste::paste; use uuid::Uuid; +use super::*; use crate::io::{InputStream, SyncInputStream}; use crate::net::chat::MakeChatListener; use crate::support::{extend_lifetime, AsType, FixedLengthBincodeSerializable, Serialized}; -use super::*; - /// Converts arguments from their FFI form to their Rust form. /// /// `ArgTypeInfo` has two required methods: `borrow` and `load_from`. The use site looks like this: diff --git a/rust/bridge/shared/types/src/ffi/error.rs b/rust/bridge/shared/types/src/ffi/error.rs index 8e0281a6..81642dd9 100644 --- a/rust/bridge/shared/types/src/ffi/error.rs +++ b/rust/bridge/shared/types/src/ffi/error.rs @@ -18,9 +18,8 @@ use signal_pin::Error as PinError; use usernames::{UsernameError, UsernameLinkError}; use zkgroup::{ZkGroupDeserializationFailure, ZkGroupVerificationFailure}; -use crate::support::describe_panic; - use super::{FutureCancelled, NullPointerError, UnexpectedPanic}; +use crate::support::describe_panic; #[derive(Debug)] #[repr(C)] diff --git a/rust/bridge/shared/types/src/ffi/futures.rs b/rust/bridge/shared/types/src/ffi/futures.rs index 198b081a..30a63882 100644 --- a/rust/bridge/shared/types/src/ffi/futures.rs +++ b/rust/bridge/shared/types/src/ffi/futures.rs @@ -3,12 +3,12 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use super::*; -use crate::support::{AsyncRuntime, ResultReporter}; +use std::future::Future; use futures_util::{FutureExt, TryFutureExt}; -use std::future::Future; +use super::*; +use crate::support::{AsyncRuntime, ResultReporter}; #[derive(Debug)] pub struct FutureCancelled; diff --git a/rust/bridge/shared/types/src/ffi/io.rs b/rust/bridge/shared/types/src/ffi/io.rs index 0e1850b1..2fe27956 100644 --- a/rust/bridge/shared/types/src/ffi/io.rs +++ b/rust/bridge/shared/types/src/ffi/io.rs @@ -9,9 +9,8 @@ use std::io; use async_trait::async_trait; use libsignal_protocol::SignalProtocolError; -use crate::io::{InputStream, InputStreamRead, SyncInputStream}; - use super::CallbackError; +use crate::io::{InputStream, InputStreamRead, SyncInputStream}; type Read = extern "C" fn(ctx: *mut c_void, buf: *mut u8, buf_len: usize, amount_read: *mut usize) -> c_int; diff --git a/rust/bridge/shared/types/src/ffi/storage.rs b/rust/bridge/shared/types/src/ffi/storage.rs index ab27f55e..20cf05b5 100644 --- a/rust/bridge/shared/types/src/ffi/storage.rs +++ b/rust/bridge/shared/types/src/ffi/storage.rs @@ -3,12 +3,12 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use super::*; +use std::ffi::{c_int, c_uint, c_void}; use async_trait::async_trait; use uuid::Uuid; -use std::ffi::{c_int, c_uint, c_void}; +use super::*; type GetIdentityKeyPair = extern "C" fn(store_ctx: *mut c_void, keyp: *mut *mut PrivateKey) -> c_int; diff --git a/rust/bridge/shared/types/src/incremental_mac.rs b/rust/bridge/shared/types/src/incremental_mac.rs index 7c1e6c48..69815baf 100644 --- a/rust/bridge/shared/types/src/incremental_mac.rs +++ b/rust/bridge/shared/types/src/incremental_mac.rs @@ -4,7 +4,6 @@ // use hmac::Hmac; - use libsignal_protocol::incremental_mac::{Incremental, Validating}; use crate::*; diff --git a/rust/bridge/shared/types/src/jni/convert.rs b/rust/bridge/shared/types/src/jni/convert.rs index 8ce3fd1b..47403553 100644 --- a/rust/bridge/shared/types/src/jni/convert.rs +++ b/rust/bridge/shared/types/src/jni/convert.rs @@ -3,24 +3,22 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use std::num::ParseIntError; +use std::ops::Deref; + use jni::objects::{AutoLocal, JByteBuffer, JMap, JObjectArray}; use jni::sys::{jbyte, JNI_FALSE, JNI_TRUE}; use jni::JNIEnv; use libsignal_net::cdsi::LookupResponseEntry; use libsignal_protocol::*; - use paste::paste; -use std::num::ParseIntError; -use std::ops::Deref; - +use super::*; use crate::io::{InputStream, SyncInputStream}; use crate::message_backup::MessageBackupValidationOutcome; use crate::net::chat::ResponseAndDebugInfo; use crate::support::{Array, AsType, FixedLengthBincodeSerializable, Serialized}; -use super::*; - /// Converts arguments from their JNI form to their Rust form. /// /// `ArgTypeInfo` has two required methods: `borrow` and `load_from`. The use site looks like this: diff --git a/rust/bridge/shared/types/src/jni/error.rs b/rust/bridge/shared/types/src/jni/error.rs index 1fa84f8d..78cfdbf1 100644 --- a/rust/bridge/shared/types/src/jni/error.rs +++ b/rust/bridge/shared/types/src/jni/error.rs @@ -2,16 +2,15 @@ // Copyright 2020-2021 Signal Messenger, LLC. // SPDX-License-Identifier: AGPL-3.0-only // -use http::uri::InvalidUri; use std::fmt; use std::io::{Error as IoError, ErrorKind as IoErrorKind}; use std::time::Duration; -use jni::objects::{GlobalRef, JObject, JString, JThrowable}; -use jni::{JNIEnv, JavaVM}; - use attest::hsm_enclave::Error as HsmEnclaveError; use device_transfer::Error as DeviceTransferError; +use http::uri::InvalidUri; +use jni::objects::{GlobalRef, JObject, JString, JThrowable}; +use jni::{JNIEnv, JavaVM}; use libsignal_net::chat::ChatServiceError; use libsignal_net::infra::ws::{WebSocketConnectError, WebSocketServiceError}; use libsignal_protocol::*; @@ -20,11 +19,10 @@ use signal_pin::Error as PinError; use usernames::{UsernameError, UsernameLinkError}; use zkgroup::{ZkGroupDeserializationFailure, ZkGroupVerificationFailure}; +use super::*; use crate::net::cdsi::CdsiError; use crate::support::describe_panic; -use super::*; - /// The top-level error type for when something goes wrong. #[derive(Debug, thiserror::Error)] pub enum SignalJniError { diff --git a/rust/bridge/shared/types/src/jni/futures.rs b/rust/bridge/shared/types/src/jni/futures.rs index 7750451b..e655fc90 100644 --- a/rust/bridge/shared/types/src/jni/futures.rs +++ b/rust/bridge/shared/types/src/jni/futures.rs @@ -3,12 +3,12 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use super::*; -use crate::support::{AsyncRuntime, ResultReporter}; +use std::future::Future; use futures_util::{FutureExt, TryFutureExt}; -use std::future::Future; +use super::*; +use crate::support::{AsyncRuntime, ResultReporter}; /// Used to complete a Java CompletableFuture from any thread. pub struct FutureCompleter { diff --git a/rust/bridge/shared/types/src/jni/io.rs b/rust/bridge/shared/types/src/jni/io.rs index d6f0c869..9d9a1530 100644 --- a/rust/bridge/shared/types/src/jni/io.rs +++ b/rust/bridge/shared/types/src/jni/io.rs @@ -9,7 +9,6 @@ use std::io; use async_trait::async_trait; use super::*; - use crate::io::{InputStream, InputStreamRead, SyncInputStream}; pub type JavaInputStream<'a> = JObject<'a>; diff --git a/rust/bridge/shared/types/src/jni/mod.rs b/rust/bridge/shared/types/src/jni/mod.rs index d4007d11..acb91627 100644 --- a/rust/bridge/shared/types/src/jni/mod.rs +++ b/rust/bridge/shared/types/src/jni/mod.rs @@ -9,7 +9,12 @@ use std::marker::PhantomData; use attest::enclave::Error as EnclaveError; use attest::hsm_enclave::Error as HsmEnclaveError; use device_transfer::Error as DeviceTransferError; +pub use jni::objects::{ + AutoElements, JByteArray, JClass, JLongArray, JObject, JObjectArray, JString, ReleaseMode, +}; use jni::objects::{GlobalRef, JThrowable, JValue, JValueOwned}; +pub use jni::sys::{jboolean, jint, jlong}; +pub use jni::JNIEnv; use jni::JavaVM; use libsignal_net::infra::ws::WebSocketServiceError; use libsignal_net::svr3::Error as Svr3Error; @@ -20,12 +25,6 @@ use usernames::{UsernameError, UsernameLinkError}; use crate::net::cdsi::CdsiError; -pub use jni::objects::{ - AutoElements, JByteArray, JClass, JLongArray, JObject, JObjectArray, JString, ReleaseMode, -}; -pub use jni::sys::{jboolean, jint, jlong}; -pub use jni::JNIEnv; - #[macro_use] mod args; pub use args::*; diff --git a/rust/bridge/shared/types/src/jni/storage.rs b/rust/bridge/shared/types/src/jni/storage.rs index a128f37e..a9c9c735 100644 --- a/rust/bridge/shared/types/src/jni/storage.rs +++ b/rust/bridge/shared/types/src/jni/storage.rs @@ -5,10 +5,11 @@ use std::cell::RefCell; -use super::*; use async_trait::async_trait; use uuid::Uuid; +use super::*; + pub type JavaIdentityKeyStore<'a> = JObject<'a>; pub type JavaPreKeyStore<'a> = JObject<'a>; pub type JavaSignedPreKeyStore<'a> = JObject<'a>; diff --git a/rust/bridge/shared/types/src/lib.rs b/rust/bridge/shared/types/src/lib.rs index 6f7a679a..aad0f196 100644 --- a/rust/bridge/shared/types/src/lib.rs +++ b/rust/bridge/shared/types/src/lib.rs @@ -34,10 +34,10 @@ pub mod zkgroup; // Desktop does not use SVR #[cfg(any(feature = "jni", feature = "ffi"))] mod pin { - use crate::*; - use ::signal_pin::PinHash; + use crate::*; + bridge_as_handle!(PinHash, node = false); } diff --git a/rust/bridge/shared/types/src/net.rs b/rust/bridge/shared/types/src/net.rs index 006d3ab0..c452365a 100644 --- a/rust/bridge/shared/types/src/net.rs +++ b/rust/bridge/shared/types/src/net.rs @@ -3,13 +3,14 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::*; +use std::marker::PhantomData; +use std::num::{NonZeroU16, NonZeroU32}; +use std::panic::RefUnwindSafe; use aes_gcm_siv::aead::rand_core::CryptoRngCore; use async_trait::async_trait; use futures_util::future::join3; use http::uri::PathAndQuery; - use libsignal_net::auth::Auth; use libsignal_net::enclave::{ Cdsi, EnclaveEndpoint, EnclaveEndpointConnection, EnclaveKind, Nitro, PpssSetup, Sgx, Tpm2Snp, @@ -29,9 +30,8 @@ use libsignal_net::svr3::{Error, OpaqueMaskedShareSet}; use libsignal_net::timeouts::ONE_ROUTE_CONNECTION_TIMEOUT; use libsignal_net::utils::ObservableEvent; use libsignal_svr3::EvaluationResult; -use std::marker::PhantomData; -use std::num::{NonZeroU16, NonZeroU32}; -use std::panic::RefUnwindSafe; + +use crate::*; pub mod cdsi; pub mod chat; @@ -328,10 +328,11 @@ mod empty_env { #[cfg(test)] mod test { - use super::*; use assert_matches::assert_matches; use test_case::test_case; + use super::*; + #[test_case(Environment::Staging; "staging")] #[test_case(Environment::Prod; "prod")] fn can_create_connection_manager(env: Environment) { diff --git a/rust/bridge/shared/types/src/net/cdsi.rs b/rust/bridge/shared/types/src/net/cdsi.rs index 90f224d5..b354269e 100644 --- a/rust/bridge/shared/types/src/net/cdsi.rs +++ b/rust/bridge/shared/types/src/net/cdsi.rs @@ -8,7 +8,6 @@ use libsignal_net::cdsi::{self, CdsiConnection, ClientResponseCollector, Token}; use libsignal_net::infra::tcp_ssl::TcpSslConnectorStream; use crate::net::ConnectionManager; - use crate::*; #[cfg(feature = "jni")] diff --git a/rust/bridge/shared/types/src/node/chat.rs b/rust/bridge/shared/types/src/node/chat.rs index 24c0dd00..38a10959 100644 --- a/rust/bridge/shared/types/src/node/chat.rs +++ b/rust/bridge/shared/types/src/node/chat.rs @@ -3,8 +3,8 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::net::chat::{ChatListener, MakeChatListener, ServerMessageAck}; -use crate::node::ResultTypeInfo; +use std::sync::Arc; + use libsignal_net::chat::ChatServiceError; use libsignal_protocol::Timestamp; use neon::context::FunctionContext; @@ -12,7 +12,9 @@ use neon::event::Channel; use neon::handle::{Handle, Root}; use neon::prelude::{Context, Finalize, JsObject, Object}; use signal_neon_futures::call_method; -use std::sync::Arc; + +use crate::net::chat::{ChatListener, MakeChatListener, ServerMessageAck}; +use crate::node::ResultTypeInfo; #[derive(Clone)] pub struct NodeChatListener { diff --git a/rust/bridge/shared/types/src/node/convert.rs b/rust/bridge/shared/types/src/node/convert.rs index b5834e44..ca56b347 100644 --- a/rust/bridge/shared/types/src/node/convert.rs +++ b/rust/bridge/shared/types/src/node/convert.rs @@ -3,26 +3,25 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use neon::prelude::*; -use neon::types::JsBigInt; -use paste::paste; use std::cell::RefCell; use std::collections::hash_map::DefaultHasher; - use std::fmt::Display; use std::hash::Hasher; use std::num::ParseIntError; use std::ops::{Deref, DerefMut, RangeInclusive}; use std::slice; +use neon::prelude::*; +use neon::types::JsBigInt; +use paste::paste; + +use super::*; use crate::io::{InputStream, SyncInputStream}; use crate::message_backup::MessageBackupValidationOutcome; use crate::net::chat::{MakeChatListener, ResponseAndDebugInfo}; use crate::node::chat::NodeMakeChatListener; use crate::support::{extend_lifetime, Array, AsType, FixedLengthBincodeSerializable, Serialized}; -use super::*; - /// Converts arguments from their JavaScript form to their Rust form. /// /// `ArgTypeInfo` has two required methods: `borrow` and `load_from`. The use site looks like this: diff --git a/rust/bridge/shared/types/src/node/futures.rs b/rust/bridge/shared/types/src/node/futures.rs index 02367dd2..5f88e769 100644 --- a/rust/bridge/shared/types/src/node/futures.rs +++ b/rust/bridge/shared/types/src/node/futures.rs @@ -10,12 +10,11 @@ use futures_util::FutureExt; use neon::types::{Deferred, JsBigInt}; use signal_neon_futures::ChannelEx; +use super::*; use crate::support::{ describe_panic, AsyncRuntime, AsyncRuntimeBase, CancellationId, ResultReporter, }; -use super::*; - #[derive(Debug, thiserror::Error, displaydoc::Display)] /// Promise cancelled pub struct CancellationError; diff --git a/rust/bridge/shared/types/src/node/io.rs b/rust/bridge/shared/types/src/node/io.rs index 4087173d..5adcef33 100644 --- a/rust/bridge/shared/types/src/node/io.rs +++ b/rust/bridge/shared/types/src/node/io.rs @@ -3,16 +3,16 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::io::{InputStream, InputStreamRead, SyncInputStream}; - -use super::*; +use std::cell::Cell; +use std::io::{Error as IoError, ErrorKind as IoErrorKind, Result as IoResult}; +use std::sync::Arc; use async_trait::async_trait; use futures_util::TryFutureExt; use signal_neon_futures::*; -use std::cell::Cell; -use std::io::{Error as IoError, ErrorKind as IoErrorKind, Result as IoResult}; -use std::sync::Arc; + +use super::*; +use crate::io::{InputStream, InputStreamRead, SyncInputStream}; pub struct NodeInputStream { js_channel: Channel, diff --git a/rust/bridge/shared/types/src/node/mod.rs b/rust/bridge/shared/types/src/node/mod.rs index c14b39ce..b35208e5 100644 --- a/rust/bridge/shared/types/src/node/mod.rs +++ b/rust/bridge/shared/types/src/node/mod.rs @@ -3,10 +3,9 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use libsignal_protocol::*; - use std::ops::Deref; +use libsignal_protocol::*; pub use neon::context::Context; pub use neon::prelude::*; pub use neon::types::buffer::TypedArray; diff --git a/rust/bridge/shared/types/src/node/storage.rs b/rust/bridge/shared/types/src/node/storage.rs index 21eeedbb..2afadb9d 100644 --- a/rust/bridge/shared/types/src/node/storage.rs +++ b/rust/bridge/shared/types/src/node/storage.rs @@ -3,14 +3,15 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use super::*; +use std::cell::RefCell; +use std::sync::Arc; use async_trait::async_trait; use signal_neon_futures::*; -use std::cell::RefCell; -use std::sync::Arc; use uuid::Uuid; +use super::*; + pub struct NodePreKeyStore { js_channel: Channel, store_object: Arc>, diff --git a/rust/bridge/shared/types/src/protocol.rs b/rust/bridge/shared/types/src/protocol.rs index a16d17eb..ad8e420d 100644 --- a/rust/bridge/shared/types/src/protocol.rs +++ b/rust/bridge/shared/types/src/protocol.rs @@ -3,12 +3,11 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use libsignal_protocol::*; -use static_assertions::const_assert_eq; - // Will be unused when building for Node only. #[allow(unused_imports)] use futures_util::FutureExt; +use libsignal_protocol::*; +use static_assertions::const_assert_eq; use crate::*; diff --git a/rust/bridge/shared/types/src/zkgroup.rs b/rust/bridge/shared/types/src/zkgroup.rs index a99f154c..92215fdf 100644 --- a/rust/bridge/shared/types/src/zkgroup.rs +++ b/rust/bridge/shared/types/src/zkgroup.rs @@ -4,18 +4,16 @@ // use ::zkgroup; - use partial_default::PartialDefault; - use serde::Deserialize; use zkgroup::groups::*; use zkgroup::profiles::*; use zkgroup::receipts::*; +pub use zkgroup::Timestamp; use zkgroup::*; use crate::support::*; use crate::*; -pub use zkgroup::Timestamp; /// Checks that `bytes` can be deserialized as a `T` using our standard bincode settings. pub fn validate_serialization<'a, T: Deserialize<'a> + PartialDefault>( diff --git a/rust/core/src/address.rs b/rust/core/src/address.rs index d16dc2a5..58aacccf 100644 --- a/rust/core/src/address.rs +++ b/rust/core/src/address.rs @@ -7,10 +7,10 @@ //! Types for identifying an individual Signal client instance. -use uuid::Uuid; - use std::fmt; +use uuid::Uuid; + /// Known types of [ServiceId]. #[derive(Clone, Copy, Hash, PartialEq, Eq, num_enum::IntoPrimitive, num_enum::TryFromPrimitive)] #[repr(u8)] @@ -331,12 +331,12 @@ where #[cfg(test)] mod service_id_tests { + use std::borrow::Borrow; + use proptest::prelude::*; use rand::seq::SliceRandom; use rand::thread_rng; - use std::borrow::Borrow; - use super::*; #[test] diff --git a/rust/crypto/src/aes_cbc.rs b/rust/crypto/src/aes_cbc.rs index cb25b4b8..f3925805 100644 --- a/rust/crypto/src/aes_cbc.rs +++ b/rust/crypto/src/aes_cbc.rs @@ -3,10 +3,11 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use std::result::Result; + use aes::cipher::block_padding::Pkcs7; use aes::cipher::{BlockDecryptMut, BlockEncryptMut, KeyIvInit}; use aes::Aes256; -use std::result::Result; #[derive(Debug, displaydoc::Display, thiserror::Error)] pub enum EncryptionError { @@ -51,9 +52,10 @@ pub fn aes_256_cbc_decrypt( #[cfg(test)] mod test { - use super::*; use hex_literal::hex; + use super::*; + #[test] fn aes_cbc_test() { let key = hex!("4e22eb16d964779994222e82192ce9f747da72dc4abe49dfdeeb71d0ffe3796e"); diff --git a/rust/crypto/src/aes_ctr.rs b/rust/crypto/src/aes_ctr.rs index 0a3ee01a..abf18f5f 100644 --- a/rust/crypto/src/aes_ctr.rs +++ b/rust/crypto/src/aes_ctr.rs @@ -3,11 +3,12 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::error::{Error, Result}; use aes::cipher::typenum::Unsigned; use aes::cipher::{InnerIvInit, KeyInit, StreamCipher, StreamCipherSeek}; use aes::Aes256; +use crate::error::{Error, Result}; + /// A wrapper around [`ctr::Ctr32BE`] that uses a smaller nonce and supports an initial counter. pub struct Aes256Ctr32(ctr::Ctr32BE); diff --git a/rust/crypto/src/aes_gcm.rs b/rust/crypto/src/aes_gcm.rs index 2e582440..5d4044ef 100644 --- a/rust/crypto/src/aes_gcm.rs +++ b/rust/crypto/src/aes_gcm.rs @@ -3,7 +3,6 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::{Aes256Ctr32, Error, Result}; use aes::cipher::generic_array::GenericArray; use aes::cipher::{BlockEncrypt, KeyInit}; use aes::Aes256; @@ -11,6 +10,8 @@ use ghash::universal_hash::UniversalHash; use ghash::GHash; use subtle::ConstantTimeEq; +use crate::{Aes256Ctr32, Error, Result}; + pub const TAG_SIZE: usize = 16; pub const NONCE_SIZE: usize = 12; diff --git a/rust/crypto/src/hash.rs b/rust/crypto/src/hash.rs index f45e534b..edddb64e 100644 --- a/rust/crypto/src/hash.rs +++ b/rust/crypto/src/hash.rs @@ -3,12 +3,12 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::{Error, Result}; - use hmac::{Hmac, Mac}; use sha1::Sha1; use sha2::{Digest, Sha256, Sha512}; +use crate::{Error, Result}; + #[derive(Clone)] pub enum CryptographicMac { HmacSha256(Hmac), diff --git a/rust/crypto/tests/aes_gcm.rs b/rust/crypto/tests/aes_gcm.rs index 3e47b920..cc7bfa55 100644 --- a/rust/crypto/tests/aes_gcm.rs +++ b/rust/crypto/tests/aes_gcm.rs @@ -3,10 +3,11 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use std::collections::HashMap; + use hex_literal::hex; use rand::Rng; use serde::Deserialize; -use std::collections::HashMap; #[allow(dead_code)] #[derive(Deserialize, Debug)] diff --git a/rust/device-transfer/tests/tests.rs b/rust/device-transfer/tests/tests.rs index 147411de..e8ec1523 100644 --- a/rust/device-transfer/tests/tests.rs +++ b/rust/device-transfer/tests/tests.rs @@ -4,14 +4,12 @@ // use std::cmp::Ordering; - use std::time::{Duration, SystemTime}; use boring::asn1::Asn1Time; use boring::pkey::PKey; use boring::rsa::Padding; use boring::x509::X509; - use device_transfer::*; #[test] diff --git a/rust/keytrans/src/commitments.rs b/rust/keytrans/src/commitments.rs index ca19bcbe..979dd244 100644 --- a/rust/keytrans/src/commitments.rs +++ b/rust/keytrans/src/commitments.rs @@ -36,10 +36,11 @@ pub fn verify(search_key: &[u8], commitment: &[u8], data: &[u8], nonce: &[u8; 16 #[cfg(test)] mod test { - use super::*; use hex_literal::hex; use test_case::test_case; + use super::*; + #[test_case(&[], &[], &hex!("edc3f59798cd87f2f48ec8836e2b6ef425cde9ab121ffdefc93d769db7cebabf") ; "empty")] #[test_case(b"foo", b"bar", &hex!("25df431e884358826fe66f96d65702580104240abd63fa741d9ea3f32914bbf5") ; "case_1")] #[test_case(b"foo1", b"bar", &hex!("6c31a163a7660d1467fc1c997bd78b0a70b8921ca76b7eb0c6ca077f1e5e121e") ; "case_2")] diff --git a/rust/keytrans/src/implicit.rs b/rust/keytrans/src/implicit.rs index f1c690b3..c45edfe7 100644 --- a/rust/keytrans/src/implicit.rs +++ b/rust/keytrans/src/implicit.rs @@ -119,10 +119,10 @@ pub fn next_monitor(entries: &[u64]) -> u64 { #[cfg(test)] mod test { - use super::*; - use proptest::prelude::*; + use super::*; + #[derive(Clone, Debug)] struct StartAndN { start: u64, diff --git a/rust/keytrans/src/log.rs b/rust/keytrans/src/log.rs index 94bd52e3..ed01993b 100644 --- a/rust/keytrans/src/log.rs +++ b/rust/keytrans/src/log.rs @@ -431,9 +431,10 @@ pub fn verify_consistency_proof( #[cfg(test)] mod test { - use super::*; use hex_literal::hex; + use super::*; + #[test] fn test_evaluate_batch_proof() { let mut values = [[0u8; 32]; 6]; diff --git a/rust/keytrans/src/prefix.rs b/rust/keytrans/src/prefix.rs index 2441a4d4..65efb601 100644 --- a/rust/keytrans/src/prefix.rs +++ b/rust/keytrans/src/prefix.rs @@ -5,9 +5,10 @@ //! Implements the Prefix Tree. use std::result::Result; -use crate::wire::PrefixProof as SearchResult; use sha2::{Digest as _, Sha256}; +use crate::wire::PrefixProof as SearchResult; + const KEY_LENGTH: usize = 32; /// Malformed proof diff --git a/rust/keytrans/src/vrf.rs b/rust/keytrans/src/vrf.rs index 21463bda..0f55bdd9 100644 --- a/rust/keytrans/src/vrf.rs +++ b/rust/keytrans/src/vrf.rs @@ -136,9 +136,10 @@ impl PublicKey { #[cfg(test)] mod tests { - use super::*; use hex_literal::hex; + use super::*; + struct TestVector { pk: [u8; 32], alpha: &'static [u8], diff --git a/rust/media/src/sanitize/mp4.rs b/rust/media/src/sanitize/mp4.rs index ff106d60..a6a4750e 100644 --- a/rust/media/src/sanitize/mp4.rs +++ b/rust/media/src/sanitize/mp4.rs @@ -5,9 +5,8 @@ use futures_util::AsyncRead; use mediasan_common::AsyncSkip; -use mp4san::{sanitize_async_with_config, Config}; - pub use mp4san::parse::ParseError; +use mp4san::{sanitize_async_with_config, Config}; pub use mp4san::{InputSpan, SanitizedMetadata}; /// Error type returned by [`sanitize_mp4`]. diff --git a/rust/message-backup/src/backup/account_data.rs b/rust/message-backup/src/backup/account_data.rs index 596929cc..90dc00a4 100644 --- a/rust/message-backup/src/backup/account_data.rs +++ b/rust/message-backup/src/backup/account_data.rs @@ -353,11 +353,10 @@ mod test { use test_case::test_case; use uuid::Uuid; + use super::*; use crate::backup::chat::chat_style::{BubbleColor, CustomChatColor, CustomColorId}; use crate::backup::method::{Store, ValidateOnly}; - use super::*; - impl proto::AccountData { pub(crate) fn test_data() -> Self { Self { diff --git a/rust/message-backup/src/backup/call.rs b/rust/message-backup/src/backup/call.rs index de017618..8165769f 100644 --- a/rust/message-backup/src/backup/call.rs +++ b/rust/message-backup/src/backup/call.rs @@ -357,12 +357,11 @@ pub(crate) mod test { use protobuf::EnumOrUnknown; use test_case::test_case; + use super::*; use crate::backup::time::testutil::MillisecondsSinceEpoch; use crate::backup::time::Duration; use crate::backup::TryIntoWith as _; - use super::*; - impl proto::IndividualCall { const TEST_ID: CallId = CallId(33333); diff --git a/rust/message-backup/src/backup/chat.rs b/rust/message-backup/src/backup/chat.rs index 016faab6..e869b46a 100644 --- a/rust/message-backup/src/backup/chat.rs +++ b/rust/message-backup/src/backup/chat.rs @@ -693,18 +693,16 @@ mod test { use std::time::UNIX_EPOCH; use assert_matches::assert_matches; - use protobuf::SpecialFields; use test_case::test_case; + use super::*; use crate::backup::chat::testutil::TestContext; use crate::backup::method::Store; use crate::backup::recipient::FullRecipientData; use crate::backup::time::testutil::MillisecondsSinceEpoch; use crate::backup::Purpose; - use super::*; - impl proto::ChatItem { pub(crate) fn test_data() -> Self { Self { diff --git a/rust/message-backup/src/backup/chat/chat_style.rs b/rust/message-backup/src/backup/chat/chat_style.rs index c999f8e7..df98365f 100644 --- a/rust/message-backup/src/backup/chat/chat_style.rs +++ b/rust/message-backup/src/backup/chat/chat_style.rs @@ -405,12 +405,11 @@ mod test { use test_case::test_case; + use super::*; use crate::backup::chat::chat_style::Color; use crate::backup::chat::testutil::TestContext; use crate::backup::method::Store; - use super::*; - impl proto::ChatStyle { fn test_data() -> Self { Self { diff --git a/rust/message-backup/src/backup/chat/contact_message.rs b/rust/message-backup/src/backup/chat/contact_message.rs index ac39abbc..83c69a05 100644 --- a/rust/message-backup/src/backup/chat/contact_message.rs +++ b/rust/message-backup/src/backup/chat/contact_message.rs @@ -172,12 +172,11 @@ impl TryFrom for ContactAttachment { mod test { use test_case::test_case; + use super::*; use crate::backup::chat::testutil::TestContext; use crate::backup::chat::ReactionError; use crate::backup::recipient::FullRecipientData; - use super::*; - impl proto::ContactMessage { fn test_data() -> Self { Self { diff --git a/rust/message-backup/src/backup/chat/group.rs b/rust/message-backup/src/backup/chat/group.rs index 026ba107..a0ae5524 100644 --- a/rust/message-backup/src/backup/chat/group.rs +++ b/rust/message-backup/src/backup/chat/group.rs @@ -494,9 +494,8 @@ impl Debug for NoValidation { mod test { use test_case::test_case; - use crate::proto::backup::{group_change_chat_update, group_invitation_revoked_update}; - use super::*; + use crate::proto::backup::{group_change_chat_update, group_invitation_revoked_update}; const ACI_BYTES: [u8; 16] = [0xaa; 16]; const ACI: Aci = Aci::from_uuid_bytes(ACI_BYTES); diff --git a/rust/message-backup/src/backup/chat/link.rs b/rust/message-backup/src/backup/chat/link.rs index fc91fe13..5e3ec459 100644 --- a/rust/message-backup/src/backup/chat/link.rs +++ b/rust/message-backup/src/backup/chat/link.rs @@ -5,7 +5,6 @@ use crate::backup::file::{FilePointer, FilePointerError}; use crate::backup::time::Timestamp; - use crate::proto::backup as proto; #[derive(Debug, serde::Serialize)] @@ -60,9 +59,8 @@ impl TryFrom for LinkPreview { mod test { use test_case::test_case; - use crate::backup::time::testutil::MillisecondsSinceEpoch; - use super::*; + use crate::backup::time::testutil::MillisecondsSinceEpoch; impl proto::LinkPreview { fn test_data() -> Self { diff --git a/rust/message-backup/src/backup/chat/payment.rs b/rust/message-backup/src/backup/chat/payment.rs index c7fd92f8..c50c74ce 100644 --- a/rust/message-backup/src/backup/chat/payment.rs +++ b/rust/message-backup/src/backup/chat/payment.rs @@ -258,9 +258,8 @@ mod test { use test_case::test_case; - use crate::backup::time::testutil::MillisecondsSinceEpoch; - use super::*; + use crate::backup::time::testutil::MillisecondsSinceEpoch; impl FromStr for MobAmount { type Err = ParseError; diff --git a/rust/message-backup/src/backup/chat/quote.rs b/rust/message-backup/src/backup/chat/quote.rs index 8088d372..643f32e3 100644 --- a/rust/message-backup/src/backup/chat/quote.rs +++ b/rust/message-backup/src/backup/chat/quote.rs @@ -141,12 +141,11 @@ impl TryFrom for QuotedAttachment { mod test { use test_case::test_case; + use super::*; use crate::backup::chat::testutil::TestContext; use crate::backup::recipient::FullRecipientData; use crate::backup::time::testutil::MillisecondsSinceEpoch; - use super::*; - impl proto::quote::QuotedAttachment { fn test_data() -> Self { Self { diff --git a/rust/message-backup/src/backup/chat/standard_message.rs b/rust/message-backup/src/backup/chat/standard_message.rs index e0adc919..1069d727 100644 --- a/rust/message-backup/src/backup/chat/standard_message.rs +++ b/rust/message-backup/src/backup/chat/standard_message.rs @@ -85,12 +85,11 @@ impl> TryFromWith #[cfg(test)] mod test { + use super::*; use crate::backup::chat::testutil::TestContext; use crate::backup::recipient::FullRecipientData; use crate::backup::time::{Duration, Timestamp}; - use super::*; - impl proto::StandardMessage { pub(crate) fn test_data() -> Self { Self { diff --git a/rust/message-backup/src/backup/chat/sticker_message.rs b/rust/message-backup/src/backup/chat/sticker_message.rs index 55698449..ac883a0a 100644 --- a/rust/message-backup/src/backup/chat/sticker_message.rs +++ b/rust/message-backup/src/backup/chat/sticker_message.rs @@ -54,12 +54,11 @@ impl> TryFromWith mod test { use test_case::test_case; + use super::*; use crate::backup::chat::testutil::TestContext; use crate::backup::chat::ReactionError; use crate::backup::recipient::FullRecipientData; - use super::*; - impl proto::StickerMessage { pub(crate) fn test_data() -> Self { Self { diff --git a/rust/message-backup/src/backup/chat/testutil.rs b/rust/message-backup/src/backup/chat/testutil.rs index 29ff5b6a..3d87fd5f 100644 --- a/rust/message-backup/src/backup/chat/testutil.rs +++ b/rust/message-backup/src/backup/chat/testutil.rs @@ -8,6 +8,7 @@ use std::sync::Arc; use nonzero_ext::nonzero; use once_cell::sync::Lazy; +use super::chat_style::CustomChatColor; use crate::backup::chat::chat_style::CustomColorId; use crate::backup::chat::PinOrder; use crate::backup::frame::RecipientId; @@ -17,8 +18,6 @@ use crate::backup::time::Timestamp; use crate::backup::{BackupMeta, Purpose}; use crate::proto::backup as proto; -use super::chat_style::CustomChatColor; - pub(super) struct TestContext(pub(super) BackupMeta); impl Default for TestContext { diff --git a/rust/message-backup/src/backup/chat/text.rs b/rust/message-backup/src/backup/chat/text.rs index 8554c3fb..94f6a7ec 100644 --- a/rust/message-backup/src/backup/chat/text.rs +++ b/rust/message-backup/src/backup/chat/text.rs @@ -84,9 +84,8 @@ impl TryFrom for MessageText { #[cfg(test)] mod test { - use crate::backup::chat::testutil::TEST_MESSAGE_TEXT; - use super::*; + use crate::backup::chat::testutil::TEST_MESSAGE_TEXT; impl proto::Text { pub(crate) fn test_data() -> Self { diff --git a/rust/message-backup/src/backup/chat/update_message.rs b/rust/message-backup/src/backup/chat/update_message.rs index 6d28a82c..fb1a5de0 100644 --- a/rust/message-backup/src/backup/chat/update_message.rs +++ b/rust/message-backup/src/backup/chat/update_message.rs @@ -167,12 +167,11 @@ mod test { use assert_matches::assert_matches; use test_case::test_case; + use super::*; use crate::backup::call::CallError; use crate::backup::chat::testutil::TestContext; use crate::proto::backup::chat_update_message::Update as ChatUpdateProto; - use super::*; - impl proto::SimpleChatUpdate { pub(crate) fn test_data() -> Self { Self { diff --git a/rust/message-backup/src/backup/chat/voice_message.rs b/rust/message-backup/src/backup/chat/voice_message.rs index c5fa0150..526f9aa0 100644 --- a/rust/message-backup/src/backup/chat/voice_message.rs +++ b/rust/message-backup/src/backup/chat/voice_message.rs @@ -94,11 +94,10 @@ impl> TryFromWith mod test { use test_case::test_case; + use super::*; use crate::backup::chat::testutil::TestContext; use crate::backup::recipient::FullRecipientData; - use super::*; - #[test] fn valid_voice_message() { assert_eq!( diff --git a/rust/message-backup/src/backup/file.rs b/rust/message-backup/src/backup/file.rs index 5de28acf..e3866f5d 100644 --- a/rust/message-backup/src/backup/file.rs +++ b/rust/message-backup/src/backup/file.rs @@ -276,9 +276,8 @@ mod test { use hex_literal::hex; use test_case::test_case; - use crate::backup::time::testutil::MillisecondsSinceEpoch; - use super::*; + use crate::backup::time::testutil::MillisecondsSinceEpoch; impl proto::file_pointer::BackupLocator { fn test_data() -> Self { diff --git a/rust/message-backup/src/backup/recipient.rs b/rust/message-backup/src/backup/recipient.rs index 24ffbadd..ff34140a 100644 --- a/rust/message-backup/src/backup/recipient.rs +++ b/rust/message-backup/src/backup/recipient.rs @@ -475,11 +475,10 @@ mod test { use protobuf::EnumOrUnknown; use test_case::test_case; + use super::*; use crate::backup::method::{Lookup, Store}; use crate::backup::FullRecipientData; - use super::*; - impl proto::Recipient { pub(crate) const TEST_ID: u64 = 11111; pub(crate) fn test_data() -> Self { diff --git a/rust/message-backup/src/backup/recipient/group.rs b/rust/message-backup/src/backup/recipient/group.rs index c5d90b1e..4d2383b4 100644 --- a/rust/message-backup/src/backup/recipient/group.rs +++ b/rust/message-backup/src/backup/recipient/group.rs @@ -332,9 +332,8 @@ mod test { use libsignal_core::Aci; use test_case::test_case; - use crate::proto::backup::group::access_control::AccessRequired; - use super::*; + use crate::proto::backup::group::access_control::AccessRequired; impl proto::Group { pub(crate) const TEST_MASTER_KEY: GroupMasterKeyBytes = [0x33; 32]; diff --git a/rust/message-backup/src/backup/recipient/group/members.rs b/rust/message-backup/src/backup/recipient/group/members.rs index 95a97ae5..2c05b31c 100644 --- a/rust/message-backup/src/backup/recipient/group/members.rs +++ b/rust/message-backup/src/backup/recipient/group/members.rs @@ -6,12 +6,11 @@ use libsignal_core::{Aci, ServiceId, WrongKindOfServiceIdError}; use zkgroup::ProfileKeyBytes; +use super::GroupError; use crate::backup::serialize::{self, SerializeOrder}; use crate::backup::time::Timestamp; use crate::proto::backup as proto; -use super::GroupError; - #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)] pub enum Role { Default, @@ -255,9 +254,8 @@ mod tests { use libsignal_core::{Pni, ServiceIdKind}; use test_case::test_case; - use crate::backup::time::testutil::MillisecondsSinceEpoch; - use super::*; + use crate::backup::time::testutil::MillisecondsSinceEpoch; impl proto::group::Member { pub(crate) fn test_data() -> Self { diff --git a/rust/message-backup/src/backup/serialize.rs b/rust/message-backup/src/backup/serialize.rs index 0ad02df8..c7f7b7a9 100644 --- a/rust/message-backup/src/backup/serialize.rs +++ b/rust/message-backup/src/backup/serialize.rs @@ -353,12 +353,11 @@ impl serde::Serialize for proto::learned_profile_chat_update::PreviousName { #[cfg(test)] mod test { + use super::*; use crate::backup::frame::ChatId; use crate::backup::time::Timestamp; use crate::proto::backup as proto; - use super::*; - impl proto::BackupInfo { fn test_data() -> Self { Self { diff --git a/rust/message-backup/src/backup/sticker.rs b/rust/message-backup/src/backup/sticker.rs index 0b5a480c..49e5ae98 100644 --- a/rust/message-backup/src/backup/sticker.rs +++ b/rust/message-backup/src/backup/sticker.rs @@ -138,9 +138,8 @@ impl TryFrom for MessageSticker { mod test { use test_case::test_case; - use crate::backup::method::Store; - use super::*; + use crate::backup::method::Store; impl proto::StickerPack { pub(crate) const TEST_ID: PackId = PackId(Self::TEST_ID_BYTES); diff --git a/rust/message-backup/src/backup/time.rs b/rust/message-backup/src/backup/time.rs index c16f6f5f..276352a2 100644 --- a/rust/message-backup/src/backup/time.rs +++ b/rust/message-backup/src/backup/time.rs @@ -99,9 +99,8 @@ pub(super) mod testutil { mod test { use test_case::{test_case, test_matrix}; - use crate::backup::time::testutil::{MillisecondsSinceEpoch, FIXED_DATE}; - use super::*; + use crate::backup::time::testutil::{MillisecondsSinceEpoch, FIXED_DATE}; impl Timestamp { pub(crate) fn test_value() -> Self { diff --git a/rust/message-backup/src/bin/validator/main.rs b/rust/message-backup/src/bin/validator/main.rs index 4891dd44..209c05a5 100644 --- a/rust/message-backup/src/bin/validator/main.rs +++ b/rust/message-backup/src/bin/validator/main.rs @@ -8,7 +8,6 @@ use std::io::Read as _; use clap::{Args, Parser}; use futures::io::AllowStdIo; use futures::AsyncRead; - use libsignal_core::Aci; use libsignal_message_backup::args::{parse_aci, parse_hex_bytes}; use libsignal_message_backup::backup::Purpose; diff --git a/rust/message-backup/src/frame.rs b/rust/message-backup/src/frame.rs index be096857..374ccbe3 100644 --- a/rust/message-backup/src/frame.rs +++ b/rust/message-backup/src/frame.rs @@ -221,20 +221,17 @@ async fn hmac_sha256( #[cfg(test)] mod test { use aes::cipher::crypto_common::rand_core::{OsRng, RngCore as _}; - use futures::io::ErrorKind; - use array_concat::concat_arrays; use assert_matches::assert_matches; use async_compression::futures::write::GzipEncoder; use futures::executor::block_on; - use futures::io::Cursor; + use futures::io::{Cursor, ErrorKind}; use futures::AsyncWriteExt; use hex_literal::hex; use test_case::test_case; - use crate::key::test::FAKE_MESSAGE_BACKUP_KEY; - use super::*; + use crate::key::test::FAKE_MESSAGE_BACKUP_KEY; #[test] fn frame_from_raw_too_short() { diff --git a/rust/message-backup/src/frame/block_stream.rs b/rust/message-backup/src/frame/block_stream.rs index f1dae264..474a09c3 100644 --- a/rust/message-backup/src/frame/block_stream.rs +++ b/rust/message-backup/src/frame/block_stream.rs @@ -127,11 +127,12 @@ impl ExactReadBlockStream { #[cfg(test)] mod test { - use super::*; use assert_matches::assert_matches; use futures::executor::block_on; use futures::{FutureExt, StreamExt, TryStreamExt as _}; + use super::*; + #[test] fn empty() { let mut stream = BlockStream::<10, _>::new([].as_slice()); diff --git a/rust/message-backup/src/frame/mac_read.rs b/rust/message-backup/src/frame/mac_read.rs index bc3bcb1c..466c5ab8 100644 --- a/rust/message-backup/src/frame/mac_read.rs +++ b/rust/message-backup/src/frame/mac_read.rs @@ -51,9 +51,8 @@ mod test { use hmac::{Hmac, Mac as _}; use sha2::Sha256; - use crate::frame::HMAC_LEN; - use super::*; + use crate::frame::HMAC_LEN; #[test] fn mac_read() { diff --git a/rust/message-backup/src/unknown.rs b/rust/message-backup/src/unknown.rs index 25ba281f..95ba8f20 100644 --- a/rust/message-backup/src/unknown.rs +++ b/rust/message-backup/src/unknown.rs @@ -203,7 +203,6 @@ mod test { use test_case::{test_case, test_matrix}; use super::*; - use crate::proto::test as proto; trait ProtoWireCast { diff --git a/rust/message-backup/src/unknown/visit_static.rs b/rust/message-backup/src/unknown/visit_static.rs index f9d1df26..b08aa9c7 100644 --- a/rust/message-backup/src/unknown/visit_static.rs +++ b/rust/message-backup/src/unknown/visit_static.rs @@ -6,9 +6,8 @@ use std::collections::HashMap; use std::ops::ControlFlow; -use protobuf::{EnumOrUnknown, MessageField, SpecialFields, UnknownFields}; - pub(crate) use libsignal_message_backup_macros::VisitUnknownFields; +use protobuf::{EnumOrUnknown, MessageField, SpecialFields, UnknownFields}; use crate::unknown::{MapKey, Part, Path, UnknownFieldVisitor, UnknownValue}; diff --git a/rust/net/examples/cdsi_lookup.rs b/rust/net/examples/cdsi_lookup.rs index d088b256..7464f5b3 100644 --- a/rust/net/examples/cdsi_lookup.rs +++ b/rust/net/examples/cdsi_lookup.rs @@ -6,16 +6,15 @@ use std::time::Duration; -use libsignal_net::infra::connection_manager::ConnectionManager; -use libsignal_net::infra::dns::DnsResolver; -use libsignal_net::utils::ObservableEvent; -use tokio::io::AsyncBufReadExt as _; - use libsignal_net::auth::Auth; use libsignal_net::cdsi::{CdsiConnection, LookupError, LookupRequest, LookupResponse}; use libsignal_net::enclave::{Cdsi, EnclaveEndpointConnection}; +use libsignal_net::infra::connection_manager::ConnectionManager; +use libsignal_net::infra::dns::DnsResolver; use libsignal_net::infra::tcp_ssl::DirectConnector as TcpSslTransportConnector; use libsignal_net::infra::TransportConnector; +use libsignal_net::utils::ObservableEvent; +use tokio::io::AsyncBufReadExt as _; async fn cdsi_lookup( auth: Auth, diff --git a/rust/net/examples/chat_smoke_test.rs b/rust/net/examples/chat_smoke_test.rs index 628efd42..78e908e1 100644 --- a/rust/net/examples/chat_smoke_test.rs +++ b/rust/net/examples/chat_smoke_test.rs @@ -6,7 +6,6 @@ use std::process::ExitCode; use clap::{Args, Parser, ValueEnum}; - use libsignal_net::auth::Auth; use libsignal_net::chat::test_support::simple_chat_service; use libsignal_net::chat::ChatServiceError; diff --git a/rust/net/examples/dns_custom_lookup.rs b/rust/net/examples/dns_custom_lookup.rs index 54d9b57e..7e3491f6 100644 --- a/rust/net/examples/dns_custom_lookup.rs +++ b/rust/net/examples/dns_custom_lookup.rs @@ -2,6 +2,9 @@ // Copyright 2024 Signal Messenger, LLC. // SPDX-License-Identifier: AGPL-3.0-only // +use std::net::IpAddr; +use std::sync::Arc; + use clap::{Parser, ValueEnum}; use const_str::ip_addr; use either::{for_both, Either}; @@ -16,8 +19,6 @@ use libsignal_net::infra::{ }; use libsignal_net::utils::ObservableEvent; use nonzero_ext::nonzero; -use std::net::IpAddr; -use std::sync::Arc; use tokio::time::Instant; #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, ValueEnum, Debug)] diff --git a/rust/net/examples/dns_over_https.rs b/rust/net/examples/dns_over_https.rs index 7f9f2ba0..4a389bca 100644 --- a/rust/net/examples/dns_over_https.rs +++ b/rust/net/examples/dns_over_https.rs @@ -2,6 +2,10 @@ // Copyright 2024 Signal Messenger, LLC. // SPDX-License-Identifier: AGPL-3.0-only // +use std::convert::Infallible; +use std::num::NonZeroU16; +use std::sync::Arc; + use clap::Parser; use futures_util::StreamExt; use libsignal_net::infra::certs::RootCertificates; @@ -12,9 +16,6 @@ use libsignal_net::infra::host::Host; use libsignal_net::infra::{ ConnectionParams, HttpRequestDecoratorSeq, RouteType, TransportConnectionParams, }; -use std::convert::Infallible; -use std::num::NonZeroU16; -use std::sync::Arc; #[derive(Parser, Debug)] struct Args { diff --git a/rust/net/examples/dns_over_udp.rs b/rust/net/examples/dns_over_udp.rs index 7b1da9d2..c75f0665 100644 --- a/rust/net/examples/dns_over_udp.rs +++ b/rust/net/examples/dns_over_udp.rs @@ -2,14 +2,15 @@ // Copyright 2024 Signal Messenger, LLC. // SPDX-License-Identifier: AGPL-3.0-only // +use std::net::IpAddr; +use std::str::FromStr; +use std::sync::Arc; + use clap::Parser; use futures_util::StreamExt; use libsignal_net::infra::dns::custom_resolver::DnsTransport; use libsignal_net::infra::dns::dns_lookup::DnsLookupRequest; use libsignal_net::infra::dns::dns_transport_udp::UdpTransport; -use std::net::IpAddr; -use std::str::FromStr; -use std::sync::Arc; #[derive(Parser, Debug)] struct Args { diff --git a/rust/net/examples/svr3.rs b/rust/net/examples/svr3.rs index a09488dd..fa13e0c7 100644 --- a/rust/net/examples/svr3.rs +++ b/rust/net/examples/svr3.rs @@ -14,9 +14,6 @@ use async_trait::async_trait; use base64::prelude::{Engine, BASE64_STANDARD}; use clap::Parser; use colored::Colorize as _; -use nonzero_ext::nonzero; -use rand_core::{CryptoRngCore, OsRng, RngCore}; - use libsignal_net::auth::Auth; use libsignal_net::enclave::PpssSetup; use libsignal_net::env::Svr3Env; @@ -24,6 +21,8 @@ use libsignal_net::infra::tcp_ssl::DirectConnector; use libsignal_net::infra::TransportConnector; use libsignal_net::svr3::traits::*; use libsignal_net::svr3::{Error, OpaqueMaskedShareSet}; +use nonzero_ext::nonzero; +use rand_core::{CryptoRngCore, OsRng, RngCore}; #[derive(Parser, Debug)] struct Args { diff --git a/rust/net/examples/svr3_2xsgx.rs b/rust/net/examples/svr3_2xsgx.rs index 2d98d9f9..67a1ff5a 100644 --- a/rust/net/examples/svr3_2xsgx.rs +++ b/rust/net/examples/svr3_2xsgx.rs @@ -17,10 +17,6 @@ use attest::svr2::RaftConfig; use base64::prelude::{Engine, BASE64_STANDARD}; use clap::Parser; use hex_literal::hex; -use libsignal_net::utils::ObservableEvent; -use nonzero_ext::nonzero; -use rand_core::{CryptoRngCore, OsRng, RngCore}; - use libsignal_net::auth::Auth; use libsignal_net::enclave::{ self, EnclaveEndpoint, EnclaveEndpointConnection, EndpointParams, MrEnclave, PpssSetup, Sgx, @@ -34,6 +30,9 @@ use libsignal_net::infra::TransportConnector; use libsignal_net::svr::SvrConnection; use libsignal_net::svr3::traits::*; use libsignal_net::svr3::OpaqueMaskedShareSet; +use libsignal_net::utils::ObservableEvent; +use nonzero_ext::nonzero; +use rand_core::{CryptoRngCore, OsRng, RngCore}; const TEST_SERVER_CERT: RootCertificates = RootCertificates::FromDer(Cow::Borrowed( include_bytes!("../res/sgx_test_server_cert.cer"), diff --git a/rust/net/examples/svr3_prop_test.rs b/rust/net/examples/svr3_prop_test.rs index a2cd80f2..f74be99f 100644 --- a/rust/net/examples/svr3_prop_test.rs +++ b/rust/net/examples/svr3_prop_test.rs @@ -8,11 +8,6 @@ use std::time::Duration; use assert_matches::assert_matches; use async_trait::async_trait; -use proptest::prelude::*; -use proptest::test_runner::Config; -use proptest_state_machine::{prop_state_machine, ReferenceStateMachine, StateMachineTest}; -use rand_core::OsRng; - use libsignal_net::auth::Auth; use libsignal_net::enclave::PpssSetup; use libsignal_net::env::Svr3Env; @@ -20,7 +15,10 @@ use libsignal_net::infra::ws::DefaultStream; use libsignal_net::svr3::traits::*; use libsignal_net::svr3::{Error, OpaqueMaskedShareSet}; use libsignal_svr3::EvaluationResult; - +use proptest::prelude::*; +use proptest::test_runner::Config; +use proptest_state_machine::{prop_state_machine, ReferenceStateMachine, StateMachineTest}; +use rand_core::OsRng; use support::*; const MAX_TRIES_LIMIT: u32 = 10; diff --git a/rust/net/src/cdsi.rs b/rust/net/src/cdsi.rs index 3d275b69..213c8b95 100644 --- a/rust/net/src/cdsi.rs +++ b/rust/net/src/cdsi.rs @@ -480,9 +480,9 @@ mod test { use uuid::Uuid; use warp::Filter as _; + use super::*; use crate::auth::Auth; use crate::infra::test::shared::InMemoryWarpConnector; - use crate::infra::ws::testutil::{ fake_websocket, mock_connection_info, run_attested_server, AttestedServerOutput, FAKE_ATTESTATION, @@ -490,8 +490,6 @@ mod test { use crate::infra::ws::WebSocketClient; use crate::utils::ObservableEvent; - use super::*; - #[test] fn parse_lookup_response_entries() { const ACI_BYTES: [u8; 16] = hex!("0102030405060708a1a2a3a4a5a6a7a8"); diff --git a/rust/net/src/chat.rs b/rust/net/src/chat.rs index 240bb7a3..57310f12 100644 --- a/rust/net/src/chat.rs +++ b/rust/net/src/chat.rs @@ -22,9 +22,10 @@ use crate::proto; use crate::utils::basic_authorization; mod error; +pub use error::ChatServiceError; + use crate::env::RECEIVE_STORIES_HEADER_NAME; use crate::timeouts::MULTI_ROUTE_CONNECTION_TIMEOUT; -pub use error::ChatServiceError; pub mod noise; pub mod server_requests; @@ -483,6 +484,7 @@ pub mod test_support { use http::uri::PathAndQuery; use tokio::sync::mpsc; + use super::*; use crate::auth::Auth; use crate::chat::{Chat, ChatServiceWithDebugInfo}; use crate::env::constants::WEB_SOCKET_PATH; @@ -492,8 +494,6 @@ pub mod test_support { use crate::infra::{make_ws_config, ConnectionParams, EndpointConnection}; use crate::utils::ObservableEvent; - use super::*; - pub type AnyChat = Chat< Arc, Arc, @@ -534,10 +534,11 @@ pub mod test_support { #[cfg(test)] pub(crate) mod test { - use crate::chat::{Response, ResponseProto, ResponseProtoInvalidError}; use assert_matches::assert_matches; use http::{HeaderName, HeaderValue}; + use crate::chat::{Response, ResponseProto, ResponseProtoInvalidError}; + pub(crate) mod shared { use std::fmt::Debug; use std::sync::Arc; diff --git a/rust/net/src/chat/noise/encrypted_stream.rs b/rust/net/src/chat/noise/encrypted_stream.rs index cfb21481..a1884b6e 100644 --- a/rust/net/src/chat/noise/encrypted_stream.rs +++ b/rust/net/src/chat/noise/encrypted_stream.rs @@ -13,11 +13,10 @@ use tokio::io::{AsyncRead, AsyncWrite, ReadBuf}; use uuid::Uuid; use zerocopy::{AsBytes, FromBytes, FromZeroes}; -use crate::infra::noise::{NoiseStream, Transport}; - use super::handshake::{HandshakeAuth, Handshaker, EPHEMERAL_KEY_LEN, STATIC_KEY_LEN}; use super::waker::SharedWakers; use super::SendError; +use crate::infra::noise::{NoiseStream, Transport}; /// A Noise-encrypted stream that wraps an underlying block-based [`Transport`]. /// @@ -281,7 +280,6 @@ mod test { use tokio::io::{AsyncReadExt, AsyncWriteExt}; use super::*; - use crate::chat::noise::handshake::PAYLOAD_AEAD_TAG_LEN; use crate::infra::noise::testutil::{echo_forever, TestStream}; use crate::utils::testutil::TestWaker; diff --git a/rust/net/src/chat/noise/handshake.rs b/rust/net/src/chat/noise/handshake.rs index 9b6afdcc..a522ad68 100644 --- a/rust/net/src/chat/noise/handshake.rs +++ b/rust/net/src/chat/noise/handshake.rs @@ -11,9 +11,8 @@ use std::task::{ready, Poll}; use futures_util::{SinkExt as _, StreamExt as _}; use snow::HandshakeState; -use crate::infra::noise::{NoiseStream, Transport}; - use super::SendError; +use crate::infra::noise::{NoiseStream, Transport}; /// Future that performs a Noise handshake over a [`Transport`]. pub(super) struct Handshaker { @@ -271,11 +270,10 @@ mod test { use futures_util::FutureExt; use test_case::test_case; + use super::*; use crate::infra::noise::testutil::TestStream; use crate::utils::testutil::TestWaker; - use super::*; - #[test_case(false; "flush")] #[test_case(true; "shutdown")] fn send_starts_after(shutdown: bool) { diff --git a/rust/net/src/chat/ws.rs b/rust/net/src/chat/ws.rs index 1d855ed7..5433316e 100644 --- a/rust/net/src/chat/ws.rs +++ b/rust/net/src/chat/ws.rs @@ -446,7 +446,6 @@ mod test { ChatOverWebSocketServiceConnector, ChatServiceError, RequestId, ServerEvent, }; use crate::chat::{ChatMessageType, ChatService, MessageProto, ResponseProto}; - use crate::infra::test::shared::{ InMemoryWarpConnector, NoReconnectService, TestError, TIMEOUT_DURATION, }; diff --git a/rust/net/src/enclave.rs b/rust/net/src/enclave.rs index dc58ec63..97eecb5c 100644 --- a/rust/net/src/enclave.rs +++ b/rust/net/src/enclave.rs @@ -442,6 +442,7 @@ mod test { use tokio::net::TcpStream; use tokio_boring_signal::SslStream; + use super::*; use crate::auth::Auth; use crate::infra::connection_manager::ConnectionAttemptOutcome; use crate::infra::errors::TransportConnectError; @@ -450,8 +451,6 @@ mod test { Alpn, HttpRequestDecoratorSeq, RouteType, StreamAndInfo, TransportConnectionParams, }; - use super::*; - #[derive(Clone, Debug)] struct AlwaysFailingConnector; diff --git a/rust/net/src/infra.rs b/rust/net/src/infra.rs index a3195bc6..e932bdb0 100644 --- a/rust/net/src/infra.rs +++ b/rust/net/src/infra.rs @@ -10,9 +10,6 @@ use std::string::ToString; use std::sync::Arc; use std::time::Duration; -use crate::infra::host::Host; -use crate::timeouts::{WS_KEEP_ALIVE_INTERVAL, WS_MAX_IDLE_INTERVAL}; -use crate::utils::ObservableEvent; use ::http::uri::PathAndQuery; use ::http::Uri; use async_trait::async_trait; @@ -23,7 +20,10 @@ use crate::infra::connection_manager::{ MultiRouteConnectionManager, SingleRouteThrottlingConnectionManager, }; use crate::infra::errors::TransportConnectError; +use crate::infra::host::Host; use crate::infra::ws::WebSocketConfig; +use crate::timeouts::{WS_KEEP_ALIVE_INTERVAL, WS_MAX_IDLE_INTERVAL}; +use crate::utils::ObservableEvent; pub mod certs; pub mod connection_manager; diff --git a/rust/net/src/infra/certs.rs b/rust/net/src/infra/certs.rs index 0c135b14..ba5c3dc9 100644 --- a/rust/net/src/infra/certs.rs +++ b/rust/net/src/infra/certs.rs @@ -172,13 +172,12 @@ mod test { use rustls::RootCertStore; use tokio::net::TcpStream; + use super::*; use crate::infra::tcp_ssl::proxy::testutil::PROXY_CERTIFICATE; use crate::infra::tcp_ssl::testutil::{ localhost_http_server, make_http_request_response_over, SERVER_CERTIFICATE, SERVER_HOSTNAME, }; - use super::*; - #[tokio::test] async fn verify_certificate_via_rustls() { let (addr, server) = localhost_http_server(); diff --git a/rust/net/src/infra/connection_manager.rs b/rust/net/src/infra/connection_manager.rs index bcf2276d..302f476b 100644 --- a/rust/net/src/infra/connection_manager.rs +++ b/rust/net/src/infra/connection_manager.rs @@ -11,8 +11,6 @@ use std::panic::RefUnwindSafe; use std::sync::Arc; use std::time::Duration; -use crate::timeouts::{CONNECTION_ROUTE_COOLDOWN_INTERVALS, CONNECTION_ROUTE_MAX_COOLDOWN}; -use crate::utils::{EventSubscription, ObservableEvent}; use async_trait::async_trait; use itertools::Itertools; use tokio::sync::Mutex; @@ -20,6 +18,8 @@ use tokio::time::{timeout_at, Instant}; use crate::infra::errors::LogSafeDisplay; use crate::infra::ConnectionParams; +use crate::timeouts::{CONNECTION_ROUTE_COOLDOWN_INTERVALS, CONNECTION_ROUTE_MAX_COOLDOWN}; +use crate::utils::{EventSubscription, ObservableEvent}; /// Represents the outcome of the connection attempt #[derive(Debug)] @@ -435,6 +435,7 @@ mod test { use nonzero_ext::nonzero; use tokio::time; + use super::*; use crate::infra::certs::RootCertificates; use crate::infra::host::Host; use crate::infra::test::shared::{ @@ -443,8 +444,6 @@ mod test { }; use crate::infra::{HttpRequestDecoratorSeq, RouteType, TransportConnectionParams}; - use super::*; - const ROUTE_THAT_TIMES_OUT: &str = "timeout.signal.org"; const ROUTE_1: &str = "route1.signal.org"; diff --git a/rust/net/src/infra/dns.rs b/rust/net/src/infra/dns.rs index dd828b37..e91ec13b 100644 --- a/rust/net/src/infra/dns.rs +++ b/rust/net/src/infra/dns.rs @@ -13,6 +13,7 @@ use nonzero_ext::nonzero; use oneshot_broadcast::Sender; use tokio::time::Instant; +use super::TransportConnectionParams; use crate::infra::certs::RootCertificates; use crate::infra::dns::custom_resolver::CustomDnsResolver; use crate::infra::dns::dns_errors::Error; @@ -27,8 +28,6 @@ use crate::infra::{ConnectionParams, HttpRequestDecoratorSeq, RouteType}; use crate::timeouts::{DNS_FALLBACK_LOOKUP_TIMEOUTS, DNS_SYSTEM_LOOKUP_TIMEOUT}; use crate::utils::{self, ObservableEvent}; -use super::TransportConnectionParams; - pub mod custom_resolver; mod dns_errors; pub mod dns_lookup; @@ -292,7 +291,6 @@ impl LookupOption { #[cfg(test)] mod test { - use super::*; use std::collections::HashMap; use std::future; use std::net::{Ipv4Addr, Ipv6Addr}; @@ -303,6 +301,7 @@ mod test { use async_trait::async_trait; use const_str::ip_addr; + use super::*; use crate::infra::dns::dns_lookup::DnsLookupRequest; use crate::infra::dns::{DnsLookup, DnsResolver, Error, LookupResult, StaticDnsMap}; use crate::infra::DnsSource; diff --git a/rust/net/src/infra/dns/custom_resolver.rs b/rust/net/src/infra/dns/custom_resolver.rs index de48c4de..e997205d 100644 --- a/rust/net/src/infra/dns/custom_resolver.rs +++ b/rust/net/src/infra/dns/custom_resolver.rs @@ -10,11 +10,6 @@ use std::net::{Ipv4Addr, Ipv6Addr}; use std::sync::Arc; use std::time::Duration; -use crate::infra::connection_manager::{ - ConnectionAttemptOutcome, SingleRouteThrottlingConnectionManager, -}; -use crate::timeouts::{DNS_CALL_BACKGROUND_TIMEOUT, DNS_RESOLUTION_DELAY}; -use crate::utils::{EventSubscription, ObservableEvent}; use async_trait::async_trait; use either::Either; use futures_util::stream::BoxStream; @@ -22,12 +17,17 @@ use futures_util::StreamExt; use tokio::sync::oneshot; use tokio::time::Instant; +use crate::infra::connection_manager::{ + ConnectionAttemptOutcome, SingleRouteThrottlingConnectionManager, +}; use crate::infra::dns::dns_errors::Error; use crate::infra::dns::dns_lookup::DnsLookupRequest; use crate::infra::dns::dns_types::Expiring; use crate::infra::dns::dns_utils::{log_safe_domain, results_within_interval}; use crate::infra::dns::lookup_result::LookupResult; use crate::infra::{dns, DnsSource}; +use crate::timeouts::{DNS_CALL_BACKGROUND_TIMEOUT, DNS_RESOLUTION_DELAY}; +use crate::utils::{EventSubscription, ObservableEvent}; pub type DnsIpv4Result = Expiring>; pub type DnsIpv6Result = Expiring>; @@ -320,8 +320,6 @@ impl CustomDnsResolver { #[cfg(test)] pub(crate) mod test { - use super::*; - use std::collections::HashSet; use std::iter; use std::net::IpAddr; @@ -333,6 +331,7 @@ pub(crate) mod test { use futures_util::stream::FuturesUnordered; use futures_util::FutureExt; + use super::*; use crate::timeouts::CONNECTION_ROUTE_MAX_COOLDOWN; use crate::utils::{sleep_and_catch_up, sleep_until_and_catch_up}; diff --git a/rust/net/src/infra/dns/dns_errors.rs b/rust/net/src/infra/dns/dns_errors.rs index cee0816e..285c1f56 100644 --- a/rust/net/src/infra/dns/dns_errors.rs +++ b/rust/net/src/infra/dns/dns_errors.rs @@ -3,9 +3,10 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use std::io; + use crate::infra::dns::dns_message; use crate::infra::dns::dns_message::MAX_DNS_UDP_MESSAGE_LEN; -use std::io; #[derive(displaydoc::Display, Debug, thiserror::Error, Clone)] pub enum Error { diff --git a/rust/net/src/infra/dns/dns_lookup.rs b/rust/net/src/infra/dns/dns_lookup.rs index 14d4fc22..6f8e0e91 100644 --- a/rust/net/src/infra/dns/dns_lookup.rs +++ b/rust/net/src/infra/dns/dns_lookup.rs @@ -3,18 +3,20 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::infra::dns::custom_resolver::{CustomDnsResolver, DnsTransport}; -use crate::infra::dns::dns_errors::Error; -use crate::infra::dns::lookup_result::LookupResult; -use crate::infra::{dns, DnsSource}; -use async_trait::async_trait; -use either::Either; -use itertools::Itertools; use std::collections::HashMap; use std::fmt::Debug; use std::net::SocketAddr; use std::sync::Arc; +use async_trait::async_trait; +use either::Either; +use itertools::Itertools; + +use crate::infra::dns::custom_resolver::{CustomDnsResolver, DnsTransport}; +use crate::infra::dns::dns_errors::Error; +use crate::infra::dns::lookup_result::LookupResult; +use crate::infra::{dns, DnsSource}; + #[derive(Clone, Debug)] pub struct DnsLookupRequest { pub hostname: Arc, diff --git a/rust/net/src/infra/dns/dns_message.rs b/rust/net/src/infra/dns/dns_message.rs index d5191126..b609bce7 100644 --- a/rust/net/src/infra/dns/dns_message.rs +++ b/rust/net/src/infra/dns/dns_message.rs @@ -3,18 +3,20 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::infra::dns::dns_types::Expiring; -use crate::infra::dns::ResourceType; -use bitstream_io::{ - BigEndian, BitRead, BitReader, BitWrite, BitWriter, ByteRead, ByteReader, ByteWrite, ByteWriter, -}; use std::cmp::{max, min}; use std::io; use std::io::Cursor; use std::net::{Ipv4Addr, Ipv6Addr}; use std::time::Duration; + +use bitstream_io::{ + BigEndian, BitRead, BitReader, BitWrite, BitWriter, ByteRead, ByteReader, ByteWrite, ByteWriter, +}; use tokio::time::Instant; +use crate::infra::dns::dns_types::Expiring; +use crate::infra::dns::ResourceType; + pub(crate) const QCLASS_IN: u16 = 1; const POINTER_MASK: u8 = 0xC0; @@ -265,8 +267,10 @@ fn read_name_to_vec( #[cfg(test)] mod test { - use super::*; - use crate::infra::dns::dns_types::ResourceType; + use std::iter; + use std::str::FromStr; + use std::time::Duration; + use assert_matches::assert_matches; use const_str::{concat_bytes, ip_addr}; use hickory_proto::op::{MessageType, ResponseCode}; @@ -274,11 +278,11 @@ mod test { use hickory_proto::rr::{Name, RData, RecordType}; use hickory_proto::serialize::binary::BinEncodable; use itertools::Itertools; - use std::iter; - use std::str::FromStr; - use std::time::Duration; use tokio::time::Instant; + use super::*; + use crate::infra::dns::dns_types::ResourceType; + const REQUEST_ID: u16 = 0xABCD; const VALID_DOMAIN: &str = "chat.signal.org"; diff --git a/rust/net/src/infra/dns/dns_transport_udp.rs b/rust/net/src/infra/dns/dns_transport_udp.rs index 17d1f035..d72e3084 100644 --- a/rust/net/src/infra/dns/dns_transport_udp.rs +++ b/rust/net/src/infra/dns/dns_transport_udp.rs @@ -3,6 +3,14 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; +use std::sync::Arc; + +use async_trait::async_trait; +use futures_util::stream::BoxStream; +use futures_util::{stream, StreamExt}; +use tokio::net::UdpSocket; + use crate::infra::dns::custom_resolver::{DnsQueryResult, DnsTransport}; use crate::infra::dns::dns_errors::Error; use crate::infra::dns::dns_lookup::DnsLookupRequest; @@ -10,12 +18,6 @@ use crate::infra::dns::dns_message; use crate::infra::dns::dns_message::{parse_a_record, parse_aaaa_record, MAX_DNS_UDP_MESSAGE_LEN}; use crate::infra::dns::dns_types::ResourceType; use crate::infra::{dns, DnsSource}; -use async_trait::async_trait; -use futures_util::stream::BoxStream; -use futures_util::{stream, StreamExt}; -use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; -use std::sync::Arc; -use tokio::net::UdpSocket; const A_REQUEST_ID: u16 = 0; const AAAA_REQUEST_ID: u16 = 1; diff --git a/rust/net/src/infra/dns/dns_utils.rs b/rust/net/src/infra/dns/dns_utils.rs index e759a481..1f164f83 100644 --- a/rust/net/src/infra/dns/dns_utils.rs +++ b/rust/net/src/infra/dns/dns_utils.rs @@ -109,9 +109,10 @@ pub mod oneshot_broadcast { #[cfg(test)] mod test { + use assert_matches::assert_matches; + use super::oneshot_broadcast::SendError; use super::*; - use assert_matches::assert_matches; #[tokio::test] async fn oneshot_broadcast_completes_for_multiple_receivers() { diff --git a/rust/net/src/infra/dns/lookup_result.rs b/rust/net/src/infra/dns/lookup_result.rs index 11bf4a35..111e3ea9 100644 --- a/rust/net/src/infra/dns/lookup_result.rs +++ b/rust/net/src/infra/dns/lookup_result.rs @@ -3,11 +3,12 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::infra::DnsSource; use std::iter::Map; use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; use std::vec::IntoIter; +use crate::infra::DnsSource; + #[derive(Debug, Clone)] pub struct LookupResult { pub(crate) source: DnsSource, @@ -59,10 +60,12 @@ impl LookupResult { #[cfg(test)] mod test { + use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; + + use const_str::ip_addr; + use crate::infra::dns::lookup_result::LookupResult; use crate::infra::DnsSource; - use const_str::ip_addr; - use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; #[test] fn lookup_result_iterates_in_the_right_order() { diff --git a/rust/net/src/infra/http_client.rs b/rust/net/src/infra/http_client.rs index 086a2fbe..097bc666 100644 --- a/rust/net/src/infra/http_client.rs +++ b/rust/net/src/infra/http_client.rs @@ -159,6 +159,7 @@ mod test { use http::{HeaderName, HeaderValue, Method, StatusCode}; use warp::Filter as _; + use super::*; use crate::infra::dns::lookup_result::LookupResult; use crate::infra::dns::DnsResolver; use crate::infra::host::Host; @@ -166,8 +167,6 @@ mod test { use crate::infra::tcp_ssl::DirectConnector; use crate::infra::{HttpRequestDecoratorSeq, TransportConnectionParams}; - use super::*; - const FAKE_RESPONSE: &str = "RESPONSE"; const FAKE_RESPONSE_HEADER: (HeaderName, HeaderValue) = ( HeaderName::from_static("response-header"), diff --git a/rust/net/src/infra/noise.rs b/rust/net/src/infra/noise.rs index 0714e3d8..385cc784 100644 --- a/rust/net/src/infra/noise.rs +++ b/rust/net/src/infra/noise.rs @@ -294,10 +294,9 @@ mod test { use testutil::echo_forever; use tokio::io::{AsyncReadExt as _, AsyncWriteExt as _}; - use crate::utils::testutil::TestWaker; - use super::testutil::TestStream; use super::*; + use crate::utils::testutil::TestWaker; fn new_handshaken_pair() -> Result<(TransportState, TransportState), snow::Error> { const PATTERN: &str = "Noise_NN_25519_ChaChaPoly_SHA256"; diff --git a/rust/net/src/infra/service.rs b/rust/net/src/infra/service.rs index ec4896ed..85b4c27a 100644 --- a/rust/net/src/infra/service.rs +++ b/rust/net/src/infra/service.rs @@ -389,8 +389,6 @@ mod test { use std::sync::{Arc, Mutex}; use std::time::Duration; - use crate::infra::host::Host; - use crate::timeouts::CONNECTION_ROUTE_MAX_COOLDOWN; use assert_matches::assert_matches; use async_trait::async_trait; use futures_util::FutureExt; @@ -401,6 +399,7 @@ mod test { use super::*; use crate::infra::certs::RootCertificates; use crate::infra::connection_manager::SingleRouteThrottlingConnectionManager; + use crate::infra::host::Host; use crate::infra::test::shared::{ ClassifiableTestError, LONG_CONNECTION_TIME, NORMAL_CONNECTION_TIME, TIMEOUT_DURATION, TIME_ADVANCE_VALUE, @@ -408,6 +407,7 @@ mod test { use crate::infra::{ ConnectionParams, HttpRequestDecoratorSeq, RouteType, TransportConnectionParams, }; + use crate::timeouts::CONNECTION_ROUTE_MAX_COOLDOWN; use crate::utils::{sleep_and_catch_up, ObservableEvent}; #[derive(Clone, Debug)] diff --git a/rust/net/src/infra/tcp_ssl.rs b/rust/net/src/infra/tcp_ssl.rs index 821a809d..bd75dcf9 100644 --- a/rust/net/src/infra/tcp_ssl.rs +++ b/rust/net/src/infra/tcp_ssl.rs @@ -6,8 +6,6 @@ use std::num::NonZeroU16; use std::sync::Arc; -use crate::infra::host::Host; -use crate::timeouts::TCP_CONNECTION_ATTEMPT_DELAY; use async_trait::async_trait; use boring_signal::ssl::{ConnectConfiguration, SslConnector, SslMethod}; use futures_util::TryFutureExt; @@ -19,10 +17,12 @@ use tokio_util::either::Either; use crate::infra::certs::RootCertificates; use crate::infra::dns::DnsResolver; use crate::infra::errors::TransportConnectError; +use crate::infra::host::Host; use crate::infra::tcp_ssl::proxy::tls::TlsProxyConnector; use crate::infra::{ Alpn, ConnectionInfo, RouteType, StreamAndInfo, TransportConnectionParams, TransportConnector, }; +use crate::timeouts::TCP_CONNECTION_ATTEMPT_DELAY; use crate::utils::first_ok; pub mod proxy; @@ -315,9 +315,6 @@ pub(crate) mod testutil { #[cfg(test)] mod test { - use super::testutil::*; - use super::*; - use std::borrow::Cow; use std::collections::HashMap; use std::net::Ipv6Addr; @@ -325,6 +322,8 @@ mod test { use assert_matches::assert_matches; use test_case::test_case; + use super::testutil::*; + use super::*; use crate::infra::dns::lookup_result::LookupResult; use crate::infra::host::Host; diff --git a/rust/net/src/infra/tcp_ssl/proxy/socks.rs b/rust/net/src/infra/tcp_ssl/proxy/socks.rs index 45bfd573..fc614013 100644 --- a/rust/net/src/infra/tcp_ssl/proxy/socks.rs +++ b/rust/net/src/infra/tcp_ssl/proxy/socks.rs @@ -224,12 +224,11 @@ mod test { use tokio::io::{AsyncReadExt as _, AsyncWriteExt as _}; use tokio::join; + use super::*; use crate::infra::host::Host; use crate::infra::tcp_ssl::proxy::testutil::{TcpServer, TlsServer, PROXY_HOSTNAME}; use crate::infra::tcp_ssl::testutil::{SERVER_CERTIFICATE, SERVER_HOSTNAME}; - use super::*; - /// Authentication method. #[derive(Default)] struct Authentication { diff --git a/rust/net/src/infra/tcp_ssl/proxy/tls.rs b/rust/net/src/infra/tcp_ssl/proxy/tls.rs index 52442979..2421aedb 100644 --- a/rust/net/src/infra/tcp_ssl/proxy/tls.rs +++ b/rust/net/src/infra/tcp_ssl/proxy/tls.rs @@ -137,15 +137,14 @@ impl TlsProxyConnector { #[cfg(test)] mod test { - use super::super::super::testutil::*; - use super::*; - use std::borrow::Cow; use std::collections::HashMap; use std::net::Ipv6Addr; use assert_matches::assert_matches; + use super::super::super::testutil::*; + use super::*; use crate::infra::dns::lookup_result::LookupResult; use crate::infra::host::Host; use crate::infra::tcp_ssl::proxy::testutil::{ diff --git a/rust/net/src/infra/ws.rs b/rust/net/src/infra/ws.rs index 8d8c84a5..b6d4db16 100644 --- a/rust/net/src/infra/ws.rs +++ b/rust/net/src/infra/ws.rs @@ -642,11 +642,10 @@ pub(crate) mod testutil { use tokio::io::DuplexStream; use tokio_tungstenite::WebSocketStream; + use super::*; use crate::infra::{AsyncDuplexStream, DnsSource, RouteType}; use crate::timeouts::{WS_KEEP_ALIVE_INTERVAL, WS_MAX_IDLE_INTERVAL}; - use super::*; - pub(crate) async fn fake_websocket( ) -> (WebSocketStream, WebSocketStream) { let (client, server) = tokio::io::duplex(1024); @@ -797,11 +796,10 @@ mod test { use nonzero_ext::nonzero; use test_case::test_matrix; - use crate::infra::certs::RootCertificates; - use crate::infra::{HttpRequestDecoratorSeq, RouteType, TransportConnectionParams}; - use super::testutil::*; use super::*; + use crate::infra::certs::RootCertificates; + use crate::infra::{HttpRequestDecoratorSeq, RouteType, TransportConnectionParams}; impl NextOrClose { pub(crate) fn unwrap_next(self) -> T diff --git a/rust/net/src/svr.rs b/rust/net/src/svr.rs index 8c404581..aef055ca 100644 --- a/rust/net/src/svr.rs +++ b/rust/net/src/svr.rs @@ -6,13 +6,12 @@ use std::marker::PhantomData; use crate::auth::HttpBasicAuth; +pub use crate::enclave::Error; use crate::enclave::{EnclaveEndpointConnection, IntoAttestedConnection, NewHandshake, Svr3Flavor}; use crate::infra::connection_manager::ConnectionManager; use crate::infra::ws::AttestedConnection; use crate::infra::{AsyncDuplexStream, TransportConnector}; -pub use crate::enclave::Error; - pub struct SvrConnection { inner: AttestedConnection, witness: PhantomData, diff --git a/rust/net/src/svr3.rs b/rust/net/src/svr3.rs index 51276178..9afc2900 100644 --- a/rust/net/src/svr3.rs +++ b/rust/net/src/svr3.rs @@ -3,15 +3,17 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::infra::errors::LogSafeDisplay; -use crate::infra::ws::{AttestedConnectionError, WebSocketConnectError, WebSocketServiceError}; +use std::num::NonZeroU32; + use bincode::Options as _; use libsignal_svr3::{EvaluationResult, MaskedShareSet}; use rand_core::CryptoRngCore; use serde::{Deserialize, Serialize}; -use std::num::NonZeroU32; use thiserror::Error; +use crate::infra::errors::LogSafeDisplay; +use crate::infra::ws::{AttestedConnectionError, WebSocketConnectError, WebSocketServiceError}; + mod ppss_ops; pub mod direct; @@ -295,13 +297,13 @@ pub mod test_support { #[cfg(test)] mod test { - use super::*; - use assert_matches::assert_matches; use async_trait::async_trait; use nonzero_ext::nonzero; use rand_core::{OsRng, RngCore}; + use super::*; + fn new_empty_share_set() -> OpaqueMaskedShareSet { OpaqueMaskedShareSet { inner: SerializableMaskedShareSet { diff --git a/rust/net/src/svr3/ppss_ops.rs b/rust/net/src/svr3/ppss_ops.rs index d2fdd01b..f1438c25 100644 --- a/rust/net/src/svr3/ppss_ops.rs +++ b/rust/net/src/svr3/ppss_ops.rs @@ -12,17 +12,15 @@ use std::num::NonZeroU32; use std::sync::Arc; use futures_util::future::join_all; +use libsignal_svr3::{make_remove_request, Backup, EvaluationResult, Query, Restore}; use rand_core::CryptoRngCore; -use libsignal_svr3::{make_remove_request, Backup, EvaluationResult, Query, Restore}; - +use super::{Error, OpaqueMaskedShareSet}; use crate::enclave::{ArrayIsh, IntoConnectionResults, PpssSetup}; use crate::infra::host::Host; use crate::infra::ws::{run_attested_interaction, AttestedConnection, NextOrClose}; use crate::infra::AsyncDuplexStream; -use super::{Error, OpaqueMaskedShareSet}; - pub async fn do_backup>( connect_results: Env::ConnectionResults, password: &str, @@ -174,16 +172,14 @@ fn collect_responses<'a>( #[cfg(test)] mod test { use assert_matches::assert_matches; + use attest::nitro::NitroError; use nonzero_ext::nonzero; use rand_core::OsRng; - use attest::nitro::NitroError; - + use super::*; use crate::enclave::Error; use crate::infra::ws::DefaultStream; - use super::*; - struct TestEnv; impl PpssSetup for TestEnv { diff --git a/rust/net/src/svr3/traits.rs b/rust/net/src/svr3/traits.rs index 8751f7d2..fe151862 100644 --- a/rust/net/src/svr3/traits.rs +++ b/rust/net/src/svr3/traits.rs @@ -10,15 +10,13 @@ use std::num::NonZeroU32; use async_trait::async_trait; +use libsignal_svr3::EvaluationResult; use rand_core::CryptoRngCore; -use libsignal_svr3::EvaluationResult; - +use super::{ppss_ops, Error, OpaqueMaskedShareSet}; use crate::enclave::PpssSetup; use crate::infra::AsyncDuplexStream; -use super::{ppss_ops, Error, OpaqueMaskedShareSet}; - #[async_trait] pub trait Backup { async fn backup( diff --git a/rust/net/src/utils.rs b/rust/net/src/utils.rs index 0eac843d..7b602d56 100644 --- a/rust/net/src/utils.rs +++ b/rust/net/src/utils.rs @@ -3,15 +3,16 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use base64::prelude::{Engine as _, BASE64_STANDARD}; -use futures_util::stream::FuturesUnordered; -use futures_util::StreamExt; -use http::HeaderValue; use std::future; use std::future::Future; use std::sync::Arc; use std::time::Duration; +use base64::prelude::{Engine as _, BASE64_STANDARD}; +use futures_util::stream::FuturesUnordered; +use futures_util::StreamExt; +use http::HeaderValue; + /// Constructs the value of the `Authorization` header for the `Basic` auth scheme. pub(crate) fn basic_authorization(username: &str, password: &str) -> HeaderValue { let auth = BASE64_STANDARD.encode(format!("{}:{}", username, password).as_bytes()); @@ -254,8 +255,6 @@ pub(crate) mod testutil { #[cfg(test)] mod test { - use super::*; - use std::future::Future; use std::sync::atomic::{AtomicBool, AtomicU32, Ordering}; use std::sync::Arc; @@ -264,6 +263,8 @@ mod test { use assert_matches::assert_matches; use tokio::time; + use super::*; + #[tokio::test(start_paused = true)] async fn first_ok_picks_the_result_from_earliest_finished_future() { let future_1 = future(30, Ok(1)); diff --git a/rust/net/tests/svr3_migration.rs b/rust/net/tests/svr3_migration.rs index 72cf423f..5c0a0b12 100644 --- a/rust/net/tests/svr3_migration.rs +++ b/rust/net/tests/svr3_migration.rs @@ -34,9 +34,6 @@ use std::sync::Arc; use assert_matches::assert_matches; use async_trait::async_trait; use base64::prelude::{Engine as _, BASE64_STANDARD}; -use nonzero_ext::nonzero; -use rand_core::{CryptoRngCore, OsRng}; - use libsignal_net::auth::Auth; use libsignal_net::enclave::{EnclaveEndpoint, EnclaveKind, Error, PpssSetup, Sgx}; use libsignal_net::env::Svr3Env; @@ -47,6 +44,8 @@ use libsignal_net::svr3::direct::DirectConnect; use libsignal_net::svr3::traits::*; use libsignal_net::svr3::{migrate_backup, restore_with_fallback, OpaqueMaskedShareSet}; use libsignal_svr3::EvaluationResult; +use nonzero_ext::nonzero; +use rand_core::{CryptoRngCore, OsRng}; const PASS: &str = "password"; const TRIES: NonZeroU32 = nonzero!(10u32); diff --git a/rust/pin/src/hash.rs b/rust/pin/src/hash.rs index 34f02a1c..9e0a7c0b 100644 --- a/rust/pin/src/hash.rs +++ b/rust/pin/src/hash.rs @@ -130,9 +130,8 @@ mod test { use hmac::{Hmac, Mac}; use sha2::Sha256; - use crate::hash::{local_pin_hash, verify_local_pin_hash, PinHash}; - use super::*; + use crate::hash::{local_pin_hash, verify_local_pin_hash, PinHash}; fn hmac_sha256(key: &[u8], data: &[u8]) -> [u8; 32] { type HmacSha256 = Hmac; diff --git a/rust/poksho/src/proof.rs b/rust/poksho/src/proof.rs index f34e342b..cb2d591d 100644 --- a/rust/poksho/src/proof.rs +++ b/rust/poksho/src/proof.rs @@ -3,9 +3,10 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use curve25519_dalek::scalar::Scalar; + use crate::scalar::*; use crate::simple_types::*; -use curve25519_dalek::scalar::Scalar; // We use compact Schnorr signatures, sending the challenge instead of commitments pub struct Proof { diff --git a/rust/poksho/src/shohmacsha256.rs b/rust/poksho/src/shohmacsha256.rs index 542f9c53..d213a78f 100644 --- a/rust/poksho/src/shohmacsha256.rs +++ b/rust/poksho/src/shohmacsha256.rs @@ -3,9 +3,10 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use std::cmp; + use hmac::{Hmac, Mac}; use sha2::Sha256; -use std::cmp; use crate::shoapi::ShoApi; diff --git a/rust/poksho/src/shosha256.rs b/rust/poksho/src/shosha256.rs index b907ed3f..da690156 100644 --- a/rust/poksho/src/shosha256.rs +++ b/rust/poksho/src/shosha256.rs @@ -5,9 +5,10 @@ // implements the "innerpad" SHO/SHA256 proposal -use sha2::{Digest, Sha256}; use std::cmp; +use sha2::{Digest, Sha256}; + use crate::shoapi::ShoApi; pub const BLOCK_LEN: usize = 64; diff --git a/rust/poksho/src/sign.rs b/rust/poksho/src/sign.rs index 9a7b8b6e..b2fecbfb 100644 --- a/rust/poksho/src/sign.rs +++ b/rust/poksho/src/sign.rs @@ -3,11 +3,12 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use curve25519_dalek::ristretto::RistrettoPoint; +use curve25519_dalek::scalar::Scalar; + use crate::args::*; use crate::errors::*; use crate::statement::*; -use curve25519_dalek::ristretto::RistrettoPoint; -use curve25519_dalek::scalar::Scalar; // Signatures are such a common ZKP that we provide special functions for them: pub fn sign( @@ -46,9 +47,10 @@ pub fn verify_signature( mod tests { #![allow(non_snake_case)] - use super::*; use curve25519_dalek::constants::RISTRETTO_BASEPOINT_POINT; + use super::*; + #[test] #[allow(clippy::needless_range_loop, clippy::unwrap_used)] fn test_signature() { diff --git a/rust/poksho/src/statement.rs b/rust/poksho/src/statement.rs index d7b35f18..b7ad0482 100644 --- a/rust/poksho/src/statement.rs +++ b/rust/poksho/src/statement.rs @@ -5,18 +5,10 @@ use std::borrow::Cow; use std::collections::HashMap; -use crate::args::*; -use crate::errors::*; -use crate::proof::*; -use crate::scalar::*; -use crate::shoapi::ShoApi; -use crate::shohmacsha256::ShoHmacSha256; -use crate::simple_types::*; use curve25519_dalek::constants::RISTRETTO_BASEPOINT_POINT; use curve25519_dalek::ristretto::RistrettoPoint; use curve25519_dalek::scalar::Scalar; use curve25519_dalek::traits::MultiscalarMul; - // POKSHO implements the "Sigma protocol for arbitrary linear relations" described in section // 19.5.3 of https://crypto.stanford.edu/~dabo/cryptobook/BonehShoup_0_4.pdf // @@ -97,9 +89,16 @@ use curve25519_dalek::traits::MultiscalarMul; // --- // for index=0..total number of scalars: // RistrettoScalar - use PokshoError::*; +use crate::args::*; +use crate::errors::*; +use crate::proof::*; +use crate::scalar::*; +use crate::shoapi::ShoApi; +use crate::shohmacsha256::ShoHmacSha256; +use crate::simple_types::*; + type ScalarIndex = u8; type PointIndex = u8; diff --git a/rust/protocol/benches/kem.rs b/rust/protocol/benches/kem.rs index 57f9fdea..9d187fa3 100644 --- a/rust/protocol/benches/kem.rs +++ b/rust/protocol/benches/kem.rs @@ -2,12 +2,11 @@ // Copyright 2023 Signal Messenger, LLC. // SPDX-License-Identifier: AGPL-3.0-only // -use criterion::{criterion_group, criterion_main, Criterion}; - -use libsignal_protocol::kem::{KeyPair, KeyType}; - use std::hint::black_box; +use criterion::{criterion_group, criterion_main, Criterion}; +use libsignal_protocol::kem::{KeyPair, KeyType}; + fn bench_kem(c: &mut Criterion) { for key_type in [KeyType::Kyber768, KeyType::Kyber1024] { c.bench_function(format!("{key_type:?}_generate").as_str(), |b| { diff --git a/rust/protocol/benches/ratchet.rs b/rust/protocol/benches/ratchet.rs index 12e636a9..169074ab 100644 --- a/rust/protocol/benches/ratchet.rs +++ b/rust/protocol/benches/ratchet.rs @@ -6,7 +6,6 @@ use criterion::{criterion_group, criterion_main, Criterion, SamplingMode}; use futures_util::FutureExt; use libsignal_protocol::*; - use uuid::Uuid; #[path = "../tests/support/mod.rs"] diff --git a/rust/protocol/cross-version-testing/src/current.rs b/rust/protocol/cross-version-testing/src/current.rs index 231f6f07..6d3848fa 100644 --- a/rust/protocol/cross-version-testing/src/current.rs +++ b/rust/protocol/cross-version-testing/src/current.rs @@ -3,11 +3,10 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use libsignal_protocol_current::*; - use std::time::SystemTime; use futures_util::FutureExt; +use libsignal_protocol_current::*; use rand::{thread_rng, Rng}; fn address(id: &str) -> ProtocolAddress { diff --git a/rust/protocol/cross-version-testing/src/v12.rs b/rust/protocol/cross-version-testing/src/v12.rs index a3203c54..402f352c 100644 --- a/rust/protocol/cross-version-testing/src/v12.rs +++ b/rust/protocol/cross-version-testing/src/v12.rs @@ -5,7 +5,6 @@ use futures_util::FutureExt; use libsignal_protocol_v12::*; - use rand_v7::{thread_rng, Rng}; fn address(id: &str) -> ProtocolAddress { diff --git a/rust/protocol/cross-version-testing/src/v21.rs b/rust/protocol/cross-version-testing/src/v21.rs index 31089008..88f99eb3 100644 --- a/rust/protocol/cross-version-testing/src/v21.rs +++ b/rust/protocol/cross-version-testing/src/v21.rs @@ -5,7 +5,6 @@ use futures_util::FutureExt; use libsignal_protocol_v21::*; - use rand_v7::{thread_rng, Rng}; fn address(id: &str) -> ProtocolAddress { diff --git a/rust/protocol/src/crypto.rs b/rust/protocol/src/crypto.rs index 1976cb81..f39ba46f 100644 --- a/rust/protocol/src/crypto.rs +++ b/rust/protocol/src/crypto.rs @@ -81,9 +81,10 @@ pub(crate) fn aes256_ctr_hmacsha256_decrypt( #[cfg(test)] mod test { - use super::*; use hex_literal::hex; + use super::*; + #[test] fn aes_ctr_test() { let key = hex!("603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4"); diff --git a/rust/protocol/src/curve.rs b/rust/protocol/src/curve.rs index dd08569b..9b7bbce9 100644 --- a/rust/protocol/src/curve.rs +++ b/rust/protocol/src/curve.rs @@ -5,10 +5,7 @@ pub(crate) mod curve25519; -use crate::{Result, SignalProtocolError}; - use std::cmp::Ordering; - use std::fmt; use arrayref::array_ref; @@ -16,6 +13,8 @@ use curve25519_dalek::scalar; use rand::{CryptoRng, Rng}; use subtle::ConstantTimeEq; +use crate::{Result, SignalProtocolError}; + #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)] pub enum KeyType { Djb, diff --git a/rust/protocol/src/error.rs b/rust/protocol/src/error.rs index 23a8a834..828f1104 100644 --- a/rust/protocol/src/error.rs +++ b/rust/protocol/src/error.rs @@ -3,14 +3,14 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::curve::KeyType; -use crate::kem; +use std::panic::UnwindSafe; use displaydoc::Display; use thiserror::Error; use uuid::Uuid; -use std::panic::UnwindSafe; +use crate::curve::KeyType; +use crate::kem; pub type Result = std::result::Result; diff --git a/rust/protocol/src/fingerprint.rs b/rust/protocol/src/fingerprint.rs index 31bccdb0..8067cf72 100644 --- a/rust/protocol/src/fingerprint.rs +++ b/rust/protocol/src/fingerprint.rs @@ -3,14 +3,16 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::{proto, IdentityKey, Result, SignalProtocolError}; +use std::fmt; +use std::fmt::Write; + use prost::Message; use sha2::digest::Digest; use sha2::Sha512; -use std::fmt; -use std::fmt::Write; use subtle::ConstantTimeEq; +use crate::{proto, IdentityKey, Result, SignalProtocolError}; + #[derive(Debug, Clone)] pub struct DisplayableFingerprint { local: String, @@ -212,9 +214,10 @@ impl Fingerprint { #[cfg(test)] mod test { - use super::*; use hex_literal::hex; + use super::*; + const ALICE_IDENTITY: &[u8] = &hex!("0506863bc66d02b40d27b8d49ca7c09e9239236f9d7d25d6fcca5ce13c7064d868"); const BOB_IDENTITY: &[u8] = @@ -355,9 +358,10 @@ mod test { fn fingerprint_matching_identifiers() -> Result<()> { // testMatchingFingerprints - use crate::IdentityKeyPair; use rand::rngs::OsRng; + use crate::IdentityKeyPair; + let a_key_pair = IdentityKeyPair::generate(&mut OsRng); let b_key_pair = IdentityKeyPair::generate(&mut OsRng); @@ -411,9 +415,10 @@ mod test { #[test] fn fingerprint_mismatching_fingerprints() -> Result<()> { - use crate::IdentityKeyPair; use rand::rngs::OsRng; + use crate::IdentityKeyPair; + let a_key_pair = IdentityKeyPair::generate(&mut OsRng); let b_key_pair = IdentityKeyPair::generate(&mut OsRng); let m_key_pair = IdentityKeyPair::generate(&mut OsRng); // mitm @@ -460,9 +465,10 @@ mod test { #[test] fn fingerprint_mismatching_identifiers() -> Result<()> { - use crate::IdentityKeyPair; use rand::rngs::OsRng; + use crate::IdentityKeyPair; + let a_key_pair = IdentityKeyPair::generate(&mut OsRng); let b_key_pair = IdentityKeyPair::generate(&mut OsRng); diff --git a/rust/protocol/src/identity_key.rs b/rust/protocol/src/identity_key.rs index 8df1449c..9102e00e 100644 --- a/rust/protocol/src/identity_key.rs +++ b/rust/protocol/src/identity_key.rs @@ -7,11 +7,10 @@ #![warn(missing_docs)] -use crate::{proto, KeyPair, PrivateKey, PublicKey, Result, SignalProtocolError}; - +use prost::Message; use rand::{CryptoRng, Rng}; -use prost::Message; +use crate::{proto, KeyPair, PrivateKey, PublicKey, Result, SignalProtocolError}; // Used for domain separation between alternate-identity signatures and other key-to-key signatures. const ALTERNATE_IDENTITY_SIGNATURE_PREFIX_1: &[u8] = &[0xFF; 32]; @@ -198,10 +197,10 @@ impl From for KeyPair { #[cfg(test)] mod tests { - use super::*; - use rand::rngs::OsRng; + use super::*; + #[test] fn test_identity_key_from() { let key_pair = KeyPair::generate(&mut OsRng); diff --git a/rust/protocol/src/incremental_mac.rs b/rust/protocol/src/incremental_mac.rs index b9e47f24..418f0bf3 100644 --- a/rust/protocol/src/incremental_mac.rs +++ b/rust/protocol/src/incremental_mac.rs @@ -144,9 +144,8 @@ mod test { use sha2::digest::OutputSizeUser; use sha2::Sha256; - use crate::crypto::hmac_sha256; - use super::*; + use crate::crypto::hmac_sha256; const TEST_HMAC_KEY: &[u8] = &hex!("a83481457efecc69ad1342e21d9c0297f71debbf5c9304b4c1b2e433c1a78f98"); diff --git a/rust/protocol/src/kem.rs b/rust/protocol/src/kem.rs index 32a8f60e..c82c01d7 100644 --- a/rust/protocol/src/kem.rs +++ b/rust/protocol/src/kem.rs @@ -56,15 +56,15 @@ mod kyber768; #[cfg(feature = "mlkem1024")] mod mlkem1024; -use crate::{Result, SignalProtocolError}; +use std::marker::PhantomData; +use std::ops::Deref; use derive_where::derive_where; use displaydoc::Display; - -use std::marker::PhantomData; -use std::ops::Deref; use subtle::ConstantTimeEq; +use crate::{Result, SignalProtocolError}; + type SharedSecret = Box<[u8]>; // The difference between the two is that the raw one does not contain the KeyType byte prefix. diff --git a/rust/protocol/src/kem/kyber1024.rs b/rust/protocol/src/kem/kyber1024.rs index 9b1ddbbf..cb2eb38b 100644 --- a/rust/protocol/src/kem/kyber1024.rs +++ b/rust/protocol/src/kem/kyber1024.rs @@ -3,15 +3,14 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::Result; - -use pqcrypto_traits::kem::{Ciphertext, PublicKey, SecretKey, SharedSecret}; - -use super::{KeyMaterial, Public, Secret}; use pqcrypto_kyber::ffi::{ PQCLEAN_KYBER1024_CLEAN_CRYPTO_BYTES, PQCLEAN_KYBER1024_CLEAN_CRYPTO_CIPHERTEXTBYTES, PQCLEAN_KYBER1024_CLEAN_CRYPTO_PUBLICKEYBYTES, PQCLEAN_KYBER1024_CLEAN_CRYPTO_SECRETKEYBYTES, }; +use pqcrypto_traits::kem::{Ciphertext, PublicKey, SecretKey, SharedSecret}; + +use super::{KeyMaterial, Public, Secret}; +use crate::Result; pub(crate) struct Parameters; diff --git a/rust/protocol/src/kem/kyber768.rs b/rust/protocol/src/kem/kyber768.rs index 6b541ddc..21262ad6 100644 --- a/rust/protocol/src/kem/kyber768.rs +++ b/rust/protocol/src/kem/kyber768.rs @@ -3,16 +3,14 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::Result; - -use pqcrypto_traits::kem::{Ciphertext, PublicKey, SecretKey, SharedSecret}; - use pqcrypto_kyber::ffi::{ PQCLEAN_KYBER768_CLEAN_CRYPTO_BYTES, PQCLEAN_KYBER768_CLEAN_CRYPTO_CIPHERTEXTBYTES, PQCLEAN_KYBER768_CLEAN_CRYPTO_PUBLICKEYBYTES, PQCLEAN_KYBER768_CLEAN_CRYPTO_SECRETKEYBYTES, }; +use pqcrypto_traits::kem::{Ciphertext, PublicKey, SecretKey, SharedSecret}; use super::{KeyMaterial, Public, Secret}; +use crate::Result; pub(crate) struct Parameters; diff --git a/rust/protocol/src/kem/mlkem1024.rs b/rust/protocol/src/kem/mlkem1024.rs index b8a670f3..0b9d3204 100644 --- a/rust/protocol/src/kem/mlkem1024.rs +++ b/rust/protocol/src/kem/mlkem1024.rs @@ -3,15 +3,14 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::Result; - -use pqcrypto_traits::kem::{Ciphertext, PublicKey, SecretKey, SharedSecret}; - -use super::{KeyMaterial, Public, Secret}; use pqcrypto_ml_kem::ffi::{ PQCLEAN_KYBER1024_CLEAN_CRYPTO_BYTES, PQCLEAN_KYBER1024_CLEAN_CRYPTO_CIPHERTEXTBYTES, PQCLEAN_KYBER1024_CLEAN_CRYPTO_PUBLICKEYBYTES, PQCLEAN_KYBER1024_CLEAN_CRYPTO_SECRETKEYBYTES, }; +use pqcrypto_traits::kem::{Ciphertext, PublicKey, SecretKey, SharedSecret}; + +use super::{KeyMaterial, Public, Secret}; +use crate::Result; pub(crate) struct Parameters; diff --git a/rust/protocol/src/lib.rs b/rust/protocol/src/lib.rs index fb7f4a37..7cb1682a 100644 --- a/rust/protocol/src/lib.rs +++ b/rust/protocol/src/lib.rs @@ -43,13 +43,8 @@ mod storage; mod timestamp; mod utils; -use error::Result; - -pub use libsignal_core::{ - Aci, DeviceId, Pni, ProtocolAddress, ServiceId, ServiceIdFixedWidthBinaryBytes, ServiceIdKind, -}; - pub use curve::{KeyPair, PrivateKey, PublicKey}; +use error::Result; pub use error::SignalProtocolError; pub use fingerprint::{DisplayableFingerprint, Fingerprint, ScannableFingerprint}; pub use group_cipher::{ @@ -57,6 +52,9 @@ pub use group_cipher::{ process_sender_key_distribution_message, }; pub use identity_key::{IdentityKey, IdentityKeyPair}; +pub use libsignal_core::{ + Aci, DeviceId, Pni, ProtocolAddress, ServiceId, ServiceIdFixedWidthBinaryBytes, ServiceIdKind, +}; pub use protocol::{ extract_decryption_error_message_from_serialized_content, CiphertextMessage, CiphertextMessageType, DecryptionErrorMessage, KyberPayload, PlaintextContent, diff --git a/rust/protocol/src/protocol.rs b/rust/protocol/src/protocol.rs index 87ceb20e..d0147ec1 100644 --- a/rust/protocol/src/protocol.rs +++ b/rust/protocol/src/protocol.rs @@ -3,11 +3,6 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::state::{KyberPreKeyId, PreKeyId, SignedPreKeyId}; -use crate::{ - kem, proto, IdentityKey, PrivateKey, PublicKey, Result, SignalProtocolError, Timestamp, -}; - use hmac::{Hmac, Mac}; use prost::Message; use rand::{CryptoRng, Rng}; @@ -15,6 +10,11 @@ use sha2::Sha256; use subtle::ConstantTimeEq; use uuid::Uuid; +use crate::state::{KyberPreKeyId, PreKeyId, SignedPreKeyId}; +use crate::{ + kem, proto, IdentityKey, PrivateKey, PublicKey, Result, SignalProtocolError, Timestamp, +}; + pub(crate) const CIPHERTEXT_MESSAGE_CURRENT_VERSION: u8 = 4; // Backward compatible, lacking Kyber keys, version pub(crate) const CIPHERTEXT_MESSAGE_PRE_KYBER_VERSION: u8 = 3; @@ -897,12 +897,12 @@ pub fn extract_decryption_error_message_from_serialized_content( #[cfg(test)] mod tests { - use super::*; - use crate::KeyPair; - use rand::rngs::OsRng; use rand::{CryptoRng, Rng}; + use super::*; + use crate::KeyPair; + fn create_signal_message(csprng: &mut T) -> Result where T: Rng + CryptoRng, diff --git a/rust/protocol/src/ratchet.rs b/rust/protocol/src/ratchet.rs index d85500e6..708d97e9 100644 --- a/rust/protocol/src/ratchet.rs +++ b/rust/protocol/src/ratchet.rs @@ -6,12 +6,13 @@ mod keys; mod params; +use rand::{CryptoRng, Rng}; + pub(crate) use self::keys::{ChainKey, MessageKeys, RootKey}; pub use self::params::{AliceSignalProtocolParameters, BobSignalProtocolParameters}; use crate::protocol::{CIPHERTEXT_MESSAGE_CURRENT_VERSION, CIPHERTEXT_MESSAGE_PRE_KYBER_VERSION}; use crate::state::SessionState; use crate::{KeyPair, Result, SessionRecord}; -use rand::{CryptoRng, Rng}; fn derive_keys(has_kyber: bool, secret_input: &[u8]) -> (RootKey, ChainKey) { let label = if has_kyber { diff --git a/rust/protocol/src/ratchet/keys.rs b/rust/protocol/src/ratchet/keys.rs index b85784e7..947031ac 100644 --- a/rust/protocol/src/ratchet/keys.rs +++ b/rust/protocol/src/ratchet/keys.rs @@ -3,10 +3,11 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use std::fmt; + use arrayref::array_ref; use crate::{crypto, PrivateKey, PublicKey, Result}; -use std::fmt; pub(crate) struct MessageKeys { cipher_key: [u8; 32], diff --git a/rust/protocol/src/sealed_sender.rs b/rust/protocol/src/sealed_sender.rs index 02db1d0b..2cba494f 100644 --- a/rust/protocol/src/sealed_sender.rs +++ b/rust/protocol/src/sealed_sender.rs @@ -3,14 +3,8 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::{ - message_encrypt, Aci, CiphertextMessageType, DeviceId, Direction, IdentityKey, IdentityKeyPair, - IdentityKeyStore, KeyPair, KyberPreKeyStore, PreKeySignalMessage, PreKeyStore, PrivateKey, - ProtocolAddress, PublicKey, Result, ServiceId, ServiceIdFixedWidthBinaryBytes, SessionRecord, - SessionStore, SignalMessage, SignalProtocolError, SignedPreKeyStore, Timestamp, -}; - -use crate::{crypto, curve, proto, session_cipher}; +use std::ops::Range; +use std::time::SystemTime; use aes_gcm_siv::aead::generic_array::typenum::Unsigned; use aes_gcm_siv::{AeadInPlace, Aes256GcmSiv, KeyInit}; @@ -18,13 +12,17 @@ use arrayref::array_ref; use indexmap::IndexMap; use itertools::Itertools; use prost::Message; +use proto::sealed_sender::unidentified_sender_message::message::Type as ProtoMessageType; use rand::{CryptoRng, Rng}; use subtle::ConstantTimeEq; -use proto::sealed_sender::unidentified_sender_message::message::Type as ProtoMessageType; - -use std::ops::Range; -use std::time::SystemTime; +use crate::{ + crypto, curve, message_encrypt, proto, session_cipher, Aci, CiphertextMessageType, DeviceId, + Direction, IdentityKey, IdentityKeyPair, IdentityKeyStore, KeyPair, KyberPreKeyStore, + PreKeySignalMessage, PreKeyStore, PrivateKey, ProtocolAddress, PublicKey, Result, ServiceId, + ServiceIdFixedWidthBinaryBytes, SessionRecord, SessionStore, SignalMessage, + SignalProtocolError, SignedPreKeyStore, Timestamp, +}; #[derive(Debug, Clone)] pub struct ServerCertificate { @@ -603,11 +601,11 @@ impl UnidentifiedSenderMessage { } mod sealed_sender_v1 { - use super::*; - #[cfg(test)] use std::fmt; + use super::*; + /// A symmetric cipher key and a MAC key, along with a "chain key" consumed in /// [`StaticKeys::calculate`]. pub(super) struct EphemeralKeys { diff --git a/rust/protocol/src/sender_keys.rs b/rust/protocol/src/sender_keys.rs index c4a45b6a..23d3478c 100644 --- a/rust/protocol/src/sender_keys.rs +++ b/rust/protocol/src/sender_keys.rs @@ -362,9 +362,8 @@ mod sender_key_record_add_sender_key_state_tests { use itertools::Itertools; use rand::rngs::OsRng; - use crate::KeyPair; - use super::*; + use crate::KeyPair; fn random_public_key() -> PublicKey { KeyPair::generate(&mut OsRng).public_key diff --git a/rust/protocol/src/session.rs b/rust/protocol/src/session.rs index 8b7dabfc..46496cc7 100644 --- a/rust/protocol/src/session.rs +++ b/rust/protocol/src/session.rs @@ -5,16 +5,15 @@ use std::time::SystemTime; -use crate::{ - kem, Direction, IdentityKeyStore, KeyPair, KyberPreKeyId, KyberPreKeyStore, PreKeyBundle, - PreKeyId, PreKeySignalMessage, PreKeyStore, ProtocolAddress, Result, SessionRecord, - SessionStore, SignalProtocolError, SignedPreKeyStore, -}; +use rand::{CryptoRng, Rng}; -use crate::ratchet; use crate::ratchet::{AliceSignalProtocolParameters, BobSignalProtocolParameters}; use crate::state::GenericSignedPreKey; -use rand::{CryptoRng, Rng}; +use crate::{ + kem, ratchet, Direction, IdentityKeyStore, KeyPair, KyberPreKeyId, KyberPreKeyStore, + PreKeyBundle, PreKeyId, PreKeySignalMessage, PreKeyStore, ProtocolAddress, Result, + SessionRecord, SessionStore, SignalProtocolError, SignedPreKeyStore, +}; #[derive(Default)] pub struct PreKeysUsed { diff --git a/rust/protocol/src/state/bundle.rs b/rust/protocol/src/state/bundle.rs index 74cb8dbb..6f2f0856 100644 --- a/rust/protocol/src/state/bundle.rs +++ b/rust/protocol/src/state/bundle.rs @@ -3,9 +3,10 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use std::clone::Clone; + use crate::state::{PreKeyId, SignedPreKeyId}; use crate::{kem, DeviceId, IdentityKey, KyberPreKeyId, PublicKey, Result, SignalProtocolError}; -use std::clone::Clone; #[derive(Clone)] struct SignedPreKey { diff --git a/rust/protocol/src/state/kyber_prekey.rs b/rust/protocol/src/state/kyber_prekey.rs index ae9d461e..343bbd6e 100644 --- a/rust/protocol/src/state/kyber_prekey.rs +++ b/rust/protocol/src/state/kyber_prekey.rs @@ -3,13 +3,12 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::proto::storage::SignedPreKeyRecordStructure; +use std::fmt; +use crate::proto::storage::SignedPreKeyRecordStructure; use crate::state::GenericSignedPreKey; use crate::{kem, PrivateKey, Result, Timestamp}; -use std::fmt; - /// A unique identifier selecting among this client's known signed pre-keys. #[derive(Copy, Clone, Debug, Hash, Eq, PartialEq, Ord, PartialOrd)] pub struct KyberPreKeyId(u32); diff --git a/rust/protocol/src/state/prekey.rs b/rust/protocol/src/state/prekey.rs index b40ee450..87133773 100644 --- a/rust/protocol/src/state/prekey.rs +++ b/rust/protocol/src/state/prekey.rs @@ -3,12 +3,12 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::proto::storage::PreKeyRecordStructure; -use crate::{KeyPair, PrivateKey, PublicKey, Result, SignalProtocolError}; +use std::fmt; use prost::Message; -use std::fmt; +use crate::proto::storage::PreKeyRecordStructure; +use crate::{KeyPair, PrivateKey, PublicKey, Result, SignalProtocolError}; /// A unique identifier selecting among this client's known pre-keys. #[derive(Copy, Clone, Debug, Hash, Eq, PartialEq, Ord, PartialOrd)] diff --git a/rust/protocol/src/state/session.rs b/rust/protocol/src/state/session.rs index 6b8d2162..d015ff64 100644 --- a/rust/protocol/src/state/session.rs +++ b/rust/protocol/src/state/session.rs @@ -9,12 +9,10 @@ use std::time::{Duration, SystemTime}; use prost::Message; use subtle::ConstantTimeEq; -use crate::ratchet::{ChainKey, MessageKeys, RootKey}; -use crate::{kem, IdentityKey, KeyPair, PrivateKey, PublicKey, SignalProtocolError}; - -use crate::consts; use crate::proto::storage::{session_structure, RecordStructure, SessionStructure}; +use crate::ratchet::{ChainKey, MessageKeys, RootKey}; use crate::state::{KyberPreKeyId, PreKeyId, SignedPreKeyId}; +use crate::{consts, kem, IdentityKey, KeyPair, PrivateKey, PublicKey, SignalProtocolError}; /// A distinct error type to keep from accidentally propagating deserialization errors. #[derive(Debug)] diff --git a/rust/protocol/src/state/signed_prekey.rs b/rust/protocol/src/state/signed_prekey.rs index 21e616f0..8c77aee5 100644 --- a/rust/protocol/src/state/signed_prekey.rs +++ b/rust/protocol/src/state/signed_prekey.rs @@ -3,13 +3,13 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::proto::storage::SignedPreKeyRecordStructure; -use crate::{kem, KeyPair, PrivateKey, PublicKey, Result, SignalProtocolError, Timestamp}; +use std::convert::AsRef; +use std::fmt; use prost::Message; -use std::convert::AsRef; -use std::fmt; +use crate::proto::storage::SignedPreKeyRecordStructure; +use crate::{kem, KeyPair, PrivateKey, PublicKey, Result, SignalProtocolError, Timestamp}; /// A unique identifier selecting among this client's known signed pre-keys. #[derive(Copy, Clone, Debug, Hash, Eq, PartialEq, Ord, PartialOrd)] diff --git a/rust/protocol/src/storage/inmem.rs b/rust/protocol/src/storage/inmem.rs index 99a8c282..b7176357 100644 --- a/rust/protocol/src/storage/inmem.rs +++ b/rust/protocol/src/storage/inmem.rs @@ -7,6 +7,12 @@ //! //! These implementations are purely in-memory, and therefore most likely useful for testing. +use std::borrow::Cow; +use std::collections::HashMap; + +use async_trait::async_trait; +use uuid::Uuid; + use crate::storage::traits; use crate::{ IdentityKey, IdentityKeyPair, KyberPreKeyId, KyberPreKeyRecord, PreKeyId, PreKeyRecord, @@ -14,11 +20,6 @@ use crate::{ SignedPreKeyRecord, }; -use async_trait::async_trait; -use std::borrow::Cow; -use std::collections::HashMap; -use uuid::Uuid; - /// Reference implementation of [traits::IdentityKeyStore]. #[derive(Clone)] pub struct InMemIdentityKeyStore { diff --git a/rust/protocol/tests/groups.rs b/rust/protocol/tests/groups.rs index 0fcc8cce..0a764e61 100644 --- a/rust/protocol/tests/groups.rs +++ b/rust/protocol/tests/groups.rs @@ -5,13 +5,13 @@ mod support; +use std::time::SystemTime; + use futures_util::FutureExt; use libsignal_protocol::*; use rand::rngs::OsRng; use rand::seq::SliceRandom; use rand::Rng; - -use std::time::SystemTime; use support::*; use uuid::Uuid; diff --git a/rust/protocol/tests/sealed_sender.rs b/rust/protocol/tests/sealed_sender.rs index 97ff1260..019ab936 100644 --- a/rust/protocol/tests/sealed_sender.rs +++ b/rust/protocol/tests/sealed_sender.rs @@ -4,13 +4,12 @@ // mod support; -use support::*; +use std::time::SystemTime; use futures_util::FutureExt; use libsignal_protocol::*; use rand::rngs::OsRng; - -use std::time::SystemTime; +use support::*; use uuid::Uuid; #[test] diff --git a/rust/protocol/tests/session.rs b/rust/protocol/tests/session.rs index 67c56fd8..4ceef91f 100644 --- a/rust/protocol/tests/session.rs +++ b/rust/protocol/tests/session.rs @@ -4,11 +4,11 @@ // mod support; +use std::time::{Duration, SystemTime}; + use futures_util::FutureExt; use libsignal_protocol::*; use rand::rngs::OsRng; - -use std::time::{Duration, SystemTime}; use support::*; type TestResult = Result<(), SignalProtocolError>; diff --git a/rust/protocol/tests/support/mod.rs b/rust/protocol/tests/support/mod.rs index 8a15357e..3e6797f5 100644 --- a/rust/protocol/tests/support/mod.rs +++ b/rust/protocol/tests/support/mod.rs @@ -7,14 +7,14 @@ // APIs will always be considered dead code. #![allow(dead_code)] +use std::ops::RangeFrom; +use std::time::SystemTime; + use futures_util::FutureExt; use libsignal_protocol::*; use rand::rngs::OsRng; use rand::{CryptoRng, Rng}; -use std::ops::RangeFrom; -use std::time::SystemTime; - // Deliberately not reusing the constants from `protocol`. pub(crate) const PRE_KYBER_MESSAGE_VERSION: u32 = 3; pub(crate) const KYBER_AWARE_MESSAGE_VERSION: u32 = 4; diff --git a/rust/svr3/src/client.rs b/rust/svr3/src/client.rs index 87319422..8de08cf6 100644 --- a/rust/svr3/src/client.rs +++ b/rust/svr3/src/client.rs @@ -731,7 +731,6 @@ impl<'a> RotationMachine<'a> { #[cfg(test)] mod test { - use super::*; use curve25519_dalek::scalar::Scalar; use hex_literal::hex; use nonzero_ext::nonzero; @@ -739,6 +738,8 @@ mod test { use rand_core::{CryptoRng, OsRng, RngCore}; use test_case::test_case; + use super::*; + fn to_ristretto_scalar(b: &[u8]) -> Option { Scalar::from_canonical_bytes(b.try_into().ok()?).into_option() } diff --git a/rust/svr3/src/errors.rs b/rust/svr3/src/errors.rs index ca90cbd5..1e39f502 100644 --- a/rust/svr3/src/errors.rs +++ b/rust/svr3/src/errors.rs @@ -4,10 +4,11 @@ // use std::fmt; +use prost::DecodeError; + pub use crate::oprf::errors::OPRFError; pub use crate::ppss::PPSSError; use crate::proto::svr4; -use prost::DecodeError; #[derive(Debug, displaydoc::Display, PartialEq)] pub enum Error { diff --git a/rust/svr3/src/lib.rs b/rust/svr3/src/lib.rs index 5067c8ec..64fd5ad4 100644 --- a/rust/svr3/src/lib.rs +++ b/rust/svr3/src/lib.rs @@ -289,14 +289,13 @@ impl ErrorStatus { mod test { use assert_matches::assert_matches; use nonzero_ext::nonzero; - use prost::Message; - use rand_core::{OsRng, RngCore}; - use test_case::test_case; - use oprf::ciphersuite::hash_to_group; use ppss::testutils::OPRFServerSet; use ppss::{backup_secret, begin_oprfs, finalize_oprfs}; + use prost::Message; use proto::svr3; + use rand_core::{OsRng, RngCore}; + use test_case::test_case; use super::*; diff --git a/rust/svr3/src/oprf/ciphersuite.rs b/rust/svr3/src/oprf/ciphersuite.rs index c169ec4d..b3e81da2 100644 --- a/rust/svr3/src/oprf/ciphersuite.rs +++ b/rust/svr3/src/oprf/ciphersuite.rs @@ -2,9 +2,10 @@ // Copyright 2023 Signal Messenger, LLC. // SPDX-License-Identifier: AGPL-3.0-only // -use super::util::expand_message_xmd_sha512; use curve25519_dalek::ristretto::RistrettoPoint; +use super::util::expand_message_xmd_sha512; + const HASH_TO_GROUP_DST: &str = "HashToGroup-OPRFV1-\0-ristretto255-SHA512"; pub fn hash_to_group(data: &[u8]) -> RistrettoPoint { @@ -16,13 +17,14 @@ pub fn hash_to_group(data: &[u8]) -> RistrettoPoint { #[cfg(test)] pub mod tests { - use crate::oprf::errors::OPRFError; - use crate::oprf::util::{expand_message_xmd_sha512, i2osp_u16}; use curve25519_dalek::constants; use curve25519_dalek::ristretto::RistrettoPoint; use curve25519_dalek::scalar::Scalar; use hex_literal::hex; + use crate::oprf::errors::OPRFError; + use crate::oprf::util::{expand_message_xmd_sha512, i2osp_u16}; + const DERIVE_KEYPAIR_DST: &str = "DeriveKeyPairOPRFV1-\0-ristretto255-SHA512"; fn is_zero(bytes: &[u8]) -> bool { diff --git a/rust/svr3/src/oprf/util.rs b/rust/svr3/src/oprf/util.rs index f10657bd..d14c2043 100644 --- a/rust/svr3/src/oprf/util.rs +++ b/rust/svr3/src/oprf/util.rs @@ -5,9 +5,10 @@ use std::cmp; use std::convert::{TryFrom, TryInto}; -use super::errors::OPRFError; use sha2::{Digest, Sha512}; +use super::errors::OPRFError; + const SHA512_BLOCK_BYTES: usize = 128usize; const SHA512_OUTPUT_BYTES: usize = 64usize; diff --git a/rust/svr3/src/ppss.rs b/rust/svr3/src/ppss.rs index fdac9df0..5153b3b1 100644 --- a/rust/svr3/src/ppss.rs +++ b/rust/svr3/src/ppss.rs @@ -6,13 +6,14 @@ //! Implements the Password Protected secret Sharing (PPSS) scheme of //! [JKKX16](https://eprint.iacr.org/2016/144.pdf) using XOR-based secret sharing. +use std::convert::TryInto; + use curve25519_dalek::ristretto::CompressedRistretto; use curve25519_dalek::Scalar; use displaydoc::Display; use hkdf::Hkdf; use rand_core::CryptoRngCore; use sha2::{Digest, Sha256}; -use std::convert::TryInto; use subtle::ConstantTimeEq; use crate::oprf; @@ -288,10 +289,11 @@ pub fn restore_secret( pub mod testutils { use std::collections::HashMap; - use super::*; use curve25519_dalek::scalar::Scalar; use curve25519_dalek::RistrettoPoint; + use super::*; + pub struct OPRFServerSet { server_secrets: HashMap, } diff --git a/rust/usernames/src/username.rs b/rust/usernames/src/username.rs index e54f2341..a439dd23 100644 --- a/rust/usernames/src/username.rs +++ b/rust/usernames/src/username.rs @@ -10,11 +10,10 @@ use std::str::FromStr; use curve25519_dalek::ristretto::{CompressedRistretto, RistrettoPoint}; use curve25519_dalek::scalar::Scalar; use lazy_static::lazy_static; -use rand::Rng; -use sha2::{Digest, Sha512}; - use poksho::args::{PointArgs, ScalarArgs}; use poksho::{PokshoError, Statement}; +use rand::Rng; +use sha2::{Digest, Sha512}; use crate::constants::{ BASE_POINTS, CANDIDATES_PER_RANGE, DISCRIMINATOR_RANGES, MAX_NICKNAME_LENGTH, diff --git a/rust/usernames/src/username_links.rs b/rust/usernames/src/username_links.rs index 57873f22..ae101c05 100644 --- a/rust/usernames/src/username_links.rs +++ b/rust/usernames/src/username_links.rs @@ -6,9 +6,8 @@ use hmac::Mac; use prost::Message; use rand::{CryptoRng, Rng}; -use subtle::ConstantTimeEq; - use signal_crypto::{aes_256_cbc_decrypt, aes_256_cbc_encrypt}; +use subtle::ConstantTimeEq; use crate::constants::{ USERNAME_LINK_ENTROPY_SIZE, USERNAME_LINK_HMAC_LEN, USERNAME_LINK_IV_SIZE, @@ -109,9 +108,8 @@ fn random_bytes(rng: &mut R) -> [u8; SIZE mod test { use rand::rngs::OsRng; - use crate::constants::{DISCRIMINATOR_RANGES, MAX_NICKNAME_LENGTH}; - use super::*; + use crate::constants::{DISCRIMINATOR_RANGES, MAX_NICKNAME_LENGTH}; const TEST_CTEXT_SIZE: usize = 32; diff --git a/rust/zkcredential/src/issuance/blind.rs b/rust/zkcredential/src/issuance/blind.rs index 27cb58e0..2201946b 100644 --- a/rust/zkcredential/src/issuance/blind.rs +++ b/rust/zkcredential/src/issuance/blind.rs @@ -60,13 +60,12 @@ use serde::{Deserialize, Serialize}; use crate::attributes::{Attribute, RevealedAttribute}; use crate::credentials::{Credential, CredentialKeyPair, CredentialPublicKey, NUM_SUPPORTED_ATTRS}; +#[cfg(doc)] +use crate::issuance::IssuanceProof; use crate::issuance::IssuanceProofBuilder; use crate::sho::ShoExt; use crate::{VerificationFailure, RANDOMNESS_LEN}; -#[cfg(doc)] -use crate::issuance::IssuanceProof; - /// Marker trait used by [`BlindedPoint`] and [`BlindedAttribute`]. /// /// See [`WithNonce`] and [`WithoutNonce`]. diff --git a/rust/zkgroup/src/api/auth/auth_credential_with_pni/zkc.rs b/rust/zkgroup/src/api/auth/auth_credential_with_pni/zkc.rs index fa836d51..fd9069ad 100644 --- a/rust/zkgroup/src/api/auth/auth_credential_with_pni/zkc.rs +++ b/rust/zkgroup/src/api/auth/auth_credential_with_pni/zkc.rs @@ -228,9 +228,8 @@ impl AuthCredentialWithPniZkcPresentation { mod test { use zkcredential::RANDOMNESS_LEN; - use crate::SECONDS_PER_DAY; - use super::*; + use crate::SECONDS_PER_DAY; #[test] fn issue_receive_present() { diff --git a/rust/zkgroup/src/api/call_links/auth_credential.rs b/rust/zkgroup/src/api/call_links/auth_credential.rs index d3828595..aa755d46 100644 --- a/rust/zkgroup/src/api/call_links/auth_credential.rs +++ b/rust/zkgroup/src/api/call_links/auth_credential.rs @@ -12,6 +12,7 @@ use partial_default::PartialDefault; use serde::{Deserialize, Serialize}; +use super::{CallLinkPublicParams, CallLinkSecretParams}; use crate::common::serialization::ReservedByte; use crate::common::simple_types::*; use crate::crypto::uid_encryption; @@ -20,8 +21,6 @@ use crate::generic_server_params::{GenericServerPublicParams, GenericServerSecre use crate::groups::UuidCiphertext; use crate::ZkGroupVerificationFailure; -use super::{CallLinkPublicParams, CallLinkSecretParams}; - const CREDENTIAL_LABEL: &[u8] = b"20230421_Signal_CallLinkAuthCredential"; #[derive(Serialize, Deserialize, PartialDefault)] diff --git a/rust/zkgroup/src/api/call_links/create_credential.rs b/rust/zkgroup/src/api/call_links/create_credential.rs index ddb4b383..a94e1e7d 100644 --- a/rust/zkgroup/src/api/call_links/create_credential.rs +++ b/rust/zkgroup/src/api/call_links/create_credential.rs @@ -15,6 +15,7 @@ use partial_default::PartialDefault; use poksho::ShoApi; use serde::{Deserialize, Serialize}; +use super::{CallLinkPublicParams, CallLinkSecretParams}; use crate::common::serialization::ReservedByte; use crate::common::sho::Sho; use crate::common::simple_types::*; @@ -24,8 +25,6 @@ use crate::generic_server_params::{GenericServerPublicParams, GenericServerSecre use crate::groups::UuidCiphertext; use crate::ZkGroupVerificationFailure; -use super::{CallLinkPublicParams, CallLinkSecretParams}; - #[derive(Serialize, Deserialize, Clone, Copy)] struct CallLinkRoomIdPoint(RistrettoPoint); diff --git a/rust/zkgroup/src/api/call_links/params.rs b/rust/zkgroup/src/api/call_links/params.rs index 8fceb17a..e3a77381 100644 --- a/rust/zkgroup/src/api/call_links/params.rs +++ b/rust/zkgroup/src/api/call_links/params.rs @@ -3,13 +3,13 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use partial_default::PartialDefault; +use serde::{Deserialize, Serialize}; + use crate::common::errors::*; use crate::common::serialization::ReservedByte; use crate::common::sho::*; - use crate::{api, crypto}; -use partial_default::PartialDefault; -use serde::{Deserialize, Serialize}; #[derive(Copy, Clone, Serialize, Deserialize, PartialDefault)] pub struct CallLinkSecretParams { diff --git a/rust/zkgroup/src/api/groups/group_params.rs b/rust/zkgroup/src/api/groups/group_params.rs index e13049ea..0f904264 100644 --- a/rust/zkgroup/src/api/groups/group_params.rs +++ b/rust/zkgroup/src/api/groups/group_params.rs @@ -3,17 +3,18 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use aes_gcm_siv::aead::generic_array::GenericArray; +use aes_gcm_siv::aead::Aead; +use aes_gcm_siv::{Aes256GcmSiv, KeyInit}; +use partial_default::PartialDefault; +use serde::{Deserialize, Serialize}; + use crate::common::constants::*; use crate::common::errors::*; use crate::common::serialization::ReservedByte; use crate::common::sho::*; use crate::common::simple_types::*; use crate::{api, crypto}; -use aes_gcm_siv::aead::generic_array::GenericArray; -use aes_gcm_siv::aead::Aead; -use aes_gcm_siv::{Aes256GcmSiv, KeyInit}; -use partial_default::PartialDefault; -use serde::{Deserialize, Serialize}; #[derive(Copy, Clone, Serialize, Deserialize, Default)] pub struct GroupMasterKey { diff --git a/rust/zkgroup/src/api/groups/uuid_ciphertext.rs b/rust/zkgroup/src/api/groups/uuid_ciphertext.rs index acd75ee4..8e6b9949 100644 --- a/rust/zkgroup/src/api/groups/uuid_ciphertext.rs +++ b/rust/zkgroup/src/api/groups/uuid_ciphertext.rs @@ -3,12 +3,12 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::common::serialization::ReservedByte; - -use crate::crypto; use partial_default::PartialDefault; use serde::{Deserialize, Serialize}; +use crate::common::serialization::ReservedByte; +use crate::crypto; + #[derive(Copy, Clone, Serialize, Deserialize, PartialEq, Eq, PartialDefault)] pub struct UuidCiphertext { pub(crate) reserved: ReservedByte, diff --git a/rust/zkgroup/src/api/profiles/expiring_profile_key_credential.rs b/rust/zkgroup/src/api/profiles/expiring_profile_key_credential.rs index 8190f46a..39bb2275 100644 --- a/rust/zkgroup/src/api/profiles/expiring_profile_key_credential.rs +++ b/rust/zkgroup/src/api/profiles/expiring_profile_key_credential.rs @@ -3,11 +3,12 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use partial_default::PartialDefault; +use serde::{Deserialize, Serialize}; + use crate::common::serialization::ReservedByte; use crate::common::simple_types::*; use crate::crypto; -use partial_default::PartialDefault; -use serde::{Deserialize, Serialize}; #[derive(Copy, Clone, Serialize, Deserialize, PartialDefault)] pub struct ExpiringProfileKeyCredential { diff --git a/rust/zkgroup/src/api/profiles/expiring_profile_key_credential_response.rs b/rust/zkgroup/src/api/profiles/expiring_profile_key_credential_response.rs index 1243ef9c..7fbd16c0 100644 --- a/rust/zkgroup/src/api/profiles/expiring_profile_key_credential_response.rs +++ b/rust/zkgroup/src/api/profiles/expiring_profile_key_credential_response.rs @@ -3,11 +3,12 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use partial_default::PartialDefault; +use serde::{Deserialize, Serialize}; + use crate::common::serialization::ReservedByte; use crate::common::simple_types::*; use crate::crypto; -use partial_default::PartialDefault; -use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize, PartialDefault)] pub struct ExpiringProfileKeyCredentialResponse { diff --git a/rust/zkgroup/src/api/profiles/profile_key_commitment.rs b/rust/zkgroup/src/api/profiles/profile_key_commitment.rs index ce44c218..eeaba043 100644 --- a/rust/zkgroup/src/api/profiles/profile_key_commitment.rs +++ b/rust/zkgroup/src/api/profiles/profile_key_commitment.rs @@ -3,12 +3,12 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::common::serialization::ReservedByte; - -use crate::crypto; use partial_default::PartialDefault; use serde::{Deserialize, Serialize}; +use crate::common::serialization::ReservedByte; +use crate::crypto; + #[derive(Copy, Clone, Serialize, Deserialize, PartialDefault)] pub struct ProfileKeyCommitment { pub(crate) reserved: ReservedByte, diff --git a/rust/zkgroup/src/api/profiles/profile_key_credential_presentation.rs b/rust/zkgroup/src/api/profiles/profile_key_credential_presentation.rs index 299caab8..55425a10 100644 --- a/rust/zkgroup/src/api/profiles/profile_key_credential_presentation.rs +++ b/rust/zkgroup/src/api/profiles/profile_key_credential_presentation.rs @@ -3,13 +3,14 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use partial_default::PartialDefault; +use serde::{Deserialize, Serialize, Serializer}; + use crate::common::constants::*; use crate::common::errors::*; use crate::common::serialization::VersionByte; use crate::common::simple_types::*; use crate::{api, crypto}; -use partial_default::PartialDefault; -use serde::{Deserialize, Serialize, Serializer}; #[derive(Serialize, Deserialize, PartialDefault)] pub struct ProfileKeyCredentialPresentationV1 { diff --git a/rust/zkgroup/src/api/profiles/profile_key_credential_request_context.rs b/rust/zkgroup/src/api/profiles/profile_key_credential_request_context.rs index 7c624460..036306bf 100644 --- a/rust/zkgroup/src/api/profiles/profile_key_credential_request_context.rs +++ b/rust/zkgroup/src/api/profiles/profile_key_credential_request_context.rs @@ -3,11 +3,12 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use partial_default::PartialDefault; +use serde::{Deserialize, Serialize}; + use crate::common::serialization::ReservedByte; use crate::common::simple_types::*; use crate::{api, crypto}; -use partial_default::PartialDefault; -use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize, PartialDefault)] pub struct ProfileKeyCredentialRequestContext { diff --git a/rust/zkgroup/src/api/profiles/profile_key_version.rs b/rust/zkgroup/src/api/profiles/profile_key_version.rs index 32b61048..604a4a10 100644 --- a/rust/zkgroup/src/api/profiles/profile_key_version.rs +++ b/rust/zkgroup/src/api/profiles/profile_key_version.rs @@ -3,10 +3,11 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::common::simple_types::*; use serde::ser::SerializeTuple; use serde::{Serialize, Serializer}; +use crate::common::simple_types::*; + #[derive(Copy, Clone)] pub struct ProfileKeyVersion { pub(crate) bytes: ProfileKeyVersionEncodedBytes, diff --git a/rust/zkgroup/src/bin/generate_generic_server_params.rs b/rust/zkgroup/src/bin/generate_generic_server_params.rs index 6baf3515..9d7c3cdf 100644 --- a/rust/zkgroup/src/bin/generate_generic_server_params.rs +++ b/rust/zkgroup/src/bin/generate_generic_server_params.rs @@ -7,9 +7,7 @@ //! [`bincode::serialize`]. use base64::prelude::{Engine, BASE64_STANDARD}; - use rand::Rng; - use zkgroup::generic_server_params::GenericServerSecretParams; use zkgroup::RANDOMNESS_LEN; diff --git a/rust/zkgroup/src/bin/generate_server_params.rs b/rust/zkgroup/src/bin/generate_server_params.rs index 17290436..4db24073 100644 --- a/rust/zkgroup/src/bin/generate_server_params.rs +++ b/rust/zkgroup/src/bin/generate_server_params.rs @@ -3,10 +3,9 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use base64::prelude::{Engine, BASE64_STANDARD}; - use std::io::Read; +use base64::prelude::{Engine, BASE64_STANDARD}; use rand::Rng; use zkgroup::{ServerSecretParams, RANDOMNESS_LEN}; diff --git a/rust/zkgroup/src/crypto/credentials.rs b/rust/zkgroup/src/crypto/credentials.rs index 12547283..cfbefdb1 100644 --- a/rust/zkgroup/src/crypto/credentials.rs +++ b/rust/zkgroup/src/crypto/credentials.rs @@ -8,6 +8,8 @@ use curve25519_dalek_signal::constants::RISTRETTO_BASEPOINT_POINT; use curve25519_dalek_signal::ristretto::RistrettoPoint; use curve25519_dalek_signal::scalar::Scalar; +use hex_literal::hex; +use lazy_static::lazy_static; use partial_default::PartialDefault; use serde::{Deserialize, Serialize}; @@ -23,9 +25,6 @@ use crate::{ NUM_AUTH_CRED_ATTRIBUTES, NUM_PROFILE_KEY_CRED_ATTRIBUTES, NUM_RECEIPT_CRED_ATTRIBUTES, }; -use hex_literal::hex; -use lazy_static::lazy_static; - lazy_static! { static ref SYSTEM_PARAMS: SystemParams = crate::deserialize::(SystemParams::SYSTEM_HARDCODED).unwrap(); @@ -472,11 +471,10 @@ impl BlindedReceiptCredentialWithSecretNonce { #[cfg(test)] mod tests { + use super::*; use crate::common::constants::*; use crate::crypto::proofs; - use super::*; - #[test] fn test_system() { let params = SystemParams::generate(); diff --git a/rust/zkgroup/src/crypto/profile_key_commitment.rs b/rust/zkgroup/src/crypto/profile_key_commitment.rs index 25fa7b6e..2699e265 100644 --- a/rust/zkgroup/src/crypto/profile_key_commitment.rs +++ b/rust/zkgroup/src/crypto/profile_key_commitment.rs @@ -5,16 +5,16 @@ #![allow(non_snake_case)] +use curve25519_dalek_signal::ristretto::RistrettoPoint; +use curve25519_dalek_signal::scalar::Scalar; +use lazy_static::lazy_static; +use partial_default::PartialDefault; +use serde::{Deserialize, Serialize}; + use crate::common::constants::*; use crate::common::sho::*; use crate::common::simple_types::*; use crate::crypto::profile_key_struct; -use curve25519_dalek_signal::ristretto::RistrettoPoint; -use curve25519_dalek_signal::scalar::Scalar; -use partial_default::PartialDefault; -use serde::{Deserialize, Serialize}; - -use lazy_static::lazy_static; lazy_static! { static ref SYSTEM_PARAMS: SystemParams = diff --git a/rust/zkgroup/src/crypto/profile_key_credential_request.rs b/rust/zkgroup/src/crypto/profile_key_credential_request.rs index f42d9bee..682d831a 100644 --- a/rust/zkgroup/src/crypto/profile_key_credential_request.rs +++ b/rust/zkgroup/src/crypto/profile_key_credential_request.rs @@ -5,17 +5,18 @@ #![allow(non_snake_case)] -use crate::common::sho::*; -use crate::crypto::credentials::{ - BlindedExpiringProfileKeyCredential, ExpiringProfileKeyCredential, -}; -use crate::crypto::profile_key_struct; use curve25519_dalek_signal::constants::RISTRETTO_BASEPOINT_POINT; use curve25519_dalek_signal::ristretto::RistrettoPoint; use curve25519_dalek_signal::scalar::Scalar; use partial_default::PartialDefault; use serde::{Deserialize, Serialize}; +use crate::common::sho::*; +use crate::crypto::credentials::{ + BlindedExpiringProfileKeyCredential, ExpiringProfileKeyCredential, +}; +use crate::crypto::profile_key_struct; + #[derive(Copy, Clone, PartialEq, Eq, Serialize, Deserialize, PartialDefault)] pub struct KeyPair { // private diff --git a/rust/zkgroup/src/crypto/profile_key_encryption.rs b/rust/zkgroup/src/crypto/profile_key_encryption.rs index 88009e62..5f192d68 100644 --- a/rust/zkgroup/src/crypto/profile_key_encryption.rs +++ b/rust/zkgroup/src/crypto/profile_key_encryption.rs @@ -5,18 +5,17 @@ #![allow(non_snake_case)] +use curve25519_dalek_signal::ristretto::RistrettoPoint; +use lazy_static::lazy_static; +use partial_default::PartialDefault; +use serde::{Deserialize, Serialize}; +use subtle::{Choice, ConditionallySelectable, ConstantTimeEq}; +use zkcredential::attributes::Attribute; + use crate::common::errors::*; use crate::common::sho::*; use crate::common::simple_types::*; use crate::crypto::profile_key_struct; -use curve25519_dalek_signal::ristretto::RistrettoPoint; -use partial_default::PartialDefault; -use serde::{Deserialize, Serialize}; - -use subtle::{Choice, ConditionallySelectable, ConstantTimeEq}; - -use lazy_static::lazy_static; -use zkcredential::attributes::Attribute; lazy_static! { static ref SYSTEM_PARAMS: SystemParams = diff --git a/rust/zkgroup/src/crypto/profile_key_struct.rs b/rust/zkgroup/src/crypto/profile_key_struct.rs index b6e7b5f3..f01133e5 100644 --- a/rust/zkgroup/src/crypto/profile_key_struct.rs +++ b/rust/zkgroup/src/crypto/profile_key_struct.rs @@ -5,15 +5,15 @@ #![allow(non_snake_case)] -use crate::common::constants::*; -use crate::common::sho::*; -use crate::common::simple_types::*; use curve25519_dalek_signal::ristretto::RistrettoPoint; use partial_default::PartialDefault; use serde::{Deserialize, Serialize}; - use subtle::{Choice, ConditionallySelectable}; +use crate::common::constants::*; +use crate::common::sho::*; +use crate::common::simple_types::*; + #[derive(Copy, Clone, PartialEq, Eq, Serialize, Deserialize, PartialDefault)] pub struct ProfileKeyStruct { pub(crate) bytes: ProfileKeyBytes, diff --git a/rust/zkgroup/src/crypto/proofs.rs b/rust/zkgroup/src/crypto/proofs.rs index 13b3a54f..10403b25 100644 --- a/rust/zkgroup/src/crypto/proofs.rs +++ b/rust/zkgroup/src/crypto/proofs.rs @@ -8,7 +8,6 @@ use curve25519_dalek_signal::constants::RISTRETTO_BASEPOINT_POINT; use curve25519_dalek_signal::ristretto::RistrettoPoint; use curve25519_dalek_signal::traits::Identity; - use partial_default::PartialDefault; use serde::{Deserialize, Serialize}; use zkcredential::attributes::Attribute; diff --git a/rust/zkgroup/src/crypto/signature.rs b/rust/zkgroup/src/crypto/signature.rs index c03deec0..995cb5cd 100644 --- a/rust/zkgroup/src/crypto/signature.rs +++ b/rust/zkgroup/src/crypto/signature.rs @@ -3,16 +3,17 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::common::constants::*; -use crate::common::errors::*; -use crate::common::sho::*; -use crate::common::simple_types::*; use curve25519_dalek_signal::constants::RISTRETTO_BASEPOINT_POINT; use curve25519_dalek_signal::ristretto::RistrettoPoint; use curve25519_dalek_signal::scalar::Scalar; use partial_default::PartialDefault; use serde::{Deserialize, Serialize}; +use crate::common::constants::*; +use crate::common::errors::*; +use crate::common::sho::*; +use crate::common::simple_types::*; + #[derive(Copy, Clone, PartialEq, Eq, Serialize, Deserialize, PartialDefault)] pub struct KeyPair { pub(crate) signing_key: Scalar, diff --git a/rust/zkgroup/src/crypto/uid_encryption.rs b/rust/zkgroup/src/crypto/uid_encryption.rs index 5f8f7838..1159e16c 100644 --- a/rust/zkgroup/src/crypto/uid_encryption.rs +++ b/rust/zkgroup/src/crypto/uid_encryption.rs @@ -5,10 +5,6 @@ #![allow(non_snake_case)] -use crate::common::errors::*; -use crate::common::sho::*; -use crate::crypto::uid_struct; - use curve25519_dalek_signal::ristretto::RistrettoPoint; use lazy_static::lazy_static; use partial_default::PartialDefault; @@ -16,6 +12,10 @@ use serde::{Deserialize, Serialize}; use subtle::{ConditionallySelectable, ConstantTimeEq}; use zkcredential::attributes::Attribute; +use crate::common::errors::*; +use crate::common::sho::*; +use crate::crypto::uid_struct; + lazy_static! { static ref SYSTEM_PARAMS: SystemParams = crate::deserialize::(&SystemParams::SYSTEM_HARDCODED).unwrap(); diff --git a/rust/zkgroup/src/crypto/uid_struct.rs b/rust/zkgroup/src/crypto/uid_struct.rs index 3dc8b2de..f2a97180 100644 --- a/rust/zkgroup/src/crypto/uid_struct.rs +++ b/rust/zkgroup/src/crypto/uid_struct.rs @@ -5,14 +5,15 @@ #![allow(non_snake_case)] -use crate::common::sho::*; -use crate::common::simple_types::*; use curve25519_dalek_signal::ristretto::RistrettoPoint; use libsignal_core::ServiceId; use partial_default::PartialDefault; use serde::{Deserialize, Serialize}; use sha2::Sha256; +use crate::common::sho::*; +use crate::common::simple_types::*; + #[derive(Copy, Clone, PartialEq, Eq, Serialize, Deserialize, PartialDefault)] pub struct UidStruct { // Currently unused. It would be possible to convert this back to the correct kind of ServiceId