diff --git a/.github/workflows/wallet.yml b/.github/workflows/wallet.yml index d77fb9d6fb..34f202d25f 100644 --- a/.github/workflows/wallet.yml +++ b/.github/workflows/wallet.yml @@ -31,7 +31,7 @@ jobs: uses: actions-rs/toolchain@v1 with: profile: minimal - toolchain: stable + toolchain: 1.71.0 override: true components: rustfmt, clippy diff --git a/Cargo.lock b/Cargo.lock index 98a64c657a..e31c5a9702 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10563,9 +10563,9 @@ checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "ts-rs" -version = "6.2.1" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4added4070a4fdf9df03457206cd2e4b12417c8560a2954d91ffcbe60177a56a" +checksum = "e1ff1f8c90369bc172200013ac17ae86e7b5def580687df4e6127883454ff2b0" dependencies = [ "thiserror", "ts-rs-macros", @@ -10588,14 +10588,14 @@ dependencies = [ [[package]] name = "ts-rs-macros" -version = "6.2.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f807fdb3151fee75df7485b901a89624358cd07a67a8fb1a5831bf5a07681ff" +checksum = "a6f41cc0aeb7a4a55730188e147d3795a7349b501f8334697fd37629b896cdc2" dependencies = [ "Inflector", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.28", "termcolor", ] diff --git a/Cargo.toml b/Cargo.toml index 696f1bd9f1..ac0178a41e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -150,6 +150,7 @@ tap = "1.0.1" tendermint-rpc = "0.32" # same version as used by cosmrs thiserror = "1.0.38" tokio = "1.24.1" +ts-rs = "7.0.0" url = "2.4" zeroize = "1.6.0" diff --git a/Makefile b/Makefile index 2576489be9..6fc92e55f8 100644 --- a/Makefile +++ b/Makefile @@ -77,9 +77,6 @@ $(eval $(call add_cargo_workspace,contracts,contracts,--lib --target wasm32-unkn $(eval $(call add_cargo_workspace,wasm-client,clients/webassembly,--target wasm32-unknown-unknown)) $(eval $(call add_cargo_workspace,wallet,nym-wallet,)) $(eval $(call add_cargo_workspace,connect,nym-connect/desktop)) -ifdef NYM_MOBILE -$(eval $(call add_cargo_workspace,connect-mobile,nym-connect/mobile/src-tauri)) -endif # ----------------------------------------------------------------------------- # Convenience targets for crates that are already part of the main workspace diff --git a/clients/native/websocket-requests/src/requests.rs b/clients/native/websocket-requests/src/requests.rs index 3c4c1a618b..645f2edf9c 100644 --- a/clients/native/websocket-requests/src/requests.rs +++ b/clients/native/websocket-requests/src/requests.rs @@ -105,10 +105,10 @@ impl ClientRequest { let conn_id_bytes = connection_id.unwrap_or(0).to_be_bytes(); std::iter::once(ClientRequestTag::Send as u8) - .chain(recipient.to_bytes().into_iter()) // will not be length prefixed because the length is constant - .chain(conn_id_bytes.into_iter()) - .chain(data_len_bytes.into_iter()) - .chain(data.into_iter()) + .chain(recipient.to_bytes()) // will not be length prefixed because the length is constant + .chain(conn_id_bytes) + .chain(data_len_bytes) + .chain(data) .collect() } @@ -180,11 +180,11 @@ impl ClientRequest { let conn_id_bytes = connection_id.unwrap_or(0).to_be_bytes(); std::iter::once(ClientRequestTag::SendAnonymous as u8) - .chain(reply_surbs.to_be_bytes().into_iter()) - .chain(recipient.to_bytes().into_iter()) // will not be length prefixed because the length is constant - .chain(conn_id_bytes.into_iter()) - .chain(data_len_bytes.into_iter()) - .chain(data.into_iter()) + .chain(reply_surbs.to_be_bytes()) + .chain(recipient.to_bytes()) // will not be length prefixed because the length is constant + .chain(conn_id_bytes) + .chain(data_len_bytes) + .chain(data) .collect() } @@ -258,10 +258,10 @@ impl ClientRequest { let conn_id_bytes = connection_id.unwrap_or(0).to_be_bytes(); std::iter::once(ClientRequestTag::Reply as u8) - .chain(sender_tag.to_bytes().into_iter()) - .chain(conn_id_bytes.into_iter()) - .chain(message_len_bytes.into_iter()) - .chain(message.into_iter()) + .chain(sender_tag.to_bytes()) + .chain(conn_id_bytes) + .chain(message_len_bytes) + .chain(message) .collect() } @@ -332,7 +332,7 @@ impl ClientRequest { fn serialize_closed_connection(connection_id: u64) -> Vec { let conn_id_bytes = connection_id.to_be_bytes(); std::iter::once(ClientRequestTag::ClosedConnection as u8) - .chain(conn_id_bytes.into_iter()) + .chain(conn_id_bytes) .collect() } @@ -359,7 +359,7 @@ impl ClientRequest { fn serialize_get_lane_queue_lengths(connection_id: u64) -> Vec { let conn_id_bytes = connection_id.to_be_bytes(); std::iter::once(ClientRequestTag::GetLaneQueueLength as u8) - .chain(conn_id_bytes.into_iter()) + .chain(conn_id_bytes) .collect() } diff --git a/clients/native/websocket-requests/src/responses.rs b/clients/native/websocket-requests/src/responses.rs index d326388570..713054ecf3 100644 --- a/clients/native/websocket-requests/src/responses.rs +++ b/clients/native/websocket-requests/src/responses.rs @@ -67,15 +67,15 @@ impl ServerResponse { if let Some(sender_tag) = reconstructed_message.sender_tag { std::iter::once(ServerResponseTag::Received as u8) .chain(std::iter::once(true as u8)) - .chain(sender_tag.to_bytes().into_iter()) + .chain(sender_tag.to_bytes()) .chain(message_len_bytes.iter().cloned()) - .chain(reconstructed_message.message.into_iter()) + .chain(reconstructed_message.message) .collect() } else { std::iter::once(ServerResponseTag::Received as u8) .chain(std::iter::once(false as u8)) .chain(message_len_bytes.iter().cloned()) - .chain(reconstructed_message.message.into_iter()) + .chain(reconstructed_message.message) .collect() } } @@ -149,7 +149,7 @@ impl ServerResponse { // SELF_ADDRESS_RESPONSE_TAG || self_address fn serialize_self_address(address: Recipient) -> Vec { std::iter::once(ServerResponseTag::SelfAddress as u8) - .chain(address.to_bytes().into_iter()) + .chain(address.to_bytes()) .collect() } @@ -211,8 +211,8 @@ impl ServerResponse { let message_len_bytes = (error.message.len() as u64).to_be_bytes(); std::iter::once(ServerResponseTag::Error as u8) .chain(std::iter::once(error.kind as u8)) - .chain(message_len_bytes.into_iter()) - .chain(error.message.into_bytes().into_iter()) + .chain(message_len_bytes) + .chain(error.message.into_bytes()) .collect() } diff --git a/clients/webassembly/src/client/helpers.rs b/clients/webassembly/src/client/helpers.rs index c3f456a891..7d5373853b 100644 --- a/clients/webassembly/src/client/helpers.rs +++ b/clients/webassembly/src/client/helpers.rs @@ -114,7 +114,7 @@ impl WasmTopologyExt for Arc { let this = Arc::clone(self); future_to_promise(async move { let Some(current_topology) = this.topology_accessor.current_topology().await else { - return Err(WasmClientError::UnavailableNetworkTopology.into()) + return Err(WasmClientError::UnavailableNetworkTopology.into()); }; match current_topology.find_mix_by_identity(&mixnode_identity) { @@ -135,7 +135,7 @@ impl WasmTopologyExt for Arc { let this = Arc::clone(self); future_to_promise(async move { let Some(current_topology) = this.topology_accessor.current_topology().await else { - return Err(WasmClientError::UnavailableNetworkTopology.into()) + return Err(WasmClientError::UnavailableNetworkTopology.into()); }; let Some(mix) = current_topology.find_mix_by_identity(&mixnode_identity) else { diff --git a/clients/webassembly/src/encoded_payload_helper.rs b/clients/webassembly/src/encoded_payload_helper.rs index 84f463ec58..17ae92fbf8 100644 --- a/clients/webassembly/src/encoded_payload_helper.rs +++ b/clients/webassembly/src/encoded_payload_helper.rs @@ -52,7 +52,7 @@ pub fn encode_payload_with_headers( Ok(metadata) => { let metadata = metadata.as_bytes().to_vec(); let size = (metadata.len() as u64).to_be_bytes().to_vec(); - Ok(vec![size, metadata, payload].concat()) + Ok([size, metadata, payload].concat()) } Err(e) => Err(JsValue::from(JsError::new( format!("Could not encode message: {}", e).as_str(), diff --git a/clients/webassembly/src/storage/mod.rs b/clients/webassembly/src/storage/mod.rs index f4ab912657..febbd9ecd5 100644 --- a/clients/webassembly/src/storage/mod.rs +++ b/clients/webassembly/src/storage/mod.rs @@ -1,6 +1,8 @@ // Copyright 2023 - Nym Technologies SA // SPDX-License-Identifier: Apache-2.0 +use std::rc::Rc; + use crate::client::config::Config; use crate::storage::error::ClientStorageError; use js_sys::Promise; @@ -8,7 +10,6 @@ use nym_client_core::client::base_client::storage::gateway_details::PersistedGat use nym_crypto::asymmetric::{encryption, identity}; use nym_gateway_client::SharedKeys; use nym_sphinx::acknowledgements::AckKey; -use std::sync::Arc; use wasm_bindgen::prelude::*; use wasm_bindgen_futures::future_to_promise; use wasm_utils::storage::{IdbVersionChangeEvent, WasmStorage}; @@ -43,7 +44,7 @@ mod v1 { pub struct ClientStorage { #[allow(dead_code)] pub(crate) name: String, - pub(crate) inner: Arc, + pub(crate) inner: Rc, } #[wasm_bindgen] @@ -88,7 +89,7 @@ impl ClientStorage { .await?; Ok(ClientStorage { - inner: Arc::new(inner), + inner: Rc::new(inner), name, }) } diff --git a/clients/webassembly/src/tester/ephemeral_receiver.rs b/clients/webassembly/src/tester/ephemeral_receiver.rs index 826bfa07b2..2d3117addd 100644 --- a/clients/webassembly/src/tester/ephemeral_receiver.rs +++ b/clients/webassembly/src/tester/ephemeral_receiver.rs @@ -58,7 +58,7 @@ impl<'a> EphemeralTestReceiver<'a> { let Some(received_packet) = packet else { // can't do anything more... console_error!("packet receiver has stopped processing results!"); - return true + return true; }; match received_packet { Received::Message(msg) => { diff --git a/clients/webassembly/src/tester/mod.rs b/clients/webassembly/src/tester/mod.rs index ba70062f3b..6433c029c7 100644 --- a/clients/webassembly/src/tester/mod.rs +++ b/clients/webassembly/src/tester/mod.rs @@ -29,6 +29,7 @@ use nym_validator_client::client::IdentityKey; use nym_validator_client::QueryReqwestRpcNyxdClient; use rand::rngs::OsRng; use std::collections::HashSet; +use std::rc::Rc; use std::sync::atomic::{AtomicBool, AtomicU32, Ordering}; use std::sync::{Arc, Mutex as SyncMutex}; use std::time::Duration; @@ -42,7 +43,7 @@ pub(crate) mod helpers; pub type NodeTestMessage = TestMessage; type LockedGatewayClient = - Arc>>; + Rc>>; pub(crate) const DEFAULT_TEST_TIMEOUT: Duration = Duration::from_secs(10); pub(crate) const DEFAULT_TEST_PACKETS: u32 = 20; @@ -210,7 +211,7 @@ impl NymNodeTesterBuilder { test_in_progress: Arc::new(AtomicBool::new(false)), current_test_nonce: Default::default(), tester: Arc::new(SyncMutex::new(tester)), - gateway_client: Arc::new(AsyncMutex::new(gateway_client)), + gateway_client: Rc::new(AsyncMutex::new(gateway_client)), processed_receiver: ReceivedReceiverWrapper::new(processed_receiver), _task_manager: task_manager, }) @@ -343,7 +344,7 @@ impl NymNodeTester { )); let processed_receiver_clone = self.processed_receiver.clone(); - let gateway_client_clone = Arc::clone(&self.gateway_client); + let gateway_client_clone = Rc::clone(&self.gateway_client); let tester_marker = TestMarker::new(Arc::clone(&self.test_in_progress)); // start doing async things (send packets and watch for anything coming back) diff --git a/common/client-libs/validator-client/Cargo.toml b/common/client-libs/validator-client/Cargo.toml index f3d2716143..0ee5c8b3af 100644 --- a/common/client-libs/validator-client/Cargo.toml +++ b/common/client-libs/validator-client/Cargo.toml @@ -65,7 +65,7 @@ features = ["tokio"] [dev-dependencies] bip39 = { workspace = true } cosmrs = { workspace = true, features = ["bip32"] } -ts-rs = "6.1.2" +ts-rs = { workspace = true } [[example]] name = "offline_signing" diff --git a/common/client-libs/validator-client/src/signing/direct_wallet.rs b/common/client-libs/validator-client/src/signing/direct_wallet.rs index b26ac39ada..3de09502ae 100644 --- a/common/client-libs/validator-client/src/signing/direct_wallet.rs +++ b/common/client-libs/validator-client/src/signing/direct_wallet.rs @@ -199,16 +199,14 @@ mod tests { #[test] fn generating_account_addresses() { // test vectors produced from our js wallet - let mnemonics = vec![ - "crush minute paddle tobacco message debate cabin peace bar jacket execute twenty winner view sure mask popular couch penalty fragile demise fresh pizza stove", + let mnemonics = ["crush minute paddle tobacco message debate cabin peace bar jacket execute twenty winner view sure mask popular couch penalty fragile demise fresh pizza stove", "acquire rebel spot skin gun such erupt pull swear must define ill chief turtle today flower chunk truth battle claw rigid detail gym feel", - "step income throw wheat mobile ship wave drink pool sudden upset jaguar bar globe rifle spice frost bless glimpse size regular carry aspect ball" - ]; + "step income throw wheat mobile ship wave drink pool sudden upset jaguar bar globe rifle spice frost bless glimpse size regular carry aspect ball"]; let prefix = NymNetworkDetails::new_mainnet() .chain_details .bech32_account_prefix; - let addrs = vec![ + let addrs = [ "n1jw6mp7d5xqc7w6xm79lha27glmd0vdt3l9artf", "n1h5hgn94nsq4kh99rjj794hr5h5q6yfm2lr52es", "n17n9flp6jflljg6fp05dsy07wcprf2uuu8g40rf", diff --git a/common/coconut-interface/src/lib.rs b/common/coconut-interface/src/lib.rs index 4f69c2c9fa..2322bc3978 100644 --- a/common/coconut-interface/src/lib.rs +++ b/common/coconut-interface/src/lib.rs @@ -8,7 +8,14 @@ use serde::{Deserialize, Serialize}; use error::CoconutInterfaceError; -pub use nym_coconut::*; +// We list these explicity instead of glob export due to shadowing warnings with the pub tests +// module. +pub use nym_coconut::{ + aggregate_signature_shares, aggregate_verification_keys, blind_sign, hash_to_scalar, + prepare_blind_sign, prove_bandwidth_credential, Attribute, Base58, BlindSignRequest, + BlindedSignature, Bytable, CoconutError, KeyPair, Parameters, PrivateAttribute, + PublicAttribute, Signature, SignatureShare, Theta, VerificationKey, +}; #[derive(Debug, Serialize, Deserialize, Getters, CopyGetters, Clone, PartialEq, Eq)] pub struct Credential { @@ -57,7 +64,7 @@ impl Credential { pub fn verify(&self, verification_key: &VerificationKey) -> bool { let params = Parameters::new(self.n_params).unwrap(); - let public_attributes = vec![ + let public_attributes = [ self.voucher_value.to_string().as_bytes(), self.voucher_info.as_bytes(), ] @@ -138,6 +145,8 @@ impl Base58 for Credential {} #[cfg(test)] mod tests { + use nym_coconut::{prove_bandwidth_credential, Signature}; + use super::*; #[test] diff --git a/common/cosmwasm-smart-contracts/mixnet-contract/Cargo.toml b/common/cosmwasm-smart-contracts/mixnet-contract/Cargo.toml index 47397d7b88..e82be77e29 100644 --- a/common/cosmwasm-smart-contracts/mixnet-contract/Cargo.toml +++ b/common/cosmwasm-smart-contracts/mixnet-contract/Cargo.toml @@ -26,7 +26,7 @@ humantime-serde = "1.1.1" # TO CHECK WHETHER STILL NEEDED: log = { workspace = true } time = { version = "0.3.6", features = ["parsing", "formatting"] } -ts-rs = { version = "6.1.2", optional = true } +ts-rs = { workspace = true, optional = true } [dev-dependencies] rand_chacha = "0.3" diff --git a/common/cosmwasm-smart-contracts/vesting-contract/Cargo.toml b/common/cosmwasm-smart-contracts/vesting-contract/Cargo.toml index f5fa35df5f..3fd7e8a377 100644 --- a/common/cosmwasm-smart-contracts/vesting-contract/Cargo.toml +++ b/common/cosmwasm-smart-contracts/vesting-contract/Cargo.toml @@ -15,7 +15,7 @@ mixnet-contract-common = { path = "../mixnet-contract", package = "nym-mixnet-co contracts-common = { path = "../contracts-common", package = "nym-contracts-common", version = "0.5.0" } serde = { version = "1.0", features = ["derive"] } thiserror = "1.0" -ts-rs = {version = "6.1.2", optional = true} +ts-rs = { workspace = true, optional = true} [features] schema = ["cw2"] diff --git a/common/nymcoconut/src/proofs/mod.rs b/common/nymcoconut/src/proofs/mod.rs index 84c7211aa2..42f923466d 100644 --- a/common/nymcoconut/src/proofs/mod.rs +++ b/common/nymcoconut/src/proofs/mod.rs @@ -354,7 +354,7 @@ impl ProofKappaZeta { let witness_blinder = params.random_scalar(); let witness_serial_number = params.random_scalar(); let witness_binding_number = params.random_scalar(); - let witness_attributes = vec![witness_serial_number, witness_binding_number]; + let witness_attributes = [witness_serial_number, witness_binding_number]; let beta_bytes = verification_key .beta_g2 @@ -417,7 +417,7 @@ impl ProofKappaZeta { .map(|beta_i| beta_i.to_bytes()) .collect::>(); - let response_attributes = vec![self.response_serial_number, self.response_binding_number]; + let response_attributes = [self.response_serial_number, self.response_binding_number]; // re-compute witnesses commitments // Aw = (c * kappa) + (rt * g2) + ((1 - c) * alpha) + (rm[0] * beta[0]) + ... + (rm[i] * beta[i]) let commitment_kappa = kappa * self.challenge diff --git a/common/nymsphinx/acknowledgements/src/identifier.rs b/common/nymsphinx/acknowledgements/src/identifier.rs index aab5a96146..abe1d58368 100644 --- a/common/nymsphinx/acknowledgements/src/identifier.rs +++ b/common/nymsphinx/acknowledgements/src/identifier.rs @@ -17,7 +17,7 @@ pub fn prepare_identifier( let id_ciphertext = encrypt::(key.inner(), &iv, &serialized_id); // IV || ID_CIPHERTEXT - iv.into_iter().chain(id_ciphertext.into_iter()).collect() + iv.into_iter().chain(id_ciphertext).collect() } pub fn recover_identifier( diff --git a/common/nymsphinx/acknowledgements/src/surb_ack.rs b/common/nymsphinx/acknowledgements/src/surb_ack.rs index e623d4e738..732f84b9ba 100644 --- a/common/nymsphinx/acknowledgements/src/surb_ack.rs +++ b/common/nymsphinx/acknowledgements/src/surb_ack.rs @@ -122,7 +122,7 @@ impl SurbAck { .first_hop_address .as_zero_padded_bytes(MAX_NODE_ADDRESS_UNPADDED_LEN) .into_iter() - .chain(self.surb_ack_packet.to_bytes()?.into_iter()) + .chain(self.surb_ack_packet.to_bytes()?) .collect(); Ok((self.expected_total_delay, surb_bytes)) } diff --git a/common/nymsphinx/anonymous-replies/src/reply_surb.rs b/common/nymsphinx/anonymous-replies/src/reply_surb.rs index 2bf5799912..d38b16fc13 100644 --- a/common/nymsphinx/anonymous-replies/src/reply_surb.rs +++ b/common/nymsphinx/anonymous-replies/src/reply_surb.rs @@ -130,7 +130,7 @@ impl ReplySurb { self.encryption_key .to_bytes() .into_iter() - .chain(self.surb.to_bytes().into_iter()) + .chain(self.surb.to_bytes()) .collect() } diff --git a/common/nymsphinx/anonymous-replies/src/requests.rs b/common/nymsphinx/anonymous-replies/src/requests.rs index f4effbf7d6..9dd4c84dc0 100644 --- a/common/nymsphinx/anonymous-replies/src/requests.rs +++ b/common/nymsphinx/anonymous-replies/src/requests.rs @@ -275,7 +275,7 @@ impl RepliableMessageContent { .to_be_bytes() .into_iter() .chain(reply_surbs.into_iter().flat_map(|s| s.to_bytes())) - .chain(message.into_iter()) + .chain(message) .collect() } RepliableMessageContent::AdditionalSurbs { reply_surbs } => { @@ -465,7 +465,7 @@ impl ReplyMessageContent { ReplyMessageContent::SurbRequest { recipient, amount } => recipient .to_bytes() .into_iter() - .chain(amount.to_be_bytes().into_iter()) + .chain(amount.to_be_bytes()) .collect(), } } diff --git a/common/nymsphinx/chunking/src/fragment.rs b/common/nymsphinx/chunking/src/fragment.rs index 74996f29ab..6dccfa053a 100644 --- a/common/nymsphinx/chunking/src/fragment.rs +++ b/common/nymsphinx/chunking/src/fragment.rs @@ -204,7 +204,7 @@ impl Fragment { self.header .to_bytes() .into_iter() - .chain(self.payload.into_iter()) + .chain(self.payload) .collect() } diff --git a/common/nymsphinx/cover/src/lib.rs b/common/nymsphinx/cover/src/lib.rs index 05f4cffe33..66142a4cee 100644 --- a/common/nymsphinx/cover/src/lib.rs +++ b/common/nymsphinx/cover/src/lib.rs @@ -115,7 +115,7 @@ where let packet_payload: Vec<_> = ack_bytes .into_iter() .chain(ephemeral_keypair.public_key().to_bytes().iter().cloned()) - .chain(cover_content.into_iter()) + .chain(cover_content) .collect(); let route = diff --git a/common/nymsphinx/forwarding/src/packet.rs b/common/nymsphinx/forwarding/src/packet.rs index 2276e9a5cd..13026a3aaf 100644 --- a/common/nymsphinx/forwarding/src/packet.rs +++ b/common/nymsphinx/forwarding/src/packet.rs @@ -106,8 +106,8 @@ impl MixPacket { pub fn into_bytes(self) -> Result, MixPacketFormattingError> { Ok(std::iter::once(self.packet_type as u8) - .chain(self.next_hop.as_bytes().into_iter()) - .chain(self.packet.to_bytes()?.into_iter()) + .chain(self.next_hop.as_bytes()) + .chain(self.packet.to_bytes()?) .collect()) } } diff --git a/common/nymsphinx/src/preparer/payload.rs b/common/nymsphinx/src/preparer/payload.rs index 5999026252..bfd1715d57 100644 --- a/common/nymsphinx/src/preparer/payload.rs +++ b/common/nymsphinx/src/preparer/payload.rs @@ -50,8 +50,8 @@ impl NymPayloadBuilder { Ok(NymPayload( surb_ack_bytes .into_iter() - .chain(variant_data.into_iter()) - .chain(fragment_data.into_iter()) + .chain(variant_data) + .chain(fragment_data) .collect(), )) } @@ -61,10 +61,7 @@ impl NymPayloadBuilder { packet_encryption_key: &SurbEncryptionKey, ) -> Result { let key_digest = packet_encryption_key.compute_digest(); - self.build::( - packet_encryption_key.inner(), - key_digest.into_iter(), - ) + self.build::(packet_encryption_key.inner(), key_digest) } pub fn build_regular( diff --git a/common/socks5/requests/src/lib.rs b/common/socks5/requests/src/lib.rs index 58c23dcd9d..c131f132a0 100644 --- a/common/socks5/requests/src/lib.rs +++ b/common/socks5/requests/src/lib.rs @@ -73,7 +73,7 @@ impl SocketDataHeader { .to_be_bytes() .into_iter() .chain(std::iter::once(self.local_socket_closed as u8)) - .chain(self.seq.to_be_bytes().into_iter()) + .chain(self.seq.to_be_bytes()) } pub fn try_from_response_bytes( @@ -107,8 +107,8 @@ impl SocketDataHeader { pub fn into_response_bytes_iter(self) -> impl Iterator { std::iter::once(self.local_socket_closed as u8) - .chain(self.connection_id.to_be_bytes().into_iter()) - .chain(self.seq.to_be_bytes().into_iter()) + .chain(self.connection_id.to_be_bytes()) + .chain(self.seq.to_be_bytes()) } } @@ -170,9 +170,7 @@ impl SocketData { } pub fn into_request_bytes_iter(self) -> impl Iterator { - self.header - .into_request_bytes_iter() - .chain(self.data.into_iter()) + self.header.into_request_bytes_iter().chain(self.data) } pub fn try_from_response_bytes(b: &[u8]) -> Result { @@ -190,9 +188,7 @@ impl SocketData { } pub fn into_response_bytes_iter(self) -> impl Iterator { - self.header - .into_response_bytes_iter() - .chain(self.data.into_iter()) + self.header.into_response_bytes_iter().chain(self.data) } } diff --git a/common/socks5/requests/src/request.rs b/common/socks5/requests/src/request.rs index 0e29fb49d9..530d27e11f 100644 --- a/common/socks5/requests/src/request.rs +++ b/common/socks5/requests/src/request.rs @@ -113,7 +113,7 @@ impl Serializable for Socks5Request { fn into_bytes(self) -> Vec { if let Some(version) = self.protocol_version.as_u8() { std::iter::once(version) - .chain(self.content.into_bytes().into_iter()) + .chain(self.content.into_bytes()) .collect() } else { std::iter::once(Self::LEGACY_TYPE_TAG) @@ -335,12 +335,12 @@ impl Socks5RequestContent { let remote_address_bytes_len = remote_address_bytes.len() as u16; let iter = std::iter::once(RequestFlag::Connect as u8) - .chain(req.conn_id.to_be_bytes().into_iter()) - .chain(remote_address_bytes_len.to_be_bytes().into_iter()) - .chain(remote_address_bytes.into_iter()); + .chain(req.conn_id.to_be_bytes()) + .chain(remote_address_bytes_len.to_be_bytes()) + .chain(remote_address_bytes); if let Some(return_address) = req.return_address { - iter.chain(return_address.to_bytes().into_iter()).collect() + iter.chain(return_address.to_bytes()).collect() } else { iter.collect() } @@ -358,7 +358,7 @@ impl Socks5RequestContent { }) .unwrap_or_default(); std::iter::once(RequestFlag::Query as u8) - .chain(query_bytes.into_iter()) + .chain(query_bytes) .collect() } } @@ -495,7 +495,7 @@ mod request_deserialization_tests { let request_bytes: Vec<_> = request_bytes_prefix .iter() .cloned() - .chain(recipient_bytes.into_iter()) + .chain(recipient_bytes) .collect(); assert!(Socks5RequestContent::try_from_bytes(&request_bytes) .unwrap_err() @@ -530,10 +530,7 @@ mod request_deserialization_tests { let recipient = Recipient::try_from_base58_string("CytBseW6yFXUMzz4SGAKdNLGR7q3sJLLYxyBGvutNEQV.4QXYyEVc5fUDjmmi8PrHN9tdUFV4PCvSJE1278cHyvoe@4sBbL1ngf1vtNqykydQKTFh26sQCw888GpUqvPvyNB4f").unwrap(); let recipient_bytes = recipient.to_bytes(); - let request_bytes: Vec<_> = request_bytes - .into_iter() - .chain(recipient_bytes.into_iter()) - .collect(); + let request_bytes: Vec<_> = request_bytes.into_iter().chain(recipient_bytes).collect(); let request = Socks5RequestContent::try_from_bytes(&request_bytes).unwrap(); match request { @@ -577,10 +574,7 @@ mod request_deserialization_tests { let recipient = Recipient::try_from_base58_string("CytBseW6yFXUMzz4SGAKdNLGR7q3sJLLYxyBGvutNEQV.4QXYyEVc5fUDjmmi8PrHN9tdUFV4PCvSJE1278cHyvoe@4sBbL1ngf1vtNqykydQKTFh26sQCw888GpUqvPvyNB4f").unwrap(); let recipient_bytes = recipient.to_bytes(); - let request_bytes: Vec<_> = request_bytes - .into_iter() - .chain(recipient_bytes.into_iter()) - .collect(); + let request_bytes: Vec<_> = request_bytes.into_iter().chain(recipient_bytes).collect(); let request = Socks5RequestContent::try_from_bytes(&request_bytes).unwrap(); match request { diff --git a/common/socks5/requests/src/response.rs b/common/socks5/requests/src/response.rs index c0ff60fa39..0415035ac5 100644 --- a/common/socks5/requests/src/response.rs +++ b/common/socks5/requests/src/response.rs @@ -84,7 +84,7 @@ impl Serializable for Socks5Response { fn into_bytes(self) -> Vec { if let Some(version) = self.protocol_version.as_u8() { std::iter::once(version) - .chain(self.content.into_bytes().into_iter()) + .chain(self.content.into_bytes()) .collect() } else { self.content.into_bytes() @@ -192,7 +192,7 @@ impl Socks5ResponseContent { } Socks5ResponseContent::ConnectionError(res) => { std::iter::once(ResponseFlag::ConnectionError as u8) - .chain(res.into_bytes().into_iter()) + .chain(res.into_bytes()) .collect() } Socks5ResponseContent::Query(query) => { @@ -204,7 +204,7 @@ impl Socks5ResponseContent { }) .unwrap_or_default(); std::iter::once(ResponseFlag::Query as u8) - .chain(query_bytes.into_iter()) + .chain(query_bytes) .collect() } } @@ -290,7 +290,7 @@ impl ConnectionError { .to_be_bytes() .iter() .copied() - .chain(self.network_requester_error.into_bytes().into_iter()) + .chain(self.network_requester_error.into_bytes()) .collect() } } @@ -339,7 +339,7 @@ mod tests { let bytes: Vec = 42u64 .to_be_bytes() .into_iter() - .chain([0, 159, 146, 150].into_iter()) + .chain([0, 159, 146, 150]) .collect(); let err = ConnectionError::try_from_bytes(&bytes).err().unwrap(); assert!(matches!( diff --git a/common/topology/src/lib.rs b/common/topology/src/lib.rs index 45eb2d9d7d..428efd1056 100644 --- a/common/topology/src/lib.rs +++ b/common/topology/src/lib.rs @@ -131,7 +131,7 @@ impl NymTopology { } pub fn mixes_in_layer(&self, layer: MixLayer) -> Vec { - assert!(vec![1, 2, 3].contains(&layer)); + assert!([1, 2, 3].contains(&layer)); self.mixes.get(&layer).unwrap().to_owned() } diff --git a/common/types/Cargo.toml b/common/types/Cargo.toml index 5515ba5248..4df4087661 100644 --- a/common/types/Cargo.toml +++ b/common/types/Cargo.toml @@ -17,7 +17,7 @@ serde_json = { workspace = true } strum = { version = "0.23", features = ["derive"] } thiserror = { workspace = true } url = { workspace = true } -ts-rs = "6.1.2" +ts-rs = { workspace = true } cosmwasm-std = { workspace = true } cosmrs = { workspace = true } diff --git a/common/wasm-utils/src/storage/mod.rs b/common/wasm-utils/src/storage/mod.rs index 1a5b601ce6..eb17949849 100644 --- a/common/wasm-utils/src/storage/mod.rs +++ b/common/wasm-utils/src/storage/mod.rs @@ -5,7 +5,6 @@ use crate::console_log; use crate::storage::cipher_export::StoredExportedStoreCipher; use crate::storage::error::StorageError; use futures::TryFutureExt; -use indexed_db_futures::IdbDatabase; use nym_store_cipher::{ Aes256Gcm, Algorithm, EncryptedData, KdfInfo, KeySizeUser, Params, StoreCipher, Unsigned, Version, diff --git a/explorer-api/explorer-api-requests/Cargo.toml b/explorer-api/explorer-api-requests/Cargo.toml index 7d8dc2f803..d7139b9f78 100644 --- a/explorer-api/explorer-api-requests/Cargo.toml +++ b/explorer-api/explorer-api-requests/Cargo.toml @@ -9,4 +9,4 @@ nym-mixnet-contract-common = { path = "../../common/cosmwasm-smart-contracts/mix nym-api-requests = { path = "../../nym-api/nym-api-requests" } schemars = { version = "0.8", features = ["preserve_order"] } serde = { version = "1.0", features = ["derive"] } -ts-rs = { version = "6.1.2", optional = true } +ts-rs = { workspace = true, optional = true } diff --git a/gateway/gateway-requests/src/registration/handshake/gateway.rs b/gateway/gateway-requests/src/registration/handshake/gateway.rs index 2afebbc115..69381dc5d4 100644 --- a/gateway/gateway-requests/src/registration/handshake/gateway.rs +++ b/gateway/gateway-requests/src/registration/handshake/gateway.rs @@ -94,7 +94,7 @@ impl<'a> GatewayHandshake<'a> { .to_bytes() .iter() .cloned() - .chain(material.into_iter()) + .chain(material) .collect() } diff --git a/gateway/gateway-requests/src/registration/handshake/shared_key.rs b/gateway/gateway-requests/src/registration/handshake/shared_key.rs index abe1754e31..d3101017a4 100644 --- a/gateway/gateway-requests/src/registration/handshake/shared_key.rs +++ b/gateway/gateway-requests/src/registration/handshake/shared_key.rs @@ -85,10 +85,7 @@ impl SharedKeys { let mac = compute_keyed_hmac::(self.mac_key(), &encrypted_data); - mac.into_bytes() - .into_iter() - .chain(encrypted_data.into_iter()) - .collect() + mac.into_bytes().into_iter().chain(encrypted_data).collect() } pub fn decrypt_tagged( diff --git a/nym-api/Cargo.toml b/nym-api/Cargo.toml index c9a0b8e8e4..506c0dda9a 100644 --- a/nym-api/Cargo.toml +++ b/nym-api/Cargo.toml @@ -47,7 +47,7 @@ tokio = { version = "1.24.1", features = [ tokio-stream = "0.1.11" url = { workspace = true } -ts-rs = {version = "6.1", optional = true} +ts-rs = { workspace = true, optional = true} anyhow = "1.0" getset = "0.1.1" diff --git a/nym-api/nym-api-requests/Cargo.toml b/nym-api/nym-api-requests/Cargo.toml index 37aded5efa..e890aa8e44 100644 --- a/nym-api/nym-api-requests/Cargo.toml +++ b/nym-api/nym-api-requests/Cargo.toml @@ -12,7 +12,7 @@ cosmwasm-std = { workspace = true, default-features = false } getset = "0.1.1" schemars = { version = "0.8", features = ["preserve_order"] } serde = { version = "1.0", features = ["derive"] } -ts-rs = { version = "6.1.2", optional = true } +ts-rs = { workspace = true, optional = true } nym-coconut-interface = { path = "../../common/coconut-interface" } nym-mixnet-contract-common = { path= "../../common/cosmwasm-smart-contracts/mixnet-contract" } diff --git a/nym-connect/desktop/Cargo.lock b/nym-connect/desktop/Cargo.lock index 612a9d8149..df5097ad1c 100644 --- a/nym-connect/desktop/Cargo.lock +++ b/nym-connect/desktop/Cargo.lock @@ -7557,9 +7557,9 @@ checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "ts-rs" -version = "6.2.1" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4added4070a4fdf9df03457206cd2e4b12417c8560a2954d91ffcbe60177a56a" +checksum = "e1ff1f8c90369bc172200013ac17ae86e7b5def580687df4e6127883454ff2b0" dependencies = [ "thiserror", "ts-rs-macros", @@ -7567,14 +7567,14 @@ dependencies = [ [[package]] name = "ts-rs-macros" -version = "6.2.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f807fdb3151fee75df7485b901a89624358cd07a67a8fb1a5831bf5a07681ff" +checksum = "a6f41cc0aeb7a4a55730188e147d3795a7349b501f8334697fd37629b896cdc2" dependencies = [ "Inflector", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.28", "termcolor", ] diff --git a/nym-connect/desktop/src-tauri/Cargo.toml b/nym-connect/desktop/src-tauri/Cargo.toml index 1844688af9..630adca45b 100644 --- a/nym-connect/desktop/src-tauri/Cargo.toml +++ b/nym-connect/desktop/src-tauri/Cargo.toml @@ -61,7 +61,7 @@ nym-task = { path = "../../../common/task" } nym-validator-client = { path = "../../../common/client-libs/validator-client" } [dev-dependencies] -ts-rs = "6.1.2" +ts-rs = "7.0.0" tempfile = "3.3.0" [features] diff --git a/nym-wallet/Cargo.lock b/nym-wallet/Cargo.lock index fbe8b1d3f4..3cb32da98f 100644 --- a/nym-wallet/Cargo.lock +++ b/nym-wallet/Cargo.lock @@ -5864,9 +5864,9 @@ checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "ts-rs" -version = "6.2.1" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4added4070a4fdf9df03457206cd2e4b12417c8560a2954d91ffcbe60177a56a" +checksum = "e1ff1f8c90369bc172200013ac17ae86e7b5def580687df4e6127883454ff2b0" dependencies = [ "thiserror", "ts-rs-macros", @@ -5874,14 +5874,14 @@ dependencies = [ [[package]] name = "ts-rs-macros" -version = "6.2.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f807fdb3151fee75df7485b901a89624358cd07a67a8fb1a5831bf5a07681ff" +checksum = "a6f41cc0aeb7a4a55730188e147d3795a7349b501f8334697fd37629b896cdc2" dependencies = [ "Inflector", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.28", "termcolor", ] diff --git a/nym-wallet/nym-wallet-types/Cargo.toml b/nym-wallet/nym-wallet-types/Cargo.toml index 670739ad5f..ca422a9832 100644 --- a/nym-wallet/nym-wallet-types/Cargo.toml +++ b/nym-wallet/nym-wallet-types/Cargo.toml @@ -9,7 +9,7 @@ hex-literal = "0.3.3" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" strum = { version = "0.23", features = ["derive"] } -ts-rs = "6.1.2" +ts-rs = "7.0.0" cosmwasm-std = "1.3.0" cosmrs = "=0.14.0" diff --git a/nym-wallet/src-tauri/Cargo.toml b/nym-wallet/src-tauri/Cargo.toml index 2297a1ac90..d6b9c1392a 100644 --- a/nym-wallet/src-tauri/Cargo.toml +++ b/nym-wallet/src-tauri/Cargo.toml @@ -66,7 +66,7 @@ nym-store-cipher = { path = "../../common/store-cipher", features = ["json"] } nym-crypto = { path = "../../common/crypto", features = ["rand"] } rand_chacha = "0.2" tempfile = "3.3.0" -ts-rs = "6.1.2" +ts-rs = "7.0.0" [features] default = ["custom-protocol"] diff --git a/service-providers/common/src/interface/control.rs b/service-providers/common/src/interface/control.rs index 8e808d6fdd..d6a0a28a68 100644 --- a/service-providers/common/src/interface/control.rs +++ b/service-providers/common/src/interface/control.rs @@ -130,7 +130,7 @@ impl Serializable for ControlResponse { fn into_bytes(self) -> Vec { std::iter::once(self.tag() as u8) - .chain(self.serialize_inner().into_iter()) + .chain(self.serialize_inner()) .collect() } diff --git a/service-providers/common/src/interface/request.rs b/service-providers/common/src/interface/request.rs index fefa1ffae6..12a884d79e 100644 --- a/service-providers/common/src/interface/request.rs +++ b/service-providers/common/src/interface/request.rs @@ -81,7 +81,7 @@ where pub fn into_bytes(self) -> Vec { if let Some(version) = self.interface_version.as_u8() { std::iter::once(version) - .chain(self.content.into_bytes(self.interface_version).into_iter()) + .chain(self.content.into_bytes(self.interface_version)) .collect() } else { self.content.into_bytes(self.interface_version) @@ -137,7 +137,7 @@ where } } else { std::iter::once(self.tag() as u8) - .chain(self.serialize_inner().into_iter()) + .chain(self.serialize_inner()) .collect() } } diff --git a/service-providers/common/src/interface/response.rs b/service-providers/common/src/interface/response.rs index 5aff60c5ad..ad502e8b30 100644 --- a/service-providers/common/src/interface/response.rs +++ b/service-providers/common/src/interface/response.rs @@ -71,7 +71,7 @@ where pub fn into_bytes(self) -> Vec { if let Some(version) = self.interface_version.as_u8() { std::iter::once(version) - .chain(self.content.into_bytes(self.interface_version).into_iter()) + .chain(self.content.into_bytes(self.interface_version)) .collect() } else { self.content.into_bytes(self.interface_version) @@ -127,7 +127,7 @@ where } } else { std::iter::once(self.tag() as u8) - .chain(self.serialize_inner().into_iter()) + .chain(self.serialize_inner()) .collect() } } diff --git a/tools/ts-rs-cli/Cargo.toml b/tools/ts-rs-cli/Cargo.toml index 41f9ead98d..5e315a761c 100644 --- a/tools/ts-rs-cli/Cargo.toml +++ b/tools/ts-rs-cli/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" [dependencies] anyhow = "1" -ts-rs = "6.1.2" +ts-rs = { workspace = true } walkdir = "2" nym-validator-client = { path = "../../common/client-libs/validator-client", features = [