diff --git a/Cargo.lock b/Cargo.lock index 39487af04..ae5513e44 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,6 +17,14 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "aead" +version = "0.6.0-pre.0" +source = "git+https://github.com/RustCrypto/traits.git#0a3687b58e59d5d2e196f59ca883a2d46eb76abb" +dependencies = [ + "crypto-common", +] + [[package]] name = "aes" version = "0.9.0-pre" @@ -28,6 +36,19 @@ dependencies = [ "cpufeatures", ] +[[package]] +name = "aes-gcm" +version = "0.11.0-pre" +source = "git+https://github.com/RustCrypto/AEADs.git#ad109f38b03124e7498bfe5e9830d1328f811d27" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + [[package]] name = "aho-corasick" version = "1.1.2" @@ -467,6 +488,14 @@ dependencies = [ "rand_core", ] +[[package]] +name = "ctr" +version = "0.10.0-pre" +source = "git+https://github.com/RustCrypto/block-modes.git#a0051b2892626f4bd4f96c8ec7ca942a1047bb3c" +dependencies = [ + "cipher", +] + [[package]] name = "der" version = "0.8.0-pre.0" @@ -722,6 +751,16 @@ dependencies = [ "wasi", ] +[[package]] +name = "ghash" +version = "0.6.0-pre.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f25097bbd647ae1fdd2fd6bcf100b77c5151e26af9cc2d2e81742c2cac27b7" +dependencies = [ + "opaque-debug", + "polyval", +] + [[package]] name = "gimli" version = "0.28.1" @@ -790,9 +829,9 @@ dependencies = [ [[package]] name = "hybrid-array" -version = "0.2.0-rc.8" +version = "0.2.0-rc.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53668f5da5a41d9eaf4bf7064be46d1ebe6a4e1ceed817f387587b18f2b51047" +checksum = "4d306b679262030ad8813a82d4915fc04efff97776e4db7f8eb5137039d56400" dependencies = [ "typenum", "zeroize", @@ -964,6 +1003,12 @@ version = "11.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + [[package]] name = "p256" version = "0.14.0-pre.0" @@ -1054,6 +1099,7 @@ name = "pkcs5" version = "0.8.0-pre.0" dependencies = [ "aes", + "aes-gcm", "cbc", "der", "des", @@ -1079,6 +1125,18 @@ dependencies = [ "tempfile", ] +[[package]] +name = "polyval" +version = "0.7.0-pre.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f3e1736974839c02569293a43b332c95269ccf635391bb7bbc75b41bef249b4" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -1776,6 +1834,16 @@ version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +[[package]] +name = "universal-hash" +version = "0.6.0-pre.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a05336f34009f6bb1c24794e2c04df87f4a0ced7a091692e395119f34fd3f4c5" +dependencies = [ + "crypto-common", + "subtle", +] + [[package]] name = "utf8parse" version = "0.2.1" diff --git a/cms/src/builder.rs b/cms/src/builder.rs index 5fad20be8..0fdd5e88e 100644 --- a/cms/src/builder.rs +++ b/cms/src/builder.rs @@ -1020,7 +1020,8 @@ macro_rules! encrypt_block_mode { ))); } ( - Key::<$block_mode::$typ<$alg>>::from_slice(key).to_owned(), + Key::<$block_mode::$typ<$alg>>::try_from(key) + .expect("size invariants violation"), $block_mode::$typ::<$alg>::generate_iv_with_rng($rng)?, ) } diff --git a/sec1/Cargo.toml b/sec1/Cargo.toml index 831c56a1a..e93c1119a 100644 --- a/sec1/Cargo.toml +++ b/sec1/Cargo.toml @@ -19,7 +19,7 @@ rust-version = "1.72" [dependencies] base16ct = { version = "0.2", optional = true, default-features = false } der = { version = "=0.8.0-pre.0", optional = true, features = ["oid"] } -hybrid-array = { version = "0.2.0-rc.8", optional = true, default-features = false } +hybrid-array = { version = "0.2.0-rc.9", optional = true, default-features = false } pkcs8 = { version = "=0.11.0-pre.0", optional = true, default-features = false } serdect = { version = "=0.3.0-pre.0", optional = true, default-features = false, features = ["alloc"] } subtle = { version = "2", optional = true, default-features = false } diff --git a/sec1/src/point.rs b/sec1/src/point.rs index 17507922b..6d2c69f98 100644 --- a/sec1/src/point.rs +++ b/sec1/src/point.rs @@ -210,7 +210,7 @@ where } let (x_bytes, y_bytes) = self.bytes[1..].split_at(Size::to_usize()); - let x = Array::from_slice(x_bytes); + let x = x_bytes.try_into().expect("size invariants were violated"); if self.is_compressed() { Coordinates::Compressed { @@ -222,7 +222,7 @@ where } else { Coordinates::Uncompressed { x, - y: Array::from_slice(y_bytes), + y: y_bytes.try_into().expect("size invariants were violated"), } } }