diff --git a/.rustfmt.toml b/.rustfmt.toml index 3a3f3f1dd..70c1911ad 100644 --- a/.rustfmt.toml +++ b/.rustfmt.toml @@ -1,2 +1,3 @@ imports_granularity = "Module" group_imports = "StdExternalCrate" +style_edition = "2024" diff --git a/rust/account-keys/benches/hash.rs b/rust/account-keys/benches/hash.rs index d1b3fc2f2..c64b8546e 100644 --- a/rust/account-keys/benches/hash.rs +++ b/rust/account-keys/benches/hash.rs @@ -4,7 +4,7 @@ // use const_str::hex; -use criterion::{criterion_group, criterion_main, Criterion}; +use criterion::{Criterion, criterion_group, criterion_main}; pub fn hash(c: &mut Criterion) { // let mut group = c.benchmark_group("pin_hash"); diff --git a/rust/account-keys/src/backup.rs b/rust/account-keys/src/backup.rs index 6aae667b0..510457468 100644 --- a/rust/account-keys/src/backup.rs +++ b/rust/account-keys/src/backup.rs @@ -11,8 +11,8 @@ //! SVR, so that a restorer can reconstruct the `BackupId`. use hkdf::Hkdf; -use libsignal_core::curve::PrivateKey; use libsignal_core::Aci; +use libsignal_core::curve::PrivateKey; use partial_default::PartialDefault; use sha2::Sha256; diff --git a/rust/account-keys/src/hash.rs b/rust/account-keys/src/hash.rs index c3feea4a2..24fcea5d0 100644 --- a/rust/account-keys/src/hash.rs +++ b/rust/account-keys/src/hash.rs @@ -21,7 +21,7 @@ //! 3. The string must then be [NFKD normalized](https://unicode.org/reports/tr15/#Norm_Forms) //! -use argon2::password_hash::{rand_core, Salt, SaltString}; +use argon2::password_hash::{Salt, SaltString, rand_core}; use argon2::{ Algorithm, Argon2, ParamsBuilder, PasswordHash, PasswordHasher, PasswordVerifier, Version, }; @@ -131,7 +131,7 @@ mod test { use sha2::Sha256; use super::*; - use crate::hash::{local_pin_hash, verify_local_pin_hash, PinHash}; + use crate::hash::{PinHash, local_pin_hash, verify_local_pin_hash}; fn hmac_sha256(key: &[u8], data: &[u8]) -> [u8; 32] { type HmacSha256 = Hmac; @@ -193,7 +193,9 @@ mod test { hex!("000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f"), hex!("202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f"), hex!("ab7e8499d21f80a6600b3b9ee349ac6d72c07e3359fe885a934ba7aa844429f8"), - hex!("3f33ce58eb25b40436592a30eae2a8fabab1899095f4e2fba6e2d0dc43b4a2d9cac5a3931748522393951e0e54dec769"), + hex!( + "3f33ce58eb25b40436592a30eae2a8fabab1899095f4e2fba6e2d0dc43b4a2d9cac5a3931748522393951e0e54dec769" + ), ); } @@ -204,7 +206,9 @@ mod test { hex!("202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f"), hex!("88a787415a2ecd79da0d1016a82a27c5c695c9a19b88b0aa1d35683280aa9a67"), hex!("301d9dd1e96f20ce51083f67d3298fd37b97525de8324d5e12ed2d407d3d927b"), - hex!("9d9b05402ea39c17ff1c9298c8a0e86784a352aa02a74943bf8bcf07ec0f4b574a5b786ad0182c8d308d9eb06538b8c9"), + hex!( + "9d9b05402ea39c17ff1c9298c8a0e86784a352aa02a74943bf8bcf07ec0f4b574a5b786ad0182c8d308d9eb06538b8c9" + ), ); } diff --git a/rust/account-keys/src/lib.rs b/rust/account-keys/src/lib.rs index 1f2c3c4e2..0c8e494eb 100644 --- a/rust/account-keys/src/lib.rs +++ b/rust/account-keys/src/lib.rs @@ -11,10 +11,10 @@ use core::{fmt, str}; pub use backup::*; pub use error::{Error, Result}; -pub use hash::{local_pin_hash, verify_local_pin_hash, PinHash}; +pub use hash::{PinHash, local_pin_hash, verify_local_pin_hash}; use hkdf::Hkdf; -use rand::distr::slice; use rand::Rng; +use rand::distr::slice; use sha2::Sha256; pub const SVR_KEY_LEN: usize = 32; diff --git a/rust/attest/src/cert_chain.rs b/rust/attest/src/cert_chain.rs index 57218b28d..207695b22 100644 --- a/rust/attest/src/cert_chain.rs +++ b/rust/attest/src/cert_chain.rs @@ -10,7 +10,7 @@ use boring_signal::pkey::Public; use boring_signal::stack::{Stack, Stackable}; use boring_signal::x509::crl::X509CRLRef; use boring_signal::x509::store::X509StoreRef; -use boring_signal::x509::{X509StoreContext, X509}; +use boring_signal::x509::{X509, X509StoreContext}; use crate::error::ContextError; use crate::expireable::Expireable; @@ -169,9 +169,9 @@ pub mod testutil { use boring_signal::hash::MessageDigest; use boring_signal::nid::Nid; use boring_signal::pkey::{PKey, Private}; - use boring_signal::x509::crl::{X509CRLBuilder, X509Revoked, X509CRL}; + use boring_signal::x509::crl::{X509CRL, X509CRLBuilder, X509Revoked}; use boring_signal::x509::extension::BasicConstraints; - use boring_signal::x509::{X509Name, X509}; + use boring_signal::x509::{X509, X509Name}; use super::CertChain; @@ -311,9 +311,9 @@ pub mod testutil { mod test { use assert_matches::assert_matches; use boring_signal::nid::Nid; + use boring_signal::x509::X509Ref; use boring_signal::x509::store::{X509Store, X509StoreBuilder}; use boring_signal::x509::verify::X509VerifyFlags; - use boring_signal::x509::X509Ref; use super::testutil::*; use super::*; @@ -422,9 +422,11 @@ mod test { let cert_chain = CertChain { certs: c.into_iter().map(|p| p.x509).collect(), }; - assert!(cert_chain - .validate_chain(&trust, &[&intermediate_crl]) - .is_err()) + assert!( + cert_chain + .validate_chain(&trust, &[&intermediate_crl]) + .is_err() + ) } #[test] @@ -436,9 +438,11 @@ mod test { let cert_chain = CertChain { certs: c.into_iter().map(|p| p.x509).collect(), }; - assert!(cert_chain - .validate_chain(&trust, &[&intermediate_crl]) - .is_err()) + assert!( + cert_chain + .validate_chain(&trust, &[&intermediate_crl]) + .is_err() + ) } #[test] diff --git a/rust/attest/src/dcap.rs b/rust/attest/src/dcap.rs index ce51cfe92..ec4592e6f 100644 --- a/rust/attest/src/dcap.rs +++ b/rust/attest/src/dcap.rs @@ -34,7 +34,7 @@ use boring_signal::pkey::{PKey, PKeyRef, Public}; use boring_signal::x509::crl::X509CRLRef; use boring_signal::x509::store::{X509Store, X509StoreBuilder}; use boring_signal::x509::verify::X509VerifyFlags; -use boring_signal::x509::{X509Ref, X509}; +use boring_signal::x509::{X509, X509Ref}; use hex::ToHex; use uuid::Uuid; @@ -760,14 +760,16 @@ mod test { let evidence_bytes = include_bytes!("../tests/data/dcap-expired.evidence"); let endorsements_bytes = include_bytes!("../tests/data/dcap-expired.endorsements"); - assert!(verify_remote_attestation( - evidence_bytes.as_ref(), - endorsements_bytes.as_ref(), - &EXPECTED_MRENCLAVE, - ACCEPTED_SW_ADVISORIES, - current_time, - ) - .is_err()); + assert!( + verify_remote_attestation( + evidence_bytes.as_ref(), + endorsements_bytes.as_ref(), + &EXPECTED_MRENCLAVE, + ACCEPTED_SW_ADVISORIES, + current_time, + ) + .is_err() + ); } #[test] diff --git a/rust/attest/src/dcap/endorsements.rs b/rust/attest/src/dcap/endorsements.rs index d1882666e..2d461b6d2 100644 --- a/rust/attest/src/dcap/endorsements.rs +++ b/rust/attest/src/dcap/endorsements.rs @@ -19,7 +19,7 @@ use serde_json::value::RawValue; use strum::EnumCount; use crate::cert_chain::CertChain; -use crate::dcap::ecdsa::{deserialize_ecdsa_signature, EcdsaSigned}; +use crate::dcap::ecdsa::{EcdsaSigned, deserialize_ecdsa_signature}; use crate::dcap::revocation_list::RevocationList; use crate::dcap::{Error, Expireable, Result}; use crate::endian::UInt32LE; @@ -326,9 +326,11 @@ mod tests { TcbStatus::SWHardeningNeeded, tcb_info.tcb_levels[0].tcb_status ); - assert!(tcb_info.tcb_levels[0] - .advisory_ids - .contains(&"INTEL-SA-00657".to_owned())); + assert!( + tcb_info.tcb_levels[0] + .advisory_ids + .contains(&"INTEL-SA-00657".to_owned()) + ); assert_eq!( [7, 9, 3, 3, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], tcb_info.tcb_levels[0].tcb.components() diff --git a/rust/attest/src/dcap/fakes.rs b/rust/attest/src/dcap/fakes.rs index 9d238779a..c2475ce0b 100644 --- a/rust/attest/src/dcap/fakes.rs +++ b/rust/attest/src/dcap/fakes.rs @@ -23,13 +23,13 @@ use boring_signal::nid::Nid; use boring_signal::pkey::{PKey, Private, Public}; use chrono::Utc; -use crate::cert_chain::testutil::TestCert; use crate::cert_chain::CertChain; +use crate::cert_chain::testutil::TestCert; 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 crate::dcap::{Attestation, attest_impl}; 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 e06434e77..df41436bf 100644 --- a/rust/attest/src/dcap/revocation_list.rs +++ b/rust/attest/src/dcap/revocation_list.rs @@ -7,7 +7,7 @@ use std::collections::HashSet; use std::time::SystemTime; use boring_signal::nid::Nid; -use boring_signal::x509::crl::{X509CRLRef, X509CRL}; +use boring_signal::x509::crl::{X509CRL, X509CRLRef}; use crate::dcap::{Error, Expireable, Result}; diff --git a/rust/attest/src/dcap/sgx_quote.rs b/rust/attest/src/dcap/sgx_quote.rs index af8cffd31..9809ab28c 100644 --- a/rust/attest/src/dcap/sgx_quote.rs +++ b/rust/attest/src/dcap/sgx_quote.rs @@ -19,7 +19,7 @@ use sha2::Digest; use zerocopy::{FromBytes, Immutable, IntoBytes}; use crate::cert_chain::CertChain; -use crate::dcap::ecdsa::{ecdsa_signature_from_bytes, EcdsaSigned}; +use crate::dcap::ecdsa::{EcdsaSigned, ecdsa_signature_from_bytes}; use crate::dcap::sgx_report_body::SgxReportBody; use crate::dcap::sgx_x509::SgxPckExtension; use crate::dcap::{Error, Expireable}; diff --git a/rust/attest/src/dcap/sgx_x509.rs b/rust/attest/src/dcap/sgx_x509.rs index 53a10e632..366ebd675 100644 --- a/rust/attest/src/dcap/sgx_x509.rs +++ b/rust/attest/src/dcap/sgx_x509.rs @@ -5,7 +5,7 @@ use std::collections::HashMap; -use asn1::{oid, ObjectIdentifier, SequenceOf}; +use asn1::{ObjectIdentifier, SequenceOf, oid}; use boring_signal::asn1::Asn1ObjectRef; use boring_signal::nid::Nid; diff --git a/rust/attest/src/svr2.rs b/rust/attest/src/svr2.rs index fe4d0c5f4..da6f1344f 100644 --- a/rust/attest/src/svr2.rs +++ b/rust/attest/src/svr2.rs @@ -145,23 +145,25 @@ mod tests { let mrenclave_bytes = hex!("38e01eff4fe357dc0b0e8ef7a44b4abc5489fbccba3a78780f3872c277f62bf3"); - assert!(new_handshake_with_constants( - &mrenclave_bytes, - HANDSHAKE_BYTES, - current_time, - &[], - &RaftConfig { - min_voting_replicas: 3, - max_voting_replicas: 5, - super_majority: 0, - group_id: 0, // wrong - db_version: 2, - attestation_timeout: 604800, - simulated: false, - }, - HandshakeType::PreQuantum, - ) - .is_err()); + assert!( + new_handshake_with_constants( + &mrenclave_bytes, + HANDSHAKE_BYTES, + current_time, + &[], + &RaftConfig { + min_voting_replicas: 3, + max_voting_replicas: 5, + super_majority: 0, + group_id: 0, // wrong + db_version: 2, + attestation_timeout: 604800, + simulated: false, + }, + HandshakeType::PreQuantum, + ) + .is_err() + ); } fn matches( diff --git a/rust/bridge/ffi/src/error.rs b/rust/bridge/ffi/src/error.rs index 49efe5d1a..ef58c5f16 100644 --- a/rust/bridge/ffi/src/error.rs +++ b/rust/bridge/ffi/src/error.rs @@ -7,9 +7,9 @@ use std::ffi::{c_char, c_uchar}; use std::panic::AssertUnwindSafe; use libsignal_bridge::ffi::{ - self, run_ffi_safe, write_result_to, NullPointerError, OwnedBufferOf, SignalFfiError, + self, NullPointerError, OwnedBufferOf, SignalFfiError, run_ffi_safe, write_result_to, }; -use libsignal_bridge::{ffi_arg_type, ffi_result_type, IllegalArgumentError}; +use libsignal_bridge::{IllegalArgumentError, ffi_arg_type, ffi_result_type}; use libsignal_bridge_macros::bridge_fn; use libsignal_core::ProtocolAddress; diff --git a/rust/bridge/ffi/src/lib.rs b/rust/bridge/ffi/src/lib.rs index 53d74eba9..be069d587 100644 --- a/rust/bridge/ffi/src/lib.rs +++ b/rust/bridge/ffi/src/lib.rs @@ -6,10 +6,10 @@ #![allow(clippy::missing_safety_doc)] #![warn(clippy::unwrap_used)] -use std::ffi::{c_char, c_uchar, CString}; +use std::ffi::{CString, c_char, c_uchar}; use libsignal_bridge::ffi::{self, *}; -use libsignal_bridge::{ffi_arg_type, IllegalArgumentError}; +use libsignal_bridge::{IllegalArgumentError, ffi_arg_type}; use libsignal_bridge_macros::bridge_fn; #[cfg(feature = "libsignal-bridge-testing")] #[allow(unused_imports)] diff --git a/rust/bridge/ffi/src/logging.rs b/rust/bridge/ffi/src/logging.rs index 4730c0628..0e3da1bf9 100644 --- a/rust/bridge/ffi/src/logging.rs +++ b/rust/bridge/ffi/src/logging.rs @@ -3,7 +3,7 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use std::ffi::{c_char, c_void, CString}; +use std::ffi::{CString, c_char, c_void}; #[repr(C)] pub enum LogLevel { diff --git a/rust/bridge/jni/impl/src/lib.rs b/rust/bridge/jni/impl/src/lib.rs index 002f5cdbe..96b47c52c 100644 --- a/rust/bridge/jni/impl/src/lib.rs +++ b/rust/bridge/jni/impl/src/lib.rs @@ -6,10 +6,10 @@ #![allow(clippy::missing_safety_doc)] #![deny(clippy::unwrap_used)] +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::net::TokioAsyncContext; use libsignal_bridge::{jni_args, jni_signature}; diff --git a/rust/bridge/jni/impl/src/logging.rs b/rust/bridge/jni/impl/src/logging.rs index d2a309308..1c7cdce81 100644 --- a/rust/bridge/jni/impl/src/logging.rs +++ b/rust/bridge/jni/impl/src/logging.rs @@ -3,7 +3,7 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use std::panic::{catch_unwind, AssertUnwindSafe}; +use std::panic::{AssertUnwindSafe, catch_unwind}; use std::process::abort; use jni::objects::{AutoLocal, GlobalRef, JClass, JObject, JStaticMethodID, JValue}; diff --git a/rust/bridge/node/futures/src/future.rs b/rust/bridge/node/futures/src/future.rs index 272ec8be3..adb62a631 100644 --- a/rust/bridge/node/futures/src/future.rs +++ b/rust/bridge/node/futures/src/future.rs @@ -6,7 +6,7 @@ use std::future::Future; use std::marker::PhantomData; use std::mem; -use std::panic::{catch_unwind, resume_unwind, AssertUnwindSafe}; +use std::panic::{AssertUnwindSafe, catch_unwind, resume_unwind}; use std::pin::Pin; use std::sync::{Arc, Mutex, Weak}; use std::task::{Poll, Waker}; diff --git a/rust/bridge/node/futures/src/future/builder.rs b/rust/bridge/node/futures/src/future/builder.rs index aff709d26..5ada56cfd 100644 --- a/rust/bridge/node/futures/src/future/builder.rs +++ b/rust/bridge/node/futures/src/future/builder.rs @@ -5,8 +5,8 @@ use neon::prelude::*; -use crate::future::*; use crate::PersistentException; +use crate::future::*; /// Sets up a [JsFuture] using a builder pattern. See [JsFuture::get_promise]. pub struct JsFutureBuilder<'a, F, T: 'static + Send> diff --git a/rust/bridge/node/futures/src/promise.rs b/rust/bridge/node/futures/src/promise.rs index d6aebb09a..64f917ef2 100644 --- a/rust/bridge/node/futures/src/promise.rs +++ b/rust/bridge/node/futures/src/promise.rs @@ -4,7 +4,7 @@ // use std::future::Future; -use std::panic::{catch_unwind, AssertUnwindSafe, UnwindSafe}; +use std::panic::{AssertUnwindSafe, UnwindSafe, catch_unwind}; use futures_util::FutureExt; use neon::prelude::*; diff --git a/rust/bridge/node/src/lib.rs b/rust/bridge/node/src/lib.rs index cb8198d0b..7689c220b 100644 --- a/rust/bridge/node/src/lib.rs +++ b/rust/bridge/node/src/lib.rs @@ -10,8 +10,8 @@ use libsignal_bridge::node::{AssumedImmutableBuffer, ResultTypeInfo, SignalNodeE use libsignal_protocol::{IdentityKeyPair, SealedSenderV2SentMessage}; use minidump::Minidump; use minidump_processor::ProcessorOptions; -use minidump_unwind::symbols::string_symbol_supplier; use minidump_unwind::Symbolizer; +use minidump_unwind::symbols::string_symbol_supplier; use neon::prelude::*; use neon::types::buffer::TypedArray; diff --git a/rust/bridge/node/src/logging.rs b/rust/bridge/node/src/logging.rs index 5575898d3..9d6a115b5 100644 --- a/rust/bridge/node/src/logging.rs +++ b/rust/bridge/node/src/logging.rs @@ -3,8 +3,8 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use std::sync::atomic::AtomicBool; use std::sync::Arc; +use std::sync::atomic::AtomicBool; use libsignal_bridge::node::SimpleArgTypeInfo; use neon::prelude::*; diff --git a/rust/bridge/shared/macros/src/jni.rs b/rust/bridge/shared/macros/src/jni.rs index 1353d2562..656c9ff3a 100644 --- a/rust/bridge/shared/macros/src/jni.rs +++ b/rust/bridge/shared/macros/src/jni.rs @@ -8,8 +8,8 @@ use quote::*; use syn::*; use syn_mid::Signature; -use crate::util::{extract_arg_names_and_types, result_type}; use crate::BridgingKind; +use crate::util::{extract_arg_names_and_types, result_type}; pub(crate) fn bridge_fn( name: &str, diff --git a/rust/bridge/shared/macros/src/node.rs b/rust/bridge/shared/macros/src/node.rs index 9df417f25..710af6b68 100644 --- a/rust/bridge/shared/macros/src/node.rs +++ b/rust/bridge/shared/macros/src/node.rs @@ -8,8 +8,8 @@ use quote::*; use syn::*; use syn_mid::Signature; -use crate::util::{extract_arg_names_and_types, result_type}; use crate::BridgingKind; +use crate::util::{extract_arg_names_and_types, result_type}; fn bridge_fn_body(orig_name: &Ident, input_args: &[(&Ident, &Type)]) -> TokenStream2 { // Scroll down to the end of the function to see the quote template. diff --git a/rust/bridge/shared/src/incremental_mac.rs b/rust/bridge/shared/src/incremental_mac.rs index 0ea023615..c0733edf4 100644 --- a/rust/bridge/shared/src/incremental_mac.rs +++ b/rust/bridge/shared/src/incremental_mac.rs @@ -4,12 +4,12 @@ // use crypto_common::KeyInit; -use hmac::digest::typenum::Unsigned; -use hmac::digest::{crypto_common, OutputSizeUser}; use hmac::Hmac; +use hmac::digest::typenum::Unsigned; +use hmac::digest::{OutputSizeUser, crypto_common}; use libsignal_bridge_macros::*; use libsignal_bridge_types::incremental_mac::*; -use libsignal_protocol::incremental_mac::{calculate_chunk_size, Incremental}; +use libsignal_protocol::incremental_mac::{Incremental, calculate_chunk_size}; use crate::support::*; use crate::*; diff --git a/rust/bridge/shared/src/net/chat.rs b/rust/bridge/shared/src/net/chat.rs index d02137a06..ea5bba22c 100644 --- a/rust/bridge/shared/src/net/chat.rs +++ b/rust/bridge/shared/src/net/chat.rs @@ -14,8 +14,8 @@ use libsignal_bridge_types::net::{ConnectionManager, TokioAsyncContext}; use libsignal_bridge_types::support::AsType; use libsignal_net::auth::Auth; use libsignal_net::chat::{self, ConnectError, LanguageList, Response as ChatResponse, SendError}; -use libsignal_net_chat::api::usernames::UnauthenticatedChatApi; use libsignal_net_chat::api::RequestError; +use libsignal_net_chat::api::usernames::UnauthenticatedChatApi; use uuid::Uuid; use crate::support::*; diff --git a/rust/bridge/shared/src/net/keytrans.rs b/rust/bridge/shared/src/net/keytrans.rs index f920d962f..43882aad2 100644 --- a/rust/bridge/shared/src/net/keytrans.rs +++ b/rust/bridge/shared/src/net/keytrans.rs @@ -11,11 +11,11 @@ pub use libsignal_bridge_types::net::{Environment, TokioAsyncContext}; use libsignal_bridge_types::support::AsType; use libsignal_core::{Aci, E164}; use libsignal_keytrans::{AccountData, LocalStateUpdate, StoredAccountData, StoredTreeHead}; -use libsignal_net_chat::api::keytrans::{ - monitor_and_search, Error, KeyTransparencyClient, MaybePartial, MonitorMode, SearchKey, - UnauthenticatedChatApi as _, UsernameHash, -}; use libsignal_net_chat::api::Unauth; +use libsignal_net_chat::api::keytrans::{ + Error, KeyTransparencyClient, MaybePartial, MonitorMode, SearchKey, + UnauthenticatedChatApi as _, UsernameHash, monitor_and_search, +}; use libsignal_protocol::PublicKey; use prost::{DecodeError, Message}; diff --git a/rust/bridge/shared/src/net/registration.rs b/rust/bridge/shared/src/net/registration.rs index e26e6053a..843c9cf7e 100644 --- a/rust/bridge/shared/src/net/registration.rs +++ b/rust/bridge/shared/src/net/registration.rs @@ -5,16 +5,16 @@ use std::collections::HashSet; use libsignal_bridge_macros::{bridge_fn, bridge_io}; +use libsignal_bridge_types::net::TokioAsyncContext; use libsignal_bridge_types::net::registration::{ ConnectChatBridge, RegisterAccountInner, RegisterAccountRequest, RegistrationAccountAttributes, RegistrationCreateSessionRequest, RegistrationPushToken, RegistrationService, SignedPublicPreKey, }; -use libsignal_bridge_types::net::TokioAsyncContext; use libsignal_bridge_types::*; use libsignal_net::chat::LanguageList; -use libsignal_net_chat::api::registration::*; use libsignal_net_chat::api::ChallengeOption; +use libsignal_net_chat::api::registration::*; use libsignal_net_chat::registration::RequestError; use libsignal_protocol::*; use uuid::Uuid; diff --git a/rust/bridge/shared/src/net/svrb.rs b/rust/bridge/shared/src/net/svrb.rs index deeadbeb5..8d63601ac 100644 --- a/rust/bridge/shared/src/net/svrb.rs +++ b/rust/bridge/shared/src/net/svrb.rs @@ -3,14 +3,14 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use libsignal_account_keys::{BackupKey, BACKUP_FORWARD_SECRECY_TOKEN_LEN}; +use libsignal_account_keys::{BACKUP_FORWARD_SECRECY_TOKEN_LEN, BackupKey}; use libsignal_bridge_macros::{bridge_fn, bridge_io}; use libsignal_bridge_types::net::svrb::SvrBConnectImpl; use libsignal_bridge_types::net::{ConnectionManager, Environment, TokioAsyncContext}; use libsignal_net::auth::Auth; use libsignal_net::svrb::{ - create_new_backup_chain, remove_backup, restore_backup, store_backup, BackupFileMetadataRef, - BackupPreviousSecretDataRef, BackupRestoreResponse, BackupStoreResponse, Error as SvrbError, + BackupFileMetadataRef, BackupPreviousSecretDataRef, BackupRestoreResponse, BackupStoreResponse, + Error as SvrbError, create_new_backup_chain, remove_backup, restore_backup, store_backup, }; use crate::support::*; diff --git a/rust/bridge/shared/src/usernames.rs b/rust/bridge/shared/src/usernames.rs index 8aa73b9e4..8b38b7049 100644 --- a/rust/bridge/shared/src/usernames.rs +++ b/rust/bridge/shared/src/usernames.rs @@ -5,8 +5,8 @@ #[allow(unused_imports)] use ::usernames::{ - create_for_username, decrypt_username, NicknameLimits, Username, UsernameError, - UsernameLinkError, + NicknameLimits, Username, UsernameError, UsernameLinkError, create_for_username, + decrypt_username, }; use libsignal_bridge_macros::*; use rand::TryRngCore as _; diff --git a/rust/bridge/shared/src/zkgroup.rs b/rust/bridge/shared/src/zkgroup.rs index 39f19ec99..0b61bc583 100644 --- a/rust/bridge/shared/src/zkgroup.rs +++ b/rust/bridge/shared/src/zkgroup.rs @@ -9,6 +9,7 @@ use libsignal_bridge_macros::*; use libsignal_bridge_types::zkgroup::validate_serialization; use libsignal_protocol::{Aci, Pni, ServiceId}; use uuid::Uuid; +pub(crate) use zkgroup::Timestamp; use zkgroup::auth::*; use zkgroup::backups::{ BackupAuthCredential, BackupAuthCredentialPresentation, BackupAuthCredentialRequest, @@ -19,7 +20,6 @@ use zkgroup::generic_server_params::*; use zkgroup::groups::*; use zkgroup::profiles::*; use zkgroup::receipts::*; -pub(crate) use zkgroup::Timestamp; use zkgroup::*; use crate::support::*; diff --git a/rust/bridge/shared/testing/src/net.rs b/rust/bridge/shared/testing/src/net.rs index dd35e77a2..f31835f49 100644 --- a/rust/bridge/shared/testing/src/net.rs +++ b/rust/bridge/shared/testing/src/net.rs @@ -5,7 +5,7 @@ use std::num::NonZeroU16; -use base64::prelude::{Engine as _, BASE64_STANDARD}; +use base64::prelude::{BASE64_STANDARD, Engine as _}; use libsignal_bridge_macros::*; use libsignal_bridge_types::net::chat::ServerMessageAck; use libsignal_bridge_types::net::{ConnectionManager, TokioAsyncContext}; diff --git a/rust/bridge/shared/testing/src/net/chat.rs b/rust/bridge/shared/testing/src/net/chat.rs index 604f45993..7e233aaaa 100644 --- a/rust/bridge/shared/testing/src/net/chat.rs +++ b/rust/bridge/shared/testing/src/net/chat.rs @@ -6,10 +6,10 @@ use bytes::Bytes; use http::{HeaderMap, HeaderName, HeaderValue, StatusCode}; use libsignal_bridge_macros::*; +use libsignal_bridge_types::net::TokioAsyncContext; use libsignal_bridge_types::net::chat::{ AuthenticatedChatConnection, ChatListener, HttpRequest, UnauthenticatedChatConnection, }; -use libsignal_bridge_types::net::TokioAsyncContext; use libsignal_net::chat::fake::FakeChatRemote; use libsignal_net::chat::{ ConnectError, RequestProto, Response as ChatResponse, ResponseProto, SendError, diff --git a/rust/bridge/shared/testing/src/net/registration.rs b/rust/bridge/shared/testing/src/net/registration.rs index 4cded8830..04dbb7499 100644 --- a/rust/bridge/shared/testing/src/net/registration.rs +++ b/rust/bridge/shared/testing/src/net/registration.rs @@ -6,16 +6,16 @@ use std::collections::HashSet; use std::time::Duration; -use futures_util::future::BoxFuture; use futures_util::FutureExt; +use futures_util::future::BoxFuture; use libsignal_bridge_macros::*; +use libsignal_bridge_types::net::TokioAsyncContext; use libsignal_bridge_types::net::registration::{ ConnectChatBridge, RegistrationCreateSessionRequest, RegistrationService, }; -use libsignal_bridge_types::net::TokioAsyncContext; use libsignal_net::auth::Auth; -use libsignal_net::chat::fake::FakeChatRemote; use libsignal_net::chat::ChatConnection; +use libsignal_net::chat::fake::FakeChatRemote; use libsignal_net::infra::errors::RetryLater; use libsignal_net_chat::api::registration::*; use libsignal_net_chat::api::{ChallengeOption, RateLimitChallenge, Unauth}; @@ -39,8 +39,8 @@ pub fn TESTING_RegistrationSessionInfoConvert() -> RegistrationSession { } #[bridge_fn] -pub fn TESTING_RegistrationService_CheckSvr2CredentialsResponseConvert( -) -> CheckSvr2CredentialsResponse { +pub fn TESTING_RegistrationService_CheckSvr2CredentialsResponseConvert() +-> CheckSvr2CredentialsResponse { CheckSvr2CredentialsResponse { matches: [ ("username:pass-match", Svr2CredentialsResult::Match), diff --git a/rust/bridge/shared/testing/src/net_env.rs b/rust/bridge/shared/testing/src/net_env.rs index 845471463..48569767c 100644 --- a/rust/bridge/shared/testing/src/net_env.rs +++ b/rust/bridge/shared/testing/src/net_env.rs @@ -10,8 +10,8 @@ use const_str::ip_addr; use libsignal_net::chat::RECOMMENDED_CHAT_WS_CONFIG; use libsignal_net::enclave::{Cdsi, EnclaveEndpoint, EndpointParams, MrEnclave, SvrSgx}; use libsignal_net::env::{ConnectionConfig, DomainConfig, Env, KeyTransConfig, SvrBEnv}; -use libsignal_net::infra::certs::RootCertificates; use libsignal_net::infra::RECOMMENDED_WS_CONFIG; +use libsignal_net::infra::certs::RootCertificates; const ENCLAVE_ID_MOCK_SERVER: &[u8] = b"0.20240911.184407"; diff --git a/rust/bridge/shared/types/src/ffi/chat.rs b/rust/bridge/shared/types/src/ffi/chat.rs index fb15751b2..07083ae6b 100644 --- a/rust/bridge/shared/types/src/ffi/chat.rs +++ b/rust/bridge/shared/types/src/ffi/chat.rs @@ -7,17 +7,17 @@ use std::ffi::{c_uchar, c_void}; use std::panic::UnwindSafe; use bytes::Bytes; -use futures_util::future::BoxFuture; use futures_util::FutureExt as _; +use futures_util::future::BoxFuture; use libsignal_net::chat::server_requests::DisconnectCause; use libsignal_net::chat::{ChatConnection, ConnectError}; use libsignal_net_chat::api::Unauth; use libsignal_net_chat::registration::ConnectUnauthChat; use super::*; +use crate::net::ConnectionManager; use crate::net::chat::{ChatListener, ServerMessageAck}; use crate::net::registration::ConnectChatBridge; -use crate::net::ConnectionManager; 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 eb2b57f64..563c80932 100644 --- a/rust/bridge/shared/types/src/ffi/convert.rs +++ b/rust/bridge/shared/types/src/ffi/convert.rs @@ -3,15 +3,15 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use std::ffi::{c_char, c_uchar, CStr}; +use std::ffi::{CStr, c_char, c_uchar}; use std::fmt::Display; use std::num::{NonZeroU64, ParseIntError}; use std::ops::Deref; use itertools::Itertools as _; use libsignal_account_keys::{AccountEntropyPool, InvalidAccountEntropyPool}; -use libsignal_net_chat::api::registration::PushToken; use libsignal_net_chat::api::ChallengeOption; +use libsignal_net_chat::api::registration::PushToken; use libsignal_protocol::*; use paste::paste; use uuid::Uuid; @@ -23,7 +23,7 @@ use crate::net::registration::{ ConnectChatBridge, RegistrationCreateSessionRequest, RegistrationPushToken, }; use crate::support::{ - extend_lifetime, AsType, FixedLengthBincodeSerializable, IllegalArgumentError, Serialized, + AsType, FixedLengthBincodeSerializable, IllegalArgumentError, Serialized, extend_lifetime, }; /// Converts arguments from their FFI form to their Rust form. diff --git a/rust/bridge/shared/types/src/ffi/error.rs b/rust/bridge/shared/types/src/ffi/error.rs index c89f0e4d9..e804c7346 100644 --- a/rust/bridge/shared/types/src/ffi/error.rs +++ b/rust/bridge/shared/types/src/ffi/error.rs @@ -12,15 +12,15 @@ use attest::hsm_enclave::Error as HsmEnclaveError; use device_transfer::Error as DeviceTransferError; use libsignal_account_keys::Error as PinError; use libsignal_net::infra::errors::LogSafeDisplay; -use libsignal_net_chat::api::registration::{RegistrationLock, VerificationCodeNotDeliverable}; use libsignal_net_chat::api::RateLimitChallenge; +use libsignal_net_chat::api::registration::{RegistrationLock, VerificationCodeNotDeliverable}; use libsignal_protocol::*; use signal_crypto::Error as SignalCryptoError; use usernames::{UsernameError, UsernameLinkError}; use zkgroup::{ZkGroupDeserializationFailure, ZkGroupVerificationFailure}; use super::{FutureCancelled, NullPointerError, UnexpectedPanic}; -use crate::support::{describe_panic, IllegalArgumentError}; +use crate::support::{IllegalArgumentError, describe_panic}; #[derive(Debug, Clone, Copy)] #[repr(C)] @@ -362,7 +362,7 @@ impl IntoFfiError for SignalProtocolError { fn into_ffi_error(self) -> impl Into { let code = match &self { &Self::InvalidSenderKeySession { distribution_id } => { - return SignalFfiError::from(InvalidSenderKeySession { distribution_id }) + return SignalFfiError::from(InvalidSenderKeySession { distribution_id }); } Self::InvalidRegistrationId(_, _) => { // Re-match as owned. diff --git a/rust/bridge/shared/types/src/io.rs b/rust/bridge/shared/types/src/io.rs index 7306d252a..b2087c25f 100644 --- a/rust/bridge/shared/types/src/io.rs +++ b/rust/bridge/shared/types/src/io.rs @@ -166,7 +166,7 @@ impl AsyncRead for AsyncInput<'_> { AsyncInputState::Idle => self.stream.read(buf)?, AsyncInputState::Reading(read_future) => InputStreamRead::Pending(read_future), AsyncInputState::Skipping { .. } => { - return Poll::Ready(Err(io::Error::other("cannot read while skipping"))) + return Poll::Ready(Err(io::Error::other("cannot read while skipping"))); } }; @@ -203,7 +203,7 @@ impl AsyncSkip for AsyncInput<'_> { AsyncInputState::Idle => self.stream.skip(amount), AsyncInputState::Skipping(skip_future) => skip_future, AsyncInputState::Reading { .. } => { - return Poll::Ready(Err(io::Error::other("cannot skip while reading"))) + return Poll::Ready(Err(io::Error::other("cannot skip while reading"))); } }; match skip_future.poll_unpin(cx) { diff --git a/rust/bridge/shared/types/src/jni/call_method.rs b/rust/bridge/shared/types/src/jni/call_method.rs index f463582ba..bd985a4ea 100644 --- a/rust/bridge/shared/types/src/jni/call_method.rs +++ b/rust/bridge/shared/types/src/jni/call_method.rs @@ -3,8 +3,8 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use jni::objects::{JClass, JMethodID, JObject, JStaticMethodID, JValueOwned}; use jni::JNIEnv; +use jni::objects::{JClass, JMethodID, JObject, JStaticMethodID, JValueOwned}; use crate::jni::{BridgeLayerError, HandleJniError as _, JniArgs}; @@ -144,9 +144,9 @@ fn check_exceptions_and_convert_result<'output, R: TryFrom> } mod check_annotations { + use jni::JNIEnv; use jni::errors::Result; use jni::objects::{AutoLocal, JClass, JMethodID, JObject, JStaticMethodID}; - use jni::JNIEnv; use super::jni_ext::JNIEnvExt as _; use crate::jni::{ClassName, JniArgs}; @@ -253,10 +253,10 @@ mod check_annotations { } mod jni_ext { + use jni::JNIEnv; use jni::errors::Result; use jni::objects::{JClass, JMethodID, JObject, JStaticMethodID}; use jni::sys::{JNI_FALSE, JNI_TRUE}; - use jni::JNIEnv; // TODO once https://github.com/jni-rs/jni-rs/pull/579 is merged and in a // release, use the methods added there and remove this implementation. diff --git a/rust/bridge/shared/types/src/jni/chat.rs b/rust/bridge/shared/types/src/jni/chat.rs index c02b27665..52e9abc5c 100644 --- a/rust/bridge/shared/types/src/jni/chat.rs +++ b/rust/bridge/shared/types/src/jni/chat.rs @@ -6,10 +6,10 @@ use std::panic::UnwindSafe; use bytes::Bytes; -use futures_util::future::BoxFuture; use futures_util::FutureExt; -use libsignal_net::chat::server_requests::DisconnectCause; +use futures_util::future::BoxFuture; use libsignal_net::chat::ChatConnection; +use libsignal_net::chat::server_requests::DisconnectCause; use libsignal_net_chat::api::Unauth; use super::*; diff --git a/rust/bridge/shared/types/src/jni/class_lookup.rs b/rust/bridge/shared/types/src/jni/class_lookup.rs index f3292bd60..fd6056060 100644 --- a/rust/bridge/shared/types/src/jni/class_lookup.rs +++ b/rust/bridge/shared/types/src/jni/class_lookup.rs @@ -2,8 +2,8 @@ // Copyright 2024 Signal Messenger, LLC. // SPDX-License-Identifier: AGPL-3.0-only // -use jni::objects::{GlobalRef, JClass, JMethodID, JObject, JValue}; use jni::JNIEnv; +use jni::objects::{GlobalRef, JClass, JMethodID, JObject, JValue}; use libsignal_core::try_scoped; use once_cell::sync::OnceCell; diff --git a/rust/bridge/shared/types/src/jni/convert.rs b/rust/bridge/shared/types/src/jni/convert.rs index d42faecd9..6431933ba 100644 --- a/rust/bridge/shared/types/src/jni/convert.rs +++ b/rust/bridge/shared/types/src/jni/convert.rs @@ -8,9 +8,9 @@ use std::ops::Deref; use std::sync::Arc; use itertools::Itertools as _; -use jni::objects::{AutoLocal, JByteBuffer, JMap, JObjectArray}; -use jni::sys::{jbyte, JNI_FALSE, JNI_TRUE}; use jni::JNIEnv; +use jni::objects::{AutoLocal, JByteBuffer, JMap, JObjectArray}; +use jni::sys::{JNI_FALSE, JNI_TRUE, jbyte}; use libsignal_account_keys::{AccountEntropyPool, InvalidAccountEntropyPool}; use libsignal_core::try_scoped; use libsignal_net::cdsi::LookupResponseEntry; @@ -23,7 +23,7 @@ use crate::message_backup::MessageBackupValidationOutcome; use crate::net::chat::ChatListener; use crate::net::registration::{ConnectChatBridge, RegistrationPushToken}; use crate::protocol::KyberPublicKey; -use crate::support::{extend_lifetime, Array, AsType, FixedLengthBincodeSerializable, Serialized}; +use crate::support::{Array, AsType, FixedLengthBincodeSerializable, Serialized, extend_lifetime}; /// Converts arguments from their JNI form to their Rust form. /// @@ -1770,9 +1770,9 @@ fn make_object_array<'a, It>( ) -> Result, BridgeLayerError> where It: IntoIterator< - Item: ResultTypeInfo<'a, ResultType: Into>>, - IntoIter: ExactSizeIterator, - >, + Item: ResultTypeInfo<'a, ResultType: Into>>, + IntoIter: ExactSizeIterator, + >, { let it = it.into_iter(); let len = it.len(); diff --git a/rust/bridge/shared/types/src/jni/mod.rs b/rust/bridge/shared/types/src/jni/mod.rs index dd996c63f..2b04e06b8 100644 --- a/rust/bridge/shared/types/src/jni/mod.rs +++ b/rust/bridge/shared/types/src/jni/mod.rs @@ -13,14 +13,14 @@ use attest::enclave::Error as EnclaveError; use attest::hsm_enclave::Error as HsmEnclaveError; use device_transfer::Error as DeviceTransferError; use http::uri::InvalidUri; +pub use jni::JNIEnv; +use jni::JavaVM; pub use jni::objects::{ AutoElements, JByteArray, JClass, JLongArray, JObject, JObjectArray, JString, JValue, ReleaseMode, }; use jni::objects::{GlobalRef, JThrowable, JValueOwned}; pub use jni::sys::{jboolean, jint, jlong}; -pub use jni::JNIEnv; -use jni::JavaVM; use libsignal_account_keys::Error as PinError; use libsignal_core::try_scoped; use libsignal_net::chat::{ConnectError as ChatConnectError, SendError as ChatSendError}; @@ -576,12 +576,12 @@ mod registration { let message = match self { RequestError::Other(inner) => return inner.to_throwable(env), RequestError::Timeout => { - return libsignal_net::chat::SendError::RequestTimedOut.to_throwable(env) + return libsignal_net::chat::SendError::RequestTimedOut.to_throwable(env); } RequestError::RetryLater(retry_later) => return retry_later.to_throwable(env), RequestError::Unexpected { log_safe } => log_safe, RequestError::Challenge(rate_limit_challenge) => { - return rate_limit_challenge.to_throwable(env) + return rate_limit_challenge.to_throwable(env); } RequestError::ServerSideError => &self.to_string(), RequestError::Disconnected(d) => match *d {}, diff --git a/rust/bridge/shared/types/src/lib.rs b/rust/bridge/shared/types/src/lib.rs index 7ad83f5dd..d2ed4be0e 100644 --- a/rust/bridge/shared/types/src/lib.rs +++ b/rust/bridge/shared/types/src/lib.rs @@ -21,7 +21,7 @@ pub mod node; #[macro_use] pub mod support; -pub use support::{describe_panic, AsyncRuntime, ResultReporter}; +pub use support::{AsyncRuntime, ResultReporter, describe_panic}; pub mod cds2; pub mod crypto; diff --git a/rust/bridge/shared/types/src/message_backup.rs b/rust/bridge/shared/types/src/message_backup.rs index 7a4cae7e7..47dbc1f65 100644 --- a/rust/bridge/shared/types/src/message_backup.rs +++ b/rust/bridge/shared/types/src/message_backup.rs @@ -4,12 +4,12 @@ // use libsignal_account_keys::{ - AccountEntropyPool, BackupForwardSecrecyToken, BackupId, BackupKey, - BACKUP_FORWARD_SECRECY_TOKEN_LEN, BACKUP_KEY_LEN, + AccountEntropyPool, BACKUP_FORWARD_SECRECY_TOKEN_LEN, BACKUP_KEY_LEN, + BackupForwardSecrecyToken, BackupId, BackupKey, }; use libsignal_message_backup::frame::ValidationError as FrameValidationError; use libsignal_message_backup::key::MessageBackupKey as MessageBackupKeyInner; -use libsignal_message_backup::{backup, Error, FoundUnknownField}; +use libsignal_message_backup::{Error, FoundUnknownField, backup}; use libsignal_protocol::Aci; use crate::*; diff --git a/rust/bridge/shared/types/src/net/chat.rs b/rust/bridge/shared/types/src/net/chat.rs index 362cd02ba..97d342e33 100644 --- a/rust/bridge/shared/types/src/net/chat.rs +++ b/rust/bridge/shared/types/src/net/chat.rs @@ -11,8 +11,8 @@ use std::time::Duration; use atomic_take::AtomicTake; use bytes::Bytes; -use futures_util::future::BoxFuture; use futures_util::FutureExt as _; +use futures_util::future::BoxFuture; use http::status::InvalidStatusCode; use http::uri::{InvalidUri, PathAndQuery}; use http::{HeaderMap, HeaderName, HeaderValue}; @@ -36,8 +36,8 @@ use libsignal_net_chat::api::Unauth; use libsignal_protocol::Timestamp; use static_assertions::assert_impl_all; -use crate::net::remote_config::RemoteConfigKey; use crate::net::ConnectionManager; +use crate::net::remote_config::RemoteConfigKey; use crate::support::LimitedLifetimeRef; use crate::*; diff --git a/rust/bridge/shared/types/src/net/tokio.rs b/rust/bridge/shared/types/src/net/tokio.rs index ae30b6b01..0b6c8c79d 100644 --- a/rust/bridge/shared/types/src/net/tokio.rs +++ b/rust/bridge/shared/types/src/net/tokio.rs @@ -9,8 +9,8 @@ use std::future::Future; use std::sync::atomic::AtomicU64; use std::sync::{Arc, Mutex}; -use futures_util::future::BoxFuture; use futures_util::FutureExt as _; +use futures_util::future::BoxFuture; use crate::support::*; use crate::*; @@ -106,7 +106,9 @@ impl AsyncRuntimeBase for TokioAsyncContext { if maybe_cancel_tx.is_some() { log::trace!("cancelling task for {cancellation_token:?}"); } else { - log::trace!("ignoring cancellation for task {cancellation_token:?} (probably completed already)"); + log::trace!( + "ignoring cancellation for task {cancellation_token:?} (probably completed already)" + ); } drop(maybe_cancel_tx); } diff --git a/rust/bridge/shared/types/src/node/chat.rs b/rust/bridge/shared/types/src/node/chat.rs index 832d2c4f7..f94e283a3 100644 --- a/rust/bridge/shared/types/src/node/chat.rs +++ b/rust/bridge/shared/types/src/node/chat.rs @@ -8,8 +8,8 @@ use std::panic::UnwindSafe; use std::sync::Arc; use bytes::Bytes; -use futures_util::future::BoxFuture; use futures_util::FutureExt; +use futures_util::future::BoxFuture; use libsignal_net::chat::server_requests::DisconnectCause; use libsignal_net::chat::{ChatConnection, ConnectError}; use libsignal_net_chat::api::Unauth; @@ -21,8 +21,8 @@ use neon::prelude::{Context, Finalize, JsObject, Object}; use neon::result::NeonResult; use signal_neon_futures::call_method; -use crate::net::chat::{ChatListener, ServerMessageAck}; use crate::net::ConnectionManager; +use crate::net::chat::{ChatListener, ServerMessageAck}; use crate::node::{PersistentBorrowedJsBoxedBridgeHandle, ResultTypeInfo, SignalNodeError as _}; #[derive(Clone)] diff --git a/rust/bridge/shared/types/src/node/convert.rs b/rust/bridge/shared/types/src/node/convert.rs index 39818ec87..2b32367e9 100644 --- a/rust/bridge/shared/types/src/node/convert.rs +++ b/rust/bridge/shared/types/src/node/convert.rs @@ -21,7 +21,7 @@ use crate::io::{InputStream, SyncInputStream}; use crate::message_backup::MessageBackupValidationOutcome; use crate::net::chat::ChatListener; use crate::node::chat::NodeChatListener; -use crate::support::{extend_lifetime, Array, AsType, FixedLengthBincodeSerializable, Serialized}; +use crate::support::{Array, AsType, FixedLengthBincodeSerializable, Serialized, extend_lifetime}; /// Converts arguments from their JavaScript form to their Rust form. /// diff --git a/rust/bridge/shared/types/src/node/error.rs b/rust/bridge/shared/types/src/node/error.rs index f74c6479a..8c7b1f51b 100644 --- a/rust/bridge/shared/types/src/node/error.rs +++ b/rust/bridge/shared/types/src/node/error.rs @@ -487,7 +487,7 @@ impl SignalNodeError for libsignal_net::chat::ConnectError { Self::AppExpired => "AppExpired", Self::DeviceDeregistered => "DeviceDelinked", Self::RetryLater(retry_later) => { - return retry_later.into_throwable(cx, module, operation_name) + return retry_later.into_throwable(cx, module, operation_name); } Self::WebSocket(_) | Self::Timeout @@ -626,7 +626,7 @@ impl SignalNodeError for libsignal_net::cdsi::LookupError { ) -> Handle<'a, JsError> { let name = match self { Self::RateLimited(retry_later) => { - return retry_later.into_throwable(cx, module, operation_name) + return retry_later.into_throwable(cx, module, operation_name); } Self::AttestationError(e) => return e.into_throwable(cx, module, operation_name), Self::InvalidArgument { server_reason: _ } => None, @@ -660,20 +660,20 @@ impl SignalNodeError for libsignal_net_chat::api::RequestErr let io_error_message: Cow<'static, str> = match self { Self::Other(inner) => return inner.into_throwable(cx, module, operation_name), Self::Challenge(challenge) => { - return challenge.into_throwable(cx, module, operation_name) + return challenge.into_throwable(cx, module, operation_name); } Self::RetryLater(retry_later) => { - return retry_later.into_throwable(cx, module, operation_name) + return retry_later.into_throwable(cx, module, operation_name); } Self::Disconnected(disconnected) => { - return disconnected.into_throwable(cx, module, operation_name) + return disconnected.into_throwable(cx, module, operation_name); } Self::Timeout => { return libsignal_net::chat::SendError::RequestTimedOut.into_throwable( cx, module, operation_name, - ) + ); } Self::Unexpected { log_safe } => log_safe.into(), Self::ServerSideError => "server-side error".into(), @@ -724,7 +724,7 @@ mod registration { cx, module, operation_name, - ) + ); } e @ (RequestError::Unexpected { log_safe: _ } | RequestError::ServerSideError) => { return new_js_error( @@ -734,13 +734,13 @@ mod registration { &e.to_string(), operation_name, no_extra_properties, - ) + ); } RequestError::RetryLater(retry_later) => { - return retry_later.into_throwable(cx, module, operation_name) + return retry_later.into_throwable(cx, module, operation_name); } RequestError::Challenge(challenge) => { - return challenge.into_throwable(cx, module, operation_name) + return challenge.into_throwable(cx, module, operation_name); } RequestError::Disconnected(d) => match d {}, }; @@ -965,7 +965,7 @@ impl SignalNodeError for crate::keytrans::BridgeError { let message = self.to_string(); let name = match self.into() { RequestError::Disconnected(inner) => { - return inner.into_throwable(cx, module, operation_name) + return inner.into_throwable(cx, module, operation_name); } RequestError::Timeout => IO_ERROR, RequestError::Other(libsignal_net_chat::api::keytrans::Error::VerificationFailed( diff --git a/rust/bridge/shared/types/src/node/futures.rs b/rust/bridge/shared/types/src/node/futures.rs index ef0907703..17382b117 100644 --- a/rust/bridge/shared/types/src/node/futures.rs +++ b/rust/bridge/shared/types/src/node/futures.rs @@ -12,7 +12,7 @@ use signal_neon_futures::ChannelEx; use super::*; use crate::support::{ - describe_panic, AsyncRuntime, AsyncRuntimeBase, CancellationId, ResultReporter, + AsyncRuntime, AsyncRuntimeBase, CancellationId, ResultReporter, describe_panic, }; #[derive(Debug, thiserror::Error, displaydoc::Display)] diff --git a/rust/bridge/shared/types/src/zkgroup.rs b/rust/bridge/shared/types/src/zkgroup.rs index 4396f18f9..ef2c2e8ed 100644 --- a/rust/bridge/shared/types/src/zkgroup.rs +++ b/rust/bridge/shared/types/src/zkgroup.rs @@ -6,10 +6,10 @@ use ::zkgroup; use partial_default::PartialDefault; use serde::Deserialize; +pub use zkgroup::Timestamp; use zkgroup::groups::*; use zkgroup::profiles::*; use zkgroup::receipts::*; -pub use zkgroup::Timestamp; use zkgroup::*; use crate::support::*; diff --git a/rust/cli-utils/src/args.rs b/rust/cli-utils/src/args.rs index f4acb078d..e9baec98b 100644 --- a/rust/cli-utils/src/args.rs +++ b/rust/cli-utils/src/args.rs @@ -3,8 +3,8 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use base64::prelude::BASE64_STANDARD; use base64::Engine as _; +use base64::prelude::BASE64_STANDARD; use libsignal_core::{Aci, DeviceId, ServiceId}; #[derive(Debug, thiserror::Error)] diff --git a/rust/core/benches/curve.rs b/rust/core/benches/curve.rs index c4bffd29e..5d50ceaf7 100644 --- a/rust/core/benches/curve.rs +++ b/rust/core/benches/curve.rs @@ -3,9 +3,9 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use criterion::{criterion_group, criterion_main, Criterion}; +use criterion::{Criterion, criterion_group, criterion_main}; use libsignal_core::curve::KeyPair; -use rand::{rng, Rng}; +use rand::{Rng, rng}; pub fn generation(c: &mut Criterion) { let rng = &mut rng(); diff --git a/rust/core/examples/ed_to_xed.rs b/rust/core/examples/ed_to_xed.rs index edbd361ec..bf89898d3 100644 --- a/rust/core/examples/ed_to_xed.rs +++ b/rust/core/examples/ed_to_xed.rs @@ -44,6 +44,8 @@ fn main() { if sign_bit == 0 { println!("signatures generated by this key will be directly validatable by libsignal"); } else { - println!("set the sign bit (0x80 in the final byte) of signatures generated by this key for validation by libsignal"); + println!( + "set the sign bit (0x80 in the final byte) of signatures generated by this key for validation by libsignal" + ); } } diff --git a/rust/core/src/address.rs b/rust/core/src/address.rs index 7e26a8f08..7c7f1e46d 100644 --- a/rust/core/src/address.rs +++ b/rust/core/src/address.rs @@ -584,10 +584,10 @@ mod service_id_tests { ServiceId::parse_from_service_id_string("PNI:8c78cd2a16ff427d83dc1a5e36ce713d") .is_none() ); - assert!(ServiceId::parse_from_service_id_string( - "PNI:{8c78cd2a-16ff-427d-83dc-1a5e36ce713d}" - ) - .is_none()); + assert!( + ServiceId::parse_from_service_id_string("PNI:{8c78cd2a-16ff-427d-83dc-1a5e36ce713d}") + .is_none() + ); } #[test] diff --git a/rust/core/src/curve.rs b/rust/core/src/curve.rs index 8adf81254..ec662ae08 100644 --- a/rust/core/src/curve.rs +++ b/rust/core/src/curve.rs @@ -356,8 +356,8 @@ impl TryFrom for KeyPair { #[cfg(test)] mod tests { use assert_matches::assert_matches; - use rand::rngs::OsRng; use rand::TryRngCore as _; + use rand::rngs::OsRng; use super::*; @@ -377,8 +377,12 @@ mod tests { let public_key = key_pair.private_key.public_key()?; assert!(public_key.verify_signature(&message, &signature)); - assert!(public_key - .verify_signature_for_multipart_message(&[&message[..7], &message[7..]], &signature)); + assert!( + public_key.verify_signature_for_multipart_message( + &[&message[..7], &message[7..]], + &signature + ) + ); let signature = key_pair .private_key diff --git a/rust/crypto/benches/aes_gcm.rs b/rust/crypto/benches/aes_gcm.rs index 0ca1148e9..844bd1473 100644 --- a/rust/crypto/benches/aes_gcm.rs +++ b/rust/crypto/benches/aes_gcm.rs @@ -3,7 +3,7 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion, Throughput}; +use criterion::{BenchmarkId, Criterion, Throughput, criterion_group, criterion_main}; pub fn aes_gcm(c: &mut Criterion) { let mut group = c.benchmark_group("AES-256-GCM"); diff --git a/rust/crypto/benches/hpke.rs b/rust/crypto/benches/hpke.rs index 7d2850632..7513baa12 100644 --- a/rust/crypto/benches/hpke.rs +++ b/rust/crypto/benches/hpke.rs @@ -3,7 +3,7 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion, Throughput}; +use criterion::{BenchmarkId, Criterion, Throughput, criterion_group, criterion_main}; use libsignal_core::curve::PrivateKey; use signal_crypto::{SimpleHpkeReceiver as _, SimpleHpkeSender as _}; diff --git a/rust/crypto/src/aes_cbc.rs b/rust/crypto/src/aes_cbc.rs index 6bb56df0b..55b1ea619 100644 --- a/rust/crypto/src/aes_cbc.rs +++ b/rust/crypto/src/aes_cbc.rs @@ -5,9 +5,9 @@ use std::result::Result; +use aes::Aes256; use aes::cipher::block_padding::Pkcs7; use aes::cipher::{BlockDecryptMut, BlockEncryptMut, KeyIvInit}; -use aes::Aes256; #[derive(Debug, displaydoc::Display, thiserror::Error)] pub enum EncryptionError { diff --git a/rust/crypto/src/aes_ctr.rs b/rust/crypto/src/aes_ctr.rs index abf18f5fb..a404d9524 100644 --- a/rust/crypto/src/aes_ctr.rs +++ b/rust/crypto/src/aes_ctr.rs @@ -3,9 +3,9 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use aes::Aes256; use aes::cipher::typenum::Unsigned; use aes::cipher::{InnerIvInit, KeyInit, StreamCipher, StreamCipherSeek}; -use aes::Aes256; use crate::error::{Error, Result}; diff --git a/rust/crypto/src/aes_gcm.rs b/rust/crypto/src/aes_gcm.rs index 5d4044ef3..b970bb5d5 100644 --- a/rust/crypto/src/aes_gcm.rs +++ b/rust/crypto/src/aes_gcm.rs @@ -3,11 +3,11 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use aes::Aes256; use aes::cipher::generic_array::GenericArray; use aes::cipher::{BlockEncrypt, KeyInit}; -use aes::Aes256; -use ghash::universal_hash::UniversalHash; use ghash::GHash; +use ghash::universal_hash::UniversalHash; use subtle::ConstantTimeEq; use crate::{Aes256Ctr32, Error, Result}; diff --git a/rust/crypto/src/lib.rs b/rust/crypto/src/lib.rs index ae5d016e2..dbc29eb1b 100644 --- a/rust/crypto/src/lib.rs +++ b/rust/crypto/src/lib.rs @@ -13,7 +13,7 @@ mod aes_cbc; mod aes_ctr; mod aes_gcm; -pub use aes_cbc::{aes_256_cbc_decrypt, aes_256_cbc_encrypt, DecryptionError, EncryptionError}; +pub use aes_cbc::{DecryptionError, EncryptionError, aes_256_cbc_decrypt, aes_256_cbc_encrypt}; pub use aes_ctr::Aes256Ctr32; pub use aes_gcm::{Aes256GcmDecryption, Aes256GcmEncryption}; pub use error::{Error, Result}; diff --git a/rust/crypto/tests/aes_ctr.rs b/rust/crypto/tests/aes_ctr.rs index 7fdabbb4e..71aa689f4 100644 --- a/rust/crypto/tests/aes_ctr.rs +++ b/rust/crypto/tests/aes_ctr.rs @@ -11,8 +11,12 @@ fn aes_ctr_smoke_test() -> Result<(), signal_crypto::Error> { let key = hex!("603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4"); let nonce = hex!("F0F1F2F3F4F5F6F7F8F9FAFB"); let init_ctr = 0xFCFDFEFF; - let input = hex!("6BC1BEE22E409F96E93D7E117393172AAE2D8A571E03AC9C9EB76FAC45AF8E5130C81C46A35CE411E5FBC1191A0A52EFF69F2445DF4F9B17AD2B417BE66C3710"); - let output = hex!("601EC313775789A5B7A7F504BBF3D228F443E3CA4D62B59ACA84E990CACAF5C52B0930DAA23DE94CE87017BA2D84988DDFC9C58DB67AADA613C2DD08457941A6"); + let input = hex!( + "6BC1BEE22E409F96E93D7E117393172AAE2D8A571E03AC9C9EB76FAC45AF8E5130C81C46A35CE411E5FBC1191A0A52EFF69F2445DF4F9B17AD2B417BE66C3710" + ); + let output = hex!( + "601EC313775789A5B7A7F504BBF3D228F443E3CA4D62B59ACA84E990CACAF5C52B0930DAA23DE94CE87017BA2D84988DDFC9C58DB67AADA613C2DD08457941A6" + ); let mut aes_ctr = signal_crypto::Aes256Ctr32::from_key(&key, &nonce, init_ctr)?; @@ -29,7 +33,9 @@ fn aes_ctr_long_test() -> Result<(), signal_crypto::Error> { let key = hex!("603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4"); let nonce = hex!("FFFFFFFFFFFFFFFFFFFFFFFF"); let init_ctr = 0x00000000; - let output = hex!("FD4C14729F5004BA49D832AD7BE87C18F4FAFB58962B9A43C3BE41713DED93DBF854AC4CA26285B7F76E04B8F8D4E7D9F7548F9B465C8F713C106E9F63F54305331A4983A2F4B718DE29FA794DA12EEE808642FAEFF8271A0EA28E3CC80EEB65A8EB61F69D8BA97F6BF9054453F55EFB8F9422081F1620FE44ACF99E81122F73D3F921D5E3391654E9947904984375B725FDFBA895C5CDE3D225D7BE3A213C3965178A7DC1E3B552EC7B2FFD9C77EBCC243C4500DFDFBE3B7554AA427C01305BEC48D71AF27C5911D1E649C620D22CF5F3A5AEB9468651DA796F369522FAF91EFABF0FEBD33FCA41C9534606A4EA0199B904B243BA9CB8F37A792DF02EFAB8F0E2E0CF1D579DABA042CFE4C9430AD4EDA786052FCF15E7ACFA2736AAB4590F73675FA1805FE23892C63E0CD01D006935A6E3F8E105A754803D00D9857E49636AB034164156856D58A244EAD475300D93B31E44B5BE3BBF6994EDB895804B4F1BAD43ECFE08B4E130148B669FE620E4F73034FC3E748237870BEC3B1F517684654D1D6BC074DDF7B759A2405F78ED84D1006D25AF9BBC12D6C632F5D543DA0CBE9EA866B2C92126009C27AD59394B76337DE246B50895317E2E345DF3629A5F6227F64522866E7A39121CCC552E3DABC989DCE066DEA355F788C5D92ADA099917A297CFEFA867CE37656FAC6A50798C10B394D5BA54F85CF0F7EF1EEDDFCA1E53E93F1349888CC745190C196F84ECF0721287CC592D406F0A6CC5A55294BF7AA3B35F6CEFC61CAB794B12444312B5E50EC0712E221CC95E9E26E9C3D000881E792AFCB58641B1A94613D64EC72F3DB9AB65BA07A4F05B7E9EE7B335D86A06FCBDB8CBD695AEEF53964A965FFE4C6D7B4E580AB139F8422A702E09EACBEA5D512C31A955B3D60310BE2BBDD73484BAE6612791A19DA3C7B0FD1487E72131A8F9CB801790CE8A6E1E378662CEDCD5EE82BD390576ACFE5334ECD9D907273AEFE67058916388210638E5E60F20EE92389B3533FD6AFFD33095B23D169F0913657F033B8D5C4EA517F167C1D53E031787BBE6D5B577245FFF8151CD8FDCC5D6C32DF70FB8043D42F896CD513B4C85CFF292676CF13B6A1931E87727A561711A3105D9F3519B90C9429B5CD3EDAAE3EE334826A3FD74D6175B5589DB392F956A67C5E67BE59656F1CB37E52C636B2692A60C2044327472FA9AF651AFBCF55D8398A31D343074931A72D54833B29EF21FCB6EF419BB56313513E46C65D833677DBB0F2813E9CE5EF70676102CA0D3C14BBDD659A7498FA08CD359D428A803AEFCC660E9FC704E9BACC5F1D27F2528D46B3FCAA2D47DFA28BF4C"); + let output = hex!( + "FD4C14729F5004BA49D832AD7BE87C18F4FAFB58962B9A43C3BE41713DED93DBF854AC4CA26285B7F76E04B8F8D4E7D9F7548F9B465C8F713C106E9F63F54305331A4983A2F4B718DE29FA794DA12EEE808642FAEFF8271A0EA28E3CC80EEB65A8EB61F69D8BA97F6BF9054453F55EFB8F9422081F1620FE44ACF99E81122F73D3F921D5E3391654E9947904984375B725FDFBA895C5CDE3D225D7BE3A213C3965178A7DC1E3B552EC7B2FFD9C77EBCC243C4500DFDFBE3B7554AA427C01305BEC48D71AF27C5911D1E649C620D22CF5F3A5AEB9468651DA796F369522FAF91EFABF0FEBD33FCA41C9534606A4EA0199B904B243BA9CB8F37A792DF02EFAB8F0E2E0CF1D579DABA042CFE4C9430AD4EDA786052FCF15E7ACFA2736AAB4590F73675FA1805FE23892C63E0CD01D006935A6E3F8E105A754803D00D9857E49636AB034164156856D58A244EAD475300D93B31E44B5BE3BBF6994EDB895804B4F1BAD43ECFE08B4E130148B669FE620E4F73034FC3E748237870BEC3B1F517684654D1D6BC074DDF7B759A2405F78ED84D1006D25AF9BBC12D6C632F5D543DA0CBE9EA866B2C92126009C27AD59394B76337DE246B50895317E2E345DF3629A5F6227F64522866E7A39121CCC552E3DABC989DCE066DEA355F788C5D92ADA099917A297CFEFA867CE37656FAC6A50798C10B394D5BA54F85CF0F7EF1EEDDFCA1E53E93F1349888CC745190C196F84ECF0721287CC592D406F0A6CC5A55294BF7AA3B35F6CEFC61CAB794B12444312B5E50EC0712E221CC95E9E26E9C3D000881E792AFCB58641B1A94613D64EC72F3DB9AB65BA07A4F05B7E9EE7B335D86A06FCBDB8CBD695AEEF53964A965FFE4C6D7B4E580AB139F8422A702E09EACBEA5D512C31A955B3D60310BE2BBDD73484BAE6612791A19DA3C7B0FD1487E72131A8F9CB801790CE8A6E1E378662CEDCD5EE82BD390576ACFE5334ECD9D907273AEFE67058916388210638E5E60F20EE92389B3533FD6AFFD33095B23D169F0913657F033B8D5C4EA517F167C1D53E031787BBE6D5B577245FFF8151CD8FDCC5D6C32DF70FB8043D42F896CD513B4C85CFF292676CF13B6A1931E87727A561711A3105D9F3519B90C9429B5CD3EDAAE3EE334826A3FD74D6175B5589DB392F956A67C5E67BE59656F1CB37E52C636B2692A60C2044327472FA9AF651AFBCF55D8398A31D343074931A72D54833B29EF21FCB6EF419BB56313513E46C65D833677DBB0F2813E9CE5EF70676102CA0D3C14BBDD659A7498FA08CD359D428A803AEFCC660E9FC704E9BACC5F1D27F2528D46B3FCAA2D47DFA28BF4C" + ); let mut aes_ctr = signal_crypto::Aes256Ctr32::from_key(&key, &nonce, init_ctr)?; diff --git a/rust/crypto/tests/aes_gcm.rs b/rust/crypto/tests/aes_gcm.rs index 7103f9b37..3cd6de5a3 100644 --- a/rust/crypto/tests/aes_gcm.rs +++ b/rust/crypto/tests/aes_gcm.rs @@ -159,9 +159,13 @@ fn aes_gcm_wycheproof_kats() -> Result<(), signal_crypto::Error> { fn aes_gcm_smoke_test() -> Result<(), signal_crypto::Error> { let key = hex!("feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308"); let nonce = hex!("cafebabefacedbaddecaf888"); - let input = hex!("d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39"); + let input = hex!( + "d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39" + ); let ad = hex!("feedfacedeadbeeffeedfacedeadbeefabaddad2"); - let output = hex!("522dc1f099567d07f47f37a32a84427d643a8cdcbfe5c0c97598a2bd2555d1aa8cb08e48590dbb3da7b08b1056828838c5f61e6393ba7a0abcc9f66276fc6ece0f4e1768cddf8853bb2d551b"); + let output = hex!( + "522dc1f099567d07f47f37a32a84427d643a8cdcbfe5c0c97598a2bd2555d1aa8cb08e48590dbb3da7b08b1056828838c5f61e6393ba7a0abcc9f66276fc6ece0f4e1768cddf8853bb2d551b" + ); let mut aes_gcm = signal_crypto::Aes256GcmEncryption::new(&key, &nonce, &ad)?; diff --git a/rust/device-transfer/src/lib.rs b/rust/device-transfer/src/lib.rs index 6a5fd9694..099d17fe1 100644 --- a/rust/device-transfer/src/lib.rs +++ b/rust/device-transfer/src/lib.rs @@ -16,7 +16,7 @@ use boring::error::ErrorStack; use boring::hash::MessageDigest; use boring::pkey::{PKey, Private}; use boring::rsa::Rsa; -use boring::x509::{X509Builder, X509Name, X509NameBuilder, X509}; +use boring::x509::{X509, X509Builder, X509Name, X509NameBuilder}; /// Error types for device transfer. #[derive(Copy, Clone, Debug)] diff --git a/rust/keytrans/benches/verify.rs b/rust/keytrans/benches/verify.rs index 1675faf14..363f9472a 100644 --- a/rust/keytrans/benches/verify.rs +++ b/rust/keytrans/benches/verify.rs @@ -6,7 +6,7 @@ use std::time::{Duration, SystemTime}; use const_str::hex; -use criterion::{criterion_group, criterion_main, Criterion}; +use criterion::{Criterion, criterion_group, criterion_main}; use libsignal_keytrans::{ ChatSearchResponse, DeploymentMode, FullSearchResponse, KeyTransparency, PublicConfig, SearchContext, SlimSearchRequest, VerifyingKey, VrfPublicKey, diff --git a/rust/keytrans/src/log.rs b/rust/keytrans/src/log.rs index 5312163c0..d0f21b75c 100644 --- a/rust/keytrans/src/log.rs +++ b/rust/keytrans/src/log.rs @@ -62,11 +62,7 @@ mod math { // Returns the other child of the node's parent. fn sibling(x: u64, n: u64) -> u64 { let p = parent(x, n); - if x < p { - right(p, n) - } else { - left(p) - } + if x < p { right(p, n) } else { left(p) } } // Returns true if node x represents a full subtree. diff --git a/rust/keytrans/src/verify.rs b/rust/keytrans/src/verify.rs index 1e462a813..920456e71 100644 --- a/rust/keytrans/src/verify.rs +++ b/rust/keytrans/src/verify.rs @@ -13,15 +13,15 @@ use crate::commitments::verify as verify_commitment; use crate::guide::{InvalidState, ProofGuide}; use crate::implicit::{full_monitoring_path, monitoring_path}; use crate::log::{evaluate_batch_proof, verify_consistency_proof}; -use crate::prefix::{evaluate as evaluate_prefix, MalformedProof}; +use crate::prefix::{MalformedProof, evaluate as evaluate_prefix}; use crate::proto::{ CondensedTreeSearchResponse, FullTreeHead, MonitorKey, MonitorProof, MonitorRequest, MonitorResponse, ProofStep, TreeHead, }; use crate::{ - guide, log, vrf, DeploymentMode, FullSearchResponse, LastTreeHead, MonitorContext, - MonitorStateUpdate, MonitoringData, PublicConfig, SearchContext, SearchStateUpdate, - SlimSearchRequest, TreeRoot, VerifiableTreeHead, + DeploymentMode, FullSearchResponse, LastTreeHead, MonitorContext, MonitorStateUpdate, + MonitoringData, PublicConfig, SearchContext, SearchStateUpdate, SlimSearchRequest, TreeRoot, + VerifiableTreeHead, guide, log, vrf, }; /// The range of allowed timestamp values relative to "now". @@ -402,7 +402,7 @@ pub fn verify_distinguished( _ => { return Err(Error::BadData( "expected tree head not found in storage".to_string(), - )) + )); } }; @@ -633,7 +633,7 @@ pub fn verify_monitor<'a>( _ => { return Err(Error::VerificationFailed( "monitoring response is malformed: inclusion proof should be root".to_string(), - )) + )); } } } else { @@ -963,8 +963,8 @@ mod test { use test_case::test_case; use super::*; - use crate::proto::PrefixProof; use crate::ChatSearchResponse; + use crate::proto::PrefixProof; const MAX_AHEAD: Duration = Duration::from_secs(42); const MAX_BEHIND: Duration = Duration::from_secs(42); diff --git a/rust/keytrans/src/vrf.rs b/rust/keytrans/src/vrf.rs index afda5cda5..745e4638c 100644 --- a/rust/keytrans/src/vrf.rs +++ b/rust/keytrans/src/vrf.rs @@ -161,21 +161,27 @@ mod tests { pk: hex!("d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a"), alpha: &hex!(""), h: hex!("91bbed02a99461df1ad4c6564a5f5d829d0b90cfc7903e7a5797bd658abf3318"), - pi: hex!("8657106690b5526245a92b003bb079ccd1a92130477671f6fc01ad16f26f723f26f8a57ccaed74ee1b190bed1f479d9727d2d0f9b005a6e456a35d4fb0daab1268a1b0db10836d9826a528ca76567805"), + pi: hex!( + "8657106690b5526245a92b003bb079ccd1a92130477671f6fc01ad16f26f723f26f8a57ccaed74ee1b190bed1f479d9727d2d0f9b005a6e456a35d4fb0daab1268a1b0db10836d9826a528ca76567805" + ), beta: hex!("90cf1df3b703cce59e2a35b925d411164068269d7b2d29f3301c03dd757876ff"), }, TestVector { pk: hex!("3d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c"), alpha: &hex!("72"), h: hex!("5b659fc3d4e9263fd9a4ed1d022d75eaacc20df5e09f9ea937502396598dc551"), - pi: hex!("f3141cd382dc42909d19ec5110469e4feae18300e94f304590abdced48aed5933bf0864a62558b3ed7f2fea45c92a465301b3bbf5e3e54ddf2d935be3b67926da3ef39226bbc355bdc9850112c8f4b02"), + pi: hex!( + "f3141cd382dc42909d19ec5110469e4feae18300e94f304590abdced48aed5933bf0864a62558b3ed7f2fea45c92a465301b3bbf5e3e54ddf2d935be3b67926da3ef39226bbc355bdc9850112c8f4b02" + ), beta: hex!("eb4440665d3891d668e7e0fcaf587f1b4bd7fbfe99d0eb2211ccec90496310eb"), }, TestVector { pk: hex!("fc51cd8e6218a1a38da47ed00230f0580816ed13ba3303ac5deb911548908025"), alpha: &hex!("af82"), h: hex!("bf4339376f5542811de615e3313d2b36f6f53c0acfebb482159711201192576a"), - pi: hex!("9bc0f79119cc5604bf02d23b4caede71393cedfbb191434dd016d30177ccbf8096bb474e53895c362d8628ee9f9ea3c0e52c7a5c691b6c18c9979866568add7a2d41b00b05081ed0f58ee5e31b3a970e"), + pi: hex!( + "9bc0f79119cc5604bf02d23b4caede71393cedfbb191434dd016d30177ccbf8096bb474e53895c362d8628ee9f9ea3c0e52c7a5c691b6c18c9979866568add7a2d41b00b05081ed0f58ee5e31b3a970e" + ), beta: hex!("645427e5d00c62a23fb703732fa5d892940935942101e456ecca7bb217c61c45"), }, ]; diff --git a/rust/media/src/sanitize/mp4.rs b/rust/media/src/sanitize/mp4.rs index 2746236d8..645d20dc2 100644 --- a/rust/media/src/sanitize/mp4.rs +++ b/rust/media/src/sanitize/mp4.rs @@ -6,7 +6,7 @@ use futures_util::AsyncRead; use mediasan_common::AsyncSkip; pub use mp4san::parse::ParseError; -use mp4san::{sanitize_async_with_config, Config}; +use mp4san::{Config, sanitize_async_with_config}; pub use mp4san::{InputSpan, SanitizedMetadata}; /// Error type returned by [`sanitize`]. diff --git a/rust/message-backup/benches/validation.rs b/rust/message-backup/benches/validation.rs index 5f4e37b42..7467ce406 100644 --- a/rust/message-backup/benches/validation.rs +++ b/rust/message-backup/benches/validation.rs @@ -9,19 +9,19 @@ //! (but not all) of them can be run on an externally-provided backup file as well. See the //! `LIBSIGNAL_TESTING`-prefixed environment variables below. -use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion}; -use futures::io::{BufReader, Cursor}; +use criterion::{BenchmarkId, Criterion, black_box, criterion_group, criterion_main}; use futures::AsyncRead; +use futures::io::{BufReader, Cursor}; use libsignal_account_keys::{BackupForwardSecrecyToken, BackupKey}; use libsignal_core::Aci; +use libsignal_message_backup::BackupReader; use libsignal_message_backup::backup::{CompletedBackup, PartialBackup, ValidateOnly}; use libsignal_message_backup::frame::{ - Aes256CbcReader, CursorFactory, FramesReader, MacReader, ReaderFactory, AES_IV_SIZE, - AES_KEY_SIZE, + AES_IV_SIZE, AES_KEY_SIZE, Aes256CbcReader, CursorFactory, FramesReader, MacReader, + ReaderFactory, }; use libsignal_message_backup::key::MessageBackupKey; use libsignal_message_backup::parse::VarintDelimitedReader; -use libsignal_message_backup::BackupReader; use mediasan_common::AsyncSkip; use protobuf::Message as _; use sha2::Digest as _; diff --git a/rust/message-backup/examples/encrypt_backup.rs b/rust/message-backup/examples/encrypt_backup.rs index c5131353b..f559555e5 100644 --- a/rust/message-backup/examples/encrypt_backup.rs +++ b/rust/message-backup/examples/encrypt_backup.rs @@ -3,7 +3,7 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use std::io::{stdout, Write as _}; +use std::io::{Write as _, stdout}; use aes::cipher::crypto_common::rand_core::{OsRng, RngCore}; use clap::{ArgAction, Parser}; @@ -14,8 +14,8 @@ use libsignal_message_backup::export::{ aes_cbc_encrypt, gzip_compress, hmac_checksum, pad_gzipped_bucketed, }; use libsignal_message_backup::key::MessageBackupKey; -use libsignal_svrb::proto::backup_metadata::{metadata_pb, MetadataPb}; use libsignal_svrb::proto::Message as _; +use libsignal_svrb::proto::backup_metadata::{MetadataPb, metadata_pb}; #[path = "../src/bin/support/mod.rs"] mod support; diff --git a/rust/message-backup/examples/scramble.rs b/rust/message-backup/examples/scramble.rs index 62f4ac77a..3e26f155e 100644 --- a/rust/message-backup/examples/scramble.rs +++ b/rust/message-backup/examples/scramble.rs @@ -8,12 +8,12 @@ use std::process::ExitCode; use clap::Parser; use clap_stdin::FileOrStdin; use futures::future::Either; +use libsignal_message_backup::FoundUnknownField; use libsignal_message_backup::backup::{CompletedBackup, PartialBackup, Purpose, ValidateOnly}; use libsignal_message_backup::frame::{FramesReader, ReaderFactory as _}; use libsignal_message_backup::parse::VarintDelimitedReader; use libsignal_message_backup::scramble::Scrambler; use libsignal_message_backup::unknown::VisitUnknownFieldsExt as _; -use libsignal_message_backup::FoundUnknownField; #[path = "../src/bin/support/mod.rs"] mod support; @@ -123,7 +123,9 @@ fn main() -> ExitCode { match (original_result, new_result) { (Ok(original_unknown_fields), Ok(())) => { if original_unknown_fields.len() != new_unknown_fields.len() { - log::warn!("scrambling may have removed some unknown fields in frame {frame_index}; here are the post-scrambling fields:"); + log::warn!( + "scrambling may have removed some unknown fields in frame {frame_index}; here are the post-scrambling fields:" + ); for (path, value) in new_unknown_fields { log::info!( "{}", @@ -137,16 +139,22 @@ fn main() -> ExitCode { } } (Ok(_), Err(e)) => { - log::error!("scrambling of frame {frame_index} introduced a new error: {e} (continuing anyway!)"); + log::error!( + "scrambling of frame {frame_index} introduced a new error: {e} (continuing anyway!)" + ); exit_code = ExitCode::FAILURE; } (Err(old_error), Err(new_error)) => { if old_error.to_string() != new_error.to_string() { - log::warn!("validation error for frame {frame_index} changed post-scrambling: {new_error}"); + log::warn!( + "validation error for frame {frame_index} changed post-scrambling: {new_error}" + ); } } (Err(_), Ok(_)) => { - log::error!("scrambling of frame {frame_index} removed an error; this may no longer be a suitable test case!"); + log::error!( + "scrambling of frame {frame_index} removed an error; this may no longer be a suitable test case!" + ); exit_code = ExitCode::FAILURE; } } diff --git a/rust/message-backup/macros/src/lib.rs b/rust/message-backup/macros/src/lib.rs index 6e00dab92..b8ebb1f22 100644 --- a/rust/message-backup/macros/src/lib.rs +++ b/rust/message-backup/macros/src/lib.rs @@ -8,11 +8,11 @@ use std::borrow::Cow; use heck::ToSnakeCase; use proc_macro::TokenStream; use proc_macro2::{Delimiter, Group, TokenStream as TokenStream2}; -use quote::{quote, ToTokens}; +use quote::{ToTokens, quote}; use syn::spanned::Spanned; use syn::{ - self, parse2, parse_macro_input, Attribute, DeriveInput, Field, Ident, LitStr, MetaList, - TypePath, + self, Attribute, DeriveInput, Field, Ident, LitStr, MetaList, TypePath, parse_macro_input, + parse2, }; macro_rules! tokens_alias { diff --git a/rust/message-backup/src/backup.rs b/rust/message-backup/src/backup.rs index 9fd452fe6..4414b0070 100644 --- a/rust/message-backup/src/backup.rs +++ b/rust/message-backup/src/backup.rs @@ -4,7 +4,7 @@ // use std::cell::RefCell; -use std::collections::{hash_map, HashMap}; +use std::collections::{HashMap, hash_map}; use std::fmt::Debug; use std::sync::Arc; @@ -78,7 +78,7 @@ pub trait ReferencedTypes { ) -> &'a Self::RecipientReference; fn is_same_reference(left: &Self::RecipientReference, right: &Self::RecipientReference) - -> bool; + -> bool; } pub struct PartialBackup { diff --git a/rust/message-backup/src/backup/account_data.rs b/rust/message-backup/src/backup/account_data.rs index 413b74bc6..427ac5302 100644 --- a/rust/message-backup/src/backup/account_data.rs +++ b/rust/message-backup/src/backup/account_data.rs @@ -7,17 +7,17 @@ use std::fmt::Debug; use std::num::NonZeroU32; use derive_where::derive_where; -use serde_with::{serde_as, DisplayFromStr}; +use serde_with::{DisplayFromStr, serde_as}; use usernames::constants::USERNAME_LINK_ENTROPY_SIZE; use usernames::{Username, UsernameError}; use uuid::Uuid; -use zkgroup::api::backups::BackupLevel; use zkgroup::ProfileKeyBytes; +use zkgroup::api::backups::BackupLevel; use crate::backup::chat::chat_style::{ChatStyle, ChatStyleError, CustomColorMap}; use crate::backup::method::Method; use crate::backup::time::{Duration, ReportUnusualTimestamp}; -use crate::backup::{serialize, ReferencedTypes, TryIntoWith}; +use crate::backup::{ReferencedTypes, TryIntoWith, serialize}; use crate::proto::backup as proto; #[derive_where(Debug)] @@ -382,7 +382,7 @@ impl TryIntoWith { - return Err(AccountDataError::UnknownPhoneNumberSharingMode) + return Err(AccountDataError::UnknownPhoneNumberSharingMode); } PhoneNumberSharingMode::EVERYBODY => PhoneSharing::WithEverybody, PhoneNumberSharingMode::NOBODY => PhoneSharing::WithNobody, diff --git a/rust/message-backup/src/backup/call.rs b/rust/message-backup/src/backup/call.rs index 31029abac..d70cc0652 100644 --- a/rust/message-backup/src/backup/call.rs +++ b/rust/message-backup/src/backup/call.rs @@ -12,7 +12,7 @@ use crate::backup::frame::RecipientId; use crate::backup::method::LookupPair; use crate::backup::recipient::{DestinationKind, MinimalRecipientData}; use crate::backup::time::{ReportUnusualTimestamp, Timestamp, TimestampError}; -use crate::backup::{serialize, TryIntoWith}; +use crate::backup::{TryIntoWith, serialize}; use crate::proto::backup as proto; /// Validated version of [`proto::AdHocCall`]. @@ -325,10 +325,8 @@ impl + ReportUnusualTimestam } } -impl< - C: LookupPair + ReportUnusualTimestamp, - R: Clone + Debug, - > TryIntoWith, C> for proto::AdHocCall +impl + ReportUnusualTimestamp, R: Clone + Debug> + TryIntoWith, C> for proto::AdHocCall { type Error = CallError; diff --git a/rust/message-backup/src/backup/chat.rs b/rust/message-backup/src/backup/chat.rs index 07f7dfa97..55b482b52 100644 --- a/rust/message-backup/src/backup/chat.rs +++ b/rust/message-backup/src/backup/chat.rs @@ -19,7 +19,7 @@ use crate::backup::sticker::MessageStickerError; use crate::backup::time::{ Duration, ReportUnusualTimestamp, Timestamp, TimestampError, TimestampOrForever, }; -use crate::backup::{likely_empty, BackupMeta, CallError, ReferencedTypes, TryIntoWith}; +use crate::backup::{BackupMeta, CallError, ReferencedTypes, TryIntoWith, likely_empty}; use crate::proto::backup as proto; mod contact_message; @@ -457,12 +457,12 @@ pub enum OutgoingSendError { } impl< - M: Method + ReferencedTypes, - C: LookupPair - + Lookup - + Lookup - + ReportUnusualTimestamp, - > TryIntoWith, C> for proto::Chat + M: Method + ReferencedTypes, + C: LookupPair + + Lookup + + Lookup + + ReportUnusualTimestamp, +> TryIntoWith, C> for proto::Chat { type Error = ChatError; @@ -528,11 +528,11 @@ impl< } impl< - C: LookupPair - + AsRef - + ReportUnusualTimestamp, - M: Method + ReferencedTypes, - > TryIntoWith, C> for proto::ChatItem + C: LookupPair + + AsRef + + ReportUnusualTimestamp, + M: Method + ReferencedTypes, +> TryIntoWith, C> for proto::ChatItem { type Error = ChatItemError; @@ -1005,11 +1005,11 @@ impl + ReportUnusu } impl< - C: LookupPair - + AsRef - + ReportUnusualTimestamp, - M: Method + ReferencedTypes, - > TryIntoWith, C> for proto::chat_item::Item + C: LookupPair + + AsRef + + ReportUnusualTimestamp, + M: Method + ReferencedTypes, +> TryIntoWith, C> for proto::chat_item::Item { type Error = ChatItemError; @@ -1065,10 +1065,10 @@ mod test { use test_case::test_case; use super::*; + use crate::backup::Purpose; use crate::backup::method::Store; use crate::backup::testutil::TestContext; use crate::backup::time::testutil::MillisecondsSinceEpoch; - use crate::backup::Purpose; impl proto::ChatItem { pub(crate) fn test_data() -> Self { diff --git a/rust/message-backup/src/backup/chat/chat_style.rs b/rust/message-backup/src/backup/chat/chat_style.rs index da64c782f..6d3f47466 100644 --- a/rust/message-backup/src/backup/chat/chat_style.rs +++ b/rust/message-backup/src/backup/chat/chat_style.rs @@ -13,7 +13,7 @@ use crate::backup::file::{FilePointer, FilePointerError}; use crate::backup::method::{Lookup, Method}; use crate::backup::serialize::{SerializeOrder, UnorderedList}; use crate::backup::time::ReportUnusualTimestamp; -use crate::backup::{serialize, Color, ColorError, ReferencedTypes, TryIntoWith}; +use crate::backup::{Color, ColorError, ReferencedTypes, TryIntoWith, serialize}; use crate::proto::backup as proto; #[derive(serde::Serialize)] @@ -276,8 +276,8 @@ impl TryFrom for CustomChatColor { type Error = ChatStyleError; fn try_from(value: proto::chat_style::custom_chat_color::Color) -> Result { - use proto::chat_style::custom_chat_color::Color as ColorProto; use proto::chat_style::Gradient; + use proto::chat_style::custom_chat_color::Color as ColorProto; Ok(match value { ColorProto::Gradient(gradient) => { diff --git a/rust/message-backup/src/backup/chat/contact_message.rs b/rust/message-backup/src/backup/chat/contact_message.rs index d8fdb09d0..2d178a658 100644 --- a/rust/message-backup/src/backup/chat/contact_message.rs +++ b/rust/message-backup/src/backup/chat/contact_message.rs @@ -5,6 +5,7 @@ #[cfg(test)] use derive_where::derive_where; +use crate::backup::TryIntoWith; use crate::backup::chat::{ChatItemError, ReactionSet}; use crate::backup::file::{FilePointer, FilePointerError}; use crate::backup::frame::RecipientId; @@ -12,7 +13,6 @@ use crate::backup::method::LookupPair; use crate::backup::recipient::MinimalRecipientData; use crate::backup::serialize::SerializeOrder; use crate::backup::time::ReportUnusualTimestamp; -use crate::backup::TryIntoWith; use crate::proto::backup as proto; /// Validated version of [`proto::ContactMessage`]. diff --git a/rust/message-backup/src/backup/chat/gift_badge.rs b/rust/message-backup/src/backup/chat/gift_badge.rs index 30eccffa4..e84c87be9 100644 --- a/rust/message-backup/src/backup/chat/gift_badge.rs +++ b/rust/message-backup/src/backup/chat/gift_badge.rs @@ -3,8 +3,8 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use zkgroup::receipts::ReceiptCredentialPresentation; use zkgroup::ZkGroupDeserializationFailure; +use zkgroup::receipts::ReceiptCredentialPresentation; use crate::proto::backup as proto; diff --git a/rust/message-backup/src/backup/chat/group.rs b/rust/message-backup/src/backup/chat/group.rs index fb6dc9758..ae8f05acc 100644 --- a/rust/message-backup/src/backup/chat/group.rs +++ b/rust/message-backup/src/backup/chat/group.rs @@ -15,10 +15,10 @@ use crate::backup::serialize::UnorderedList; use crate::backup::time::Duration; use crate::backup::{serialize, uuid_bytes_to_aci}; use crate::proto::backup::{ - self as proto, group_invitation_revoked_update, GenericGroupUpdate, GroupAdminStatusUpdate, - GroupAnnouncementOnlyChangeUpdate, GroupAttributesAccessLevelChangeUpdate, GroupAvatarUpdate, - GroupCreationUpdate, GroupDescriptionUpdate, GroupExpirationTimerUpdate, - GroupInvitationAcceptedUpdate, GroupInvitationDeclinedUpdate, GroupInvitationRevokedUpdate, + self as proto, GenericGroupUpdate, GroupAdminStatusUpdate, GroupAnnouncementOnlyChangeUpdate, + GroupAttributesAccessLevelChangeUpdate, GroupAvatarUpdate, GroupCreationUpdate, + GroupDescriptionUpdate, GroupExpirationTimerUpdate, GroupInvitationAcceptedUpdate, + GroupInvitationDeclinedUpdate, GroupInvitationRevokedUpdate, GroupInviteLinkAdminApprovalUpdate, GroupInviteLinkDisabledUpdate, GroupInviteLinkEnabledUpdate, GroupInviteLinkResetUpdate, GroupJoinRequestApprovalUpdate, GroupJoinRequestCanceledUpdate, GroupJoinRequestUpdate, GroupMemberAddedUpdate, @@ -28,6 +28,7 @@ use crate::proto::backup::{ GroupUnknownInviteeUpdate, GroupV2MigrationDroppedMembersUpdate, GroupV2MigrationInvitedMembersUpdate, GroupV2MigrationSelfInvitedUpdate, GroupV2MigrationUpdate, SelfInvitedOtherUserToGroupUpdate, SelfInvitedToGroupUpdate, + group_invitation_revoked_update, }; /// Implements `TryFrom<$MESSAGE>` for [`GroupChatUpdate`]. diff --git a/rust/message-backup/src/backup/chat/link.rs b/rust/message-backup/src/backup/chat/link.rs index 5f01e1160..c1044fba3 100644 --- a/rust/message-backup/src/backup/chat/link.rs +++ b/rust/message-backup/src/backup/chat/link.rs @@ -3,9 +3,9 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use crate::backup::TryIntoWith; use crate::backup::file::{FilePointer, FilePointerError}; use crate::backup::time::{ReportUnusualTimestamp, Timestamp, TimestampError}; -use crate::backup::TryIntoWith; use crate::proto::backup as proto; #[derive(Debug, serde::Serialize)] diff --git a/rust/message-backup/src/backup/chat/payment.rs b/rust/message-backup/src/backup/chat/payment.rs index 03b7afdea..4dda407f7 100644 --- a/rust/message-backup/src/backup/chat/payment.rs +++ b/rust/message-backup/src/backup/chat/payment.rs @@ -9,7 +9,7 @@ use serde_with::hex::Hex; use serde_with::serde_as; use crate::backup::time::{ReportUnusualTimestamp, Timestamp, TimestampError}; -use crate::backup::{serialize, TryIntoWith}; +use crate::backup::{TryIntoWith, serialize}; use crate::proto::backup as proto; #[derive(Debug, serde::Serialize)] @@ -225,8 +225,8 @@ impl TryFrom Result { - use proto::payment_notification::transaction_details::failed_transaction::FailureReason; use proto::payment_notification::transaction_details::FailedTransaction as FailedTransactionProto; + use proto::payment_notification::transaction_details::failed_transaction::FailureReason; let FailedTransactionProto { reason, diff --git a/rust/message-backup/src/backup/chat/quote.rs b/rust/message-backup/src/backup/chat/quote.rs index 6d7fa374d..846f0cdcb 100644 --- a/rust/message-backup/src/backup/chat/quote.rs +++ b/rust/message-backup/src/backup/chat/quote.rs @@ -9,7 +9,7 @@ use crate::backup::frame::RecipientId; use crate::backup::method::LookupPair; use crate::backup::recipient::{DestinationKind, MinimalRecipientData}; use crate::backup::time::{ReportUnusualTimestamp, Timestamp, TimestampError}; -use crate::backup::{likely_empty, TryIntoWith}; +use crate::backup::{TryIntoWith, likely_empty}; use crate::proto::backup as proto; /// Validated version of [`proto::Quote`] diff --git a/rust/message-backup/src/backup/chat/reactions.rs b/rust/message-backup/src/backup/chat/reactions.rs index 3a83c20ed..986a9ab09 100644 --- a/rust/message-backup/src/backup/chat/reactions.rs +++ b/rust/message-backup/src/backup/chat/reactions.rs @@ -6,12 +6,12 @@ use derive_where::derive_where; use intmap::IntMap; +use crate::backup::TryIntoWith; use crate::backup::frame::RecipientId; use crate::backup::method::LookupPair; use crate::backup::recipient::{DestinationKind, MinimalRecipientData}; use crate::backup::serialize::{SerializeOrder, UnorderedList}; use crate::backup::time::{ReportUnusualTimestamp, Timestamp, TimestampError}; -use crate::backup::TryIntoWith; use crate::proto::backup as proto; /// Validated version of [`proto::Reaction`]. @@ -183,8 +183,8 @@ mod test { use crate::backup::chat::StandardMessage; use crate::backup::recipient::FullRecipientData; use crate::backup::testutil::TestContext; - use crate::backup::time::testutil::MillisecondsSinceEpoch; use crate::backup::time::Duration; + use crate::backup::time::testutil::MillisecondsSinceEpoch; impl proto::Reaction { pub(crate) fn test_data() -> Self { diff --git a/rust/message-backup/src/backup/chat/standard_message.rs b/rust/message-backup/src/backup/chat/standard_message.rs index 81765abee..9c9d5084b 100644 --- a/rust/message-backup/src/backup/chat/standard_message.rs +++ b/rust/message-backup/src/backup/chat/standard_message.rs @@ -15,7 +15,7 @@ use crate::backup::method::LookupPair; use crate::backup::recipient::MinimalRecipientData; use crate::backup::serialize::SerializeOrder; use crate::backup::time::ReportUnusualTimestamp; -use crate::backup::{likely_empty, TryIntoWith}; +use crate::backup::{TryIntoWith, likely_empty}; use crate::proto::backup as proto; /// Validated version of [`proto::StandardMessage`]. @@ -115,8 +115,8 @@ mod test { use test_case::test_case; use super::*; - use crate::backup::chat::text::{TextError, MAX_BODY_LENGTH_WITH_LONG_TEXT_ATTACHMENT}; use crate::backup::chat::Reaction; + use crate::backup::chat::text::{MAX_BODY_LENGTH_WITH_LONG_TEXT_ATTACHMENT, TextError}; use crate::backup::recipient::FullRecipientData; use crate::backup::testutil::TestContext; diff --git a/rust/message-backup/src/backup/chat/sticker_message.rs b/rust/message-backup/src/backup/chat/sticker_message.rs index c38ff71a2..4d3d13fb9 100644 --- a/rust/message-backup/src/backup/chat/sticker_message.rs +++ b/rust/message-backup/src/backup/chat/sticker_message.rs @@ -5,6 +5,7 @@ #[cfg(test)] use derive_where::derive_where; +use crate::backup::TryIntoWith; use crate::backup::chat::{ChatItemError, ReactionSet}; use crate::backup::frame::RecipientId; use crate::backup::method::LookupPair; @@ -12,7 +13,6 @@ use crate::backup::recipient::MinimalRecipientData; use crate::backup::serialize::SerializeOrder; use crate::backup::sticker::MessageSticker; use crate::backup::time::ReportUnusualTimestamp; -use crate::backup::TryIntoWith; use crate::proto::backup as proto; /// Validated version of [`proto::StickerMessage`]. diff --git a/rust/message-backup/src/backup/chat/story_reply.rs b/rust/message-backup/src/backup/chat/story_reply.rs index fbd9fbf1b..11a06c27a 100644 --- a/rust/message-backup/src/backup/chat/story_reply.rs +++ b/rust/message-backup/src/backup/chat/story_reply.rs @@ -5,6 +5,7 @@ #[cfg(test)] use derive_where::derive_where; +use crate::backup::TryIntoWith; use crate::backup::chat::{MessageText, ReactionError, ReactionSet, TextError}; use crate::backup::file::{FilePointer, FilePointerError}; use crate::backup::frame::RecipientId; @@ -12,7 +13,6 @@ use crate::backup::method::LookupPair; use crate::backup::recipient::MinimalRecipientData; use crate::backup::serialize::SerializeOrder; use crate::backup::time::ReportUnusualTimestamp; -use crate::backup::TryIntoWith; use crate::proto::backup as proto; /// Validated version of a 1:1 story reply message [`proto::DirectStoryReplyMessage`]. diff --git a/rust/message-backup/src/backup/chat/update_message.rs b/rust/message-backup/src/backup/chat/update_message.rs index ead72a60e..363386306 100644 --- a/rust/message-backup/src/backup/chat/update_message.rs +++ b/rust/message-backup/src/backup/chat/update_message.rs @@ -2,14 +2,14 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use crate::backup::TryIntoWith; use crate::backup::call::{GroupCall, IndividualCall}; -use crate::backup::chat::group::GroupChatUpdate; use crate::backup::chat::ChatItemError; +use crate::backup::chat::group::GroupChatUpdate; use crate::backup::frame::RecipientId; use crate::backup::method::LookupPair; -use crate::backup::recipient::{ChatItemAuthorKind, ChatRecipientKind, MinimalRecipientData, E164}; +use crate::backup::recipient::{ChatItemAuthorKind, ChatRecipientKind, E164, MinimalRecipientData}; use crate::backup::time::{Duration, ReportUnusualTimestamp}; -use crate::backup::TryIntoWith; use crate::proto::backup as proto; /// Validated version of [`proto::chat_update_message::Update`]. diff --git a/rust/message-backup/src/backup/chat/view_once_message.rs b/rust/message-backup/src/backup/chat/view_once_message.rs index 630caf2fd..e6783cd87 100644 --- a/rust/message-backup/src/backup/chat/view_once_message.rs +++ b/rust/message-backup/src/backup/chat/view_once_message.rs @@ -5,6 +5,7 @@ #[cfg(test)] use derive_where::derive_where; +use crate::backup::TryIntoWith; use crate::backup::chat::{ReactionError, ReactionSet}; use crate::backup::file::{MessageAttachment, MessageAttachmentError}; use crate::backup::frame::RecipientId; @@ -12,7 +13,6 @@ use crate::backup::method::LookupPair; use crate::backup::recipient::MinimalRecipientData; use crate::backup::serialize::SerializeOrder; use crate::backup::time::ReportUnusualTimestamp; -use crate::backup::TryIntoWith; use crate::proto::backup::{self as proto}; /// Validated version of a view-once message [`proto::ViewOnceMessage`]. diff --git a/rust/message-backup/src/backup/chat/voice_message.rs b/rust/message-backup/src/backup/chat/voice_message.rs index 43572f252..f9635a8eb 100644 --- a/rust/message-backup/src/backup/chat/voice_message.rs +++ b/rust/message-backup/src/backup/chat/voice_message.rs @@ -5,6 +5,7 @@ #[cfg(test)] use derive_where::derive_where; +use crate::backup::TryIntoWith; use crate::backup::chat::quote::{Quote, QuoteError}; use crate::backup::chat::{ReactionError, ReactionSet}; use crate::backup::file::{MessageAttachment, MessageAttachmentError}; @@ -13,7 +14,6 @@ use crate::backup::method::LookupPair; use crate::backup::recipient::MinimalRecipientData; use crate::backup::serialize::SerializeOrder; use crate::backup::time::ReportUnusualTimestamp; -use crate::backup::TryIntoWith; use crate::proto::backup as proto; /// Validated version of a voice message [`proto::StandardMessage`]. diff --git a/rust/message-backup/src/backup/chat_folder.rs b/rust/message-backup/src/backup/chat_folder.rs index 068c24faa..17343cad2 100644 --- a/rust/message-backup/src/backup/chat_folder.rs +++ b/rust/message-backup/src/backup/chat_folder.rs @@ -6,11 +6,11 @@ use intmap::IntMap; use itertools::Itertools; +use crate::backup::TryIntoWith; use crate::backup::frame::RecipientId; use crate::backup::method::LookupPair; use crate::backup::recipient::{DestinationKind, MinimalRecipientData}; use crate::backup::serialize::{SerializeOrder, UnorderedList}; -use crate::backup::TryIntoWith; use crate::proto::backup as proto; /// Validated version of [`proto::ChatFolder`]. diff --git a/rust/message-backup/src/backup/file.rs b/rust/message-backup/src/backup/file.rs index 9b7c0b48e..2b2ffbc7f 100644 --- a/rust/message-backup/src/backup/file.rs +++ b/rust/message-backup/src/backup/file.rs @@ -8,7 +8,7 @@ use serde_with::serde_as; use uuid::Uuid; use crate::backup::time::{ReportUnusualTimestamp, Timestamp, TimestampError}; -use crate::backup::{serialize, TryIntoWith}; +use crate::backup::{TryIntoWith, serialize}; use crate::proto::backup as proto; #[serde_as] diff --git a/rust/message-backup/src/backup/recipient.rs b/rust/message-backup/src/backup/recipient.rs index d2553d3a1..4391afacc 100644 --- a/rust/message-backup/src/backup/recipient.rs +++ b/rust/message-backup/src/backup/recipient.rs @@ -16,12 +16,12 @@ use serde_with::serde_as; use uuid::Uuid; use zkgroup::ProfileKeyBytes; +use crate::backup::TryIntoWith; use crate::backup::call::{CallLink, CallLinkError, CallLinkRootKey}; use crate::backup::frame::RecipientId; use crate::backup::method::LookupPair; use crate::backup::serialize::{self, SerializeOrder, UnorderedList}; use crate::backup::time::{ReportUnusualTimestamp, Timestamp, TimestampError}; -use crate::backup::TryIntoWith; use crate::proto::backup as proto; use crate::proto::backup::recipient::Destination as RecipientDestination; @@ -230,7 +230,7 @@ pub struct FullRecipientData(Arc<(MinimalRecipientData, Destination(&self, serializer: S) -> Result { - self.0 .1.serialize(serializer) + self.0.1.serialize(serializer) } } @@ -376,7 +376,7 @@ impl AsRef for MinimalRecipientData { impl std::ops::Deref for FullRecipientData { type Target = Destination; fn deref(&self) -> &Self::Target { - &self.0 .1 + &self.0.1 } } @@ -416,7 +416,7 @@ impl FullRecipientData { impl AsRef for FullRecipientData { fn as_ref(&self) -> &MinimalRecipientData { - &self.0 .0 + &self.0.0 } } @@ -731,7 +731,7 @@ impl + ReportUnusu distribution_id == MY_STORY_UUID, ) { (proto::distribution_list::PrivacyMode::UNKNOWN, _) => { - return Err(RecipientError::DistributionListPrivacyUnknown) + return Err(RecipientError::DistributionListPrivacyUnknown); } (proto::distribution_list::PrivacyMode::ONLY_WITH, _) => { PrivacyMode::OnlyWith(members) diff --git a/rust/message-backup/src/backup/recipient/group.rs b/rust/message-backup/src/backup/recipient/group.rs index 77598897c..ddb93d8b6 100644 --- a/rust/message-backup/src/backup/recipient/group.rs +++ b/rust/message-backup/src/backup/recipient/group.rs @@ -10,7 +10,7 @@ use zkgroup::GroupMasterKeyBytes; use crate::backup::serialize::{self, UnorderedList}; use crate::backup::time::{Duration, ReportUnusualTimestamp, TimestampError}; -use crate::backup::{likely_empty, TryIntoWith}; +use crate::backup::{TryIntoWith, likely_empty}; use crate::proto::backup as proto; mod members; diff --git a/rust/message-backup/src/backup/recipient/group/members.rs b/rust/message-backup/src/backup/recipient/group/members.rs index c6ae74447..e2c42ff60 100644 --- a/rust/message-backup/src/backup/recipient/group/members.rs +++ b/rust/message-backup/src/backup/recipient/group/members.rs @@ -7,9 +7,9 @@ use libsignal_core::{Aci, ServiceId, WrongKindOfServiceIdError}; use serde_with::serde_as; use super::GroupError; +use crate::backup::TryIntoWith; use crate::backup::serialize::{self, SerializeOrder}; use crate::backup::time::{ReportUnusualTimestamp, Timestamp}; -use crate::backup::TryIntoWith; use crate::proto::backup as proto; #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)] @@ -249,8 +249,8 @@ mod tests { use super::*; use crate::backup::testutil::TestContext; - use crate::backup::time::testutil::MillisecondsSinceEpoch; use crate::backup::time::TimestampError; + use crate::backup::time::testutil::MillisecondsSinceEpoch; impl proto::group::Member { pub(crate) fn test_data() -> Self { diff --git a/rust/message-backup/src/backup/sticker.rs b/rust/message-backup/src/backup/sticker.rs index ef8b69016..9a11b33d9 100644 --- a/rust/message-backup/src/backup/sticker.rs +++ b/rust/message-backup/src/backup/sticker.rs @@ -5,10 +5,10 @@ use derive_where::derive_where; +use crate::backup::TryIntoWith; use crate::backup::file::{FilePointer, FilePointerError}; use crate::backup::method::Method; use crate::backup::time::ReportUnusualTimestamp; -use crate::backup::TryIntoWith; use crate::proto::backup as proto; /// Validated version of [`proto::StickerPack`]. diff --git a/rust/message-backup/src/backup/testutil.rs b/rust/message-backup/src/backup/testutil.rs index c281e6325..70ce466e9 100644 --- a/rust/message-backup/src/backup/testutil.rs +++ b/rust/message-backup/src/backup/testutil.rs @@ -7,8 +7,8 @@ use std::sync::{Arc, LazyLock}; use super::recipient::MinimalRecipientData; use crate::backup::call::CallLink; -use crate::backup::chat::chat_style::{CustomChatColor, CustomColorId}; use crate::backup::chat::PinOrder; +use crate::backup::chat::chat_style::{CustomChatColor, CustomColorId}; use crate::backup::frame::RecipientId; use crate::backup::method::{Lookup, LookupPair}; use crate::backup::recipient::group::GroupData; diff --git a/rust/message-backup/src/backup/time.rs b/rust/message-backup/src/backup/time.rs index c9638fc93..e115641e9 100644 --- a/rust/message-backup/src/backup/time.rs +++ b/rust/message-backup/src/backup/time.rs @@ -242,7 +242,7 @@ mod test { use test_case::{test_case, test_matrix}; use super::*; - use crate::backup::time::testutil::{MillisecondsSinceEpoch, FIXED_DATE}; + use crate::backup::time::testutil::{FIXED_DATE, MillisecondsSinceEpoch}; impl Timestamp { pub(crate) fn test_value() -> Self { diff --git a/rust/message-backup/src/frame.rs b/rust/message-backup/src/frame.rs index 7a2c2557d..afa6bcd78 100644 --- a/rust/message-backup/src/frame.rs +++ b/rust/message-backup/src/frame.rs @@ -29,7 +29,7 @@ mod unpad; #[cfg(feature = "test-util")] pub use aes_read::AES_KEY_SIZE; #[cfg_attr(feature = "test-util", visibility::make(pub))] -use aes_read::{Aes256CbcReader, AES_IV_SIZE}; +use aes_read::{AES_IV_SIZE, Aes256CbcReader}; #[cfg_attr(feature = "test-util", visibility::make(pub))] use mac_read::MacReader; pub use reader_factory::{CursorFactory, FileReaderFactory, LimitedReaderFactory, ReaderFactory}; @@ -287,9 +287,9 @@ mod test { use assert_matches::assert_matches; use async_compression::futures::write::GzipEncoder; use const_str::{concat_bytes, hex}; + use futures::AsyncWriteExt; use futures::executor::block_on; use futures::io::{Cursor, ErrorKind}; - use futures::AsyncWriteExt; use protobuf::Message as _; use test_case::{test_case, test_matrix}; diff --git a/rust/message-backup/src/frame/aes_read.rs b/rust/message-backup/src/frame/aes_read.rs index 610d9d739..dd2b62ba2 100644 --- a/rust/message-backup/src/frame/aes_read.rs +++ b/rust/message-backup/src/frame/aes_read.rs @@ -121,7 +121,7 @@ mod test { use cbc::cipher::{BlockEncryptMut, KeyIvInit}; use futures::executor::block_on; use futures::io::{AsyncReadExt, Cursor, ErrorKind}; - use futures::{pin_mut, FutureExt, TryStreamExt}; + use futures::{FutureExt, TryStreamExt, pin_mut}; use test_case::test_case; use super::*; diff --git a/rust/message-backup/src/frame/block_stream.rs b/rust/message-backup/src/frame/block_stream.rs index 61afe2946..25fb24596 100644 --- a/rust/message-backup/src/frame/block_stream.rs +++ b/rust/message-backup/src/frame/block_stream.rs @@ -8,7 +8,7 @@ use std::pin::Pin; use std::task::Poll; use arrayvec::ArrayVec; -use futures::{ready, AsyncRead, Stream, StreamExt}; +use futures::{AsyncRead, Stream, StreamExt, ready}; /// Adapter that reads blocks into a stream. /// @@ -96,10 +96,10 @@ impl ExactBlockStream { } impl< - S: Stream, E>> + Unpin, - E: Into, - const N: usize, - > Stream for ExactBlockStream + S: Stream, E>> + Unpin, + E: Into, + const N: usize, +> Stream for ExactBlockStream { type Item = futures::io::Result<[u8; N]>; fn poll_next( diff --git a/rust/message-backup/src/frame/cbc.rs b/rust/message-backup/src/frame/cbc.rs index adce034e3..bd98fac0e 100644 --- a/rust/message-backup/src/frame/cbc.rs +++ b/rust/message-backup/src/frame/cbc.rs @@ -8,7 +8,7 @@ use std::task::Poll; use cbc::cipher::{Block, BlockCipher, BlockDecryptMut}; use derive_where::derive_where; -use futures::{ready, Stream, StreamExt as _}; +use futures::{Stream, StreamExt as _, ready}; /// Stream adapter that decrypts with a CBC stream cipher. /// @@ -60,9 +60,9 @@ where mod test { use aes::Aes256; use assert_matches::assert_matches; + use cbc::Decryptor; use cbc::cipher::generic_array::GenericArray; use cbc::cipher::{BlockEncryptMut, BlockSizeUser, KeyIvInit, Unsigned}; - use cbc::Decryptor; use futures::executor::block_on; use futures::{FutureExt as _, TryStreamExt}; diff --git a/rust/message-backup/src/frame/forward_secrecy.rs b/rust/message-backup/src/frame/forward_secrecy.rs index 442f35be9..2a3acd08a 100644 --- a/rust/message-backup/src/frame/forward_secrecy.rs +++ b/rust/message-backup/src/frame/forward_secrecy.rs @@ -7,8 +7,8 @@ use std::io; use futures::AsyncRead; use libsignal_account_keys::BACKUP_FORWARD_SECRECY_TOKEN_LEN; -use libsignal_svrb::proto::backup_metadata::metadata_pb::Pair as ForwardSecrecyPair; use libsignal_svrb::proto::backup_metadata::MetadataPb; +use libsignal_svrb::proto::backup_metadata::metadata_pb::Pair as ForwardSecrecyPair; use protobuf::Message; use sha2::Digest; diff --git a/rust/message-backup/src/frame/mac_read.rs b/rust/message-backup/src/frame/mac_read.rs index 86707a4a4..d67cd5ff3 100644 --- a/rust/message-backup/src/frame/mac_read.rs +++ b/rust/message-backup/src/frame/mac_read.rs @@ -5,9 +5,9 @@ use std::pin::Pin; -use futures::{ready, AsyncRead}; -use hmac::digest::generic_array::GenericArray; +use futures::{AsyncRead, ready}; use hmac::Mac; +use hmac::digest::generic_array::GenericArray; /// [`AsyncRead`]er that computes an HMAC of the produced contents. #[derive(Clone, Debug)] @@ -46,8 +46,8 @@ impl AsyncRead for MacReader { #[cfg(test)] mod test { - use futures::io::Cursor; use futures::FutureExt as _; + use futures::io::Cursor; use hmac::{Hmac, Mac as _}; use sha2::Sha256; diff --git a/rust/message-backup/src/frame/reader_factory.rs b/rust/message-backup/src/frame/reader_factory.rs index d25cde444..bb2bc3152 100644 --- a/rust/message-backup/src/frame/reader_factory.rs +++ b/rust/message-backup/src/frame/reader_factory.rs @@ -6,8 +6,8 @@ use std::fs::File; use arrayvec::ArrayVec; -use futures::io::{AllowStdIo, Cursor}; use futures::AsyncRead; +use futures::io::{AllowStdIo, Cursor}; use mediasan_common::{AsyncSkip, SeekSkipAdapter}; /// Provider of an [`AsyncRead`] and [`AsyncSkip`] reader. diff --git a/rust/message-backup/src/frame/unpad.rs b/rust/message-backup/src/frame/unpad.rs index 3b389b209..ae56de87f 100644 --- a/rust/message-backup/src/frame/unpad.rs +++ b/rust/message-backup/src/frame/unpad.rs @@ -9,9 +9,9 @@ use std::task::Poll; use aes::cipher::BlockSizeUser; use arrayvec::ArrayVec; -use cbc::cipher::block_padding::{Padding, UnpadError}; use cbc::cipher::Block; -use futures::{ready, Stream, StreamExt as _}; +use cbc::cipher::block_padding::{Padding, UnpadError}; +use futures::{Stream, StreamExt as _, ready}; /// Stream wrapper that un-pads the last block. /// diff --git a/rust/message-backup/src/scramble/randomize.rs b/rust/message-backup/src/scramble/randomize.rs index 207ac0790..c9147a8c3 100644 --- a/rust/message-backup/src/scramble/randomize.rs +++ b/rust/message-backup/src/scramble/randomize.rs @@ -3,8 +3,8 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use rand::distr::{Alphanumeric, SampleString as _}; use rand::Rng; +use rand::distr::{Alphanumeric, SampleString as _}; /// Replaces the contents with something random that is the same length. /// diff --git a/rust/message-backup/src/unknown/visit_dyn.rs b/rust/message-backup/src/unknown/visit_dyn.rs index b2c40adf0..311677d34 100644 --- a/rust/message-backup/src/unknown/visit_dyn.rs +++ b/rust/message-backup/src/unknown/visit_dyn.rs @@ -6,8 +6,8 @@ //! Unknown field searching via dynamic traversal of protubuf message //! descriptors. -use protobuf::reflect::{ReflectFieldRef, ReflectValueRef}; use protobuf::MessageDyn; +use protobuf::reflect::{ReflectFieldRef, ReflectValueRef}; use crate::unknown::{MapKey, Part, Path, UnknownFieldVisitor, UnknownValue}; diff --git a/rust/message-backup/tests/test_cases.rs b/rust/message-backup/tests/test_cases.rs index fccc2b953..abfb76c43 100644 --- a/rust/message-backup/tests/test_cases.rs +++ b/rust/message-backup/tests/test_cases.rs @@ -7,9 +7,9 @@ use std::path::{Path, PathBuf}; use assert_cmd::Command; use assert_matches::assert_matches; -use dir_test::{dir_test, Fixture}; -use futures::io::Cursor; +use dir_test::{Fixture, dir_test}; use futures::AsyncRead; +use futures::io::Cursor; use libsignal_account_keys::{BackupForwardSecrecyToken, BackupKey}; use libsignal_core::Aci; use libsignal_message_backup::backup::Purpose; diff --git a/rust/net/chat/examples/chat_grpc_noise.rs b/rust/net/chat/examples/chat_grpc_noise.rs index 4547d4715..32473a17e 100644 --- a/rust/net/chat/examples/chat_grpc_noise.rs +++ b/rust/net/chat/examples/chat_grpc_noise.rs @@ -12,13 +12,14 @@ use std::sync::Arc; use clap::Parser; use futures_util::FutureExt; -use http::uri::{Authority, PathAndQuery, Scheme}; use http::HeaderMap; +use http::uri::{Authority, PathAndQuery, Scheme}; use libsignal_cli_utils::args::{parse_base64_bytes, parse_protocol_address}; use libsignal_core::{Aci, DeviceId}; use libsignal_net::certs::SIGNAL_ROOT_CERTIFICATES; use libsignal_net::chat::noise::{Authorization, ChatNoiseConnector, ChatNoiseRoute, ConnectMeta}; use libsignal_net::connect_state::{ConnectState, ConnectionResources, SUGGESTED_CONNECT_CONFIG}; +use libsignal_net::infra::AsyncDuplexStream; use libsignal_net::infra::dns::DnsResolver; use libsignal_net::infra::host::Host; use libsignal_net::infra::noise::{NoiseConnector, NoiseDirectConnector}; @@ -30,7 +31,6 @@ use libsignal_net::infra::route::{ }; use libsignal_net::infra::utils::no_network_change_events; use libsignal_net::infra::ws::{StreamWithResponseHeaders, WebSocketTransport}; -use libsignal_net::infra::AsyncDuplexStream; use libsignal_net_grpc::proto::chat::account::accounts_anonymous_client::AccountsAnonymousClient; use libsignal_net_grpc::proto::chat::account::accounts_client::AccountsClient; use libsignal_net_grpc::proto::chat::account::{ diff --git a/rust/net/chat/examples/fetch_profile_key_credential.rs b/rust/net/chat/examples/fetch_profile_key_credential.rs index 9fd04dbf4..1e262f293 100644 --- a/rust/net/chat/examples/fetch_profile_key_credential.rs +++ b/rust/net/chat/examples/fetch_profile_key_credential.rs @@ -5,8 +5,8 @@ use std::time::SystemTime; -use base64::prelude::BASE64_STANDARD; use base64::Engine; +use base64::prelude::BASE64_STANDARD; use clap::{Parser, ValueEnum}; use libsignal_cli_utils::args::{parse_aci, parse_hex_bytes}; use libsignal_core::Aci; diff --git a/rust/net/chat/examples/look_up_username.rs b/rust/net/chat/examples/look_up_username.rs index 60464a1a4..adc85729f 100644 --- a/rust/net/chat/examples/look_up_username.rs +++ b/rust/net/chat/examples/look_up_username.rs @@ -6,8 +6,8 @@ use clap::{Parser, ValueEnum}; use libsignal_net::chat::test_support::simple_chat_connection; use libsignal_net::infra::EnableDomainFronting; -use libsignal_net_chat::api::usernames::UnauthenticatedChatApi; use libsignal_net_chat::api::Unauth; +use libsignal_net_chat::api::usernames::UnauthenticatedChatApi; #[derive(Parser)] struct Config { diff --git a/rust/net/chat/src/api/keytrans.rs b/rust/net/chat/src/api/keytrans.rs index 79cbfe6c8..25221055b 100644 --- a/rust/net/chat/src/api/keytrans.rs +++ b/rust/net/chat/src/api/keytrans.rs @@ -918,11 +918,15 @@ pub(crate) mod test_support { include_bytes!("../../../tests/data/chat_search_response.dat"); pub const CHAT_SEARCH_RESPONSE_VALID_AT: Duration = Duration::from_secs(1746042060); - const DISTINGUISHED_TREE_25223230_HEAD: &[u8] = &hex!("08bec0830c10f1beddc1e8321a640a201123b13ee32479ae6af5739e5d687b51559abf7684120511f68cde7a21a0e75512404dc142dc8f20605328f39b230b7f4160638c8c9c0fd1985b5348d152bd482c449efbba837ac5bed017e02216ae26ca72fd0b654401c99fdbaa0fdcee38d4a90b"); + const DISTINGUISHED_TREE_25223230_HEAD: &[u8] = &hex!( + "08bec0830c10f1beddc1e8321a640a201123b13ee32479ae6af5739e5d687b51559abf7684120511f68cde7a21a0e75512404dc142dc8f20605328f39b230b7f4160638c8c9c0fd1985b5348d152bd482c449efbba837ac5bed017e02216ae26ca72fd0b654401c99fdbaa0fdcee38d4a90b" + ); const DISTINGUISHED_TREE_25223230_ROOT: &[u8] = &hex!("85d15cf60676285c0105d9474139dfc7b070996c6dba7ab12ccf2ffcfff8cbcd"); - const STORED_ACCOUNT_DATA_25223245: &[u8] = &hex!("0a2f0a203901c94081c4e6321e92b3e434dcaf788f5326913e7bdcab47b4fd2ae7a6848a10231a0708ffffff071002200112300a2086052cc2a2689558e852d053c5ab411d8c3baef20171ec298e551574806ca95d1081011a0708ffffff07100220011a300a20bc1cfaae736c27c437b99175798933ee32caf07a5226840ec963a4e614916e9010dc011a0708ffffff071002200122300a0c08cdc0830c10a8d6ddc1e832122048e51aeb705ffa2fe7bed5f7aad51d216c551547892280eded1db2708eba359a"); + const STORED_ACCOUNT_DATA_25223245: &[u8] = &hex!( + "0a2f0a203901c94081c4e6321e92b3e434dcaf788f5326913e7bdcab47b4fd2ae7a6848a10231a0708ffffff071002200112300a2086052cc2a2689558e852d053c5ab411d8c3baef20171ec298e551574806ca95d1081011a0708ffffff07100220011a300a20bc1cfaae736c27c437b99175798933ee32caf07a5226840ec963a4e614916e9010dc011a0708ffffff071002200122300a0c08cdc0830c10a8d6ddc1e832122048e51aeb705ffa2fe7bed5f7aad51d216c551547892280eded1db2708eba359a" + ); pub fn test_distinguished_tree() -> LastTreeHead { ( @@ -951,8 +955,8 @@ mod test { use test_case::test_case; use super::test_support::{ - test_account, test_account_data, test_distinguished_tree, CHAT_SEARCH_RESPONSE, - CHAT_SEARCH_RESPONSE_VALID_AT, KEYTRANS_CONFIG_STAGING, + CHAT_SEARCH_RESPONSE, CHAT_SEARCH_RESPONSE_VALID_AT, KEYTRANS_CONFIG_STAGING, test_account, + test_account_data, test_distinguished_tree, }; use super::*; diff --git a/rust/net/chat/src/api/registration.rs b/rust/net/chat/src/api/registration.rs index 40009dec6..48b62127b 100644 --- a/rust/net/chat/src/api/registration.rs +++ b/rust/net/chat/src/api/registration.rs @@ -12,7 +12,7 @@ use libsignal_net::auth::Auth; use libsignal_net::chat::LanguageList; use libsignal_protocol::{GenericSignedPreKey, PublicKey}; use serde_with::{ - serde_as, skip_serializing_none, DurationMilliSeconds, DurationSeconds, FromInto, + DurationMilliSeconds, DurationSeconds, FromInto, serde_as, skip_serializing_none, }; use uuid::Uuid; @@ -56,8 +56,9 @@ pub(crate) trait RegistrationChatApi { transport: VerificationTransport, client: &str, languages: LanguageList, - ) -> impl Future>> - + Send; + ) -> impl Future< + Output = Result>, + > + Send; fn submit_push_challenge( &self, diff --git a/rust/net/chat/src/api/registration/error.rs b/rust/net/chat/src/api/registration/error.rs index ae44d75d0..a196485bc 100644 --- a/rust/net/chat/src/api/registration/error.rs +++ b/rust/net/chat/src/api/registration/error.rs @@ -7,10 +7,10 @@ use bytes::Bytes; use http::{HeaderMap, StatusCode}; use libsignal_net::infra::errors::LogSafeDisplay; +use crate::api::RequestError; use crate::api::registration::{ InvalidSessionId, RegistrationLock, VerificationCodeNotDeliverable, }; -use crate::api::RequestError; #[derive(Debug, thiserror::Error, displaydoc::Display)] #[cfg_attr(test, derive(strum::EnumDiscriminants))] diff --git a/rust/net/chat/src/registration.rs b/rust/net/chat/src/registration.rs index 650e1f493..ea986bd7d 100644 --- a/rust/net/chat/src/registration.rs +++ b/rust/net/chat/src/registration.rs @@ -9,8 +9,8 @@ use std::panic::UnwindSafe; use libsignal_net::chat::{LanguageList, Request as ChatRequest, Response as ChatResponse}; use static_assertions::assert_impl_all; -use crate::api::registration::*; use crate::api::Registration; +use crate::api::registration::*; mod service; pub use service::*; @@ -309,8 +309,8 @@ mod testutil { use std::future::Future; use std::marker::PhantomData; - use futures_util::future::BoxFuture; use futures_util::FutureExt as _; + use futures_util::future::BoxFuture; use libsignal_net::chat::fake::FakeChatRemote; use libsignal_net::chat::ws::ListenerEvent; use libsignal_net::chat::{ChatConnection, ConnectError as ChatConnectError}; @@ -394,8 +394,8 @@ mod test { use assert_matches::assert_matches; use bytes::Bytes; - use futures_util::future::BoxFuture; use futures_util::FutureExt as _; + use futures_util::future::BoxFuture; use libsignal_net::chat::fake::FakeChatRemote; use libsignal_net::chat::{ChatConnection, ConnectError}; use libsignal_net::proto::chat_websocket::WebSocketRequestMessage; diff --git a/rust/net/chat/src/registration/service.rs b/rust/net/chat/src/registration/service.rs index 54536e483..f3eac9fbe 100644 --- a/rust/net/chat/src/registration/service.rs +++ b/rust/net/chat/src/registration/service.rs @@ -208,7 +208,7 @@ async fn spawn_connected_chat( ); match err { ChatConnectError::InvalidConnectionConfiguration => { - return Err(FatalConnectError::InvalidConfiguration) + return Err(FatalConnectError::InvalidConfiguration); } ChatConnectError::RetryLater(retry_later) => { return Err(FatalConnectError::RetryLater(retry_later)); @@ -230,7 +230,7 @@ async fn spawn_connected_chat( ChatConnectError::AppExpired => { return Err(FatalConnectError::Unexpected( "unauthenticated socket signaled app expired", - )) + )); } ChatConnectError::DeviceDeregistered => { return Err(FatalConnectError::Unexpected( @@ -438,12 +438,12 @@ async fn start_request(chat: &ChatConnection, (request, mut responder): Incoming #[cfg(test)] mod test { - use std::sync::atomic::AtomicUsize; use std::sync::LazyLock; + use std::sync::atomic::AtomicUsize; use assert_matches::assert_matches; - use http::uri::PathAndQuery; use http::HeaderMap; + use http::uri::PathAndQuery; use test_case::test_case; use tokio::sync::oneshot; use tokio::time::Instant; diff --git a/rust/net/chat/src/ws.rs b/rust/net/chat/src/ws.rs index bf4f1f4f0..08499f81c 100644 --- a/rust/net/chat/src/ws.rs +++ b/rust/net/chat/src/ws.rs @@ -15,12 +15,12 @@ mod usernames; use std::future::Future; use std::time::Duration; -use base64::prelude::BASE64_STANDARD; use base64::Engine as _; +use base64::prelude::BASE64_STANDARD; use http::StatusCode; use libsignal_net::chat; use libsignal_net::infra::errors::LogSafeDisplay; -use libsignal_net::infra::{extract_retry_later, AsHttpHeader}; +use libsignal_net::infra::{AsHttpHeader, extract_retry_later}; use serde_with::serde_as; use crate::api::{ @@ -381,8 +381,8 @@ mod testutil { #[cfg(test)] mod test { - use libsignal_net::infra::errors::RetryLater; use libsignal_net::infra::AsStaticHttpHeader as _; + use libsignal_net::infra::errors::RetryLater; use test_case::test_case; use super::testutil::*; diff --git a/rust/net/chat/src/ws/keytrans.rs b/rust/net/chat/src/ws/keytrans.rs index 9c0d0a8bc..22f6133a2 100644 --- a/rust/net/chat/src/ws/keytrans.rs +++ b/rust/net/chat/src/ws/keytrans.rs @@ -7,7 +7,7 @@ use std::fmt::Debug; use async_trait::async_trait; use base64::prelude::{ - Engine as _, BASE64_STANDARD, BASE64_STANDARD_NO_PAD, BASE64_URL_SAFE_NO_PAD, + BASE64_STANDARD, BASE64_STANDARD_NO_PAD, BASE64_URL_SAFE_NO_PAD, Engine as _, }; use http::header::ACCEPT; use http::uri::PathAndQuery; @@ -17,7 +17,7 @@ use libsignal_net::chat; use libsignal_protocol::PublicKey; use serde::{Deserialize, Serialize}; -use super::{TryIntoResponse as _, WsConnection, CONTENT_TYPE_JSON}; +use super::{CONTENT_TYPE_JSON, TryIntoResponse as _, WsConnection}; use crate::api::keytrans::*; use crate::api::{RequestError, Unauth}; @@ -334,8 +334,8 @@ mod test_support { use libsignal_keytrans::{ChatSearchResponse, StoredAccountData}; use libsignal_net::chat::ChatConnection; use libsignal_net::env; - use libsignal_net::infra::route::DirectOrProxyRoute; use libsignal_net::infra::EnableDomainFronting; + use libsignal_net::infra::route::DirectOrProxyRoute; use prost::Message as _; use super::*; @@ -489,8 +489,8 @@ mod test { use test_case::test_case; use super::test_support::{ - make_chat, make_kt, retry_n, should_retry, test_account, test_account_data, - test_distinguished_tree, NETWORK_RETRY_COUNT, + NETWORK_RETRY_COUNT, make_chat, make_kt, retry_n, should_retry, test_account, + test_account_data, test_distinguished_tree, }; use super::*; diff --git a/rust/net/chat/src/ws/profiles.rs b/rust/net/chat/src/ws/profiles.rs index 9c7d3d1f6..865487273 100644 --- a/rust/net/chat/src/ws/profiles.rs +++ b/rust/net/chat/src/ws/profiles.rs @@ -83,16 +83,16 @@ impl crate::api::profiles::UnauthenticatedChatApi for Unauth #[cfg(test)] mod test { - use base64::prelude::BASE64_STANDARD; use base64::Engine as _; + use base64::prelude::BASE64_STANDARD; use futures_util::FutureExt as _; use libsignal_net::chat; use test_case::test_case; use super::*; use crate::api::profiles::UnauthenticatedChatApi; - use crate::ws::testutil::{empty, json, ProduceResponse, RequestValidator}; use crate::ws::ACCESS_KEY_HEADER_NAME; + use crate::ws::testutil::{ProduceResponse, RequestValidator, empty, json}; const ACI_UUID: &str = "9d0652a3-dcc3-4d11-975f-74d61598733f"; diff --git a/rust/net/chat/src/ws/registration/error.rs b/rust/net/chat/src/ws/registration/error.rs index 314cd790c..919ba3876 100644 --- a/rust/net/chat/src/ws/registration/error.rs +++ b/rust/net/chat/src/ws/registration/error.rs @@ -5,12 +5,12 @@ use libsignal_net::chat::Response as ChatResponse; +use crate::api::RequestError; use crate::api::registration::{ CheckSvr2CredentialsError, CreateSessionError, RegisterAccountError, RegistrationLock, RequestVerificationCodeError, ResumeSessionError, SubmitVerificationError, UpdateSessionError, VerificationCodeNotDeliverable, }; -use crate::api::RequestError; use crate::ws::ResponseError; impl From for RequestError { @@ -131,19 +131,19 @@ mod test { use http::{HeaderMap, StatusCode}; use itertools::Itertools; - use libsignal_net::infra::errors::RetryLater; use libsignal_net::infra::AsHttpHeader; + use libsignal_net::infra::errors::RetryLater; use strum::{IntoDiscriminant, IntoEnumIterator}; use test_case::test_case; use super::*; + use crate::api::RateLimitChallenge; use crate::api::registration::{ CheckSvr2CredentialsErrorDiscriminants, CreateSessionErrorDiscriminants, RegisterAccountErrorDiscriminants, RequestVerificationCodeErrorDiscriminants, ResumeSessionErrorDiscriminants, SubmitVerificationErrorDiscriminants, UpdateSessionErrorDiscriminants, }; - use crate::api::RateLimitChallenge; use crate::ws::CONTENT_TYPE_JSON; trait AsStatus { diff --git a/rust/net/chat/src/ws/registration/request.rs b/rust/net/chat/src/ws/registration/request.rs index 105607eb0..bdeed806f 100644 --- a/rust/net/chat/src/ws/registration/request.rs +++ b/rust/net/chat/src/ws/registration/request.rs @@ -5,7 +5,7 @@ use libsignal_net::auth::Auth; use libsignal_net::chat::{LanguageList, Request as ChatRequest}; use libsignal_net::infra::AsHttpHeader as _; use libsignal_protocol::PublicKey; -use serde_with::{serde_as, skip_serializing_none, FromInto}; +use serde_with::{FromInto, serde_as, skip_serializing_none}; use crate::api::registration::{ AccountKeys, CreateSession, ForServiceIds, InvalidSessionId, NewMessageNotification, @@ -424,11 +424,11 @@ mod test { use uuid::uuid; use super::*; + use crate::api::ChallengeOption; use crate::api::registration::{ CheckSvr2CredentialsResponse, PushToken, RegisterAccountResponse, RegisterResponseBackup, RegisterResponseBadge, RegisterResponseEntitlements, Svr2CredentialsResult, }; - use crate::api::ChallengeOption; use crate::ws::TryIntoResponse as _; #[test] diff --git a/rust/net/chat/src/ws/usernames.rs b/rust/net/chat/src/ws/usernames.rs index 1c3a1c20b..e092bad0a 100644 --- a/rust/net/chat/src/ws/usernames.rs +++ b/rust/net/chat/src/ws/usernames.rs @@ -6,8 +6,8 @@ use std::convert::Infallible; use async_trait::async_trait; -use base64::prelude::BASE64_URL_SAFE_NO_PAD; use base64::Engine; +use base64::prelude::BASE64_URL_SAFE_NO_PAD; use libsignal_core::Aci; use libsignal_net::chat::Request; @@ -73,7 +73,7 @@ mod test { use super::*; use crate::api::usernames::UnauthenticatedChatApi; - use crate::ws::testutil::{empty, json, RequestValidator}; + use crate::ws::testutil::{RequestValidator, empty, json}; const ACI_UUID: &str = "9d0652a3-dcc3-4d11-975f-74d61598733f"; diff --git a/rust/net/examples/cdsi_lookup.rs b/rust/net/examples/cdsi_lookup.rs index e9dcec506..6d440e528 100644 --- a/rust/net/examples/cdsi_lookup.rs +++ b/rust/net/examples/cdsi_lookup.rs @@ -12,9 +12,9 @@ use libsignal_net::auth::Auth; use libsignal_net::cdsi::{CdsiConnection, LookupError, LookupRequest, LookupResponse}; use libsignal_net::connect_state::{ConnectState, ConnectionResources, SUGGESTED_CONNECT_CONFIG}; use libsignal_net::infra::dns::DnsResolver; +use libsignal_net_infra::EnableDomainFronting; use libsignal_net_infra::route::DirectOrProxyProvider; use libsignal_net_infra::utils::no_network_change_events; -use libsignal_net_infra::EnableDomainFronting; use tokio::io::AsyncBufReadExt as _; async fn cdsi_lookup( diff --git a/rust/net/examples/chat_smoke_test.rs b/rust/net/examples/chat_smoke_test.rs index 1a64b6118..b48525996 100644 --- a/rust/net/examples/chat_smoke_test.rs +++ b/rust/net/examples/chat_smoke_test.rs @@ -10,9 +10,9 @@ use std::process::ExitCode; use clap::{Parser, ValueEnum}; use futures_util::{FutureExt, StreamExt}; use libsignal_net::chat::ConnectError; +use libsignal_net_infra::EnableDomainFronting; use libsignal_net_infra::host::Host; use libsignal_net_infra::route::{ConnectionProxyConfig, SIGNAL_TLS_PROXY_SCHEME}; -use libsignal_net_infra::EnableDomainFronting; use strum::IntoEnumIterator as _; use url::Url; @@ -69,7 +69,7 @@ async fn main() -> ExitCode { let snis = allowed_route_types.iter().flat_map(|route_type| { let (index, libsignal_net_type) = match route_type { RouteType::Direct => { - return std::slice::from_ref(&env.chat_domain_config.connect.hostname) + return std::slice::from_ref(&env.chat_domain_config.connect.hostname); } RouteType::ProxyF => (0, libsignal_net_infra::RouteType::ProxyF), RouteType::ProxyG => (1, libsignal_net_infra::RouteType::ProxyG), diff --git a/rust/net/examples/dns_custom_lookup.rs b/rust/net/examples/dns_custom_lookup.rs index d11767983..0e3b3f794 100644 --- a/rust/net/examples/dns_custom_lookup.rs +++ b/rust/net/examples/dns_custom_lookup.rs @@ -7,11 +7,12 @@ use std::sync::Arc; use clap::{Parser, ValueEnum}; use const_str::ip_addr; -use either::{for_both, Either}; +use either::{Either, for_both}; use libsignal_net::infra::certs::RootCertificates; use libsignal_net::infra::dns::custom_resolver::CustomDnsResolver; use libsignal_net::infra::dns::dns_lookup::{DnsLookup, DnsLookupRequest}; use libsignal_net::infra::host::Host; +use libsignal_net_infra::Alpn; use libsignal_net_infra::dns::dns_transport_doh::DohTransportConnectorFactory; use libsignal_net_infra::dns::dns_transport_udp::UdpTransportConnectorFactory; use libsignal_net_infra::route::{ @@ -19,7 +20,6 @@ use libsignal_net_infra::route::{ }; use libsignal_net_infra::timeouts::DNS_LATER_RESPONSE_GRACE_PERIOD; use libsignal_net_infra::utils::no_network_change_events; -use libsignal_net_infra::Alpn; use nonzero_ext::nonzero; use tokio::time::Instant; diff --git a/rust/net/examples/dns_over_https.rs b/rust/net/examples/dns_over_https.rs index c20b9a9da..9f527cc3a 100644 --- a/rust/net/examples/dns_over_https.rs +++ b/rust/net/examples/dns_over_https.rs @@ -12,11 +12,11 @@ use libsignal_net::infra::certs::RootCertificates; use libsignal_net::infra::dns::custom_resolver::DnsTransport; use libsignal_net::infra::dns::dns_lookup::DnsLookupRequest; use libsignal_net::infra::host::Host; +use libsignal_net_infra::Alpn; use libsignal_net_infra::dns::dns_transport_doh::DohTransportConnector; use libsignal_net_infra::route::{ HttpRouteFragment, HttpsTlsRoute, NoDelay, TcpRoute, TlsRoute, TlsRouteFragment, }; -use libsignal_net_infra::Alpn; #[derive(Parser, Debug)] struct Args { diff --git a/rust/net/examples/https_proxy.rs b/rust/net/examples/https_proxy.rs index d7ab82a69..6339f017a 100644 --- a/rust/net/examples/https_proxy.rs +++ b/rust/net/examples/https_proxy.rs @@ -26,17 +26,17 @@ use std::sync::Arc; use clap::Parser; use either::Either; -use futures_util::stream::FuturesUnordered; use futures_util::StreamExt; +use futures_util::stream::FuturesUnordered; use libsignal_net::infra::certs::RootCertificates; use libsignal_net::infra::dns::DnsResolver; use libsignal_net::infra::host::Host; +use libsignal_net_infra::Alpn; use libsignal_net_infra::route::{ ConnectorExt as _, HttpProxyAuth, HttpProxyRouteFragment, HttpsProxyRoute, ProxyTarget, TcpRoute, TlsRoute, TlsRouteFragment, UnresolvedHost, }; use libsignal_net_infra::utils::no_network_change_events; -use libsignal_net_infra::Alpn; use tokio::time::Duration; use url::Url; diff --git a/rust/net/examples/socks_proxy.rs b/rust/net/examples/socks_proxy.rs index 74fc15f42..4efa4c438 100644 --- a/rust/net/examples/socks_proxy.rs +++ b/rust/net/examples/socks_proxy.rs @@ -11,8 +11,8 @@ use std::str::FromStr; use std::sync::Arc; use clap::Parser; -use futures_util::stream::FuturesUnordered; use futures_util::StreamExt; +use futures_util::stream::FuturesUnordered; use libsignal_net::infra::certs::RootCertificates; use libsignal_net::infra::dns::DnsResolver; use libsignal_net::infra::host::Host; diff --git a/rust/net/examples/svr2_attestation.rs b/rust/net/examples/svr2_attestation.rs index d82efdbed..5ccd81175 100644 --- a/rust/net/examples/svr2_attestation.rs +++ b/rust/net/examples/svr2_attestation.rs @@ -14,16 +14,16 @@ use std::io::Write; use attest::enclave; use attest::enclave::Handshake; use clap::Parser as _; -use http::uri::PathAndQuery; use http::HeaderName; +use http::uri::PathAndQuery; use libsignal_net::auth::Auth; use libsignal_net::connect_state::{ConnectState, ConnectionResources, SUGGESTED_CONNECT_CONFIG}; use libsignal_net::enclave::{EnclaveKind, EndpointParams, MrEnclave, NewHandshake, SvrSgx}; use libsignal_net::svr::SvrConnection; +use libsignal_net_infra::EnableDomainFronting; use libsignal_net_infra::dns::DnsResolver; use libsignal_net_infra::route::DirectOrProxyProvider; use libsignal_net_infra::utils::no_network_change_events; -use libsignal_net_infra::EnableDomainFronting; #[derive(clap::Parser)] struct Args { diff --git a/rust/net/examples/svrb_test.rs b/rust/net/examples/svrb_test.rs index 940ba653f..843598f03 100644 --- a/rust/net/examples/svrb_test.rs +++ b/rust/net/examples/svrb_test.rs @@ -11,7 +11,7 @@ use std::str::FromStr; use std::time::SystemTime; use async_trait::async_trait; -use base64::prelude::{Engine, BASE64_STANDARD}; +use base64::prelude::{BASE64_STANDARD, Engine}; use clap::Parser as _; use hex::ToHex as _; use libsignal_account_keys::{AccountEntropyPool, BackupKey}; @@ -22,8 +22,8 @@ use libsignal_net::svrb; use libsignal_net::svrb::direct::direct_connect; use libsignal_net::svrb::traits::*; use libsignal_net_infra::utils::no_network_change_events; -use rand::rngs::OsRng; use rand::TryRngCore; +use rand::rngs::OsRng; #[derive(clap::Parser)] struct Args { diff --git a/rust/net/infra/src/certs.rs b/rust/net/infra/src/certs.rs index 79146a5f4..36f644285 100644 --- a/rust/net/infra/src/certs.rs +++ b/rust/net/infra/src/certs.rs @@ -8,8 +8,8 @@ use std::sync::{Arc, OnceLock}; use boring_signal::error::ErrorStack; use boring_signal::ssl::{SslAlert, SslConnectorBuilder, SslVerifyMode}; -use boring_signal::x509::store::X509StoreBuilder; use boring_signal::x509::X509; +use boring_signal::x509::store::X509StoreBuilder; use futures_util::future::BoxFuture; use rustls::client::danger::{ServerCertVerified, ServerCertVerifier}; use rustls::pki_types::{CertificateDer, ServerName}; @@ -360,8 +360,8 @@ mod test { use super::*; use crate::tcp_ssl::proxy::testutil::PROXY_CERTIFICATE; use crate::tcp_ssl::testutil::{ - localhost_https_server, make_http_request_response_over, SERVER_CERTIFICATE, - SERVER_HOSTNAME, + SERVER_CERTIFICATE, SERVER_HOSTNAME, localhost_https_server, + make_http_request_response_over, }; struct AllowSync(T); diff --git a/rust/net/infra/src/certs/error.rs b/rust/net/infra/src/certs/error.rs index e4c524b89..849f9753a 100644 --- a/rust/net/infra/src/certs/error.rs +++ b/rust/net/infra/src/certs/error.rs @@ -118,7 +118,7 @@ impl std::fmt::Display for LogSafeTlsError<'_> { | PeerIncompatible::UncompressedEcPointsRequired | PeerIncompatible::UnsolicitedCertificateTypeExtension => (), PeerIncompatible::ServerRejectedEncryptedClientHello(_ech_config_payloads) => { - return f.write_str("peer incompatible, server rejected ECH") + return f.write_str("peer incompatible, server rejected ECH"); } // This enum is non-exhaustive _ => return f.write_str("peer incompatible, unknown reason"), @@ -275,10 +275,10 @@ impl std::fmt::Display for LogSafeTlsError<'_> { "invalid certificate; expected {} is not in presented {:?}", log_safe_domain(&expected.to_str()), presented.iter().map(|s| log_safe_domain(s)).collect_vec() - ) + ); } CertificateError::Other(_other_error) => { - return f.write_str("invalid certificate, other error") + return f.write_str("invalid certificate, other error"); } // This enum is non-exhaustive _ => return f.write_str("invalid certificate, unknown error"), @@ -295,7 +295,7 @@ impl std::fmt::Display for LogSafeTlsError<'_> { | CertRevocationListError::UnsupportedIndirectCrl | CertRevocationListError::UnsupportedRevocationReason => (), CertRevocationListError::Other(_other_error) => { - return f.write_str("invalid CRL, other error") + return f.write_str("invalid CRL, other error"); } // This enum is non-exhaustive _ => return f.write_str("invalid CRL, unknown error"), diff --git a/rust/net/infra/src/dns.rs b/rust/net/infra/src/dns.rs index 555185967..87945b219 100644 --- a/rust/net/infra/src/dns.rs +++ b/rust/net/infra/src/dns.rs @@ -17,20 +17,20 @@ use crate::certs::RootCertificates; use crate::dns::custom_resolver::CustomDnsResolver; use crate::dns::dns_errors::Error; use crate::dns::dns_lookup::{DnsLookup, DnsLookupRequest, StaticDnsMap, SystemDnsLookup}; -use crate::dns::dns_transport_doh::{DohTransportConnectorFactory, CLOUDFLARE_IPS}; +use crate::dns::dns_transport_doh::{CLOUDFLARE_IPS, DohTransportConnectorFactory}; use crate::dns::dns_types::ResourceType; use crate::dns::dns_utils::log_safe_domain; use crate::dns::lookup_result::LookupResult; use crate::host::Host; use crate::route::{ - HttpRouteFragment, HttpsTlsRoute, TcpRoute, TlsRoute, TlsRouteFragment, DEFAULT_HTTPS_PORT, + DEFAULT_HTTPS_PORT, HttpRouteFragment, HttpsTlsRoute, TcpRoute, TlsRoute, TlsRouteFragment, }; use crate::timeouts::{ DNS_LATER_RESPONSE_GRACE_PERIOD, DNS_SYSTEM_LOOKUP_TIMEOUT, DOH_FALLBACK_LOOKUP_TIMEOUT, }; -use crate::utils::oneshot_broadcast::{self, Receiver}; use crate::utils::NetworkChangeEvent; -use crate::{utils, Alpn}; +use crate::utils::oneshot_broadcast::{self, Receiver}; +use crate::{Alpn, utils}; pub mod custom_resolver; mod dns_errors; diff --git a/rust/net/infra/src/dns/custom_resolver.rs b/rust/net/infra/src/dns/custom_resolver.rs index 7f265941a..4857002e9 100644 --- a/rust/net/infra/src/dns/custom_resolver.rs +++ b/rust/net/infra/src/dns/custom_resolver.rs @@ -29,9 +29,9 @@ use crate::timeouts::{ DNS_CALL_BACKGROUND_TIMEOUT, NETWORK_INTERFACE_POLL_INTERVAL, POST_ROUTE_CHANGE_CONNECTION_TIMEOUT, }; -use crate::utils::future::results_within_interval; use crate::utils::NetworkChangeEvent; -use crate::{dns, DnsSource}; +use crate::utils::future::results_within_interval; +use crate::{DnsSource, dns}; pub type DnsIpv4Result = Expiring>; pub type DnsIpv6Result = Expiring>; @@ -384,8 +384,8 @@ pub(crate) mod test { use std::iter; use std::net::IpAddr; use std::pin::pin; - use std::sync::atomic::{AtomicU32, Ordering}; use std::sync::Mutex; + use std::sync::atomic::{AtomicU32, Ordering}; use assert_matches::assert_matches; use const_str::ip_addr; @@ -393,8 +393,8 @@ pub(crate) mod test { use test_case::test_case; use super::*; - use crate::route::testutils::ConnectFn; use crate::route::Connector; + use crate::route::testutils::ConnectFn; use crate::timeouts::DNS_LATER_RESPONSE_GRACE_PERIOD; use crate::utils::{no_network_change_events, sleep_and_catch_up, sleep_until_and_catch_up}; diff --git a/rust/net/infra/src/dns/dns_message.rs b/rust/net/infra/src/dns/dns_message.rs index c21111d68..7ec481538 100644 --- a/rust/net/infra/src/dns/dns_message.rs +++ b/rust/net/infra/src/dns/dns_message.rs @@ -14,8 +14,8 @@ use bitstream_io::{ }; use tokio::time::Instant; -use crate::dns::dns_types::Expiring; use crate::dns::ResourceType; +use crate::dns::dns_types::Expiring; pub(crate) const QCLASS_IN: u16 = 1; const POINTER_MASK: u8 = 0xC0; diff --git a/rust/net/infra/src/dns/dns_transport_doh.rs b/rust/net/infra/src/dns/dns_transport_doh.rs index ac2bbfe9f..9ae64ff66 100644 --- a/rust/net/infra/src/dns/dns_transport_doh.rs +++ b/rust/net/infra/src/dns/dns_transport_doh.rs @@ -7,8 +7,8 @@ use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; use bytes::Bytes; use const_str::ip_addr; -use futures_util::stream::FuturesUnordered; use futures_util::Stream; +use futures_util::stream::FuturesUnordered; use http::uri::PathAndQuery; use http::{HeaderValue, Method}; @@ -25,7 +25,7 @@ use crate::route::{ TlsRoute, VariableTlsTimeoutConnector, }; use crate::timeouts::MIN_TLS_HANDSHAKE_TIMEOUT; -use crate::{dns, DnsSource}; +use crate::{DnsSource, dns}; pub(crate) const CLOUDFLARE_IPS: (Ipv4Addr, Ipv6Addr) = ( ip_addr!(v4, "1.1.1.1"), diff --git a/rust/net/infra/src/dns/dns_transport_udp.rs b/rust/net/infra/src/dns/dns_transport_udp.rs index d0edf313c..ac51bbd73 100644 --- a/rust/net/infra/src/dns/dns_transport_udp.rs +++ b/rust/net/infra/src/dns/dns_transport_udp.rs @@ -6,19 +6,19 @@ use std::net::IpAddr; use std::sync::Arc; -use futures_util::{stream, Stream, StreamExt}; +use futures_util::{Stream, StreamExt, stream}; use tokio::net::UdpSocket; use crate::dns::custom_resolver::{DnsQueryResult, DnsTransport}; use crate::dns::dns_errors::Error; use crate::dns::dns_lookup::DnsLookupRequest; use crate::dns::dns_message; -use crate::dns::dns_message::{parse_a_record, parse_aaaa_record, MAX_DNS_UDP_MESSAGE_LEN}; +use crate::dns::dns_message::{MAX_DNS_UDP_MESSAGE_LEN, parse_a_record, parse_aaaa_record}; use crate::dns::dns_types::ResourceType; use crate::route::{ Connector, ConnectorExt as _, ConnectorFactory, StatelessUdpConnector, UdpRoute, }; -use crate::{dns, DnsSource}; +use crate::{DnsSource, dns}; const A_REQUEST_ID: u16 = 0; const AAAA_REQUEST_ID: u16 = 1; diff --git a/rust/net/infra/src/errors.rs b/rust/net/infra/src/errors.rs index 45dbae5c6..6f72c8437 100644 --- a/rust/net/infra/src/errors.rs +++ b/rust/net/infra/src/errors.rs @@ -9,7 +9,7 @@ use std::time::Duration; use http::{HeaderName, HeaderValue}; use tokio_boring_signal::HandshakeError; -use crate::{certs, AsStaticHttpHeader}; +use crate::{AsStaticHttpHeader, certs}; pub trait LogSafeDisplay: Display {} diff --git a/rust/net/infra/src/http_client.rs b/rust/net/infra/src/http_client.rs index b06360c7b..45e047caf 100644 --- a/rust/net/infra/src/http_client.rs +++ b/rust/net/infra/src/http_client.rs @@ -6,9 +6,9 @@ use std::sync::Arc; use bytes::Bytes; +use http::HeaderMap; use http::response::Parts; use http::uri::PathAndQuery; -use http::HeaderMap; use http_body_util::{BodyExt, Full, Limited}; use hyper::client::conn::http2; use hyper_util::rt::{TokioExecutor, TokioIo}; @@ -97,7 +97,7 @@ impl AggregatingHttp2Client { let content = match content_length { Some(content_length) if content_length > self.max_response_size => { - return Err(HttpError::ResponseTooLarge) + return Err(HttpError::ResponseTooLarge); } Some(content_length) => Limited::new(body, content_length) .collect() @@ -252,8 +252,8 @@ mod test { server.bind_ephemeral((Ipv6Addr::LOCALHOST, 0)) } - fn outcome_record_for_testing( - ) -> tokio::sync::RwLock>>>> { + fn outcome_record_for_testing() + -> tokio::sync::RwLock>>>> { const MAX_DELAY: Duration = Duration::from_secs(100); const AGE_CUTOFF: Duration = Duration::from_secs(1000); const MAX_COUNT: u8 = 5; diff --git a/rust/net/infra/src/noise/direct.rs b/rust/net/infra/src/noise/direct.rs index 4fc793557..f9b089003 100644 --- a/rust/net/infra/src/noise/direct.rs +++ b/rust/net/infra/src/noise/direct.rs @@ -8,21 +8,21 @@ use std::io::{Error as IoError, ErrorKind as IoErrorKind}; use std::num::NonZeroU8; use std::pin::Pin; -use std::task::{ready, Context, Poll}; +use std::task::{Context, Poll, ready}; use assert_matches::assert_matches; use bytes::Bytes; +use futures_util::Stream; use futures_util::sink::Sink; use futures_util::stream::FusedStream; -use futures_util::Stream; use prost::Message as _; use tokio::io::{AsyncRead, AsyncWrite, ReadBuf}; use zerocopy::{FromBytes, IntoBytes}; -use crate::noise::{FrameType, HandshakeAuthKind, Transport}; -use crate::proto::noise_direct::close_reason::Code; -use crate::proto::noise_direct::CloseReason; use crate::Connection; +use crate::noise::{FrameType, HandshakeAuthKind, Transport}; +use crate::proto::noise_direct::CloseReason; +use crate::proto::noise_direct::close_reason::Code; /// Implements the Noise Direct framing protocol on top of a reliable byte /// stream. @@ -702,8 +702,8 @@ mod test { use tokio::io::{AsyncReadExt as _, AsyncWriteExt}; use super::*; - use crate::proto::noise_direct::close_reason::Code; use crate::proto::noise_direct::CloseReason; + use crate::proto::noise_direct::close_reason::Code; #[test_log::test] fn reads_frame_as_it_comes_in() { diff --git a/rust/net/infra/src/noise/handshake.rs b/rust/net/infra/src/noise/handshake.rs index 83a87aed6..b7dc31c77 100644 --- a/rust/net/infra/src/noise/handshake.rs +++ b/rust/net/infra/src/noise/handshake.rs @@ -93,8 +93,8 @@ mod test { use futures_util::{FutureExt, StreamExt}; use super::*; - use crate::noise::testutil::new_transport; use crate::noise::FrameType; + use crate::noise::testutil::new_transport; use crate::utils::testutil::TestWaker; struct NkHandshake { diff --git a/rust/net/infra/src/noise/stream.rs b/rust/net/infra/src/noise/stream.rs index 2c0132771..f66894391 100644 --- a/rust/net/infra/src/noise/stream.rs +++ b/rust/net/infra/src/noise/stream.rs @@ -5,7 +5,7 @@ use std::io::Error as IoError; use std::pin::Pin; -use std::task::{ready, Context, Poll}; +use std::task::{Context, Poll, ready}; use attest::client_connection::{ClientConnection, NOISE_TRANSPORT_PER_PAYLOAD_MAX}; use bytes::Bytes; @@ -14,8 +14,8 @@ use futures_util::{SinkExt as _, StreamExt as _}; use snow::TransportState; use tokio::io::{AsyncRead, AsyncWrite, ReadBuf}; -use crate::noise::{FrameType, Transport}; use crate::Connection; +use crate::noise::{FrameType, Transport}; /// Stream abstraction that encrypts/decrypts with [Noise]. /// @@ -262,7 +262,7 @@ mod test { use tokio::io::{AsyncReadExt as _, AsyncWriteExt as _}; use super::*; - use crate::noise::testutil::{echo_forever, new_transport_pair, ErrorSink as _}; + use crate::noise::testutil::{ErrorSink as _, echo_forever, new_transport_pair}; use crate::noise::{FrameType, HandshakeAuthKind}; use crate::utils::testutil::TestWaker; diff --git a/rust/net/infra/src/route.rs b/rust/net/infra/src/route.rs index 86006f9a5..a4fdb1093 100644 --- a/rust/net/infra/src/route.rs +++ b/rust/net/infra/src/route.rs @@ -613,8 +613,8 @@ mod test { use std::num::NonZeroU16; use std::sync::LazyLock; - use ::http::uri::PathAndQuery; use ::http::HeaderMap; + use ::http::uri::PathAndQuery; use assert_matches::assert_matches; use const_str::ip_addr; use futures_util::{Stream, StreamExt}; @@ -625,6 +625,7 @@ mod test { use tungstenite::protocol::WebSocketConfig; use super::*; + use crate::Alpn; use crate::certs::RootCertificates; use crate::dns::lookup_result::LookupResult; use crate::host::Host; @@ -632,7 +633,6 @@ mod test { use crate::route::testutils::{FakeConnectError, FakeContext, FakeRoute}; use crate::route::{SocksProxy, TlsProxy}; use crate::tcp_ssl::proxy::socks; - use crate::Alpn; static WS_ENDPOINT: LazyLock = LazyLock::new(|| PathAndQuery::from_static("/ws-path")); diff --git a/rust/net/infra/src/route/connect/preconnect.rs b/rust/net/infra/src/route/connect/preconnect.rs index 2027d5a52..b11841d5f 100644 --- a/rust/net/infra/src/route/connect/preconnect.rs +++ b/rust/net/infra/src/route/connect/preconnect.rs @@ -173,8 +173,8 @@ mod test { use assert_matches::assert_matches; use super::*; - use crate::route::testutils::ConnectFn; use crate::route::ConnectorExt; + use crate::route::testutils::ConnectFn; const TIMEOUT: Duration = Duration::from_secs(1); @@ -183,10 +183,10 @@ mod test { ) -> PreconnectingFactory< i32, impl ConnectorFactory< - i32, - Connector: Connector + Sync, - Connection = u32, - > + '_, + i32, + Connector: Connector + Sync, + Connection = u32, + > + '_, > { let inner_connector = ConnectFn(|_over: (), route: i32| { number_of_times_called.fetch_add(1, atomic::Ordering::SeqCst); diff --git a/rust/net/infra/src/route/describe.rs b/rust/net/infra/src/route/describe.rs index bc39ee2fd..51f214771 100644 --- a/rust/net/infra/src/route/describe.rs +++ b/rust/net/infra/src/route/describe.rs @@ -15,10 +15,10 @@ use crate::dns::dns_utils::log_safe_domain; use crate::errors::LogSafeDisplay; use crate::host::Host; use crate::route::{ - ConnectionProxyKind, ConnectionProxyRoute, Connector, DirectOrProxyRoute, + ConnectionProxyKind, ConnectionProxyRoute, Connector, DEFAULT_HTTPS_PORT, DirectOrProxyRoute, HttpProxyRouteFragment, HttpsProxyRoute, HttpsTlsRoute, ProxyTarget, ResolveHostnames, ResolvedRoute, SocksRoute, TcpRoute, TlsRoute, TransportRoute, UnresolvedHost, - UnresolvedTransportRoute, UnresolvedWebsocketServiceRoute, UsesTransport, DEFAULT_HTTPS_PORT, + UnresolvedTransportRoute, UnresolvedWebsocketServiceRoute, UsesTransport, }; /// A type that is not itself loggable but can produce a [`LogSafeDisplay`] diff --git a/rust/net/infra/src/route/http.rs b/rust/net/infra/src/route/http.rs index b6d0022a2..88385f537 100644 --- a/rust/net/infra/src/route/http.rs +++ b/rust/net/infra/src/route/http.rs @@ -8,13 +8,13 @@ use std::sync::Arc; use nonzero_ext::nonzero; +use crate::Alpn; use crate::certs::RootCertificates; use crate::host::Host; use crate::route::{ ReplaceFragment, RouteProvider, RouteProviderContext, SetAlpn, SimpleRoute, TcpRoute, TlsRoute, TlsRouteFragment, UnresolvedHost, }; -use crate::Alpn; pub const DEFAULT_HTTPS_PORT: NonZeroU16 = nonzero!(443u16); diff --git a/rust/net/infra/src/route/proxy.rs b/rust/net/infra/src/route/proxy.rs index 50ebfc83e..dee5b8d6b 100644 --- a/rust/net/infra/src/route/proxy.rs +++ b/rust/net/infra/src/route/proxy.rs @@ -9,6 +9,7 @@ use std::sync::Arc; use either::Either; use nonzero_ext::nonzero; +use crate::Alpn; use crate::certs::RootCertificates; use crate::errors::LogSafeDisplay; use crate::host::Host; @@ -17,7 +18,6 @@ use crate::route::{ TlsRouteFragment, UnresolvedHost, }; use crate::tcp_ssl::proxy::socks; -use crate::Alpn; pub const SIGNAL_TLS_PROXY_SCHEME: &str = "org.signal.tls"; diff --git a/rust/net/infra/src/route/resolve.rs b/rust/net/infra/src/route/resolve.rs index e7f563914..6e32df46b 100644 --- a/rust/net/infra/src/route/resolve.rs +++ b/rust/net/infra/src/route/resolve.rs @@ -520,7 +520,7 @@ mod test { use assert_matches::assert_matches; use const_str::ip_addr; - use futures_util::{pin_mut, FutureExt as _, StreamExt as _}; + use futures_util::{FutureExt as _, StreamExt as _, pin_mut}; use nonzero_ext::nonzero; use super::*; diff --git a/rust/net/infra/src/route/schedule.rs b/rust/net/infra/src/route/schedule.rs index 6d295af0d..5ab337ebc 100644 --- a/rust/net/infra/src/route/schedule.rs +++ b/rust/net/infra/src/route/schedule.rs @@ -17,12 +17,12 @@ use pin_project::pin_project; use rangemap::RangeSet; use tokio::time::{Duration, Instant}; -use crate::dns::dns_utils::log_safe_domain; use crate::dns::DnsError; +use crate::dns::dns_utils::log_safe_domain; use crate::route::{ResolveHostnames, ResolvedRoute, Resolver, TransportRoute, UsesTransport}; +use crate::utils::NetworkChangeEvent; use crate::utils::binary_heap::{MinKeyValueQueue, Queue}; use crate::utils::future::SomeOrPending; -use crate::utils::NetworkChangeEvent; /// Resolves routes with domain names to equivalent routes with IP addresses. /// diff --git a/rust/net/infra/src/route/tls.rs b/rust/net/infra/src/route/tls.rs index 95eba5d6e..d89491418 100644 --- a/rust/net/infra/src/route/tls.rs +++ b/rust/net/infra/src/route/tls.rs @@ -7,10 +7,10 @@ use std::sync::Arc; use boring_signal::ssl::SslVersion; +use crate::Alpn; use crate::certs::RootCertificates; use crate::host::Host; use crate::route::{ReplaceFragment, RouteProvider, RouteProviderContext, SimpleRoute}; -use crate::Alpn; #[derive(Clone, Debug, PartialEq, Eq)] pub struct TlsRouteFragment { diff --git a/rust/net/infra/src/route/ws.rs b/rust/net/infra/src/route/ws.rs index 048f8fa2f..a6b5bfcd9 100644 --- a/rust/net/infra/src/route/ws.rs +++ b/rust/net/infra/src/route/ws.rs @@ -5,8 +5,8 @@ use std::hash::Hash; -use http::uri::PathAndQuery; use http::HeaderMap; +use http::uri::PathAndQuery; use tungstenite::protocol::WebSocketConfig; use crate::route::{ReplaceFragment, RouteProvider, RouteProviderContext, SimpleRoute}; diff --git a/rust/net/infra/src/stream.rs b/rust/net/infra/src/stream.rs index 018e5c6c5..90004055c 100644 --- a/rust/net/infra/src/stream.rs +++ b/rust/net/infra/src/stream.rs @@ -109,8 +109,8 @@ impl crate::Connection for WorkaroundWriteBugDuplexStream< mod test { use std::borrow::Cow; use std::io::IoSlice; - use std::sync::atomic::AtomicBool; use std::sync::Arc; + use std::sync::atomic::AtomicBool; use boring_signal::ssl::{SslConnector, SslMethod}; use tokio::io::{AsyncReadExt, AsyncWriteExt}; @@ -119,8 +119,8 @@ mod test { use super::*; use crate::certs::RootCertificates; use crate::tcp_ssl::testutil::{ - localhost_https_server, make_http_request_response_over, SERVER_CERTIFICATE, - SERVER_HOSTNAME, + SERVER_CERTIFICATE, SERVER_HOSTNAME, localhost_https_server, + make_http_request_response_over, }; #[tokio::test] diff --git a/rust/net/infra/src/tcp_ssl/proxy.rs b/rust/net/infra/src/tcp_ssl/proxy.rs index 507911862..3688035bb 100644 --- a/rust/net/infra/src/tcp_ssl/proxy.rs +++ b/rust/net/infra/src/tcp_ssl/proxy.rs @@ -9,11 +9,11 @@ use futures_util::TryFutureExt; use tokio::net::TcpStream; use tokio_util::either::Either; +use crate::Connection; use crate::errors::TransportConnectError; use crate::route::{ ConnectionProxyRoute, Connector, ConnectorExt as _, LoggingConnector, TlsRoute, }; -use crate::Connection; pub mod https; pub mod socks; @@ -127,7 +127,7 @@ pub(crate) mod testutil { use boring_signal::pkey::PKey; use boring_signal::ssl::{SslAcceptor, SslMethod}; use boring_signal::x509::X509; - use futures_util::{pin_mut, Stream, StreamExt as _}; + use futures_util::{Stream, StreamExt as _, pin_mut}; use libsignal_core::try_scoped; use rcgen::CertifiedKey; use tls_parser::{ClientHello, TlsExtension, TlsMessage, TlsMessageHandshake, TlsPlaintext}; @@ -347,19 +347,19 @@ pub(crate) mod testutil { mod test { use std::borrow::Cow; + use crate::Alpn; use crate::certs::RootCertificates; use crate::host::Host; use crate::route::{ ConnectionProxyRoute, Connector as _, ConnectorExt as _, TcpRoute, TlsRoute, TlsRouteFragment, }; - use crate::tcp_ssl::proxy::testutil::{localhost_tls_proxy, PROXY_CERTIFICATE, PROXY_HOSTNAME}; - use crate::tcp_ssl::testutil::{ - localhost_https_server, make_http_request_response_over, SERVER_CERTIFICATE, - SERVER_HOSTNAME, - }; use crate::tcp_ssl::StatelessTls; - use crate::Alpn; + use crate::tcp_ssl::proxy::testutil::{PROXY_CERTIFICATE, PROXY_HOSTNAME, localhost_tls_proxy}; + use crate::tcp_ssl::testutil::{ + SERVER_CERTIFICATE, SERVER_HOSTNAME, localhost_https_server, + make_http_request_response_over, + }; #[tokio::test] async fn connect_through_proxy() { diff --git a/rust/net/infra/src/tcp_ssl/proxy/https.rs b/rust/net/infra/src/tcp_ssl/proxy/https.rs index c86b78fcd..5528c362c 100644 --- a/rust/net/infra/src/tcp_ssl/proxy/https.rs +++ b/rust/net/infra/src/tcp_ssl/proxy/https.rs @@ -11,8 +11,8 @@ use std::time::Duration; use bytes::Bytes; use futures_util::TryFutureExt as _; -use http::uri::Authority; use http::Uri; +use http::uri::Authority; use http_body_util::Empty; use hyper_util::rt::TokioIo; use pin_project::pin_project; @@ -268,8 +268,8 @@ impl Connection for HttpProxyStream { mod test { use assert_matches::assert_matches; use either::Either; - use futures_util::future::BoxFuture; use futures_util::FutureExt; + use futures_util::future::BoxFuture; use http::method::Method; use http::{HeaderMap, HeaderValue, StatusCode}; use http_body_util::Empty; diff --git a/rust/net/infra/src/tcp_ssl/proxy/socks.rs b/rust/net/infra/src/tcp_ssl/proxy/socks.rs index cbc298c26..fe4bc5f15 100644 --- a/rust/net/infra/src/tcp_ssl/proxy/socks.rs +++ b/rust/net/infra/src/tcp_ssl/proxy/socks.rs @@ -12,15 +12,15 @@ use std::time::Duration; use auto_enums::enum_derive; use tokio::io::{AsyncRead, AsyncWrite}; -use tokio_socks::tcp::{Socks4Stream, Socks5Stream}; use tokio_socks::TargetAddr; +use tokio_socks::tcp::{Socks4Stream, Socks5Stream}; +use crate::Connection; use crate::dns::DnsResolver; use crate::errors::TransportConnectError; use crate::host::Host; use crate::route::{Connector, ConnectorExt as _, SocksRoute, TcpRoute}; use crate::tcp_ssl::TcpStream; -use crate::Connection; pub(crate) const LONG_FULL_CONNECT_THRESHOLD: Duration = super::LONG_TCP_HANDSHAKE_THRESHOLD .saturating_add(super::LONG_TLS_HANDSHAKE_THRESHOLD) @@ -82,7 +82,9 @@ impl Connector, ()> for super::StatelessProxied { address: proxy_host, port: proxy_port, } = &proxy; - log::debug!("[{log_tag}] connecting to {protocol:?} proxy at {proxy_host}:{proxy_port} over TCP"); + log::debug!( + "[{log_tag}] connecting to {protocol:?} proxy at {proxy_host}:{proxy_port} over TCP" + ); let target = match &target_addr { crate::route::ProxyTarget::ResolvedLocally(ip) => { @@ -159,15 +161,15 @@ mod test { use assert_matches::assert_matches; use async_trait::async_trait; - use futures_util::{select, FutureExt as _}; + use futures_util::{FutureExt as _, select}; use test_case::test_matrix; use tokio::io::{AsyncReadExt as _, AsyncWriteExt as _}; use tokio::join; use super::*; use crate::route::ProxyTarget; - use crate::tcp_ssl::proxy::testutil::{TcpServer, TlsServer}; use crate::tcp_ssl::proxy::StatelessProxied; + use crate::tcp_ssl::proxy::testutil::{TcpServer, TlsServer}; use crate::tcp_ssl::testutil::{SERVER_CERTIFICATE, SERVER_HOSTNAME}; /// Authentication method. diff --git a/rust/net/infra/src/tcp_ssl/proxy/stream.rs b/rust/net/infra/src/tcp_ssl/proxy/stream.rs index 613c62b58..b71993a7f 100644 --- a/rust/net/infra/src/tcp_ssl/proxy/stream.rs +++ b/rust/net/infra/src/tcp_ssl/proxy/stream.rs @@ -6,10 +6,10 @@ use auto_enums::enum_derive; use tokio_boring_signal::SslStream; +use crate::Connection; +use crate::tcp_ssl::TcpStream; use crate::tcp_ssl::proxy::https::HttpProxyStream; use crate::tcp_ssl::proxy::socks::SocksStream; -use crate::tcp_ssl::TcpStream; -use crate::Connection; #[derive(Debug, derive_more::From)] #[enum_derive(tokio1::AsyncRead, tokio1::AsyncWrite)] diff --git a/rust/net/infra/src/testutil/fake_transport.rs b/rust/net/infra/src/testutil/fake_transport.rs index b5d5f56e6..12122c22a 100644 --- a/rust/net/infra/src/testutil/fake_transport.rs +++ b/rust/net/infra/src/testutil/fake_transport.rs @@ -10,8 +10,8 @@ use std::sync::Arc; use crate::host::Host; use crate::route::{ - ConnectionProxyRoute, HttpProxyRouteFragment, HttpsProxyRoute, ProxyTarget, SocksRoute, - TcpRoute, DEFAULT_HTTPS_PORT, + ConnectionProxyRoute, DEFAULT_HTTPS_PORT, HttpProxyRouteFragment, HttpsProxyRoute, ProxyTarget, + SocksRoute, TcpRoute, }; #[derive(Clone, Debug, Hash, PartialEq, Eq)] diff --git a/rust/net/infra/src/utils.rs b/rust/net/infra/src/utils.rs index 9c3ee5441..b1a171f97 100644 --- a/rust/net/infra/src/utils.rs +++ b/rust/net/infra/src/utils.rs @@ -7,7 +7,7 @@ use std::future::Future; use std::sync::LazyLock; use std::time::Duration; -use base64::prelude::{Engine as _, BASE64_STANDARD}; +use base64::prelude::{BASE64_STANDARD, Engine as _}; use http::HeaderValue; use tokio::time::Instant; @@ -122,8 +122,8 @@ pub fn no_network_change_events() -> NetworkChangeEvent { #[cfg(any(test, feature = "test-util"))] pub mod testutil { - use std::sync::atomic::AtomicUsize; use std::sync::Arc; + use std::sync::atomic::AtomicUsize; /// Usable as a [Waker](std::task::Waker) for async polling. #[derive(Debug, Default)] @@ -157,8 +157,8 @@ pub mod testutil { #[cfg(test)] mod test { use std::future::Future; - use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::Arc; + use std::sync::atomic::{AtomicBool, Ordering}; use std::time::Duration; use tokio::time; diff --git a/rust/net/infra/src/ws.rs b/rust/net/infra/src/ws.rs index 930550552..f3baaee19 100644 --- a/rust/net/infra/src/ws.rs +++ b/rust/net/infra/src/ws.rs @@ -9,12 +9,12 @@ use std::time::Duration; use futures_util::{Sink, Stream, TryFutureExt}; use http::uri::PathAndQuery; use tungstenite::protocol::CloseFrame; -use tungstenite::{http, Message, Utf8Bytes}; +use tungstenite::{Message, Utf8Bytes, http}; +use crate::AsyncDuplexStream; use crate::errors::LogSafeDisplay; use crate::route::{Connector, HttpRouteFragment, WebSocketRouteFragment}; use crate::ws::error::{HttpFormatError, ProtocolError, SpaceError}; -use crate::AsyncDuplexStream; pub mod error; pub use error::WebSocketConnectError; @@ -191,10 +191,10 @@ impl Connector<(WebSocketRouteFragment, HttpRouteFragment), Inner> for WithoutResponseHeaders where T: Connector< - (WebSocketRouteFragment, HttpRouteFragment), - Inner, - Connection = StreamWithResponseHeaders>, - >, + (WebSocketRouteFragment, HttpRouteFragment), + Inner, + Connection = StreamWithResponseHeaders>, + >, { type Connection = tokio_tungstenite::WebSocketStream; type Error = T::Error; diff --git a/rust/net/infra/src/ws/attested.rs b/rust/net/infra/src/ws/attested.rs index 55ad728e9..afd6fdda8 100644 --- a/rust/net/infra/src/ws/attested.rs +++ b/rust/net/infra/src/ws/attested.rs @@ -8,8 +8,8 @@ use std::sync::Arc; use attest::client_connection::ClientConnection; use tokio::sync::{mpsc, oneshot}; use tokio_stream::wrappers::ReceiverStream; -use tungstenite::protocol::frame::coding::CloseCode; use tungstenite::protocol::CloseFrame; +use tungstenite::protocol::frame::coding::CloseCode; use crate::ws::connection::{ FinishReason, MessageEvent, NextEventError, Outcome, TungsteniteReceiveError, @@ -274,7 +274,9 @@ async fn spawned_task_body( .send(Err(tungstenite_send_error.into())) .is_err() { - log::debug!("[{log_tag}] failed to signal send error because the sender was dropped"); + log::debug!( + "[{log_tag}] failed to signal send error because the sender was dropped" + ); } return Err(task_err); } @@ -320,7 +322,9 @@ async fn spawned_task_body( .await .is_err() { - log::debug!("[{log_tag}] failed to send abnormal close event because the receiver was dropped"); + log::debug!( + "[{log_tag}] failed to send abnormal close event because the receiver was dropped" + ); } return Err(TaskExitError::AbnormalServerClose { code }); } @@ -609,11 +613,11 @@ mod test { use tokio_tungstenite::WebSocketStream; use super::*; + use crate::AsyncDuplexStream; use crate::ws::attested::testutil::{ - run_attested_server, AttestedServerOutput, FAKE_ATTESTATION, + AttestedServerOutput, FAKE_ATTESTATION, run_attested_server, }; use crate::ws::testutil::fake_websocket; - use crate::AsyncDuplexStream; const ECHO_BYTES: &[u8] = b"two nibbles to a byte"; diff --git a/rust/net/infra/src/ws/connection.rs b/rust/net/infra/src/ws/connection.rs index f5e6e7ab5..1d0c847ab 100644 --- a/rust/net/infra/src/ws/connection.rs +++ b/rust/net/infra/src/ws/connection.rs @@ -12,9 +12,9 @@ use futures_util::{SinkExt as _, Stream, StreamExt as _}; use pin_project::pin_project; use tokio::select; use tokio::time::{Duration, Instant}; -use tungstenite::protocol::frame::coding::CloseCode; -use tungstenite::protocol::CloseFrame; use tungstenite::Message; +use tungstenite::protocol::CloseFrame; +use tungstenite::protocol::frame::coding::CloseCode; use crate::errors::LogSafeDisplay; use crate::ws::{Config, TextOrBinary, WebSocketError, WebSocketStreamLike}; @@ -613,7 +613,7 @@ mod test { use std::task::{Context, Poll}; use assert_matches::assert_matches; - use futures_util::{pin_mut, FutureExt as _}; + use futures_util::{FutureExt as _, pin_mut}; use tokio::sync::mpsc; use tokio_stream::wrappers::ReceiverStream; diff --git a/rust/net/infra/src/ws/error.rs b/rust/net/infra/src/ws/error.rs index fbdc00829..b61f7143c 100644 --- a/rust/net/infra/src/ws/error.rs +++ b/rust/net/infra/src/ws/error.rs @@ -91,7 +91,7 @@ impl std::fmt::Display for ProtocolError { use tungstenite::error::{ProtocolError, SubProtocolError}; let str = match &self.0 { ProtocolError::InvalidHeader(header_name) => { - return write!(f, "InvalidHeader: {header_name}") + return write!(f, "InvalidHeader: {header_name}"); } ProtocolError::WrongHttpMethod => "WrongHttpMethod", diff --git a/rust/net/infra/src/ws/noise.rs b/rust/net/infra/src/ws/noise.rs index 178328031..b4257ed95 100644 --- a/rust/net/infra/src/ws/noise.rs +++ b/rust/net/infra/src/ws/noise.rs @@ -5,7 +5,7 @@ use std::io::{Error as IoError, ErrorKind as IoErrorKind}; use std::pin::Pin; -use std::task::{ready, Poll}; +use std::task::{Poll, ready}; use bytes::Bytes; use futures_util::stream::FusedStream; @@ -13,8 +13,8 @@ use futures_util::{Sink, SinkExt as _, Stream, StreamExt as _}; use static_assertions::assert_impl_all; use tokio::io::{AsyncRead, AsyncWrite}; use tokio_tungstenite::WebSocketStream; -use tungstenite::protocol::frame::coding::CloseCode; use tungstenite::Message; +use tungstenite::protocol::frame::coding::CloseCode; use crate::noise::{FrameType, Transport}; diff --git a/rust/net/src/auth.rs b/rust/net/src/auth.rs index 6c2f6c9b0..36e70966f 100644 --- a/rust/net/src/auth.rs +++ b/rust/net/src/auth.rs @@ -6,8 +6,8 @@ use std::ops::Deref; use std::time::SystemTime; use hmac::{Hmac, Mac}; -use libsignal_net_infra::utils::basic_authorization; use libsignal_net_infra::AsStaticHttpHeader; +use libsignal_net_infra::utils::basic_authorization; use sha2::Sha256; /// Generic username/password combination. diff --git a/rust/net/src/cdsi.rs b/rust/net/src/cdsi.rs index 74c73b270..51ff440d1 100644 --- a/rust/net/src/cdsi.rs +++ b/rust/net/src/cdsi.rs @@ -5,7 +5,7 @@ use std::default::Default; -use libsignal_core::{Aci, Pni, E164}; +use libsignal_core::{Aci, E164, Pni}; use libsignal_net_infra::errors::{LogSafeDisplay, RetryLater, TransportConnectError}; use libsignal_net_infra::route::{RouteProvider, UnresolvedWebsocketServiceRoute}; use libsignal_net_infra::ws::attested::{ @@ -14,8 +14,8 @@ use libsignal_net_infra::ws::attested::{ use libsignal_net_infra::ws::{NextOrClose, WebSocketConnectError, WebSocketError}; use prost::Message as _; use thiserror::Error; -use tungstenite::protocol::frame::coding::CloseCode; use tungstenite::protocol::CloseFrame; +use tungstenite::protocol::frame::coding::CloseCode; use uuid::Uuid; use crate::auth::Auth; @@ -471,11 +471,11 @@ mod test { use const_str::hex; use itertools::Itertools as _; use libsignal_net_infra::dns::DnsResolver; - use libsignal_net_infra::route::testutils::ConnectFn; use libsignal_net_infra::route::DirectOrProxyProvider; + use libsignal_net_infra::route::testutils::ConnectFn; use libsignal_net_infra::utils::no_network_change_events; use libsignal_net_infra::ws::attested::testutil::{ - run_attested_server, AttestedServerOutput, FAKE_ATTESTATION, + AttestedServerOutput, FAKE_ATTESTATION, run_attested_server, }; use libsignal_net_infra::ws::testutil::fake_websocket; use libsignal_net_infra::{ @@ -483,8 +483,8 @@ mod test { }; use nonzero_ext::nonzero; use tokio_stream::wrappers::UnboundedReceiverStream; - use tungstenite::protocol::frame::coding::CloseCode; use tungstenite::protocol::CloseFrame; + use tungstenite::protocol::frame::coding::CloseCode; use uuid::Uuid; use warp::Filter as _; diff --git a/rust/net/src/chat.rs b/rust/net/src/chat.rs index f1506cbc5..43ad4a245 100644 --- a/rust/net/src/chat.rs +++ b/rust/net/src/chat.rs @@ -20,7 +20,7 @@ use libsignal_net_infra::route::{ use libsignal_net_infra::utils::NetworkChangeEvent; use libsignal_net_infra::ws::StreamWithResponseHeaders; use libsignal_net_infra::{ - AsHttpHeader, AsStaticHttpHeader, Connection, IpType, TransportInfo, RECOMMENDED_WS_CONFIG, + AsHttpHeader, AsStaticHttpHeader, Connection, IpType, RECOMMENDED_WS_CONFIG, TransportInfo, }; use tokio_tungstenite::WebSocketStream; @@ -235,9 +235,9 @@ impl ChatConnection { ) -> Result where TC: WebSocketTransportConnectorFactory< - UsePreconnect, - Connection = ChatTransportConnection, - >, + UsePreconnect, + Connection = ChatTransportConnection, + >, { Self::start_connect_with_transport( connection_resources, @@ -408,13 +408,13 @@ pub mod test_support { use std::time::Duration; + use libsignal_net_infra::EnableDomainFronting; use libsignal_net_infra::dns::DnsResolver; use libsignal_net_infra::route::ConnectionProxyConfig; use libsignal_net_infra::utils::no_network_change_events; - use libsignal_net_infra::EnableDomainFronting; use super::*; - use crate::chat::{ws, ChatConnection}; + use crate::chat::{ChatConnection, ws}; use crate::connect_state::{ ConnectState, DefaultConnectorFactory, PreconnectingFactory, SUGGESTED_CONNECT_CONFIG, }; @@ -492,19 +492,19 @@ pub(crate) mod test { use assert_matches::assert_matches; use http::{HeaderName, HeaderValue}; use itertools::Itertools; + use libsignal_net_infra::Alpn; use libsignal_net_infra::certs::RootCertificates; - use libsignal_net_infra::dns::lookup_result::LookupResult; use libsignal_net_infra::dns::DnsResolver; + use libsignal_net_infra::dns::lookup_result::LookupResult; use libsignal_net_infra::errors::{RetryLater, TransportConnectError}; use libsignal_net_infra::host::Host; use libsignal_net_infra::route::testutils::ConnectFn; use libsignal_net_infra::route::{ - DirectOrProxyRoute, HttpRouteFragment, HttpsTlsRoute, PreconnectingFactory, TcpRoute, - TlsRoute, TlsRouteFragment, UnresolvedHost, DEFAULT_HTTPS_PORT, + DEFAULT_HTTPS_PORT, DirectOrProxyRoute, HttpRouteFragment, HttpsTlsRoute, + PreconnectingFactory, TcpRoute, TlsRoute, TlsRouteFragment, UnresolvedHost, }; use libsignal_net_infra::utils::no_network_change_events; use libsignal_net_infra::ws::WebSocketConnectError; - use libsignal_net_infra::Alpn; use test_case::test_case; use tokio::io::{AsyncReadExt, AsyncWriteExt}; diff --git a/rust/net/src/chat/fake.rs b/rust/net/src/chat/fake.rs index d4dadf7c6..086fa79f8 100644 --- a/rust/net/src/chat/fake.rs +++ b/rust/net/src/chat/fake.rs @@ -9,14 +9,14 @@ use std::net::{IpAddr, Ipv4Addr}; use std::time::Duration; use futures_util::{Sink, Stream}; +use libsignal_net_infra::TransportInfo; use libsignal_net_infra::route::GetCurrentInterface; use libsignal_net_infra::utils::no_network_change_events; -use libsignal_net_infra::TransportInfo; use pin_project::pin_project; use prost::Message; use tokio_stream::wrappers::UnboundedReceiverStream; -use crate::chat::{ws, ChatConnection, ConnectionInfo, MessageProto, RequestProto, ResponseProto}; +use crate::chat::{ChatConnection, ConnectionInfo, MessageProto, RequestProto, ResponseProto, ws}; use crate::connect_state::RouteInfo; use crate::env::ALERT_HEADER_NAME; diff --git a/rust/net/src/chat/noise.rs b/rust/net/src/chat/noise.rs index ebd49492c..3acd86c23 100644 --- a/rust/net/src/chat/noise.rs +++ b/rust/net/src/chat/noise.rs @@ -8,7 +8,7 @@ use std::net::IpAddr; use libsignal_core::try_scoped; use libsignal_net_infra::noise::{ - HandshakeAuthKind, NoiseHandshake, EPHEMERAL_KEY_LEN, STATIC_KEY_LEN, + EPHEMERAL_KEY_LEN, HandshakeAuthKind, NoiseHandshake, STATIC_KEY_LEN, }; use libsignal_net_infra::route::{ ComposedConnector, Connector, ResolveHostnames, ResolvedRoute, UnresolvedHost, diff --git a/rust/net/src/chat/noise/encrypted_stream.rs b/rust/net/src/chat/noise/encrypted_stream.rs index 912ee0838..0b284db33 100644 --- a/rust/net/src/chat/noise/encrypted_stream.rs +++ b/rust/net/src/chat/noise/encrypted_stream.rs @@ -14,12 +14,12 @@ use tokio::io::{AsyncRead, AsyncWrite, ReadBuf}; use uuid::Uuid; use crate::chat::noise::{ChatNoiseFragment, HandshakeAuth}; +use crate::infra::Connection; use crate::infra::errors::{LogSafeDisplay, TransportConnectError}; use crate::infra::noise::{ - NoiseConnector, NoiseStream, SendError, Transport, EPHEMERAL_KEY_LEN, STATIC_KEY_LEN, + EPHEMERAL_KEY_LEN, NoiseConnector, NoiseStream, STATIC_KEY_LEN, SendError, Transport, }; use crate::infra::route::{Connector, NoiseRouteFragment}; -use crate::infra::Connection; /// A Noise-encrypted stream that wraps an underlying block-based [`Transport`]. /// @@ -241,14 +241,14 @@ mod test { use bytes::Bytes; use const_str::{concat, hex}; use futures_util::{SinkExt as _, StreamExt as _}; - use libsignal_net_infra::noise::testutil::{echo_forever, new_transport_pair}; use libsignal_net_infra::noise::FrameType; + use libsignal_net_infra::noise::testutil::{echo_forever, new_transport_pair}; use prost::Message; use tokio::io::{AsyncReadExt, AsyncWriteExt}; use super::*; use crate::chat::noise::NK_NOISE_PATTERN; - use crate::proto::chat_noise::{handshake_response, HandshakeInit, HandshakeResponse}; + use crate::proto::chat_noise::{HandshakeInit, HandshakeResponse, handshake_response}; async fn authenticating_server_handshake( transport: &mut S, diff --git a/rust/net/src/chat/server_requests.rs b/rust/net/src/chat/server_requests.rs index 99ad1434f..9c70754cc 100644 --- a/rust/net/src/chat/server_requests.rs +++ b/rust/net/src/chat/server_requests.rs @@ -7,7 +7,7 @@ use bytes::Bytes; use libsignal_net_infra::ws::WebSocketError; use libsignal_protocol::Timestamp; -use crate::chat::{ws, RequestProto, SendError}; +use crate::chat::{RequestProto, SendError, ws}; use crate::env::TIMESTAMP_HEADER_NAME; pub type ResponseEnvelopeSender = @@ -134,7 +134,9 @@ fn convert_received_message( .next_back(); if let Some(raw_timestamp) = raw_timestamp { - log::info!("received message at {TIMESTAMP_HEADER_NAME}: {raw_timestamp} (this is not a message ID)"); + log::info!( + "received message at {TIMESTAMP_HEADER_NAME}: {raw_timestamp} (this is not a message ID)" + ); } else { log::warn!("server delivered message with no valid {TIMESTAMP_HEADER_NAME} header"); } diff --git a/rust/net/src/chat/ws.rs b/rust/net/src/chat/ws.rs index bfda0a8ef..6ea526156 100644 --- a/rust/net/src/chat/ws.rs +++ b/rust/net/src/chat/ws.rs @@ -14,21 +14,21 @@ use std::pin::Pin; use std::sync::Arc; use futures_util::future::Either; -use futures_util::{pin_mut, FutureExt as _, Stream, StreamExt as _}; +use futures_util::{FutureExt as _, Stream, StreamExt as _, pin_mut}; use http::uri::PathAndQuery; use http::{Method, StatusCode}; use itertools::Itertools as _; +use libsignal_net_infra::TransportInfo; use libsignal_net_infra::route::GetCurrentInterface; -use libsignal_net_infra::utils::future::SomeOrPending; use libsignal_net_infra::utils::NetworkChangeEvent; +use libsignal_net_infra::utils::future::SomeOrPending; pub use libsignal_net_infra::ws::connection::FinishReason; use libsignal_net_infra::ws::connection::Outcome; use libsignal_net_infra::ws::{WebSocketError, WebSocketStreamLike}; -use libsignal_net_infra::TransportInfo; use pin_project::pin_project; use prost::Message as _; use tokio::sync::mpsc::WeakSender; -use tokio::sync::{mpsc, oneshot, Mutex as TokioMutex}; +use tokio::sync::{Mutex as TokioMutex, mpsc, oneshot}; use tokio::task::JoinHandle; use tokio::time::{Duration, Instant}; use tokio_stream::wrappers::{ReceiverStream, UnboundedReceiverStream}; @@ -38,8 +38,8 @@ use crate::chat::{ChatMessageType, MessageProto, Request, RequestProto, Response use crate::env::{ ALERT_HEADER_NAME, CONNECTED_ELSEWHERE_CLOSE_CODE, CONNECTION_INVALIDATED_CLOSE_CODE, }; -use crate::infra::ws::connection::{MessageEvent, NextEventError, TungsteniteSendError}; use crate::infra::ws::TextOrBinary; +use crate::infra::ws::connection::{MessageEvent, NextEventError, TungsteniteSendError}; /// Chat service avilable via a connected websocket. /// @@ -770,13 +770,13 @@ async fn send_request( return Err(SendError::Disconnected(DisconnectedReason::SocketClosed { #[cfg(test)] reason: "task was already signalled to end", - })) + })); } TaskState::Finished(Ok(_reason)) => { return Err(SendError::Disconnected(DisconnectedReason::SocketClosed { #[cfg(test)] reason: "task already ended gracefully", - })) + })); } TaskState::Finished(Err(err)) => return Err(SendError::from(&*err)), } @@ -1124,7 +1124,7 @@ impl> Conn match event { Outcome::Finished(Ok(finish)) => return Outcome::Finished(Ok(finish)), Outcome::Finished(Err(err)) => { - return Outcome::Finished(Err(TaskExitError::WebsocketError(err))) + return Outcome::Finished(Err(TaskExitError::WebsocketError(err))); } Outcome::Continue(MessageEvent::SentPing | MessageEvent::ReceivedPingPong) => {} Outcome::Continue(MessageEvent::SentMessage(OutgoingMeta::SentRequest( @@ -1210,7 +1210,7 @@ impl> Conn return Outcome::Continue(Some(IncomingEvent::ReceivedRequest { id, request: request_proto, - })) + })); } } } @@ -1253,7 +1253,7 @@ impl TryFrom for ChatMessage { fn try_from(message: TextOrBinary) -> Result { let data = match message { TextOrBinary::Text(text) => { - return Err(ChatProtocolError::ReceivedTextMessage { len: text.len() }) + return Err(ChatProtocolError::ReceivedTextMessage { len: text.len() }); } TextOrBinary::Binary(data) => data, }; @@ -1418,10 +1418,10 @@ impl From for crate::chat::SendError { NextEventError::UnexpectedConnectionClose => WebSocketError::ChannelClosed, NextEventError::AbnormalServerClose { code, reason: _ } => match code { CloseCode::Library(CONNECTION_INVALIDATED_CLOSE_CODE) => { - return Self::ConnectionInvalidated + return Self::ConnectionInvalidated; } CloseCode::Library(CONNECTED_ELSEWHERE_CLOSE_CODE) => { - return Self::ConnectedElsewhere + return Self::ConnectedElsewhere; } _ => WebSocketError::ChannelClosed, }, @@ -1545,9 +1545,9 @@ mod test { pub(super) fn new_chat_with_config( config: FakeConfig, get_current_interface: impl GetCurrentInterface - + Send - + Sync - + 'static, + + Send + + Sync + + 'static, listener: EventListener, ) -> (Chat, FakeTxRxChannels) { let FakeConfig { @@ -1637,7 +1637,7 @@ mod test { OutcomeOrPanic::IntentionalPanic(message) => { panic!("intentional panic: {message}") } - } + }; } } } diff --git a/rust/net/src/connect_state.rs b/rust/net/src/connect_state.rs index 59d2e4ca9..31ded56fe 100644 --- a/rust/net/src/connect_state.rs +++ b/rust/net/src/connect_state.rs @@ -28,12 +28,12 @@ use libsignal_net_infra::route::{ }; use libsignal_net_infra::tcp_ssl::{LONG_TCP_HANDSHAKE_THRESHOLD, LONG_TLS_HANDSHAKE_THRESHOLD}; use libsignal_net_infra::timeouts::{ - TimeoutOr, MIN_TLS_HANDSHAKE_TIMEOUT, NETWORK_INTERFACE_POLL_INTERVAL, - ONE_ROUTE_CONNECTION_TIMEOUT, POST_ROUTE_CHANGE_CONNECTION_TIMEOUT, + MIN_TLS_HANDSHAKE_TIMEOUT, NETWORK_INTERFACE_POLL_INTERVAL, ONE_ROUTE_CONNECTION_TIMEOUT, + POST_ROUTE_CHANGE_CONNECTION_TIMEOUT, TimeoutOr, }; use libsignal_net_infra::utils::NetworkChangeEvent; -use libsignal_net_infra::ws::attested::AttestedConnection; use libsignal_net_infra::ws::WebSocketConnectError; +use libsignal_net_infra::ws::attested::AttestedConnection; use libsignal_net_infra::{AsHttpHeader as _, AsyncDuplexStream}; use rand::distr::uniform::{UniformSampler, UniformUsize}; use rand_core::{OsRng, UnwrapErr}; @@ -80,10 +80,10 @@ pub trait WebSocketTransportConnectorFactory: impl WebSocketTransportConnectorFactory for F where F: ConnectorFactory< - Transport, - Connector: Sync + Connector>, - Connection: AsyncDuplexStream + 'static, - > + Transport, + Connector: Sync + Connector>, + Connection: AsyncDuplexStream + 'static, + > { } @@ -281,10 +281,10 @@ impl ConnectionResources<'_, TC> { // Note that we're not using WebSocketTransportConnectorFactory here to make `connect_ws` // easier to test; specifically, the output is not guaranteed to be an AsyncDuplexStream. TC: ConnectorFactory< - Transport, - Connection: Send, - Connector: Sync + Connector>, - >, + Transport, + Connection: Send, + Connector: Sync + Connector>, + >, WC: Connector< (WebSocketRouteFragment, HttpRouteFragment), TC::Connection, @@ -637,16 +637,16 @@ mod test { use assert_matches::assert_matches; use const_str::ip_addr; - use http::uri::PathAndQuery; use http::HeaderMap; + use http::uri::PathAndQuery; use libsignal_net_infra::certs::RootCertificates; use libsignal_net_infra::dns::lookup_result::LookupResult; use libsignal_net_infra::host::Host; use libsignal_net_infra::route::testutils::ConnectFn; use libsignal_net_infra::route::{ - AttemptOutcome, DirectOrProxyRoute, HttpsTlsRoute, TcpRoute, TlsRoute, TlsRouteFragment, - UnresolvedHost, UnresolvedTransportRoute, UnsuccessfulOutcome, WebSocketRoute, - HAPPY_EYEBALLS_DELAY, + AttemptOutcome, DirectOrProxyRoute, HAPPY_EYEBALLS_DELAY, HttpsTlsRoute, TcpRoute, + TlsRoute, TlsRouteFragment, UnresolvedHost, UnresolvedTransportRoute, UnsuccessfulOutcome, + WebSocketRoute, }; use libsignal_net_infra::utils::no_network_change_events; use libsignal_net_infra::{Alpn, RouteType}; diff --git a/rust/net/src/env.rs b/rust/net/src/env.rs index f654eab87..e1baa83ac 100644 --- a/rust/net/src/env.rs +++ b/rust/net/src/env.rs @@ -21,12 +21,12 @@ use libsignal_net_infra::route::{ HttpsProvider, TlsRouteProvider, }; use libsignal_net_infra::{ - AsStaticHttpHeader, ConnectionParams, EnableDomainFronting, EnforceMinimumTls, RouteType, - TransportConnectionParams, RECOMMENDED_WS_CONFIG, + AsStaticHttpHeader, ConnectionParams, EnableDomainFronting, EnforceMinimumTls, + RECOMMENDED_WS_CONFIG, RouteType, TransportConnectionParams, }; use nonzero_ext::nonzero; use rand::seq::SliceRandom; -use rand::{rng, Rng}; +use rand::{Rng, rng}; use crate::certs::{PROXY_G_ROOT_CERTIFICATES, SIGNAL_ROOT_CERTIFICATES}; use crate::chat::RECOMMENDED_CHAT_WS_CONFIG; @@ -730,6 +730,7 @@ mod test { use std::time::Duration; use itertools::Itertools as _; + use libsignal_net_infra::Alpn; use libsignal_net_infra::dns::build_custom_resolver_cloudflare_doh; use libsignal_net_infra::dns::dns_lookup::DnsLookupRequest; use libsignal_net_infra::route::testutils::FakeContext; @@ -738,7 +739,6 @@ mod test { UnresolvedHost, }; use libsignal_net_infra::utils::no_network_change_events; - use libsignal_net_infra::Alpn; use test_case::test_matrix; use super::*; diff --git a/rust/net/src/svrb.rs b/rust/net/src/svrb.rs index 09d3a0773..3d6280223 100644 --- a/rust/net/src/svrb.rs +++ b/rust/net/src/svrb.rs @@ -655,13 +655,15 @@ mod test { ) .await .expect("should store"); - assert!(restore_backup( - &[svrb], - &backup_key, - BackupFileMetadataRef(&backup.metadata.0) - ) - .await - .is_err()); + assert!( + restore_backup( + &[svrb], + &backup_key, + BackupFileMetadataRef(&backup.metadata.0) + ) + .await + .is_err() + ); } #[tokio::test] @@ -851,13 +853,15 @@ mod test { ) .await .expect("should store"); - assert!(restore_backup( - &[svrb, fallback], - &backup_key, - BackupFileMetadataRef(&backup.metadata.0), - ) - .await - .is_err()); + assert!( + restore_backup( + &[svrb, fallback], + &backup_key, + BackupFileMetadataRef(&backup.metadata.0), + ) + .await + .is_err() + ); } static BACKUP_DELETES_PREVIOUS_ALL_CALLED: AtomicU8 = AtomicU8::new(0); diff --git a/rust/net/src/svrb/direct.rs b/rust/net/src/svrb/direct.rs index 25fb0de8a..1c37a3675 100644 --- a/rust/net/src/svrb/direct.rs +++ b/rust/net/src/svrb/direct.rs @@ -4,10 +4,10 @@ // use http::HeaderName; +use libsignal_net_infra::EnableDomainFronting; use libsignal_net_infra::dns::DnsResolver; use libsignal_net_infra::route::DirectOrProxyProvider; use libsignal_net_infra::utils::NetworkChangeEvent; -use libsignal_net_infra::EnableDomainFronting; use crate::auth::Auth; use crate::connect_state::{ConnectState, ConnectionResources, SUGGESTED_CONNECT_CONFIG}; diff --git a/rust/net/src/svrb/ppss_ops.rs b/rust/net/src/svrb/ppss_ops.rs index 3f325980e..6bfaa5ad6 100644 --- a/rust/net/src/svrb/ppss_ops.rs +++ b/rust/net/src/svrb/ppss_ops.rs @@ -9,14 +9,14 @@ //! on the same set of open connections, as opposed to having to connect for //! each individual operation, as implied by `SvrBClient` trait. -use futures_util::future::join_all; use futures_util::TryFutureExt as _; -use libsignal_net_infra::ws::attested::AttestedConnectionError; +use futures_util::future::join_all; use libsignal_net_infra::ws::NextOrClose; +use libsignal_net_infra::ws::attested::AttestedConnectionError; pub(crate) use libsignal_svrb::{Backup4, Secret}; use libsignal_svrb::{Query4, Remove4, Restore1}; -use rand::rngs::OsRng; use rand::TryRngCore; +use rand::rngs::OsRng; use super::Error; use crate::enclave::{ diff --git a/rust/net/src/svrb/traits.rs b/rust/net/src/svrb/traits.rs index 0c4620b3e..5bd068f7c 100644 --- a/rust/net/src/svrb/traits.rs +++ b/rust/net/src/svrb/traits.rs @@ -9,7 +9,7 @@ use async_trait::async_trait; -use super::{ppss_ops, Backup4, Error, Secret}; +use super::{Backup4, Error, Secret, ppss_ops}; use crate::enclave::PpssSetup; pub trait Prepare { diff --git a/rust/net/tests/cdsi_connect.rs b/rust/net/tests/cdsi_connect.rs index df05fe2ab..de510e864 100644 --- a/rust/net/tests/cdsi_connect.rs +++ b/rust/net/tests/cdsi_connect.rs @@ -3,7 +3,7 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use base64::prelude::{Engine as _, BASE64_STANDARD}; +use base64::prelude::{BASE64_STANDARD, Engine as _}; use http::HeaderName; use libsignal_net::auth::Auth; use libsignal_net::cdsi::CdsiConnection; @@ -11,8 +11,8 @@ use libsignal_net::connect_state::{ConnectState, ConnectionResources, SUGGESTED_ use libsignal_net::env::STAGING; use libsignal_net::infra::dns::DnsResolver; use libsignal_net::infra::utils::no_network_change_events; -use libsignal_net_infra::route::DirectOrProxyProvider; use libsignal_net_infra::EnableDomainFronting; +use libsignal_net_infra::route::DirectOrProxyProvider; use rand_core::{OsRng, RngCore, TryRngCore as _}; #[tokio::test] diff --git a/rust/net/tests/chat_connect_timing.rs b/rust/net/tests/chat_connect_timing.rs index 5d7c0c15f..c1ff7c2dc 100644 --- a/rust/net/tests/chat_connect_timing.rs +++ b/rust/net/tests/chat_connect_timing.rs @@ -24,13 +24,13 @@ use tokio::time::{Duration, Instant}; mod fake_transport; use fake_transport::{ - allow_domain_fronting, connect_websockets_on_incoming, error_all_hosts_after, - only_direct_routes, FakeDeps, + FakeDeps, allow_domain_fronting, connect_websockets_on_incoming, error_all_hosts_after, + only_direct_routes, }; use crate::fake_transport::{ - allow_all_routes, Behavior, FakeTransportTarget, TransportConnectEvent, - TransportConnectEventStage, + Behavior, FakeTransportTarget, TransportConnectEvent, TransportConnectEventStage, + allow_all_routes, }; #[test_log::test(tokio::test(start_paused = true))] diff --git a/rust/net/tests/fake_transport/behavior.rs b/rust/net/tests/fake_transport/behavior.rs index b334ac697..229aba588 100644 --- a/rust/net/tests/fake_transport/behavior.rs +++ b/rust/net/tests/fake_transport/behavior.rs @@ -41,7 +41,7 @@ impl Behavior { } Behavior::Fail(make_error) => return Err(make_error()), Behavior::ReturnStream(stream) => { - return Ok(stream.unwrap_or(std::convert::identity)) + return Ok(stream.unwrap_or(std::convert::identity)); } Behavior::Unreachable => unreachable!("this test should not attempt to connect"), } diff --git a/rust/net/tests/fake_transport/connector.rs b/rust/net/tests/fake_transport/connector.rs index 61e54f338..d36dc4b31 100644 --- a/rust/net/tests/fake_transport/connector.rs +++ b/rust/net/tests/fake_transport/connector.rs @@ -11,11 +11,11 @@ use std::sync::{Arc, Mutex}; use futures_util::TryFutureExt as _; use libsignal_net::infra::errors::TransportConnectError; +use libsignal_net_infra::AsyncDuplexStream; use libsignal_net_infra::host::Host; use libsignal_net_infra::route::{ ConnectionProxyRoute, Connector, TcpRoute, TlsRouteFragment, TransportRoute, UsePreconnect, }; -use libsignal_net_infra::AsyncDuplexStream; use tokio::io::DuplexStream; use tokio::sync::mpsc::{UnboundedReceiver, UnboundedSender}; use tokio::time::Instant; diff --git a/rust/net/tests/fake_transport/mod.rs b/rust/net/tests/fake_transport/mod.rs index d74528ddc..ef9d2d065 100644 --- a/rust/net/tests/fake_transport/mod.rs +++ b/rust/net/tests/fake_transport/mod.rs @@ -8,8 +8,8 @@ use std::fmt::Display; use std::net::Ipv6Addr; use const_str::ip_addr; -use futures_util::stream::StreamExt as _; use futures_util::Stream; +use futures_util::stream::StreamExt as _; use itertools::Itertools as _; use libsignal_net::chat::{ self, ChatConnection, PendingChatConnection, RECOMMENDED_CHAT_WS_CONFIG, @@ -19,11 +19,11 @@ use libsignal_net::connect_state::{ SUGGESTED_CONNECT_CONFIG, }; use libsignal_net::env::{ConnectionConfig, DomainConfig, UserAgent}; -use libsignal_net::infra::dns::lookup_result::LookupResult; use libsignal_net::infra::dns::DnsResolver; +use libsignal_net::infra::dns::lookup_result::LookupResult; use libsignal_net::infra::errors::TransportConnectError; use libsignal_net::infra::host::Host; -use libsignal_net::infra::route::{ConnectorFactory, DirectOrProxyProvider, DEFAULT_HTTPS_PORT}; +use libsignal_net::infra::route::{ConnectorFactory, DEFAULT_HTTPS_PORT, DirectOrProxyProvider}; pub use libsignal_net::infra::testutil::fake_transport::FakeTransportTarget; use libsignal_net::infra::{AsyncDuplexStream, EnableDomainFronting}; use libsignal_net_infra::route::{Connector, TransportRoute, UsePreconnect}; diff --git a/rust/poksho/benches/sho.rs b/rust/poksho/benches/sho.rs index 0ef8b78eb..dd0c481b9 100644 --- a/rust/poksho/benches/sho.rs +++ b/rust/poksho/benches/sho.rs @@ -4,7 +4,7 @@ // use criterion::measurement::Measurement; -use criterion::{criterion_group, criterion_main, BenchmarkGroup, Criterion}; +use criterion::{BenchmarkGroup, Criterion, criterion_group, criterion_main}; use rand::rngs::OsRng; use rand::{RngCore, TryRngCore as _}; diff --git a/rust/poksho/src/statement.rs b/rust/poksho/src/statement.rs index cd7798e3d..90d74697b 100644 --- a/rust/poksho/src/statement.rs +++ b/rust/poksho/src/statement.rs @@ -5,10 +5,6 @@ use std::borrow::Cow; use std::collections::HashMap; -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 // @@ -90,6 +86,10 @@ use curve25519_dalek::traits::MultiscalarMul; // for index=0..total number of scalars: // RistrettoScalar use PokshoError::*; +use curve25519_dalek::constants::RISTRETTO_BASEPOINT_POINT; +use curve25519_dalek::ristretto::RistrettoPoint; +use curve25519_dalek::scalar::Scalar; +use curve25519_dalek::traits::MultiscalarMul; use crate::args::*; use crate::errors::*; diff --git a/rust/protocol/benches/kem.rs b/rust/protocol/benches/kem.rs index 5419e582f..256850a7c 100644 --- a/rust/protocol/benches/kem.rs +++ b/rust/protocol/benches/kem.rs @@ -4,10 +4,10 @@ // use std::hint::black_box; -use criterion::{criterion_group, criterion_main, Criterion}; +use criterion::{Criterion, criterion_group, criterion_main}; use libsignal_protocol::kem::{KeyPair, KeyType}; -use rand::rngs::OsRng; use rand::TryRngCore as _; +use rand::rngs::OsRng; fn bench_kem(c: &mut Criterion) { for key_type in [KeyType::Kyber768, KeyType::Kyber1024] { diff --git a/rust/protocol/benches/ratchet.rs b/rust/protocol/benches/ratchet.rs index 7aa26de96..a3678a8d4 100644 --- a/rust/protocol/benches/ratchet.rs +++ b/rust/protocol/benches/ratchet.rs @@ -3,7 +3,7 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use criterion::{criterion_group, criterion_main, Criterion, SamplingMode}; +use criterion::{Criterion, SamplingMode, criterion_group, criterion_main}; use futures_util::FutureExt; use libsignal_protocol::*; use rand::TryRngCore as _; diff --git a/rust/protocol/benches/sealed_sender.rs b/rust/protocol/benches/sealed_sender.rs index 039eb7be7..14e147ec4 100644 --- a/rust/protocol/benches/sealed_sender.rs +++ b/rust/protocol/benches/sealed_sender.rs @@ -6,7 +6,7 @@ use std::hint::black_box; use std::time::SystemTime; -use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion}; +use criterion::{BenchmarkId, Criterion, criterion_group, criterion_main}; use futures_util::FutureExt; use libsignal_protocol::*; use rand::rngs::OsRng; diff --git a/rust/protocol/benches/session.rs b/rust/protocol/benches/session.rs index 3b51663de..374ea142f 100644 --- a/rust/protocol/benches/session.rs +++ b/rust/protocol/benches/session.rs @@ -5,11 +5,11 @@ use std::time::SystemTime; -use criterion::{criterion_group, criterion_main, Criterion}; +use criterion::{Criterion, criterion_group, criterion_main}; use futures_util::FutureExt; use libsignal_protocol::*; -use rand::rngs::OsRng; use rand::TryRngCore as _; +use rand::rngs::OsRng; #[path = "../tests/support/mod.rs"] mod support; diff --git a/rust/protocol/cross-version-testing/.rustfmt.toml b/rust/protocol/cross-version-testing/.rustfmt.toml new file mode 120000 index 000000000..6725cc1f6 --- /dev/null +++ b/rust/protocol/cross-version-testing/.rustfmt.toml @@ -0,0 +1 @@ +../../../.rustfmt.toml \ No newline at end of file diff --git a/rust/protocol/cross-version-testing/src/current.rs b/rust/protocol/cross-version-testing/src/current.rs index acd316cb3..d190da9f0 100644 --- a/rust/protocol/cross-version-testing/src/current.rs +++ b/rust/protocol/cross-version-testing/src/current.rs @@ -7,7 +7,7 @@ use std::time::SystemTime; use futures_util::FutureExt; use libsignal_protocol_current::*; -use rand::{rng, Rng}; +use rand::{Rng, rng}; fn address(id: &str) -> ProtocolAddress { ProtocolAddress::new(id.into(), DeviceId::new(1).unwrap()) diff --git a/rust/protocol/cross-version-testing/src/v70.rs b/rust/protocol/cross-version-testing/src/v70.rs index 2833c30cd..621f584da 100644 --- a/rust/protocol/cross-version-testing/src/v70.rs +++ b/rust/protocol/cross-version-testing/src/v70.rs @@ -7,7 +7,7 @@ use std::time::SystemTime; use futures_util::FutureExt; use libsignal_protocol_v70::*; -use rand_v8::{thread_rng, Rng}; +use rand_v8::{Rng, thread_rng}; fn address(id: &str) -> ProtocolAddress { ProtocolAddress::new(id.into(), 1.into()) diff --git a/rust/protocol/src/crypto.rs b/rust/protocol/src/crypto.rs index f48de2cff..e61553e79 100644 --- a/rust/protocol/src/crypto.rs +++ b/rust/protocol/src/crypto.rs @@ -5,8 +5,8 @@ use std::result::Result; -use aes::cipher::{KeyIvInit, StreamCipher}; use aes::Aes256; +use aes::cipher::{KeyIvInit, StreamCipher}; use hmac::{Hmac, Mac}; use sha2::Sha256; use subtle::ConstantTimeEq; diff --git a/rust/protocol/src/fingerprint.rs b/rust/protocol/src/fingerprint.rs index eed19aea6..e8d8adb8f 100644 --- a/rust/protocol/src/fingerprint.rs +++ b/rust/protocol/src/fingerprint.rs @@ -7,11 +7,11 @@ use std::fmt; use std::fmt::Write; use prost::Message; -use sha2::digest::Digest; use sha2::Sha512; +use sha2::digest::Digest; use subtle::ConstantTimeEq; -use crate::{proto, IdentityKey}; +use crate::{IdentityKey, proto}; #[derive(Debug, displaydoc::Display)] pub enum Error { @@ -227,11 +227,11 @@ mod test { const DISPLAYABLE_FINGERPRINT_V1: &str = "300354477692869396892869876765458257569162576843440918079131"; - const ALICE_SCANNABLE_FINGERPRINT_V1 : &str = "080112220a201e301a0353dce3dbe7684cb8336e85136cdc0ee96219494ada305d62a7bd61df1a220a20d62cbf73a11592015b6b9f1682ac306fea3aaf3885b84d12bca631e9d4fb3a4d"; - const BOB_SCANNABLE_FINGERPRINT_V1 : &str = "080112220a20d62cbf73a11592015b6b9f1682ac306fea3aaf3885b84d12bca631e9d4fb3a4d1a220a201e301a0353dce3dbe7684cb8336e85136cdc0ee96219494ada305d62a7bd61df"; + const ALICE_SCANNABLE_FINGERPRINT_V1: &str = "080112220a201e301a0353dce3dbe7684cb8336e85136cdc0ee96219494ada305d62a7bd61df1a220a20d62cbf73a11592015b6b9f1682ac306fea3aaf3885b84d12bca631e9d4fb3a4d"; + const BOB_SCANNABLE_FINGERPRINT_V1: &str = "080112220a20d62cbf73a11592015b6b9f1682ac306fea3aaf3885b84d12bca631e9d4fb3a4d1a220a201e301a0353dce3dbe7684cb8336e85136cdc0ee96219494ada305d62a7bd61df"; - const ALICE_SCANNABLE_FINGERPRINT_V2 : &str = "080212220a201e301a0353dce3dbe7684cb8336e85136cdc0ee96219494ada305d62a7bd61df1a220a20d62cbf73a11592015b6b9f1682ac306fea3aaf3885b84d12bca631e9d4fb3a4d"; - const BOB_SCANNABLE_FINGERPRINT_V2 : & str = "080212220a20d62cbf73a11592015b6b9f1682ac306fea3aaf3885b84d12bca631e9d4fb3a4d1a220a201e301a0353dce3dbe7684cb8336e85136cdc0ee96219494ada305d62a7bd61df"; + const ALICE_SCANNABLE_FINGERPRINT_V2: &str = "080212220a201e301a0353dce3dbe7684cb8336e85136cdc0ee96219494ada305d62a7bd61df1a220a20d62cbf73a11592015b6b9f1682ac306fea3aaf3885b84d12bca631e9d4fb3a4d"; + const BOB_SCANNABLE_FINGERPRINT_V2: &str = "080212220a20d62cbf73a11592015b6b9f1682ac306fea3aaf3885b84d12bca631e9d4fb3a4d1a220a201e301a0353dce3dbe7684cb8336e85136cdc0ee96219494ada305d62a7bd61df"; const ALICE_STABLE_ID: &str = "+14152222222"; const BOB_STABLE_ID: &str = "+14153333333"; @@ -397,20 +397,28 @@ mod test { ); assert_eq!(format!("{}", a_fprint.display).len(), 60); - assert!(a_fprint - .scannable - .compare(&b_fprint.scannable.serialize()?)?); - assert!(b_fprint - .scannable - .compare(&a_fprint.scannable.serialize()?)?); + assert!( + a_fprint + .scannable + .compare(&b_fprint.scannable.serialize()?)? + ); + assert!( + b_fprint + .scannable + .compare(&a_fprint.scannable.serialize()?)? + ); // Java is missing this test - assert!(!a_fprint - .scannable - .compare(&a_fprint.scannable.serialize()?)?); - assert!(!b_fprint - .scannable - .compare(&b_fprint.scannable.serialize()?)?); + assert!( + !a_fprint + .scannable + .compare(&a_fprint.scannable.serialize()?)? + ); + assert!( + !b_fprint + .scannable + .compare(&b_fprint.scannable.serialize()?)? + ); Ok(()) } @@ -456,12 +464,16 @@ mod test { format!("{}", b_fprint.display) ); - assert!(!a_fprint - .scannable - .compare(&b_fprint.scannable.serialize()?)?); - assert!(!b_fprint - .scannable - .compare(&a_fprint.scannable.serialize()?)?); + assert!( + !a_fprint + .scannable + .compare(&b_fprint.scannable.serialize()?)? + ); + assert!( + !b_fprint + .scannable + .compare(&a_fprint.scannable.serialize()?)? + ); Ok(()) } @@ -505,12 +517,16 @@ mod test { format!("{}", b_fprint.display) ); - assert!(!a_fprint - .scannable - .compare(&b_fprint.scannable.serialize()?)?); - assert!(!b_fprint - .scannable - .compare(&a_fprint.scannable.serialize()?)?); + assert!( + !a_fprint + .scannable + .compare(&b_fprint.scannable.serialize()?)? + ); + assert!( + !b_fprint + .scannable + .compare(&a_fprint.scannable.serialize()?)? + ); Ok(()) } diff --git a/rust/protocol/src/group_cipher.rs b/rust/protocol/src/group_cipher.rs index 466f4b556..3d589d17a 100644 --- a/rust/protocol/src/group_cipher.rs +++ b/rust/protocol/src/group_cipher.rs @@ -9,8 +9,8 @@ use uuid::Uuid; use crate::protocol::SENDERKEY_MESSAGE_CURRENT_VERSION; use crate::sender_keys::{SenderKeyState, SenderMessageKey}; use crate::{ - consts, CiphertextMessageType, KeyPair, ProtocolAddress, Result, SenderKeyDistributionMessage, - SenderKeyMessage, SenderKeyRecord, SenderKeyStore, SignalProtocolError, + CiphertextMessageType, KeyPair, ProtocolAddress, Result, SenderKeyDistributionMessage, + SenderKeyMessage, SenderKeyRecord, SenderKeyStore, SignalProtocolError, consts, }; pub async fn group_encrypt( diff --git a/rust/protocol/src/identity_key.rs b/rust/protocol/src/identity_key.rs index 6a2f30a6a..8c1f678e5 100644 --- a/rust/protocol/src/identity_key.rs +++ b/rust/protocol/src/identity_key.rs @@ -10,7 +10,7 @@ use prost::Message; use rand::{CryptoRng, Rng}; -use crate::{proto, KeyPair, PrivateKey, PublicKey, Result, SignalProtocolError}; +use crate::{KeyPair, PrivateKey, PublicKey, Result, SignalProtocolError, proto}; // Used for domain separation between alternate-identity signatures and other key-to-key signatures. const ALTERNATE_IDENTITY_SIGNATURE_PREFIX_1: &[u8] = &[0xFF; 32]; @@ -187,8 +187,8 @@ impl From for KeyPair { #[cfg(test)] mod tests { - use rand::rngs::OsRng; use rand::TryRngCore as _; + use rand::rngs::OsRng; use super::*; @@ -228,28 +228,38 @@ mod tests { let secondary = IdentityKeyPair::generate(&mut rng); let signature = secondary.sign_alternate_identity(primary.identity_key(), &mut rng)?; - assert!(secondary - .identity_key() - .verify_alternate_identity(primary.identity_key(), &signature)?); + assert!( + secondary + .identity_key() + .verify_alternate_identity(primary.identity_key(), &signature)? + ); // Not symmetric. - assert!(!primary - .identity_key() - .verify_alternate_identity(secondary.identity_key(), &signature)?); + assert!( + !primary + .identity_key() + .verify_alternate_identity(secondary.identity_key(), &signature)? + ); let another_signature = secondary.sign_alternate_identity(primary.identity_key(), &mut rng)?; assert_ne!(signature, another_signature); - assert!(secondary - .identity_key() - .verify_alternate_identity(primary.identity_key(), &another_signature)?); + assert!( + secondary + .identity_key() + .verify_alternate_identity(primary.identity_key(), &another_signature)? + ); let unrelated = IdentityKeyPair::generate(&mut rng); - assert!(!secondary - .identity_key() - .verify_alternate_identity(unrelated.identity_key(), &signature)?); - assert!(!unrelated - .identity_key() - .verify_alternate_identity(primary.identity_key(), &signature)?); + assert!( + !secondary + .identity_key() + .verify_alternate_identity(unrelated.identity_key(), &signature)? + ); + assert!( + !unrelated + .identity_key() + .verify_alternate_identity(primary.identity_key(), &signature)? + ); Ok(()) } diff --git a/rust/protocol/src/incremental_mac.rs b/rust/protocol/src/incremental_mac.rs index fbcde7e99..e1afb05e0 100644 --- a/rust/protocol/src/incremental_mac.rs +++ b/rust/protocol/src/incremental_mac.rs @@ -4,8 +4,8 @@ // use aes::cipher::Unsigned; -use hmac::digest::generic_array::{ArrayLength, GenericArray}; use hmac::Mac; +use hmac::digest::generic_array::{ArrayLength, GenericArray}; use sha2::digest::{FixedOutput, MacError, Output}; #[derive(Clone)] @@ -141,8 +141,8 @@ mod test { use proptest::prelude::*; use rand::distr::uniform::{UniformSampler as _, UniformUsize}; use rand::prelude::{Rng, ThreadRng}; - use sha2::digest::OutputSizeUser; use sha2::Sha256; + use sha2::digest::OutputSizeUser; use super::*; use crate::crypto::hmac_sha256; diff --git a/rust/protocol/src/kem/kyber1024.rs b/rust/protocol/src/kem/kyber1024.rs index 01b482316..b4444c5f5 100644 --- a/rust/protocol/src/kem/kyber1024.rs +++ b/rust/protocol/src/kem/kyber1024.rs @@ -4,7 +4,7 @@ // use libcrux_ml_kem::mlkem1024::{MlKem1024Ciphertext, MlKem1024PrivateKey, MlKem1024PublicKey}; -use libcrux_ml_kem::{kyber1024, SHARED_SECRET_SIZE}; +use libcrux_ml_kem::{SHARED_SECRET_SIZE, kyber1024}; use rand::{CryptoRng, Rng as _}; use super::{ diff --git a/rust/protocol/src/kem/kyber768.rs b/rust/protocol/src/kem/kyber768.rs index 528df999a..445b37cfd 100644 --- a/rust/protocol/src/kem/kyber768.rs +++ b/rust/protocol/src/kem/kyber768.rs @@ -4,7 +4,7 @@ // use libcrux_ml_kem::mlkem768::{MlKem768Ciphertext, MlKem768PrivateKey, MlKem768PublicKey}; -use libcrux_ml_kem::{kyber768, MlKemCiphertext, SHARED_SECRET_SIZE}; +use libcrux_ml_kem::{MlKemCiphertext, SHARED_SECRET_SIZE, kyber768}; use rand::{CryptoRng, Rng as _}; use super::{ diff --git a/rust/protocol/src/kem/mlkem1024.rs b/rust/protocol/src/kem/mlkem1024.rs index e27d3995a..8797428f4 100644 --- a/rust/protocol/src/kem/mlkem1024.rs +++ b/rust/protocol/src/kem/mlkem1024.rs @@ -3,10 +3,10 @@ // SPDX-License-Identifier: AGPL-3.0-only // +use libcrux_ml_kem::SHARED_SECRET_SIZE; use libcrux_ml_kem::mlkem1024::{ self, MlKem1024Ciphertext, MlKem1024PrivateKey, MlKem1024PublicKey, }; -use libcrux_ml_kem::SHARED_SECRET_SIZE; use rand::Rng as _; use super::{ diff --git a/rust/protocol/src/lib.rs b/rust/protocol/src/lib.rs index 42a1fbeef..be5df0cd8 100644 --- a/rust/protocol/src/lib.rs +++ b/rust/protocol/src/lib.rs @@ -56,19 +56,19 @@ 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, - PreKeySignalMessage, SenderKeyDistributionMessage, SenderKeyMessage, SignalMessage, + CiphertextMessage, CiphertextMessageType, DecryptionErrorMessage, KyberPayload, + PlaintextContent, PreKeySignalMessage, SenderKeyDistributionMessage, SenderKeyMessage, + SignalMessage, extract_decryption_error_message_from_serialized_content, }; pub use ratchet::{ - initialize_alice_session_record, initialize_bob_session_record, AliceSignalProtocolParameters, - BobSignalProtocolParameters, UsePQRatchet, + AliceSignalProtocolParameters, BobSignalProtocolParameters, UsePQRatchet, + initialize_alice_session_record, initialize_bob_session_record, }; pub use sealed_sender::{ - sealed_sender_decrypt, sealed_sender_decrypt_to_usmc, sealed_sender_encrypt, - sealed_sender_encrypt_from_usmc, sealed_sender_multi_recipient_encrypt, ContentHint, - SealedSenderDecryptionResult, SealedSenderV2SentMessage, SealedSenderV2SentMessageRecipient, - SenderCertificate, ServerCertificate, UnidentifiedSenderMessageContent, + ContentHint, SealedSenderDecryptionResult, SealedSenderV2SentMessage, + SealedSenderV2SentMessageRecipient, SenderCertificate, ServerCertificate, + UnidentifiedSenderMessageContent, sealed_sender_decrypt, sealed_sender_decrypt_to_usmc, + sealed_sender_encrypt, sealed_sender_encrypt_from_usmc, sealed_sender_multi_recipient_encrypt, }; pub use sender_keys::SenderKeyRecord; pub use session::{process_prekey, process_prekey_bundle}; diff --git a/rust/protocol/src/protocol.rs b/rust/protocol/src/protocol.rs index 971b30e42..e4b96347a 100644 --- a/rust/protocol/src/protocol.rs +++ b/rust/protocol/src/protocol.rs @@ -12,7 +12,7 @@ use uuid::Uuid; use crate::state::{KyberPreKeyId, PreKeyId, SignedPreKeyId}; use crate::{ - kem, proto, IdentityKey, PrivateKey, PublicKey, Result, SignalProtocolError, Timestamp, + IdentityKey, PrivateKey, PublicKey, Result, SignalProtocolError, Timestamp, kem, proto, }; pub(crate) const CIPHERTEXT_MESSAGE_CURRENT_VERSION: u8 = 4; diff --git a/rust/protocol/src/ratchet.rs b/rust/protocol/src/ratchet.rs index 213446cfd..c642101e3 100644 --- a/rust/protocol/src/ratchet.rs +++ b/rust/protocol/src/ratchet.rs @@ -12,7 +12,7 @@ pub(crate) use self::keys::{ChainKey, MessageKeyGenerator, RootKey}; pub use self::params::{AliceSignalProtocolParameters, BobSignalProtocolParameters, UsePQRatchet}; use crate::protocol::CIPHERTEXT_MESSAGE_CURRENT_VERSION; use crate::state::SessionState; -use crate::{consts, KeyPair, Result, SessionRecord, SignalProtocolError}; +use crate::{KeyPair, Result, SessionRecord, SignalProtocolError, consts}; type InitialPQRKey = [u8; 32]; diff --git a/rust/protocol/src/ratchet/keys.rs b/rust/protocol/src/ratchet/keys.rs index 0b5e677fa..8d97160c2 100644 --- a/rust/protocol/src/ratchet/keys.rs +++ b/rust/protocol/src/ratchet/keys.rs @@ -8,7 +8,7 @@ use std::fmt; use zerocopy::{FromBytes, IntoBytes, KnownLayout}; use crate::proto::storage::session_structure; -use crate::{crypto, PrivateKey, PublicKey, Result}; +use crate::{PrivateKey, PublicKey, Result, crypto}; pub(crate) enum MessageKeyGenerator { Keys(MessageKeys), diff --git a/rust/protocol/src/ratchet/params.rs b/rust/protocol/src/ratchet/params.rs index f1de06c71..f19339b5a 100644 --- a/rust/protocol/src/ratchet/params.rs +++ b/rust/protocol/src/ratchet/params.rs @@ -3,7 +3,7 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use crate::{kem, IdentityKey, IdentityKeyPair, KeyPair, PublicKey}; +use crate::{IdentityKey, IdentityKeyPair, KeyPair, PublicKey, kem}; #[derive(Clone, Copy, PartialEq, Eq, Debug)] pub enum UsePQRatchet { diff --git a/rust/protocol/src/sealed_sender.rs b/rust/protocol/src/sealed_sender.rs index 99c75b75e..4434acdf2 100644 --- a/rust/protocol/src/sealed_sender.rs +++ b/rust/protocol/src/sealed_sender.rs @@ -17,11 +17,11 @@ use subtle::{Choice, ConstantTimeEq}; use zerocopy::{FromBytes, Immutable, KnownLayout}; use crate::{ - crypto, message_encrypt, proto, ratchet, 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, + Aci, CiphertextMessageType, DeviceId, Direction, IdentityKey, IdentityKeyPair, + IdentityKeyStore, KeyPair, KyberPreKeyStore, PreKeySignalMessage, PreKeyStore, PrivateKey, + ProtocolAddress, PublicKey, Result, ServiceId, ServiceIdFixedWidthBinaryBytes, SessionRecord, + SessionStore, SignalMessage, SignalProtocolError, SignedPreKeyStore, Timestamp, crypto, + message_encrypt, proto, ratchet, session_cipher, }; #[derive(Debug, Clone)] diff --git a/rust/protocol/src/sender_keys.rs b/rust/protocol/src/sender_keys.rs index 173e2798e..bfd5dd1a4 100644 --- a/rust/protocol/src/sender_keys.rs +++ b/rust/protocol/src/sender_keys.rs @@ -10,7 +10,7 @@ use prost::Message; use crate::crypto::hmac_sha256; use crate::proto::storage as storage_proto; -use crate::{consts, PrivateKey, PublicKey, SignalProtocolError}; +use crate::{PrivateKey, PublicKey, SignalProtocolError, consts}; /// A distinct error type to keep from accidentally propagating deserialization errors. #[derive(Debug)] @@ -366,8 +366,8 @@ impl SenderKeyRecord { #[cfg(test)] mod sender_key_record_add_sender_key_state_tests { use itertools::Itertools; - use rand::rngs::OsRng; use rand::TryRngCore as _; + use rand::rngs::OsRng; use super::*; use crate::KeyPair; diff --git a/rust/protocol/src/session.rs b/rust/protocol/src/session.rs index 380f1aad5..ac95674d5 100644 --- a/rust/protocol/src/session.rs +++ b/rust/protocol/src/session.rs @@ -11,9 +11,9 @@ use crate::protocol::CIPHERTEXT_MESSAGE_PRE_KYBER_VERSION; use crate::ratchet::{AliceSignalProtocolParameters, BobSignalProtocolParameters}; use crate::state::GenericSignedPreKey; use crate::{ - ratchet, CiphertextMessageType, Direction, IdentityKey, IdentityKeyStore, KeyPair, - KyberPreKeyId, KyberPreKeyStore, PreKeyBundle, PreKeyId, PreKeySignalMessage, PreKeyStore, - ProtocolAddress, Result, SessionRecord, SessionStore, SignalProtocolError, SignedPreKeyStore, + CiphertextMessageType, Direction, IdentityKey, IdentityKeyStore, KeyPair, KyberPreKeyId, + KyberPreKeyStore, PreKeyBundle, PreKeyId, PreKeySignalMessage, PreKeyStore, ProtocolAddress, + Result, SessionRecord, SessionStore, SignalProtocolError, SignedPreKeyStore, ratchet, }; #[derive(Default)] diff --git a/rust/protocol/src/session_cipher.rs b/rust/protocol/src/session_cipher.rs index 49c1e9ffd..6974abb5b 100644 --- a/rust/protocol/src/session_cipher.rs +++ b/rust/protocol/src/session_cipher.rs @@ -11,9 +11,9 @@ use crate::consts::{MAX_FORWARD_JUMPS, MAX_UNACKNOWLEDGED_SESSION_AGE}; use crate::ratchet::{ChainKey, MessageKeyGenerator, UsePQRatchet}; use crate::state::{InvalidSessionError, SessionState}; use crate::{ - session, CiphertextMessage, CiphertextMessageType, Direction, IdentityKeyStore, KeyPair, - KyberPayload, KyberPreKeyStore, PreKeySignalMessage, PreKeyStore, ProtocolAddress, PublicKey, - Result, SessionRecord, SessionStore, SignalMessage, SignalProtocolError, SignedPreKeyStore, + CiphertextMessage, CiphertextMessageType, Direction, IdentityKeyStore, KeyPair, KyberPayload, + KyberPreKeyStore, PreKeySignalMessage, PreKeyStore, ProtocolAddress, PublicKey, Result, + SessionRecord, SessionStore, SignalMessage, SignalProtocolError, SignedPreKeyStore, session, }; pub async fn message_encrypt( @@ -556,8 +556,9 @@ fn decrypt_message_with_record( log::error!( "No valid session for recipient: {}, current session base key {}, number of previous states: {}", remote_address, - current_state.sender_ratchet_key_for_logging() - .unwrap_or_else(|e| format!("")), + current_state + .sender_ratchet_key_for_logging() + .unwrap_or_else(|e| format!("")), previous_state_count(), ); } else { diff --git a/rust/protocol/src/state/bundle.rs b/rust/protocol/src/state/bundle.rs index c17484ec0..a7b727470 100644 --- a/rust/protocol/src/state/bundle.rs +++ b/rust/protocol/src/state/bundle.rs @@ -6,7 +6,7 @@ use std::clone::Clone; use crate::state::{PreKeyId, SignedPreKeyId}; -use crate::{kem, DeviceId, IdentityKey, KyberPreKeyId, PublicKey, Result, SignalProtocolError}; +use crate::{DeviceId, IdentityKey, KyberPreKeyId, PublicKey, Result, SignalProtocolError, kem}; #[derive(Clone)] struct SignedPreKey { diff --git a/rust/protocol/src/state/kyber_prekey.rs b/rust/protocol/src/state/kyber_prekey.rs index a5541b8a5..bd4ed3999 100644 --- a/rust/protocol/src/state/kyber_prekey.rs +++ b/rust/protocol/src/state/kyber_prekey.rs @@ -9,7 +9,7 @@ use rand::TryRngCore as _; use crate::proto::storage::SignedPreKeyRecordStructure; use crate::state::GenericSignedPreKey; -use crate::{kem, PrivateKey, Result, Timestamp}; +use crate::{PrivateKey, Result, Timestamp, kem}; /// A unique identifier selecting among this client's known signed pre-keys. #[derive( diff --git a/rust/protocol/src/state/session.rs b/rust/protocol/src/state/session.rs index c9b9d2fe3..c06f3bb3c 100644 --- a/rust/protocol/src/state/session.rs +++ b/rust/protocol/src/state/session.rs @@ -11,11 +11,11 @@ use prost::Message; use rand::{CryptoRng, Rng}; use subtle::ConstantTimeEq; -use crate::proto::storage::{session_structure, RecordStructure, SessionStructure}; +use crate::proto::storage::{RecordStructure, SessionStructure, session_structure}; use crate::protocol::CIPHERTEXT_MESSAGE_PRE_KYBER_VERSION; use crate::ratchet::{ChainKey, MessageKeyGenerator, RootKey}; use crate::state::{KyberPreKeyId, PreKeyId, SignedPreKeyId}; -use crate::{consts, kem, IdentityKey, KeyPair, PrivateKey, PublicKey, SignalProtocolError}; +use crate::{IdentityKey, KeyPair, PrivateKey, PublicKey, SignalProtocolError, consts, kem}; /// 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 87b9ca658..c62acb677 100644 --- a/rust/protocol/src/state/signed_prekey.rs +++ b/rust/protocol/src/state/signed_prekey.rs @@ -9,7 +9,7 @@ use std::fmt; use prost::Message; use crate::proto::storage::SignedPreKeyRecordStructure; -use crate::{kem, KeyPair, PrivateKey, PublicKey, Result, SignalProtocolError, Timestamp}; +use crate::{KeyPair, PrivateKey, PublicKey, Result, SignalProtocolError, Timestamp, kem}; /// A unique identifier selecting among this client's known signed pre-keys. #[derive( diff --git a/rust/protocol/tests/groups.rs b/rust/protocol/tests/groups.rs index 8ad7b11a0..2630c695c 100644 --- a/rust/protocol/tests/groups.rs +++ b/rust/protocol/tests/groups.rs @@ -24,16 +24,18 @@ fn group_no_send_session() -> Result<(), SignalProtocolError> { let mut alice_store = test_in_memory_protocol_store()?; - assert!(group_encrypt( - &mut alice_store, - &sender_address, - distribution_id, - "space camp?".as_bytes(), - &mut csprng, - ) - .now_or_never() - .expect("sync") - .is_err()); + assert!( + group_encrypt( + &mut alice_store, + &sender_address, + distribution_id, + "space camp?".as_bytes(), + &mut csprng, + ) + .now_or_never() + .expect("sync") + .is_err() + ); Ok(()) } @@ -1204,13 +1206,15 @@ fn group_too_far_in_the_future() -> Result<(), SignalProtocolError> { ) .await?; - assert!(group_decrypt( - alice_ciphertext.serialized(), - &mut bob_store, - &sender_address, - ) - .await - .is_err()); + assert!( + group_decrypt( + alice_ciphertext.serialized(), + &mut bob_store, + &sender_address, + ) + .await + .is_err() + ); Ok(()) } diff --git a/rust/protocol/tests/sealed_sender.rs b/rust/protocol/tests/sealed_sender.rs index fc6dc2a63..9f3976d4a 100644 --- a/rust/protocol/tests/sealed_sender.rs +++ b/rust/protocol/tests/sealed_sender.rs @@ -8,8 +8,8 @@ use std::time::SystemTime; use futures_util::FutureExt; use libsignal_protocol::*; -use rand::rngs::OsRng; use rand::TryRngCore as _; +use rand::rngs::OsRng; use support::*; use uuid::Uuid; @@ -674,8 +674,8 @@ fn test_sealed_sender_multi_recipient() -> Result<(), SignalProtocolError> { } #[test] -fn test_sealed_sender_multi_recipient_encrypt_with_archived_session( -) -> Result<(), SignalProtocolError> { +fn test_sealed_sender_multi_recipient_encrypt_with_archived_session() +-> Result<(), SignalProtocolError> { async { let mut rng = OsRng.unwrap_err(); @@ -780,8 +780,8 @@ fn test_sealed_sender_multi_recipient_encrypt_with_archived_session( } #[test] -fn test_sealed_sender_multi_recipient_encrypt_with_bad_registration_id( -) -> Result<(), SignalProtocolError> { +fn test_sealed_sender_multi_recipient_encrypt_with_bad_registration_id() +-> Result<(), SignalProtocolError> { async { let mut rng = OsRng.unwrap_err(); diff --git a/rust/protocol/tests/session.rs b/rust/protocol/tests/session.rs index 2df648751..b901919af 100644 --- a/rust/protocol/tests/session.rs +++ b/rust/protocol/tests/session.rs @@ -148,19 +148,23 @@ fn test_basic_prekey() -> TestResult { let bobs_response = "Who watches the watchers?"; - assert!(bob_store_builder - .store - .load_session(&alice_address) - .await? - .is_some()); + assert!( + bob_store_builder + .store + .load_session(&alice_address) + .await? + .is_some() + ); let bobs_session_with_alice = bob_store_builder .store .load_session(&alice_address) .await? .expect("session found"); - assert!(bobs_session_with_alice - .has_usable_sender_chain(SystemTime::now(), established_session_requirements) - .expect("can check usability")); + assert!( + bobs_session_with_alice + .has_usable_sender_chain(SystemTime::now(), established_session_requirements) + .expect("can check usability") + ); assert_eq!( bobs_session_with_alice.session_version()?, expected_session_version @@ -179,12 +183,14 @@ fn test_basic_prekey() -> TestResult { String::from_utf8(alice_decrypts).expect("valid utf8"), bobs_response ); - assert!(alice_store - .load_session(&bob_address) - .await? - .expect("session found") - .has_usable_sender_chain(SystemTime::now(), established_session_requirements) - .expect("can check usability")); + assert!( + alice_store + .load_session(&bob_address) + .await? + .expect("session found") + .has_usable_sender_chain(SystemTime::now(), established_session_requirements) + .expect("can check usability") + ); run_interaction( alice_store, @@ -261,17 +267,19 @@ fn test_basic_prekey() -> TestResult { }) .expect("can reconstruct the bundle"); - assert!(process_prekey_bundle( - &bob_address, - &mut alter_alice_store.session_store, - &mut alter_alice_store.identity_store, - &bad_bob_pre_key_bundle, - SystemTime::now(), - &mut csprng, - UsePQRatchet::Yes, - ) - .await - .is_err()); + assert!( + process_prekey_bundle( + &bob_address, + &mut alter_alice_store.session_store, + &mut alter_alice_store.identity_store, + &bad_bob_pre_key_bundle, + SystemTime::now(), + &mut csprng, + UsePQRatchet::Yes, + ) + .await + .is_err() + ); Ok(()) } @@ -329,14 +337,16 @@ fn test_chain_jump_over_limit() -> TestResult { let too_far = encrypt(alice_store, &bob_address, "Now you have gone too far").await?; - assert!(decrypt( - &mut bob_store_builder.store, - &alice_address, - &too_far, - UsePQRatchet::Yes - ) - .await - .is_err()); + assert!( + decrypt( + &mut bob_store_builder.store, + &alice_address, + &too_far, + UsePQRatchet::Yes + ) + .await + .is_err() + ); Ok(()) } .now_or_never() @@ -447,17 +457,19 @@ fn test_bad_signed_pre_key_signature() -> TestResult { .modify(|content| content.signed_pre_key_signature = Some(bad_signature)) .expect("can recreate the bundle"); - assert!(process_prekey_bundle( - &bob_address, - &mut alice_store.session_store, - &mut alice_store.identity_store, - &bad_bundle, - SystemTime::now(), - &mut csprng, - UsePQRatchet::Yes, - ) - .await - .is_err()); + assert!( + process_prekey_bundle( + &bob_address, + &mut alice_store.session_store, + &mut alice_store.identity_store, + &bad_bundle, + SystemTime::now(), + &mut csprng, + UsePQRatchet::Yes, + ) + .await + .is_err() + ); } // Finally check that the non-corrupted signature is accepted: @@ -678,14 +690,16 @@ fn test_bad_message_bundle() -> TestResult { PreKeySignalMessage::try_from(corrupted_message.as_slice())?, ); - assert!(decrypt( - bob_store, - &alice_address, - &incoming_message, - UsePQRatchet::Yes - ) - .await - .is_err()); + assert!( + decrypt( + bob_store, + &alice_address, + &incoming_message, + UsePQRatchet::Yes + ) + .await + .is_err() + ); assert!(bob_store.get_pre_key(pre_key_id).await.is_ok()); let incoming_message = CiphertextMessage::PreKeySignalMessage( @@ -2124,24 +2138,30 @@ fn test_unacknowledged_sessions_eventually_expire() -> TestResult { .await .expect("session can be loaded") .expect("session exists"); - assert!(initial_session - .has_usable_sender_chain( - SystemTime::UNIX_EPOCH, - SessionUsabilityRequirements::NotStale - ) - .expect("can check for a sender chain")); - assert!(!initial_session - .has_usable_sender_chain( - SystemTime::UNIX_EPOCH + WELL_PAST_EXPIRATION, - SessionUsabilityRequirements::NotStale - ) - .expect("can check for a sender chain")); - assert!(initial_session - .has_usable_sender_chain( - SystemTime::UNIX_EPOCH + WELL_PAST_EXPIRATION, - SessionUsabilityRequirements::empty() - ) - .expect("respects usability requirements")); + assert!( + initial_session + .has_usable_sender_chain( + SystemTime::UNIX_EPOCH, + SessionUsabilityRequirements::NotStale + ) + .expect("can check for a sender chain") + ); + assert!( + !initial_session + .has_usable_sender_chain( + SystemTime::UNIX_EPOCH + WELL_PAST_EXPIRATION, + SessionUsabilityRequirements::NotStale + ) + .expect("can check for a sender chain") + ); + assert!( + initial_session + .has_usable_sender_chain( + SystemTime::UNIX_EPOCH + WELL_PAST_EXPIRATION, + SessionUsabilityRequirements::empty() + ) + .expect("respects usability requirements") + ); let original_message = "L'homme est condamné à être libre"; let outgoing_message = message_encrypt( @@ -2165,18 +2185,22 @@ fn test_unacknowledged_sessions_eventually_expire() -> TestResult { .await .expect("session can be loaded") .expect("session exists"); - assert!(updated_session - .has_usable_sender_chain( - SystemTime::UNIX_EPOCH, - SessionUsabilityRequirements::NotStale - ) - .expect("can check for a sender chain")); - assert!(!updated_session - .has_usable_sender_chain( - SystemTime::UNIX_EPOCH + WELL_PAST_EXPIRATION, - SessionUsabilityRequirements::NotStale - ) - .expect("can check for a sender chain")); + assert!( + updated_session + .has_usable_sender_chain( + SystemTime::UNIX_EPOCH, + SessionUsabilityRequirements::NotStale + ) + .expect("can check for a sender chain") + ); + assert!( + !updated_session + .has_usable_sender_chain( + SystemTime::UNIX_EPOCH + WELL_PAST_EXPIRATION, + SessionUsabilityRequirements::NotStale + ) + .expect("can check for a sender chain") + ); let error = message_encrypt( original_message.as_bytes(), @@ -2292,12 +2316,14 @@ fn prekey_message_failed_decryption_does_not_update_stores() -> TestResult { None ); - assert!(alice_store - .session_store - .load_session(&bob_address) - .await - .expect("can load") - .is_none()); + assert!( + alice_store + .session_store + .load_session(&bob_address) + .await + .expect("can load") + .is_none() + ); Ok(()) } @@ -2306,8 +2332,8 @@ fn prekey_message_failed_decryption_does_not_update_stores() -> TestResult { } #[test] -fn prekey_message_failed_decryption_does_not_update_stores_even_when_previously_archived( -) -> TestResult { +fn prekey_message_failed_decryption_does_not_update_stores_even_when_previously_archived() +-> TestResult { async { let mut csprng = OsRng.unwrap_err(); let alice_address = @@ -2356,15 +2382,19 @@ fn prekey_message_failed_decryption_does_not_update_stores_even_when_previously_ .await .expect("can load") .expect("has session record"); - assert!(alice_session_with_bob - .has_usable_sender_chain(SystemTime::now(), SessionUsabilityRequirements::all()) - .expect("can ask about sender chains")); + assert!( + alice_session_with_bob + .has_usable_sender_chain(SystemTime::now(), SessionUsabilityRequirements::all()) + .expect("can ask about sender chains") + ); alice_session_with_bob .archive_current_state() .expect("can archive"); - assert!(!alice_session_with_bob - .has_usable_sender_chain(SystemTime::now(), SessionUsabilityRequirements::empty()) - .expect("can ask about sender chains")); + assert!( + !alice_session_with_bob + .has_usable_sender_chain(SystemTime::now(), SessionUsabilityRequirements::empty()) + .expect("can ask about sender chains") + ); alice_store .store_session(&bob_address, &alice_session_with_bob) .await @@ -2429,9 +2459,11 @@ fn prekey_message_failed_decryption_does_not_update_stores_even_when_previously_ .expect("can load") .expect("has session record"); - assert!(!alice_current_session_with_bob - .has_usable_sender_chain(SystemTime::now(), SessionUsabilityRequirements::empty()) - .expect("can ask about sender chains")); + assert!( + !alice_current_session_with_bob + .has_usable_sender_chain(SystemTime::now(), SessionUsabilityRequirements::empty()) + .expect("can ask about sender chains") + ); assert_eq!( &alice_session_with_bob.serialize().expect("can serialize"), &alice_current_session_with_bob @@ -3277,23 +3309,27 @@ fn test_pqr_state_empty_if_disabled() -> TestResult { let msg = encrypt(bob_store, &alice_address, "msg2").await?; decrypt(alice_store, &bob_address, &msg, alice_pqr).await?; - assert!(alice_store - .session_store - .load_existing_sessions(&[&bob_address])? - .first() - .expect("should have Bob's address") - .current_pq_state() - .expect("should have Bob's PQ state") - .is_empty()); + assert!( + alice_store + .session_store + .load_existing_sessions(&[&bob_address])? + .first() + .expect("should have Bob's address") + .current_pq_state() + .expect("should have Bob's PQ state") + .is_empty() + ); - assert!(bob_store - .session_store - .load_existing_sessions(&[&alice_address])? - .first() - .expect("should have Alice's address") - .current_pq_state() - .expect("should have Alice's PQ state") - .is_empty()); + assert!( + bob_store + .session_store + .load_existing_sessions(&[&alice_address])? + .first() + .expect("should have Alice's address") + .current_pq_state() + .expect("should have Alice's PQ state") + .is_empty() + ); Ok(()) } @@ -3504,12 +3540,14 @@ fn x3dh_established_session_is_or_is_not_usable() { .await .expect("can load") .expect("has session"); - assert!(bob_session_with_alice - .has_usable_sender_chain( - SystemTime::now(), - SessionUsabilityRequirements::EstablishedWithPqxdh - ) - .expect("can check usability")); + assert!( + bob_session_with_alice + .has_usable_sender_chain( + SystemTime::now(), + SessionUsabilityRequirements::EstablishedWithPqxdh + ) + .expect("can check usability") + ); let mut serialized_session = bob_session_with_alice.serialize().expect("can serialize"); let session_version: u8 = bob_session_with_alice @@ -3540,15 +3578,19 @@ fn x3dh_established_session_is_or_is_not_usable() { .expect("can get session version"), PRE_KYBER_MESSAGE_VERSION ); - assert!(reconstituted_session - .has_usable_sender_chain(SystemTime::now(), SessionUsabilityRequirements::empty()) - .expect("can check usability")); - assert!(!reconstituted_session - .has_usable_sender_chain( - SystemTime::now(), - SessionUsabilityRequirements::EstablishedWithPqxdh - ) - .expect("can check usability")); + assert!( + reconstituted_session + .has_usable_sender_chain(SystemTime::now(), SessionUsabilityRequirements::empty()) + .expect("can check usability") + ); + assert!( + !reconstituted_session + .has_usable_sender_chain( + SystemTime::now(), + SessionUsabilityRequirements::EstablishedWithPqxdh + ) + .expect("can check usability") + ); } .now_or_never() .expect("sync") diff --git a/rust/svrb/src/lib.rs b/rust/svrb/src/lib.rs index b85cdfb4f..b61ffea89 100644 --- a/rust/svrb/src/lib.rs +++ b/rust/svrb/src/lib.rs @@ -533,8 +533,8 @@ mod test { use curve25519_dalek::scalar::Scalar; use nonzero_ext::nonzero; use proptest::proptest; - use rand::rngs::OsRng; use rand::TryRngCore; + use rand::rngs::OsRng; use super::*; diff --git a/rust/usernames/benches/usernames_benchmarks.rs b/rust/usernames/benches/usernames_benchmarks.rs index d46377b1a..aed8a09a1 100644 --- a/rust/usernames/benches/usernames_benchmarks.rs +++ b/rust/usernames/benches/usernames_benchmarks.rs @@ -2,9 +2,9 @@ // Copyright 2023 Signal Messenger, LLC. // SPDX-License-Identifier: AGPL-3.0-only // -use criterion::{criterion_group, criterion_main, Criterion}; -use rand::rngs::OsRng; +use criterion::{Criterion, criterion_group, criterion_main}; use rand::TryRngCore as _; +use rand::rngs::OsRng; extern crate usernames; use usernames::{NicknameLimits, Username, UsernameError}; diff --git a/rust/usernames/src/username_links.rs b/rust/usernames/src/username_links.rs index a38a0bf34..d583ba888 100644 --- a/rust/usernames/src/username_links.rs +++ b/rust/usernames/src/username_links.rs @@ -14,7 +14,7 @@ use crate::constants::{ USERNAME_LINK_KEY_SIZE, USERNAME_LINK_LABEL_AUTHENTICATION_KEY, USERNAME_LINK_LABEL_ENCRYPTION_KEY, }; -use crate::{proto, UsernameLinkError}; +use crate::{UsernameLinkError, proto}; /// Generates the encrypted buffer used for a username link, decryptable by [`decrypt_username`]. /// @@ -106,8 +106,8 @@ fn random_bytes(rng: &mut R) -> [u8; SIZE #[cfg(test)] mod test { - use rand::rngs::OsRng; use rand::TryRngCore as _; + use rand::rngs::OsRng; use super::*; use crate::constants::{DISCRIMINATOR_RANGES, MAX_NICKNAME_LENGTH}; diff --git a/rust/zkcredential/benches/endorsements.rs b/rust/zkcredential/benches/endorsements.rs index 22238afb9..a74aa43e3 100644 --- a/rust/zkcredential/benches/endorsements.rs +++ b/rust/zkcredential/benches/endorsements.rs @@ -3,12 +3,12 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use criterion::{criterion_group, criterion_main, BatchSize, BenchmarkId, Criterion}; +use criterion::{BatchSize, BenchmarkId, Criterion, criterion_group, criterion_main}; use curve25519_dalek::RistrettoPoint; use poksho::ShoApi; +use zkcredential::RANDOMNESS_LEN; use zkcredential::endorsements::*; use zkcredential::sho::ShoExt; -use zkcredential::RANDOMNESS_LEN; fn endorsement_flow(c: &mut Criterion) { let mut group = c.benchmark_group("endorsements"); diff --git a/rust/zkcredential/benches/zkcredential_benchmarks.rs b/rust/zkcredential/benches/zkcredential_benchmarks.rs index b789a2f49..488466aa6 100644 --- a/rust/zkcredential/benches/zkcredential_benchmarks.rs +++ b/rust/zkcredential/benches/zkcredential_benchmarks.rs @@ -5,9 +5,9 @@ use std::sync::OnceLock; -use criterion::{criterion_group, criterion_main, Criterion}; +use criterion::{Criterion, criterion_group, criterion_main}; use poksho::ShoApi; -use zkcredential::attributes::{derive_default_generator_points, Domain, KeyPair}; +use zkcredential::attributes::{Domain, KeyPair, derive_default_generator_points}; struct ExampleDomain; impl Domain for ExampleDomain { diff --git a/rust/zkcredential/src/attributes.rs b/rust/zkcredential/src/attributes.rs index 1f9926940..e9d6d77ee 100644 --- a/rust/zkcredential/src/attributes.rs +++ b/rust/zkcredential/src/attributes.rs @@ -26,8 +26,8 @@ use poksho::ShoApi; use serde::{Deserialize, Serialize}; use subtle::ConstantTimeEq; -use crate::sho::ShoExt; use crate::VerificationFailure; +use crate::sho::ShoExt; /// An attribute that doesn't need to be hidden from the issuing server or verifying server. /// diff --git a/rust/zkcredential/src/credentials.rs b/rust/zkcredential/src/credentials.rs index 928be01ab..a906f6d64 100644 --- a/rust/zkcredential/src/credentials.rs +++ b/rust/zkcredential/src/credentials.rs @@ -13,8 +13,8 @@ use partial_default::PartialDefault; use poksho::{ShoApi, ShoHmacSha256, ShoSha256}; use serde::{Deserialize, Serialize}; -use crate::sho::ShoExt; use crate::RANDOMNESS_LEN; +use crate::sho::ShoExt; /// A credential created by the issuing server over a set of attributes. /// @@ -238,7 +238,9 @@ mod tests { use super::*; impl SystemParams { - const SYSTEM_HARDCODED: &'static [u8] = &hex!("589c8718e8263a53a78932b6212a46e7fd52de3ad157b5bb277dba494cfd3471d4cc5f90685952917b33366efcce0512a1f8d70f974758266cb04fc424346d37b20f49cb2a081c94b1771fd8c172ae21785c61ea2c7e31947ce351e7b5ff07028c5329beb87b317ffcd981e440819d91136c988d6d9fbea4a87e55ed24a5993aa02f688ab1d3bd19056f94c8a44b8faddfa3c9c79c95ad44311a7bf00e5e862ec2c399f0d689dfb8c2dc0d7caba32afcf58cf0d85f78195a0b5ab732f565595492cfd982321d1f9be4b21fe6a0214306023d6a05d0d23f67ddc1c0400e5e0a5e92d17595131b7a095e740b884b8c9bb0226a39cfd027c769c4f4677c51f21b24da81fb2bd1356a9d0650f6a63fcc90d93bd74a954ba6f75f0e9fca47a6d21734bce7b28f06b76ef2c44d20a07026534e586eb8e1038874a93e44de362ce7bc0844bffc88e390c62519e281aa6fd53ff9ddd1d9ba303cf70004278ea2ae66ce05a2749d29eba56f3efe99e42902825c473dfc3c154c3762d2e76bd103f629d250b2d9d5c243a4cf8f3be21a84f153f44e2733a105cf780a20f03d84fe1ebbeb0e"); + const SYSTEM_HARDCODED: &'static [u8] = &hex!( + "589c8718e8263a53a78932b6212a46e7fd52de3ad157b5bb277dba494cfd3471d4cc5f90685952917b33366efcce0512a1f8d70f974758266cb04fc424346d37b20f49cb2a081c94b1771fd8c172ae21785c61ea2c7e31947ce351e7b5ff07028c5329beb87b317ffcd981e440819d91136c988d6d9fbea4a87e55ed24a5993aa02f688ab1d3bd19056f94c8a44b8faddfa3c9c79c95ad44311a7bf00e5e862ec2c399f0d689dfb8c2dc0d7caba32afcf58cf0d85f78195a0b5ab732f565595492cfd982321d1f9be4b21fe6a0214306023d6a05d0d23f67ddc1c0400e5e0a5e92d17595131b7a095e740b884b8c9bb0226a39cfd027c769c4f4677c51f21b24da81fb2bd1356a9d0650f6a63fcc90d93bd74a954ba6f75f0e9fca47a6d21734bce7b28f06b76ef2c44d20a07026534e586eb8e1038874a93e44de362ce7bc0844bffc88e390c62519e281aa6fd53ff9ddd1d9ba303cf70004278ea2ae66ce05a2749d29eba56f3efe99e42902825c473dfc3c154c3762d2e76bd103f629d250b2d9d5c243a4cf8f3be21a84f153f44e2733a105cf780a20f03d84fe1ebbeb0e" + ); } #[test] diff --git a/rust/zkcredential/src/endorsements.rs b/rust/zkcredential/src/endorsements.rs index 60324b0b2..c0713073d 100644 --- a/rust/zkcredential/src/endorsements.rs +++ b/rust/zkcredential/src/endorsements.rs @@ -67,7 +67,7 @@ use sha2::Digest; use subtle::ConstantTimeEq; use crate::sho::ShoExt; -use crate::{VerificationFailure, RANDOMNESS_LEN}; +use crate::{RANDOMNESS_LEN, VerificationFailure}; /// A server's secret key for issuing and verifying endorsements. /// diff --git a/rust/zkcredential/src/issuance.rs b/rust/zkcredential/src/issuance.rs index 4ac2f4302..2b661cc06 100644 --- a/rust/zkcredential/src/issuance.rs +++ b/rust/zkcredential/src/issuance.rs @@ -24,10 +24,10 @@ use serde::{Deserialize, Serialize}; use crate::attributes::{Attribute, PublicAttribute}; use crate::credentials::{ - Credential, CredentialKeyPair, CredentialPublicKey, SystemParams, NUM_SUPPORTED_ATTRS, + Credential, CredentialKeyPair, CredentialPublicKey, NUM_SUPPORTED_ATTRS, SystemParams, }; use crate::sho::ShoExt; -use crate::{VerificationFailure, RANDOMNESS_LEN}; +use crate::{RANDOMNESS_LEN, VerificationFailure}; /// Contains a [`Credential`] along with a proof of its validity. /// diff --git a/rust/zkcredential/src/issuance/blind.rs b/rust/zkcredential/src/issuance/blind.rs index e066b9a0e..8af1bf666 100644 --- a/rust/zkcredential/src/issuance/blind.rs +++ b/rust/zkcredential/src/issuance/blind.rs @@ -65,7 +65,7 @@ use crate::credentials::{Credential, CredentialKeyPair, CredentialPublicKey, NUM use crate::issuance::IssuanceProof; use crate::issuance::IssuanceProofBuilder; use crate::sho::ShoExt; -use crate::{VerificationFailure, RANDOMNESS_LEN}; +use crate::{RANDOMNESS_LEN, VerificationFailure}; /// Marker trait used by [`BlindedPoint`] and [`BlindedAttribute`]. /// diff --git a/rust/zkcredential/src/presentation.rs b/rust/zkcredential/src/presentation.rs index 5bc005427..4fdd6ef28 100644 --- a/rust/zkcredential/src/presentation.rs +++ b/rust/zkcredential/src/presentation.rs @@ -22,9 +22,9 @@ //! Credential presentation is defined in Chase-Perrin-Zaverucha section 3.2; proofs for verifiable //! encryption are defined in section 4.1. +use curve25519_dalek::Scalar; use curve25519_dalek::ristretto::RistrettoPoint; use curve25519_dalek::traits::Identity; -use curve25519_dalek::Scalar; use partial_default::PartialDefault; use poksho::shoapi::ShoApiExt as _; use poksho::{ShoApi, ShoHmacSha256}; @@ -32,11 +32,11 @@ use serde::{Deserialize, Serialize}; use crate::attributes::{self, Attribute, PublicAttribute, RevealedAttribute}; use crate::credentials::{ - Credential, CredentialKeyPair, CredentialPrivateKey, CredentialPublicKey, SystemParams, - NUM_SUPPORTED_ATTRS, + Credential, CredentialKeyPair, CredentialPrivateKey, CredentialPublicKey, NUM_SUPPORTED_ATTRS, + SystemParams, }; use crate::sho::ShoExt; -use crate::{VerificationFailure, RANDOMNESS_LEN}; +use crate::{RANDOMNESS_LEN, VerificationFailure}; #[derive(Serialize, Deserialize, PartialDefault)] struct PresentationProofCommitments { diff --git a/rust/zkgroup/benches/serialization.rs b/rust/zkgroup/benches/serialization.rs index 3829aeec4..458a4a87c 100644 --- a/rust/zkgroup/benches/serialization.rs +++ b/rust/zkgroup/benches/serialization.rs @@ -3,7 +3,7 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use criterion::{criterion_group, criterion_main, Criterion}; +use criterion::{Criterion, criterion_group, criterion_main}; fn bench_server_param_serialization(c: &mut Criterion) { let server_secret_params = zkgroup::ServerSecretParams::generate(zkgroup::TEST_ARRAY_32); diff --git a/rust/zkgroup/benches/zkgroup_benchmarks.rs b/rust/zkgroup/benches/zkgroup_benchmarks.rs index 2aa278bd4..35c01a948 100644 --- a/rust/zkgroup/benches/zkgroup_benchmarks.rs +++ b/rust/zkgroup/benches/zkgroup_benchmarks.rs @@ -3,10 +3,10 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion}; +use criterion::{BenchmarkId, Criterion, criterion_group, criterion_main}; use rayon::iter::{IntoParallelRefIterator, ParallelIterator as _}; -use zkgroup::auth::AuthCredentialWithPniZkcResponse; use zkgroup::SECONDS_PER_DAY; +use zkgroup::auth::AuthCredentialWithPniZkcResponse; fn benchmark_integration_auth(c: &mut Criterion) { let server_secret_params = zkgroup::ServerSecretParams::generate(zkgroup::TEST_ARRAY_32); diff --git a/rust/zkgroup/src/api/backups/auth_credential.rs b/rust/zkgroup/src/api/backups/auth_credential.rs index d365efe27..bdd421651 100644 --- a/rust/zkgroup/src/api/backups/auth_credential.rs +++ b/rust/zkgroup/src/api/backups/auth_credential.rs @@ -24,7 +24,7 @@ use crate::common::serialization::ReservedByte; use crate::common::sho::Sho; use crate::common::simple_types::*; use crate::generic_server_params::{GenericServerPublicParams, GenericServerSecretParams}; -use crate::{ZkGroupDeserializationFailure, ZkGroupVerificationFailure, SECONDS_PER_DAY}; +use crate::{SECONDS_PER_DAY, ZkGroupDeserializationFailure, ZkGroupVerificationFailure}; #[derive(Serialize, Deserialize, Clone, Copy)] struct BackupIdPoint(RistrettoPoint); @@ -324,7 +324,7 @@ mod tests { use assert_matches::assert_matches; use super::*; - use crate::{common, RandomnessBytes, Timestamp, RANDOMNESS_LEN, SECONDS_PER_DAY}; + use crate::{RANDOMNESS_LEN, RandomnessBytes, SECONDS_PER_DAY, Timestamp, common}; const DAY_ALIGNED_TIMESTAMP: Timestamp = Timestamp::from_epoch_seconds(1681344000); // 2023-04-13 00:00:00 UTC const KEY: libsignal_account_keys::BackupKey = libsignal_account_keys::BackupKey([0x42u8; 32]); diff --git a/rust/zkgroup/src/api/call_links/auth_credential.rs b/rust/zkgroup/src/api/call_links/auth_credential.rs index aa755d467..b13c3ef47 100644 --- a/rust/zkgroup/src/api/call_links/auth_credential.rs +++ b/rust/zkgroup/src/api/call_links/auth_credential.rs @@ -13,13 +13,13 @@ use partial_default::PartialDefault; use serde::{Deserialize, Serialize}; use super::{CallLinkPublicParams, CallLinkSecretParams}; +use crate::ZkGroupVerificationFailure; use crate::common::serialization::ReservedByte; use crate::common::simple_types::*; use crate::crypto::uid_encryption; use crate::crypto::uid_struct::UidStruct; use crate::generic_server_params::{GenericServerPublicParams, GenericServerSecretParams}; use crate::groups::UuidCiphertext; -use crate::ZkGroupVerificationFailure; const CREDENTIAL_LABEL: &[u8] = b"20230421_Signal_CallLinkAuthCredential"; diff --git a/rust/zkgroup/src/api/call_links/create_credential.rs b/rust/zkgroup/src/api/call_links/create_credential.rs index a94e1e7db..c4d61a2af 100644 --- a/rust/zkgroup/src/api/call_links/create_credential.rs +++ b/rust/zkgroup/src/api/call_links/create_credential.rs @@ -16,6 +16,7 @@ use poksho::ShoApi; use serde::{Deserialize, Serialize}; use super::{CallLinkPublicParams, CallLinkSecretParams}; +use crate::ZkGroupVerificationFailure; use crate::common::serialization::ReservedByte; use crate::common::sho::Sho; use crate::common::simple_types::*; @@ -23,7 +24,6 @@ use crate::crypto::uid_encryption; use crate::crypto::uid_struct::UidStruct; use crate::generic_server_params::{GenericServerPublicParams, GenericServerSecretParams}; use crate::groups::UuidCiphertext; -use crate::ZkGroupVerificationFailure; #[derive(Serialize, Deserialize, Clone, Copy)] struct CallLinkRoomIdPoint(RistrettoPoint); diff --git a/rust/zkgroup/src/api/generic_server_params.rs b/rust/zkgroup/src/api/generic_server_params.rs index e0c537234..e53b87e52 100644 --- a/rust/zkgroup/src/api/generic_server_params.rs +++ b/rust/zkgroup/src/api/generic_server_params.rs @@ -6,8 +6,8 @@ use partial_default::PartialDefault; use serde::{Deserialize, Serialize}; -use crate::common::serialization::ReservedByte; use crate::RandomnessBytes; +use crate::common::serialization::ReservedByte; #[derive(Serialize, Deserialize, PartialDefault)] pub struct GenericServerSecretParams { diff --git a/rust/zkgroup/src/api/groups/group_params.rs b/rust/zkgroup/src/api/groups/group_params.rs index 81eba4fb0..4199225f1 100644 --- a/rust/zkgroup/src/api/groups/group_params.rs +++ b/rust/zkgroup/src/api/groups/group_params.rs @@ -3,8 +3,8 @@ // 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::aead::generic_array::GenericArray; use aes_gcm_siv::{Aes256GcmSiv, KeyInit}; use partial_default::PartialDefault; use serde::{Deserialize, Serialize}; diff --git a/rust/zkgroup/src/api/groups/group_send_endorsement.rs b/rust/zkgroup/src/api/groups/group_send_endorsement.rs index dbf63e339..3849f4fac 100644 --- a/rust/zkgroup/src/api/groups/group_send_endorsement.rs +++ b/rust/zkgroup/src/api/groups/group_send_endorsement.rs @@ -25,8 +25,8 @@ use crate::common::serialization::ReservedByte; use crate::crypto::uid_encryption; use crate::groups::{GroupSecretParams, UuidCiphertext}; use crate::{ - crypto, RandomnessBytes, Timestamp, ZkGroupDeserializationFailure, ZkGroupVerificationFailure, - SECONDS_PER_DAY, + RandomnessBytes, SECONDS_PER_DAY, Timestamp, ZkGroupDeserializationFailure, + ZkGroupVerificationFailure, crypto, }; const SECONDS_PER_HOUR: u64 = 60 * 60; @@ -246,9 +246,9 @@ impl GroupSendEndorsementsResponse { ) -> Result, ZkGroupVerificationFailure> where T: rayon::iter::IntoParallelIterator< - Item = libsignal_core::ServiceId, - Iter: rayon::iter::IndexedParallelIterator, - >, + Item = libsignal_core::ServiceId, + Iter: rayon::iter::IndexedParallelIterator, + >, { let derived_key = self.derive_public_signing_key_from_expiration(now, root_public_key)?; diff --git a/rust/zkgroup/src/api/profiles/profile_key_version.rs b/rust/zkgroup/src/api/profiles/profile_key_version.rs index ec5941334..94648bc98 100644 --- a/rust/zkgroup/src/api/profiles/profile_key_version.rs +++ b/rust/zkgroup/src/api/profiles/profile_key_version.rs @@ -10,7 +10,7 @@ use super::ProfileKey; use crate::common::sho::Sho; use crate::common::simple_types::*; use crate::{ - api, PROFILE_KEY_LEN, PROFILE_KEY_VERSION_ENCODED_LEN, PROFILE_KEY_VERSION_LEN, UUID_LEN, + PROFILE_KEY_LEN, PROFILE_KEY_VERSION_ENCODED_LEN, PROFILE_KEY_VERSION_LEN, UUID_LEN, api, }; /// An identifier for a particular (profile key, ACI) combination. diff --git a/rust/zkgroup/src/api/receipts/receipt_credential_presentation.rs b/rust/zkgroup/src/api/receipts/receipt_credential_presentation.rs index 20f1cc797..b4c1d9a62 100644 --- a/rust/zkgroup/src/api/receipts/receipt_credential_presentation.rs +++ b/rust/zkgroup/src/api/receipts/receipt_credential_presentation.rs @@ -8,7 +8,7 @@ use serde::{Deserialize, Serialize}; use crate::common::serialization::ReservedByte; use crate::crypto::receipt_struct::ReceiptStruct; -use crate::{crypto, ReceiptLevel, ReceiptSerialBytes, Timestamp}; +use crate::{ReceiptLevel, ReceiptSerialBytes, Timestamp, crypto}; // Note that this type appears in gift badge messages, and thus in backups. // Therefore it must be possible to at least deserialize any past versions of it, diff --git a/rust/zkgroup/src/bin/generate_generic_server_params.rs b/rust/zkgroup/src/bin/generate_generic_server_params.rs index 2f084638b..af7ddd21d 100644 --- a/rust/zkgroup/src/bin/generate_generic_server_params.rs +++ b/rust/zkgroup/src/bin/generate_generic_server_params.rs @@ -6,10 +6,10 @@ //! Generates a new GenericServerSecretParams and encodes it using base64 and //! [`bincode::serialize`]. -use base64::prelude::{Engine, BASE64_STANDARD}; +use base64::prelude::{BASE64_STANDARD, Engine}; use rand::Rng; -use zkgroup::generic_server_params::GenericServerSecretParams; use zkgroup::RANDOMNESS_LEN; +use zkgroup::generic_server_params::GenericServerSecretParams; fn main() { let mut rng = rand::rng(); diff --git a/rust/zkgroup/src/bin/generate_server_params.rs b/rust/zkgroup/src/bin/generate_server_params.rs index 675f87a5e..bf9b723d1 100644 --- a/rust/zkgroup/src/bin/generate_server_params.rs +++ b/rust/zkgroup/src/bin/generate_server_params.rs @@ -5,9 +5,9 @@ use std::io::Read; -use base64::prelude::{Engine, BASE64_STANDARD}; +use base64::prelude::{BASE64_STANDARD, Engine}; use rand::Rng; -use zkgroup::{ServerSecretParams, RANDOMNESS_LEN}; +use zkgroup::{RANDOMNESS_LEN, ServerSecretParams}; fn main() { let mut old_secret_base64 = String::new(); diff --git a/rust/zkgroup/src/common/sho.rs b/rust/zkgroup/src/common/sho.rs index 8fe0b9a2d..dce14140e 100644 --- a/rust/zkgroup/src/common/sho.rs +++ b/rust/zkgroup/src/common/sho.rs @@ -5,8 +5,8 @@ use curve25519_dalek_signal::ristretto::RistrettoPoint; use curve25519_dalek_signal::scalar::Scalar; -use poksho::shoapi::ShoApiExt as _; use poksho::ShoApi; +use poksho::shoapi::ShoApiExt as _; pub struct Sho { internal_sho: poksho::ShoHmacSha256, diff --git a/rust/zkgroup/src/crypto/credentials.rs b/rust/zkgroup/src/crypto/credentials.rs index e644ef72c..b3c7c37b3 100644 --- a/rust/zkgroup/src/crypto/credentials.rs +++ b/rust/zkgroup/src/crypto/credentials.rs @@ -282,7 +282,9 @@ impl SystemParams { *SYSTEM_PARAMS } - const SYSTEM_HARDCODED: &'static [u8] = &hex!("9ae7c8e5ed779b114ae7708aa2f794670adda324987b659913122c35505b105e6ca31025d2d76be7fd34944f98f7fa0e37babb2c8b98bbbdbd3dd1bf130cca2c8a9a3bdfaaa2b6b322d46b93eca7b0d51c86a3c839e11466358258a6c10c577fc2bffd34cd99164c9a6cd29fab55d91ff9269322ec3458603cc96a0d47f704058288f62ee0acedb8aa23242121d98965a9bb2991250c11758095ece0fd2b33285286fe1fcb056103b6081744b975f550d08521568dd3d8618f25c140375a0f4024c3aa23bdfffb27fbd982208d3ecd1fd3bcb7ac0c3a14b109804fc748d7fa456cffb4934f980b6e09a248a60f44a6150ae6c13d7e3c06261d7e4eed37f39f60b04dd9d607fd357012274d3c63dbb38e7378599c9e97dfbb28842694891d5f0ddc729919b798b4131503408cc57a9c532f4427632c88f54cea53861a5bc44c61cc6037dc31c2e8d4474fb519587a448693182ad9d6d86b535957858f547b9340127da75f8074caee944ac36c0ac662d38c9b3ccce03a093fcd9644047398b86b6e83372ff14fb8bb0dea65531252ac70d58a4a0810d682a0e709c9227b30ef6c8e17c5915d527221bb00da8175cd6489aa8aa492a500f9abee5690b9dfca8855dc0bd02a7f277add240f639ac16801e81574afb4683edff63b9a01e93dbd867a04b616c706c80c756c11a3016bbfb60977f4648b5f2395a4b428b7211940813e3afde2b87aa9c2c37bf716e2578f95656df12c2fb6f5d0631f6f71e2c3193f6d"); + const SYSTEM_HARDCODED: &'static [u8] = &hex!( + "9ae7c8e5ed779b114ae7708aa2f794670adda324987b659913122c35505b105e6ca31025d2d76be7fd34944f98f7fa0e37babb2c8b98bbbdbd3dd1bf130cca2c8a9a3bdfaaa2b6b322d46b93eca7b0d51c86a3c839e11466358258a6c10c577fc2bffd34cd99164c9a6cd29fab55d91ff9269322ec3458603cc96a0d47f704058288f62ee0acedb8aa23242121d98965a9bb2991250c11758095ece0fd2b33285286fe1fcb056103b6081744b975f550d08521568dd3d8618f25c140375a0f4024c3aa23bdfffb27fbd982208d3ecd1fd3bcb7ac0c3a14b109804fc748d7fa456cffb4934f980b6e09a248a60f44a6150ae6c13d7e3c06261d7e4eed37f39f60b04dd9d607fd357012274d3c63dbb38e7378599c9e97dfbb28842694891d5f0ddc729919b798b4131503408cc57a9c532f4427632c88f54cea53861a5bc44c61cc6037dc31c2e8d4474fb519587a448693182ad9d6d86b535957858f547b9340127da75f8074caee944ac36c0ac662d38c9b3ccce03a093fcd9644047398b86b6e83372ff14fb8bb0dea65531252ac70d58a4a0810d682a0e709c9227b30ef6c8e17c5915d527221bb00da8175cd6489aa8aa492a500f9abee5690b9dfca8855dc0bd02a7f277add240f639ac16801e81574afb4683edff63b9a01e93dbd867a04b616c706c80c756c11a3016bbfb60977f4648b5f2395a4b428b7211940813e3afde2b87aa9c2c37bf716e2578f95656df12c2fb6f5d0631f6f71e2c3193f6d" + ); } impl KeyPair { diff --git a/rust/zkgroup/src/crypto/receipt_credential_request.rs b/rust/zkgroup/src/crypto/receipt_credential_request.rs index d1c46b792..b56e25284 100644 --- a/rust/zkgroup/src/crypto/receipt_credential_request.rs +++ b/rust/zkgroup/src/crypto/receipt_credential_request.rs @@ -11,10 +11,10 @@ use curve25519_dalek_signal::scalar::Scalar; use partial_default::PartialDefault; use serde::{Deserialize, Serialize}; +use crate::ReceiptSerialBytes; use crate::common::sho::Sho; use crate::crypto::credentials; use crate::crypto::credentials::{BlindedReceiptCredential, ReceiptCredential}; -use crate::ReceiptSerialBytes; #[derive(Copy, Clone, PartialEq, Eq, Serialize, Deserialize, PartialDefault)] pub struct KeyPair { diff --git a/rust/zkgroup/src/crypto/zkcredential_examples.rs b/rust/zkgroup/src/crypto/zkcredential_examples.rs index 35607500c..51a137848 100644 --- a/rust/zkgroup/src/crypto/zkcredential_examples.rs +++ b/rust/zkgroup/src/crypto/zkcredential_examples.rs @@ -13,10 +13,10 @@ use poksho::{ShoApi, ShoSha256}; use serde::{Deserialize, Serialize}; use zkcredential::attributes::{Attribute, Domain, RevealedAttribute}; use zkcredential::credentials::CredentialKeyPair; +use zkcredential::issuance::IssuanceProofBuilder; use zkcredential::issuance::blind::{ BlindedAttribute, BlindedPoint, BlindingKeyPair, BlindingPublicKey, WithoutNonce, }; -use zkcredential::issuance::IssuanceProofBuilder; use zkcredential::presentation::{ PresentationProof, PresentationProofBuilder, PresentationProofVerifier, }; diff --git a/rust/zkgroup/tests/backup_auth_flow.rs b/rust/zkgroup/tests/backup_auth_flow.rs index dd2f18a68..a234d189f 100644 --- a/rust/zkgroup/tests/backup_auth_flow.rs +++ b/rust/zkgroup/tests/backup_auth_flow.rs @@ -3,7 +3,7 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use zkgroup::{RandomnessBytes, Timestamp, RANDOMNESS_LEN}; +use zkgroup::{RANDOMNESS_LEN, RandomnessBytes, Timestamp}; const DAY_ALIGNED_TIMESTAMP: Timestamp = Timestamp::from_epoch_seconds(1681344000); // 2023-04-13 00:00:00 UTC diff --git a/rust/zkgroup/tests/call_link_flow.rs b/rust/zkgroup/tests/call_link_flow.rs index e87307046..b5f1c03fb 100644 --- a/rust/zkgroup/tests/call_link_flow.rs +++ b/rust/zkgroup/tests/call_link_flow.rs @@ -4,7 +4,7 @@ // use zkgroup::call_links::CallLinkAuthCredentialResponse; -use zkgroup::{RandomnessBytes, Timestamp, RANDOMNESS_LEN, SECONDS_PER_DAY, UUID_LEN}; +use zkgroup::{RANDOMNESS_LEN, RandomnessBytes, SECONDS_PER_DAY, Timestamp, UUID_LEN}; const DAY_ALIGNED_TIMESTAMP: Timestamp = Timestamp::from_epoch_seconds(1681344000); // 2023-04-13 00:00:00 UTC diff --git a/rust/zkgroup/tests/group_send_endorsements.rs b/rust/zkgroup/tests/group_send_endorsements.rs index 79a78ef3b..fcbc0b834 100644 --- a/rust/zkgroup/tests/group_send_endorsements.rs +++ b/rust/zkgroup/tests/group_send_endorsements.rs @@ -3,7 +3,7 @@ // SPDX-License-Identifier: AGPL-3.0-only // -use zkgroup::{RandomnessBytes, Timestamp, RANDOMNESS_LEN, SECONDS_PER_DAY, UUID_LEN}; +use zkgroup::{RANDOMNESS_LEN, RandomnessBytes, SECONDS_PER_DAY, Timestamp, UUID_LEN}; const DAY_ALIGNED_TIMESTAMP: Timestamp = Timestamp::from_epoch_seconds(1681344000); // 2023-04-13 00:00:00 UTC diff --git a/rust/zkgroup/tests/integration_tests.rs b/rust/zkgroup/tests/integration_tests.rs index d67ed8b01..166375f64 100644 --- a/rust/zkgroup/tests/integration_tests.rs +++ b/rust/zkgroup/tests/integration_tests.rs @@ -6,7 +6,7 @@ use const_str::hex; use curve25519_dalek_signal::ristretto::RistrettoPoint; use sha2::Sha256; -use zkgroup::{Timestamp, SECONDS_PER_DAY}; +use zkgroup::{SECONDS_PER_DAY, Timestamp}; /// Simple wrapper around `assert_eq` that prints the hex-encoded values on /// failure. @@ -31,15 +31,26 @@ fn test_lizard() { assert_hex_eq!(data_out.unwrap(), zkgroup::common::constants::TEST_ARRAY_16); } -const AUTH_CREDENTIAL_PRESENTATION_V1:&[u8] = &hex!( "000cde979737ed30bbeb16362e4e076945ce02069f727b0ed4c3c33c011e82546e1cdf081fbdf37c03a851ad060bdcbf6378cb4cb16dc3154d08de5439b5323203729d1841b517033af2fd177d30491c138ae723655734f6e5cc01c00696f4e92096d8c33df26ba2a820d42e9735d30f8eeef96d399079073c099f7035523bfe716638659319d3c36ad34c00ef8850f663c4d93030235074312a8878b6a5c5df4fbc7d32935278bfa5996b44ab75d6f06f4c30b98640ad5de74742656c8977567de000000000000000fde69f82ad2dcb4909650ac6b2573841af568fef822b32b45f625a764691a704d11b6f385261468117ead57fa623338e21c66ed846ab65809fcac158066d8e0e444077b99540d886e7dc09555dd6faea2cd3697f1e089f82d54e5d0fe4a185008b5cbc3979391ad71686bc03be7b00ea7e42c08d9f1d75c3a56c27ae2467b80636c0b5343eda7cd578ba88ddb7a0766568477fed63cf531862122c6c15b4a707973d41782cfc0ef4fe6c3115988a2e339015938d2df0a5d30237a2592cc10c05a9e4ef6b695bca99736b1a49ea39606a381ecfb05efe60d28b54823ec5a3680c765de9df4cfa5487f360e29e99343e91811baec331c4680985e608ca5d408e21725c6aa1b61d5a8b48d75f4aaa9a3cbe88d3e0f1a54319081f77c72c8f52547440e20100"); +const AUTH_CREDENTIAL_PRESENTATION_V1: &[u8] = &hex!( + "000cde979737ed30bbeb16362e4e076945ce02069f727b0ed4c3c33c011e82546e1cdf081fbdf37c03a851ad060bdcbf6378cb4cb16dc3154d08de5439b5323203729d1841b517033af2fd177d30491c138ae723655734f6e5cc01c00696f4e92096d8c33df26ba2a820d42e9735d30f8eeef96d399079073c099f7035523bfe716638659319d3c36ad34c00ef8850f663c4d93030235074312a8878b6a5c5df4fbc7d32935278bfa5996b44ab75d6f06f4c30b98640ad5de74742656c8977567de000000000000000fde69f82ad2dcb4909650ac6b2573841af568fef822b32b45f625a764691a704d11b6f385261468117ead57fa623338e21c66ed846ab65809fcac158066d8e0e444077b99540d886e7dc09555dd6faea2cd3697f1e089f82d54e5d0fe4a185008b5cbc3979391ad71686bc03be7b00ea7e42c08d9f1d75c3a56c27ae2467b80636c0b5343eda7cd578ba88ddb7a0766568477fed63cf531862122c6c15b4a707973d41782cfc0ef4fe6c3115988a2e339015938d2df0a5d30237a2592cc10c05a9e4ef6b695bca99736b1a49ea39606a381ecfb05efe60d28b54823ec5a3680c765de9df4cfa5487f360e29e99343e91811baec331c4680985e608ca5d408e21725c6aa1b61d5a8b48d75f4aaa9a3cbe88d3e0f1a54319081f77c72c8f52547440e20100" +); -const AUTH_CREDENTIAL_PRESENTATION_V4_RESULT: &[u8] = &hex!("035e3e79afda8dc0d489fcf7c78f71e1502f2e06e8aeb20149046f85b3004d3f7f982d57dfad49cd1e6c335755cef4cc5e8d3de1eb4f5e8f24d71cf9f2220ae750f47181d71aaabbd48a1916813ec08eea935eb013395bf72f9139da8ef4f9530d05000000000000007a080544e6ee8ee2ff0dc298f18841103a9f9ec38631df8682e241755f86f74e26301872f4f32a9bb80f5b17651c0c83253a8013532384061a1febf79e58e60fa215b31da678305fa2a271655e35824630d0804680ec0bf29b1c775652683c3a5cec537c3514df730f267371d909f29cc6252af30afe3ea846c0cf56478bdc5b7a7f983ea7c24ecef4b371286a6414b2c38a57a7f59a9df33e430736c1a2ca14e00000000000000015416082ff7e3a741a4c3c31be3c95d4a31f2cf742685e0b17cd7f7205230e0e4e67b4b6ed45e705de13a1cb7170897bb32c9db6f9a1108fddfc7fae9eb2ca0c5fc3d8ccbd79d992eeed333626a1f0c37f0b25625955611e5ba33c782c50550045923582280cd93c3e9555b4e36eec20993f60b6aeb9ddb7f2856c4659546f037b33534a0292c77a501a70796f24ff37c8311bdfea8bb6c78f909563fe6e3b0386f36adc92090694ebb106a837bac046ad26e2472ee16408e9fd84269fd78c00c5dde91fcf202a6afad3441b9e2a34f4831d5bf560c81b38d951cb7c88e4d701765de9df4cfa5487f360e29e99343e91811baec331c4680985e608ca5d408e21725c6aa1b61d5a8b48d75f4aaa9a3cbe88d3e0f1a54319081f77c72c8f525474de749a0fef17b06bbce74ca5d0f7a0c45f443a1901f1e3e016d3548e50a2fa19ce6b27ac467ed9c9f5018b2a4456b6c2b1a91454422fdd473c9636a8459e1c170060c77b02000000"); +const AUTH_CREDENTIAL_PRESENTATION_V4_RESULT: &[u8] = &hex!( + "035e3e79afda8dc0d489fcf7c78f71e1502f2e06e8aeb20149046f85b3004d3f7f982d57dfad49cd1e6c335755cef4cc5e8d3de1eb4f5e8f24d71cf9f2220ae750f47181d71aaabbd48a1916813ec08eea935eb013395bf72f9139da8ef4f9530d05000000000000007a080544e6ee8ee2ff0dc298f18841103a9f9ec38631df8682e241755f86f74e26301872f4f32a9bb80f5b17651c0c83253a8013532384061a1febf79e58e60fa215b31da678305fa2a271655e35824630d0804680ec0bf29b1c775652683c3a5cec537c3514df730f267371d909f29cc6252af30afe3ea846c0cf56478bdc5b7a7f983ea7c24ecef4b371286a6414b2c38a57a7f59a9df33e430736c1a2ca14e00000000000000015416082ff7e3a741a4c3c31be3c95d4a31f2cf742685e0b17cd7f7205230e0e4e67b4b6ed45e705de13a1cb7170897bb32c9db6f9a1108fddfc7fae9eb2ca0c5fc3d8ccbd79d992eeed333626a1f0c37f0b25625955611e5ba33c782c50550045923582280cd93c3e9555b4e36eec20993f60b6aeb9ddb7f2856c4659546f037b33534a0292c77a501a70796f24ff37c8311bdfea8bb6c78f909563fe6e3b0386f36adc92090694ebb106a837bac046ad26e2472ee16408e9fd84269fd78c00c5dde91fcf202a6afad3441b9e2a34f4831d5bf560c81b38d951cb7c88e4d701765de9df4cfa5487f360e29e99343e91811baec331c4680985e608ca5d408e21725c6aa1b61d5a8b48d75f4aaa9a3cbe88d3e0f1a54319081f77c72c8f525474de749a0fef17b06bbce74ca5d0f7a0c45f443a1901f1e3e016d3548e50a2fa19ce6b27ac467ed9c9f5018b2a4456b6c2b1a91454422fdd473c9636a8459e1c170060c77b02000000" +); -const PROFILE_KEY_CREDENTIAL_PRESENTATION_V1: &[u8] = &hex!("00c4d19bca1ae844585168869da4133e0e0bb59f2ce17b7ac65bff5da9610eca103429d8022a94bae2b5b1057b5595b8ad70bfc2d0e1ad662cb75e6bae0782be6f00e3db793bc28561f0196c2e74da6f303fa8bcb70c94096671b73f7b3a95fb002200d5b9180fa0ef7d3014d01344145b4d38480d72ff25c24294e305e5705072e0d32cc4e84f5caf31486089a4b934c80c92eba43472ff23a5af93c397535d33801f0e6fc6eb2ee0d117f03bb4fd38a8b9c88d94708131f38742ca804a3cfc4f9476bc2d03f53d17001c36478afbe9cc535a224b2df6b2b08bef06cbc7d4dc42ccfc3459f7ac5c4419ae9f3c8a161d554d047778943216240858da3b1101984c40010000000000007a01eea6b2adad14d71ab8b8e411bef3c596e954b70e4031570cb1abd7e932083241f1caca3116708fa4319fbbdfe351376c23644ae09a42f0155db4996c9d0c7ffc8521c1914c0e1a20ae51e65df64dd5e6e5985b3d9d31732046d2d77f9c08aaccf056b84026073976eec6164cbdaee5d9e76e497f0c290af681cabd5c5101282abb26c3680d6087ce053310fe8a94f59d8ae23caac5fc0ed0c379888abf028a6f29f89d4fe2acc1706341b2245ba1885bca57e1e27ccf7ed79371500965009f960c2ba00fad3e93383b87ce119cac0b3360eb99284ce78e2cbed680f7960373e0ab75c190254160c2353614109489e653c9b2e1c93f92c7c5ad583d987a04bd3541b24485c33ea49bac43c87c4ab3efde2e2d7ec10a40be544199f925b20b2c55542bc56410571e41cd8e0286f609a66768b5061ccb4777af32309928dd09765de9df4cfa5487f360e29e99343e91811baec331c4680985e608ca5d408e21725c6aa1b61d5a8b48d75f4aaa9a3cbe88d3e0f1a54319081f77c72c8f52547448c03ab4afbf6b8fb0e126c037a0ad4094600dd0e0634d76f88c21087f3cfb485a89bc1e3abc4c95041d1d170eccf02933ec5393d4be1dc573f83c33d3b9a746"); +const PROFILE_KEY_CREDENTIAL_PRESENTATION_V1: &[u8] = &hex!( + "00c4d19bca1ae844585168869da4133e0e0bb59f2ce17b7ac65bff5da9610eca103429d8022a94bae2b5b1057b5595b8ad70bfc2d0e1ad662cb75e6bae0782be6f00e3db793bc28561f0196c2e74da6f303fa8bcb70c94096671b73f7b3a95fb002200d5b9180fa0ef7d3014d01344145b4d38480d72ff25c24294e305e5705072e0d32cc4e84f5caf31486089a4b934c80c92eba43472ff23a5af93c397535d33801f0e6fc6eb2ee0d117f03bb4fd38a8b9c88d94708131f38742ca804a3cfc4f9476bc2d03f53d17001c36478afbe9cc535a224b2df6b2b08bef06cbc7d4dc42ccfc3459f7ac5c4419ae9f3c8a161d554d047778943216240858da3b1101984c40010000000000007a01eea6b2adad14d71ab8b8e411bef3c596e954b70e4031570cb1abd7e932083241f1caca3116708fa4319fbbdfe351376c23644ae09a42f0155db4996c9d0c7ffc8521c1914c0e1a20ae51e65df64dd5e6e5985b3d9d31732046d2d77f9c08aaccf056b84026073976eec6164cbdaee5d9e76e497f0c290af681cabd5c5101282abb26c3680d6087ce053310fe8a94f59d8ae23caac5fc0ed0c379888abf028a6f29f89d4fe2acc1706341b2245ba1885bca57e1e27ccf7ed79371500965009f960c2ba00fad3e93383b87ce119cac0b3360eb99284ce78e2cbed680f7960373e0ab75c190254160c2353614109489e653c9b2e1c93f92c7c5ad583d987a04bd3541b24485c33ea49bac43c87c4ab3efde2e2d7ec10a40be544199f925b20b2c55542bc56410571e41cd8e0286f609a66768b5061ccb4777af32309928dd09765de9df4cfa5487f360e29e99343e91811baec331c4680985e608ca5d408e21725c6aa1b61d5a8b48d75f4aaa9a3cbe88d3e0f1a54319081f77c72c8f52547448c03ab4afbf6b8fb0e126c037a0ad4094600dd0e0634d76f88c21087f3cfb485a89bc1e3abc4c95041d1d170eccf02933ec5393d4be1dc573f83c33d3b9a746" +); -const PROFILE_KEY_CREDENTIAL_PRESENTATION_V2_RESULT: [u8; zkgroup::PROFILE_KEY_CREDENTIAL_PRESENTATION_V2_LEN] = hex!("01e0f49cef4f25c31d1bfdc4a328fd508d2222b6decee2a253cf71e8821e97cc3f86824f79b1884b43c67f854717b1a47f56c8ff50a1c07fddbf4f6e857027d548583b54079dd61d54cdd39cd4acae5f8b3bbfa2bb6b3502b69b36da77addddc145ef254a16f2baec1e3d7e8dc80730bc608fcd0e4d8cfef3330a496380c7ac648686b9c5b914d0a77ee84848aa970b2404450179b4022eef003387f6bdbcba30344cadfd5e3f1677caa2c785f4fefe042a1b2adf4f4b8fa6023e41d704bda901d3a697904770ac46e0e304cf19f91ce9ab0ed1ccad8a6febd72313455f139b9222e9a30a2265c6cd22ee5b907fc95967417a0d8ca338a5ee4d51bba78039c314e4001000000000000749d54772b8137e570157c068a5cfebb464b6c1133c72d9abfda72db421cd00561ac4eecb94313c6912013e32c322ea36743b01814fe919ca84b9aea9c78b10ba021506f7ad8c6625e87e07ce32b559036af6b67e2c0383a643cb93cdc2b9800e90588a18fcc449cd466c28c6db73507d8282dd00808b5927fee3336ed0a2202dfb1e176fece6a4104caa2a866c475209967638ea2f1466847da7301a77b9007dfb332a30e9bbfae8a8398165ec9dd4778214e0d6ed35a34071bdf3b3b19510ff2a617bc53eb0e6b0ddc501db027bb47e4f4127d7a0104945f3d3dc7ec1741038b9b80e2c7f131c519ee26ffcb7cb9d3556cd35a12bef1d4b376fc513197ba00ce8f012a0b374164222ba79a39e74e150813474ca6f87ba705c0f06e7b7068039c5edd9dd1a5ab6793ac211989907686b45650221187d4d59ae492679f3b4308765de9df4cfa5487f360e29e99343e91811baec331c4680985e608ca5d408e21725c6aa1b61d5a8b48d75f4aaa9a3cbe88d3e0f1a54319081f77c72c8f52547448c03ab4afbf6b8fb0e126c037a0ad4094600dd0e0634d76f88c21087f3cfb485a89bc1e3abc4c95041d1d170eccf02933ec5393d4be1dc573f83c33d3b9a746"); +const PROFILE_KEY_CREDENTIAL_PRESENTATION_V2_RESULT: [u8; + zkgroup::PROFILE_KEY_CREDENTIAL_PRESENTATION_V2_LEN] = hex!( + "01e0f49cef4f25c31d1bfdc4a328fd508d2222b6decee2a253cf71e8821e97cc3f86824f79b1884b43c67f854717b1a47f56c8ff50a1c07fddbf4f6e857027d548583b54079dd61d54cdd39cd4acae5f8b3bbfa2bb6b3502b69b36da77addddc145ef254a16f2baec1e3d7e8dc80730bc608fcd0e4d8cfef3330a496380c7ac648686b9c5b914d0a77ee84848aa970b2404450179b4022eef003387f6bdbcba30344cadfd5e3f1677caa2c785f4fefe042a1b2adf4f4b8fa6023e41d704bda901d3a697904770ac46e0e304cf19f91ce9ab0ed1ccad8a6febd72313455f139b9222e9a30a2265c6cd22ee5b907fc95967417a0d8ca338a5ee4d51bba78039c314e4001000000000000749d54772b8137e570157c068a5cfebb464b6c1133c72d9abfda72db421cd00561ac4eecb94313c6912013e32c322ea36743b01814fe919ca84b9aea9c78b10ba021506f7ad8c6625e87e07ce32b559036af6b67e2c0383a643cb93cdc2b9800e90588a18fcc449cd466c28c6db73507d8282dd00808b5927fee3336ed0a2202dfb1e176fece6a4104caa2a866c475209967638ea2f1466847da7301a77b9007dfb332a30e9bbfae8a8398165ec9dd4778214e0d6ed35a34071bdf3b3b19510ff2a617bc53eb0e6b0ddc501db027bb47e4f4127d7a0104945f3d3dc7ec1741038b9b80e2c7f131c519ee26ffcb7cb9d3556cd35a12bef1d4b376fc513197ba00ce8f012a0b374164222ba79a39e74e150813474ca6f87ba705c0f06e7b7068039c5edd9dd1a5ab6793ac211989907686b45650221187d4d59ae492679f3b4308765de9df4cfa5487f360e29e99343e91811baec331c4680985e608ca5d408e21725c6aa1b61d5a8b48d75f4aaa9a3cbe88d3e0f1a54319081f77c72c8f52547448c03ab4afbf6b8fb0e126c037a0ad4094600dd0e0634d76f88c21087f3cfb485a89bc1e3abc4c95041d1d170eccf02933ec5393d4be1dc573f83c33d3b9a746" +); -const PROFILE_KEY_CREDENTIAL_PRESENTATION_V3_RESULT: &[u8] = &hex!("02fc58a4f2c9bd736238abfc28890c8b2363d084bee430692f05ee559bd37dea3378949e72b271fe0d815b6d908035106cd670b45892df40780c62c37fae106c41be38371fe042a4d4f697db112972d79204b3d48d1253d3231c22926e107f661d40897cb7fdb4777c1680a57008655db71efaac1f69cd9ddf8cda33b226662d7ba443416281508fcdbb026d63f83168470a83e12803a6d2ee2c907343f2f6b063fe6bf0f17a032fabe61e77e904dfe7d3042125728c1984c86a094a0e3991ba554c1ebf604c14a8b13c384c5c01909656c114b24f9d3615d3b14bde7ce9cf126aca3e073e804b2016f7c5affa158a3a68ed9024c6880ecb441a346e7e91aedd6240010000000000002e70f27fb3f4c58cb40dfe58ce1d122312969426abb0bbb820bfbc5ff61d400a419d5ddb7c30c546427273d4fca3096ee4dd2fd03ccbbd26304ffcfe54fef50db8538177ebc61117a222253b4d4189f795abbde3b3d8a0a72d97b7750e0394010a01b474c3e942ef1ee807e17421689c6ca793c4f30b09c989b8a9679aee130eb034f64a34dbcaf12616970d2c8d58ca715bf5c4d42475fa6a1b82ba31574e072506652253e86cd783e30e1c06d2e861ba864a5373759472b31c5b26a8e46d062b8b5da2ec0a3ba499648e80f307728b7815aa60d167a0a9d01c2d2cbfb0a60ddc9dfc5343564b5f021fd1adba6d2a389e7c331bfffeed2a5d1887634323840574e49255a62d9e00ffc21f56afbb12fb9660e185f979223ec714c01e403a3a0a3276d0ef78182f12c092f5237befe3f0afea7693370788f854ec697e44c9bd02765de9df4cfa5487f360e29e99343e91811baec331c4680985e608ca5d408e21725c6aa1b61d5a8b48d75f4aaa9a3cbe88d3e0f1a54319081f77c72c8f52547448c03ab4afbf6b8fb0e126c037a0ad4094600dd0e0634d76f88c21087f3cfb485a89bc1e3abc4c95041d1d170eccf02933ec5393d4be1dc573f83c33d3b9a7468069160000000000"); +const PROFILE_KEY_CREDENTIAL_PRESENTATION_V3_RESULT: &[u8] = &hex!( + "02fc58a4f2c9bd736238abfc28890c8b2363d084bee430692f05ee559bd37dea3378949e72b271fe0d815b6d908035106cd670b45892df40780c62c37fae106c41be38371fe042a4d4f697db112972d79204b3d48d1253d3231c22926e107f661d40897cb7fdb4777c1680a57008655db71efaac1f69cd9ddf8cda33b226662d7ba443416281508fcdbb026d63f83168470a83e12803a6d2ee2c907343f2f6b063fe6bf0f17a032fabe61e77e904dfe7d3042125728c1984c86a094a0e3991ba554c1ebf604c14a8b13c384c5c01909656c114b24f9d3615d3b14bde7ce9cf126aca3e073e804b2016f7c5affa158a3a68ed9024c6880ecb441a346e7e91aedd6240010000000000002e70f27fb3f4c58cb40dfe58ce1d122312969426abb0bbb820bfbc5ff61d400a419d5ddb7c30c546427273d4fca3096ee4dd2fd03ccbbd26304ffcfe54fef50db8538177ebc61117a222253b4d4189f795abbde3b3d8a0a72d97b7750e0394010a01b474c3e942ef1ee807e17421689c6ca793c4f30b09c989b8a9679aee130eb034f64a34dbcaf12616970d2c8d58ca715bf5c4d42475fa6a1b82ba31574e072506652253e86cd783e30e1c06d2e861ba864a5373759472b31c5b26a8e46d062b8b5da2ec0a3ba499648e80f307728b7815aa60d167a0a9d01c2d2cbfb0a60ddc9dfc5343564b5f021fd1adba6d2a389e7c331bfffeed2a5d1887634323840574e49255a62d9e00ffc21f56afbb12fb9660e185f979223ec714c01e403a3a0a3276d0ef78182f12c092f5237befe3f0afea7693370788f854ec697e44c9bd02765de9df4cfa5487f360e29e99343e91811baec331c4680985e608ca5d408e21725c6aa1b61d5a8b48d75f4aaa9a3cbe88d3e0f1a54319081f77c72c8f52547448c03ab4afbf6b8fb0e126c037a0ad4094600dd0e0634d76f88c21087f3cfb485a89bc1e3abc4c95041d1d170eccf02933ec5393d4be1dc573f83c33d3b9a7468069160000000000" +); #[test] fn test_auth_credential_presentation_v1_is_rejected() { @@ -245,20 +256,24 @@ fn test_integration_expiring_profile() { ) .unwrap(); - assert!(server_secret_params - .verify_profile_key_credential_presentation( - group_public_params, - &presentation_any, - expiration, - ) - .is_err()); - assert!(server_secret_params - .verify_profile_key_credential_presentation( - group_public_params, - &presentation_any, - expiration.add_seconds(5), - ) - .is_err()); + assert!( + server_secret_params + .verify_profile_key_credential_presentation( + group_public_params, + &presentation_any, + expiration, + ) + .is_err() + ); + assert!( + server_secret_params + .verify_profile_key_credential_presentation( + group_public_params, + &presentation_any, + expiration.add_seconds(5), + ) + .is_err() + ); let presentation_parsed = zkgroup::profiles::AnyProfileKeyCredentialPresentation::new(presentation_bytes).unwrap(); @@ -304,7 +319,9 @@ fn test_server_sigs() { let message = zkgroup::TEST_ARRAY_32_1; let signature = server_secret_params.sign(randomness, &message); - const EXPECTED_SIGNATURE: &[u8] = &hex!("87d354564d35ef91edba851e0815612e864c227a0471d50c270698604406d003a55473f576cf241fc6b41c6b16e5e63b333c02fe4a33858022fdd7a4ab367b06"); + const EXPECTED_SIGNATURE: &[u8] = &hex!( + "87d354564d35ef91edba851e0815612e864c227a0471d50c270698604406d003a55473f576cf241fc6b41c6b16e5e63b333c02fe4a33858022fdd7a4ab367b06" + ); assert_eq!( &signature[..], EXPECTED_SIGNATURE, @@ -401,11 +418,13 @@ fn test_profile_key_credential_presentation_v1_does_not_verify() { PROFILE_KEY_CREDENTIAL_PRESENTATION_V1, ) .unwrap(); - assert!(server_secret_params - .verify_profile_key_credential_presentation( - group_public_params, - &presentation, - redemption_time.add_seconds(60) - ) - .is_err()); + assert!( + server_secret_params + .verify_profile_key_credential_presentation( + group_public_params, + &presentation, + redemption_time.add_seconds(60) + ) + .is_err() + ); } diff --git a/rust/zkgroup/tests/receipt_flow.rs b/rust/zkgroup/tests/receipt_flow.rs index cca7835c1..bc7aa3e66 100644 --- a/rust/zkgroup/tests/receipt_flow.rs +++ b/rust/zkgroup/tests/receipt_flow.rs @@ -9,8 +9,8 @@ use zkgroup::crypto::proofs::{ReceiptCredentialIssuanceProof, ReceiptCredentialP use zkgroup::crypto::receipt_struct::ReceiptStruct; use zkgroup::crypto::{credentials, receipt_credential_request}; use zkgroup::{ - RandomnessBytes, ReceiptLevel, ReceiptSerialBytes, ServerSecretParams, Timestamp, - RANDOMNESS_LEN, RECEIPT_SERIAL_LEN, + RANDOMNESS_LEN, RECEIPT_SERIAL_LEN, RandomnessBytes, ReceiptLevel, ReceiptSerialBytes, + ServerSecretParams, Timestamp, }; #[test]