diff --git a/Cargo.lock b/Cargo.lock index 568f9e55b0b..78177d5933c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -816,9 +816,9 @@ dependencies = [ [[package]] name = "bls12_381" version = "0.8.0" -source = "git+https://github.com/jstuczyn/bls12_381?branch=temp/experimental-serdect#22cd0a16b674af1629110a2dc8b6cf6c73ea4cd9" +source = "git+https://github.com/jstuczyn/bls12_381?branch=temp/experimental-serdect-updated#9bf520059cb28323fc51469cae86868ef4fa6fbd" dependencies = [ - "digest 0.9.0", + "digest 0.10.7", "ff", "group", "pairing", @@ -4850,7 +4850,7 @@ dependencies = [ "semver 1.0.26", "serde", "serde_json", - "sha2 0.9.9", + "sha2 0.10.8", "sqlx", "tempfile", "tendermint 0.40.1", @@ -5330,7 +5330,7 @@ dependencies = [ "bs58", "cfg-if", "criterion", - "digest 0.9.0", + "digest 0.10.7", "ff", "group", "itertools 0.14.0", @@ -5339,7 +5339,7 @@ dependencies = [ "rand 0.8.5", "rayon", "serde", - "sha2 0.9.9", + "sha2 0.10.8", "subtle 2.6.1", "thiserror 2.0.12", "zeroize", @@ -5612,7 +5612,7 @@ dependencies = [ "rand_core 0.6.4", "serde", "serde_derive", - "sha2 0.9.9", + "sha2 0.10.8", "thiserror 2.0.12", "zeroize", ] diff --git a/Cargo.toml b/Cargo.toml index ba1acb44684..077bb12f833 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -370,7 +370,7 @@ prometheus = { version = "0.13.0" } # unfortunately until https://github.com/zkcrypto/bls12_381/issues/10 is resolved, we have to rely on the fork # as we need to be able to serialize Gt so that we could create the lookup table for baby-step-giant-step algorithm # plus to make our live easier we need serde support from https://github.com/zkcrypto/bls12_381/pull/125 -bls12_381 = { git = "https://github.com/jstuczyn/bls12_381", default-features = false, branch = "temp/experimental-serdect" } +bls12_381 = { git = "https://github.com/jstuczyn/bls12_381", default-features = false, branch = "temp/experimental-serdect-updated" } group = { version = "0.13.0", default-features = false } ff = { version = "0.13.1", default-features = false } subtle = "2.5.0" diff --git a/common/dkg/Cargo.toml b/common/dkg/Cargo.toml index 799e38a7023..58e899d7b37 100644 --- a/common/dkg/Cargo.toml +++ b/common/dkg/Cargo.toml @@ -21,7 +21,7 @@ lazy_static = { workspace = true } rand = { workspace = true } rand_chacha = { workspace = true } rand_core = { workspace = true } -sha2 = "0.9" +sha2 = { workspace = true } serde = { workspace = true } serde_derive = { workspace = true } thiserror = { workspace = true } diff --git a/common/dkg/src/utils.rs b/common/dkg/src/utils.rs index 28fb99ad5d4..e654a83f8c1 100644 --- a/common/dkg/src/utils.rs +++ b/common/dkg/src/utils.rs @@ -54,12 +54,12 @@ pub(crate) fn hash_to_scalar>(msg: M, domain: &[u8]) -> Scalar { pub(crate) fn hash_to_scalars>(msg: M, domain: &[u8], n: usize) -> Vec { let mut output = vec![Scalar::zero(); n]; - Scalar::hash_to_field::>(msg.as_ref(), domain, &mut output); + Scalar::hash_to_field::, _>([msg], domain, &mut output); output } pub(crate) fn hash_g2>(msg: M, domain: &[u8]) -> G2Projective { - >>::hash_to_curve(msg, domain) + >>::hash_to_curve([msg], domain) } pub(crate) fn combine_scalar_chunks(chunks: &[Scalar]) -> Scalar { @@ -112,3 +112,97 @@ pub(crate) fn deserialize_g2(b: &[u8]) -> Option { G2Projective::from_bytes(&encoding).into() } } + +#[cfg(test)] +mod tests { + use super::*; + use bls12_381::G2Affine; + + #[test] + fn test_hash_to_scalar() { + let msg1 = "foo"; + let expected1 = Scalar::from_bytes(&[ + 253, 57, 224, 227, 175, 195, 226, 82, 46, 175, 33, 126, 171, 239, 255, 92, 108, 168, 6, + 79, 90, 11, 235, 236, 221, 10, 85, 133, 42, 81, 95, 30, + ]) + .unwrap(); + + let msg2 = "bar"; + let expected2 = Scalar::from_bytes(&[ + 48, 83, 69, 52, 42, 18, 135, 244, 211, 190, 160, 196, 118, 154, 24, 126, 0, 125, 72, + 201, 170, 225, 123, 201, 52, 120, 171, 132, 235, 182, 20, 26, + ]) + .unwrap(); + + let msg3 = [ + 33, 135, 76, 234, 71, 35, 247, 216, 39, 242, 42, 88, 152, 29, 74, 135, 9, 29, 216, 123, + 250, 87, 108, 29, 245, 126, 109, 102, 84, 71, 158, 224, 145, 243, 49, 121, 244, 27, + 115, 121, 25, 66, 216, 67, 97, 101, 140, 160, 77, 239, 114, 215, 152, 48, 15, 231, 101, + 60, 42, 92, 128, 131, 161, 43, + ]; + let expected3 = Scalar::from_bytes(&[ + 128, 189, 8, 43, 186, 55, 52, 61, 171, 196, 159, 177, 162, 100, 27, 143, 85, 83, 218, + 171, 91, 220, 155, 25, 7, 38, 2, 36, 4, 93, 136, 4, + ]) + .unwrap(); + + assert_eq!( + hash_to_scalar(msg1, b"NYMECASH-V01-CS02-with-expander-SHA256"), + expected1 + ); + assert_eq!( + hash_to_scalar(msg2, b"NYMECASH-V01-CS02-with-expander-SHA256"), + expected2 + ); + assert_eq!( + hash_to_scalar(msg3, b"NYMECASH-V01-CS02-with-expander-SHA256"), + expected3 + ); + } + + #[test] + fn test_hash_g2() { + let msg1 = "foo"; + let expected1 = G2Affine::from_compressed(&[ + 175, 187, 62, 7, 29, 17, 42, 93, 28, 93, 234, 253, 101, 166, 158, 187, 153, 82, 93, 18, + 11, 233, 36, 107, 51, 117, 30, 127, 32, 254, 210, 77, 133, 12, 253, 255, 84, 128, 36, + 214, 234, 103, 50, 21, 26, 78, 112, 49, 20, 69, 19, 109, 7, 78, 33, 227, 196, 180, 168, + 219, 73, 251, 192, 221, 41, 138, 160, 131, 191, 186, 156, 117, 179, 179, 191, 235, 171, + 26, 219, 148, 170, 179, 11, 38, 137, 14, 95, 115, 171, 186, 163, 82, 158, 6, 239, 88, + ]) + .unwrap() + .into(); + + let msg2 = "bar"; + let expected2 = G2Affine::from_compressed(&[ + 183, 25, 90, 187, 34, 184, 30, 182, 215, 242, 158, 83, 116, 34, 210, 96, 188, 79, 83, + 255, 100, 122, 90, 188, 196, 93, 164, 253, 20, 106, 205, 33, 48, 140, 60, 149, 66, 246, + 121, 244, 146, 66, 170, 60, 113, 95, 102, 237, 25, 231, 8, 42, 121, 124, 180, 140, 34, + 104, 173, 251, 89, 189, 28, 196, 49, 66, 101, 38, 68, 44, 40, 235, 21, 35, 204, 123, + 218, 238, 216, 92, 134, 217, 212, 246, 176, 77, 187, 0, 245, 134, 132, 73, 31, 44, 137, + 197, + ]) + .unwrap() + .into(); + let msg3 = [ + 33, 135, 76, 234, 71, 35, 247, 216, 39, 242, 42, 88, 152, 29, 74, 135, 9, 29, 216, 123, + 250, 87, 108, 29, 245, 126, 109, 102, 84, 71, 158, 224, 145, 243, 49, 121, 244, 27, + 115, 121, 25, 66, 216, 67, 97, 101, 140, 160, 77, 239, 114, 215, 152, 48, 15, 231, 101, + 60, 42, 92, 128, 131, 161, 43, + ]; + let expected3 = G2Affine::from_compressed(&[ + 151, 185, 8, 123, 223, 150, 192, 192, 115, 10, 3, 129, 49, 179, 31, 108, 0, 17, 46, + 231, 184, 164, 247, 228, 22, 142, 87, 70, 120, 111, 154, 15, 245, 110, 32, 84, 53, 117, + 239, 93, 89, 119, 32, 17, 39, 250, 198, 137, 6, 95, 137, 202, 54, 244, 238, 190, 11, + 217, 237, 95, 72, 59, 140, 56, 3, 42, 61, 195, 192, 101, 46, 204, 207, 75, 70, 176, + 207, 48, 24, 195, 248, 234, 178, 168, 54, 109, 19, 189, 51, 52, 120, 69, 248, 226, 102, + 91, + ]) + .unwrap() + .into(); + + assert_eq!(hash_g2(msg1, b"DUMMY_TEST_DOMAIN"), expected1); + assert_eq!(hash_g2(msg2, b"DUMMY_TEST_DOMAIN"), expected2); + assert_eq!(hash_g2(msg3, b"DUMMY_TEST_DOMAIN"), expected3); + } +} diff --git a/common/nym_offline_compact_ecash/Cargo.toml b/common/nym_offline_compact_ecash/Cargo.toml index 9b29d818fe9..718787b457c 100644 --- a/common/nym_offline_compact_ecash/Cargo.toml +++ b/common/nym_offline_compact_ecash/Cargo.toml @@ -15,10 +15,10 @@ bls12_381 = { workspace = true, features = ["alloc", "pairings", "experimental", bincode.workspace = true cfg-if.workspace = true itertools = { workspace = true } -digest = "0.9" +digest = { workspace = true } rand = { workspace = true } thiserror = { workspace = true } -sha2 = "0.9" +sha2 = { workspace = true } bs58 = { workspace = true } serde = { workspace = true, features = ["derive"] } rayon = { workspace = true, optional = true } diff --git a/common/nym_offline_compact_ecash/src/utils.rs b/common/nym_offline_compact_ecash/src/utils.rs index 57a648fff24..a04f377ddfc 100644 --- a/common/nym_offline_compact_ecash/src/utils.rs +++ b/common/nym_offline_compact_ecash/src/utils.rs @@ -113,17 +113,13 @@ const G1_HASH_DOMAIN: &[u8] = b"NYMECASH-V01-CS02-with-BLS12381G1_XMD:SHA-256_SS const SCALAR_HASH_DOMAIN: &[u8] = b"NYMECASH-V01-CS02-with-expander-SHA256"; pub fn hash_g1>(msg: M) -> G1Projective { - >>::hash_to_curve(msg, G1_HASH_DOMAIN) + >>::hash_to_curve([msg], G1_HASH_DOMAIN) } pub fn hash_to_scalar>(msg: M) -> Scalar { let mut output = vec![Scalar::zero()]; - Scalar::hash_to_field::>( - msg.as_ref(), - SCALAR_HASH_DOMAIN, - &mut output, - ); + Scalar::hash_to_field::, _>([msg], SCALAR_HASH_DOMAIN, &mut output); output[0] } @@ -401,4 +397,75 @@ mod tests { assert_eq!(hash_to_scalar(msg2), hash_to_scalar(msg2)); assert_ne!(hash_to_scalar(msg1), hash_to_scalar(msg2)); } + + #[test] + fn test_hash_to_scalar() { + let msg1 = "foo"; + let expected1 = Scalar::from_bytes(&[ + 253, 57, 224, 227, 175, 195, 226, 82, 46, 175, 33, 126, 171, 239, 255, 92, 108, 168, 6, + 79, 90, 11, 235, 236, 221, 10, 85, 133, 42, 81, 95, 30, + ]) + .unwrap(); + + let msg2 = "bar"; + let expected2 = Scalar::from_bytes(&[ + 48, 83, 69, 52, 42, 18, 135, 244, 211, 190, 160, 196, 118, 154, 24, 126, 0, 125, 72, + 201, 170, 225, 123, 201, 52, 120, 171, 132, 235, 182, 20, 26, + ]) + .unwrap(); + + let msg3 = [ + 33, 135, 76, 234, 71, 35, 247, 216, 39, 242, 42, 88, 152, 29, 74, 135, 9, 29, 216, 123, + 250, 87, 108, 29, 245, 126, 109, 102, 84, 71, 158, 224, 145, 243, 49, 121, 244, 27, + 115, 121, 25, 66, 216, 67, 97, 101, 140, 160, 77, 239, 114, 215, 152, 48, 15, 231, 101, + 60, 42, 92, 128, 131, 161, 43, + ]; + let expected3 = Scalar::from_bytes(&[ + 128, 189, 8, 43, 186, 55, 52, 61, 171, 196, 159, 177, 162, 100, 27, 143, 85, 83, 218, + 171, 91, 220, 155, 25, 7, 38, 2, 36, 4, 93, 136, 4, + ]) + .unwrap(); + + assert_eq!(hash_to_scalar(msg1), expected1); + assert_eq!(hash_to_scalar(msg2), expected2); + assert_eq!(hash_to_scalar(msg3), expected3); + } + + #[test] + fn test_hash_to_g1() { + let msg1 = "foo"; + let expected1 = G1Affine::from_compressed(&[ + 161, 109, 186, 0, 192, 221, 83, 87, 71, 31, 120, 201, 185, 35, 62, 239, 46, 120, 117, + 150, 191, 227, 128, 161, 78, 201, 207, 167, 86, 181, 229, 115, 2, 6, 178, 16, 251, 118, + 219, 115, 184, 96, 2, 10, 31, 63, 150, 70, + ]) + .unwrap() + .into(); + + let msg2 = "bar"; + let expected2 = G1Affine::from_compressed(&[ + 135, 102, 204, 42, 221, 49, 209, 192, 250, 87, 59, 255, 197, 93, 37, 113, 38, 2, 154, + 233, 68, 234, 206, 182, 121, 212, 166, 210, 74, 155, 190, 33, 203, 237, 176, 60, 249, + 241, 53, 170, 18, 168, 49, 35, 1, 151, 205, 174, + ]) + .unwrap() + .into(); + let msg3 = [ + 33, 135, 76, 234, 71, 35, 247, 216, 39, 242, 42, 88, 152, 29, 74, 135, 9, 29, 216, 123, + 250, 87, 108, 29, 245, 126, 109, 102, 84, 71, 158, 224, 145, 243, 49, 121, 244, 27, + 115, 121, 25, 66, 216, 67, 97, 101, 140, 160, 77, 239, 114, 215, 152, 48, 15, 231, 101, + 60, 42, 92, 128, 131, 161, 43, + ]; + let expected3 = G1Affine::from_compressed(&[ + 184, 200, 211, 115, 47, 45, 39, 185, 105, 9, 222, 247, 132, 241, 121, 130, 238, 224, + 155, 109, 105, 201, 137, 154, 132, 149, 214, 233, 136, 69, 77, 132, 174, 30, 46, 123, + 20, 92, 219, 18, 45, 29, 208, 127, 158, 145, 130, 41, + ]) + .unwrap() + .into(); + + assert_eq!(hash_g1(msg1), expected1); + assert_eq!(hash_g1(msg2), expected2); + assert_eq!(hash_g1(msg3), expected3); + } } diff --git a/contracts/Cargo.lock b/contracts/Cargo.lock index 84d01817dea..3f161750a12 100644 --- a/contracts/Cargo.lock +++ b/contracts/Cargo.lock @@ -1185,6 +1185,7 @@ name = "nym-pemstore" version = "0.3.0" dependencies = [ "pem", + "tracing", ] [[package]] @@ -1251,6 +1252,12 @@ dependencies = [ "regex", ] +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + [[package]] name = "pkcs8" version = "0.9.0" @@ -1522,18 +1529,18 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.25" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" dependencies = [ "serde", ] [[package]] name = "serde" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] @@ -1558,9 +1565,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", @@ -1777,9 +1784,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.37" +version = "0.3.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +checksum = "dad298b01a40a23aac4580b67e3dbedb7cc8402f3592d7f49469de2ea4aecdd8" dependencies = [ "deranged", "itoa", @@ -1794,15 +1801,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "765c97a5b985b7c11d7bc27fa927dc4fe6af3a6dfb021d28deb60d3bf51e76ef" [[package]] name = "time-macros" -version = "0.2.19" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +checksum = "e8093bc3e81c3bc5f7879de09619d06c9a5a5e45ca44dfeeb7225bae38005c5c" dependencies = [ "num-conv", "time-core", @@ -1840,6 +1847,37 @@ dependencies = [ "winnow", ] +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", +] + [[package]] name = "typenum" version = "1.18.0" diff --git a/nym-api/Cargo.toml b/nym-api/Cargo.toml index aa6b966b7fe..5c4d336f86e 100644 --- a/nym-api/Cargo.toml +++ b/nym-api/Cargo.toml @@ -141,7 +141,7 @@ tempfile = { workspace = true } cw3 = { workspace = true } cw-utils = { workspace = true } rand_chacha = { workspace = true } -sha2 = "0.9" +sha2 = { workspace = true } [lints] workspace = true diff --git a/nym-api/src/ecash/tests/mod.rs b/nym-api/src/ecash/tests/mod.rs index e1f0c38083c..3afd91f7e7c 100644 --- a/nym-api/src/ecash/tests/mod.rs +++ b/nym-api/src/ecash/tests/mod.rs @@ -109,7 +109,7 @@ impl InternalCounters { // just hash the current counter self.tx_hash_counter += 1; - Hash::Sha256(sha2::Sha256::digest(&self.tx_hash_counter.to_be_bytes()).into()) + Hash::Sha256(sha2::Sha256::digest(self.tx_hash_counter.to_be_bytes()).into()) } #[allow(dead_code)] diff --git a/nym-wallet/Cargo.lock b/nym-wallet/Cargo.lock index b2a22e4a9da..0a964a075fd 100644 --- a/nym-wallet/Cargo.lock +++ b/nym-wallet/Cargo.lock @@ -385,15 +385,15 @@ dependencies = [ [[package]] name = "bls12_381" version = "0.8.0" -source = "git+https://github.com/jstuczyn/bls12_381?branch=temp/experimental-serdect#22cd0a16b674af1629110a2dc8b6cf6c73ea4cd9" +source = "git+https://github.com/jstuczyn/bls12_381?branch=temp/experimental-serdect-updated#9bf520059cb28323fc51469cae86868ef4fa6fbd" dependencies = [ - "digest 0.9.0", + "digest 0.10.7", "ff", "group", "pairing", "rand_core 0.6.4", "serde", - "serdect 0.3.0-pre.0", + "serdect 0.3.0", "subtle", "zeroize", ] @@ -1583,9 +1583,9 @@ dependencies = [ [[package]] name = "ff" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ "rand_core 0.6.4", "subtle", @@ -3341,7 +3341,7 @@ dependencies = [ "bls12_381", "bs58", "cfg-if", - "digest 0.9.0", + "digest 0.10.7", "ff", "group", "itertools 0.14.0", @@ -3349,7 +3349,7 @@ dependencies = [ "nym-pemstore", "rand 0.8.5", "serde", - "sha2 0.9.9", + "sha2 0.10.8", "subtle", "thiserror 2.0.11", "zeroize", @@ -5063,18 +5063,18 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.25" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" dependencies = [ "serde", ] [[package]] name = "serde" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] @@ -5090,18 +5090,18 @@ dependencies = [ [[package]] name = "serde_bytes" -version = "0.11.16" +version = "0.11.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "364fec0df39c49a083c9a8a18a23a6bcfd9af130fe9fe321d18520a0d113e09e" +checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" dependencies = [ "serde", ] [[package]] name = "serde_derive" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", @@ -5197,9 +5197,9 @@ dependencies = [ [[package]] name = "serdect" -version = "0.3.0-pre.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791ef964bfaba6be28a5c3f0c56836e17cb711ac009ca1074b9c735a3ebf240a" +checksum = "f42f67da2385b51a5f9652db9c93d78aeaf7610bf5ec366080b6de810604af53" dependencies = [ "base16ct", "serde", @@ -6056,9 +6056,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.37" +version = "0.3.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +checksum = "dad298b01a40a23aac4580b67e3dbedb7cc8402f3592d7f49469de2ea4aecdd8" dependencies = [ "deranged", "itoa 1.0.9", @@ -6073,15 +6073,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "765c97a5b985b7c11d7bc27fa927dc4fe6af3a6dfb021d28deb60d3bf51e76ef" [[package]] name = "time-macros" -version = "0.2.19" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +checksum = "e8093bc3e81c3bc5f7879de09619d06c9a5a5e45ca44dfeeb7225bae38005c5c" dependencies = [ "num-conv", "time-core", @@ -6114,9 +6114,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.43.0" +version = "1.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" +checksum = "9975ea0f48b5aa3972bf2d888c238182458437cc2a19374b81b25cdf1023fb3a" dependencies = [ "backtrace", "bytes",