From 5dfaff6296b2f714d28903553c1afdeb97df833c Mon Sep 17 00:00:00 2001 From: Drazen Urch Date: Tue, 21 Sep 2021 10:59:17 +0200 Subject: [PATCH] Update hmac and blake3 (#673) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update hmac and blake3 * Remain paranoid for `0.*` crates * Most paranoid versions :) * Updated aes and using published version of blake3 Co-authored-by: Jędrzej Stuczyński --- Cargo.lock | 470 ++++++++---------- .../src/client/reply_key_storage.rs | 2 +- common/crypto/Cargo.toml | 15 +- common/crypto/src/hmac.rs | 4 +- common/crypto/src/lib.rs | 2 +- common/crypto/src/shared_key.rs | 14 +- common/crypto/src/symmetric/stream_cipher.rs | 41 +- .../acknowledgements/src/identifier.rs | 4 +- common/nymsphinx/acknowledgements/src/key.rs | 8 +- .../anonymous-replies/src/encryption_key.rs | 8 +- common/nymsphinx/params/src/lib.rs | 2 +- gateway/gateway-requests/src/iv.rs | 4 +- .../src/registration/handshake/shared_key.rs | 8 +- 13 files changed, 261 insertions(+), 321 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e13f354df6..96bd1abd39 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,7 +1,5 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -# Copyright 2020 - Nym Technologies SA -# SPDX-License-Identifier: Apache-2.0 version = 3 [[package]] @@ -32,41 +30,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "495ee669413bfbe9e8cace80f4d3d78e6d8c8d99579f97fb93bde351b185f2d4" dependencies = [ "cfg-if 1.0.0", - "cipher 0.3.0", + "cipher", "cpufeatures", - "ctr 0.7.0", - "opaque-debug 0.3.0", -] - -[[package]] -name = "aes-ctr" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7729c3cde54d67063be556aeac75a81330d802f0259500ca40cb52967f975763" -dependencies = [ - "aes-soft", - "aesni", - "cipher 0.2.5", - "ctr 0.6.0", -] - -[[package]] -name = "aes-soft" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072" -dependencies = [ - "cipher 0.2.5", - "opaque-debug 0.3.0", -] - -[[package]] -name = "aesni" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0ce" -dependencies = [ - "cipher 0.2.5", + "ctr", "opaque-debug 0.3.0", ] @@ -110,9 +76,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.42" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595d3cfa7a60d4555cb5067b99f07142a08ea778de5cf993f7b75c7d8fabc486" +checksum = "28ae2b3dec75a406790005a200b1bd89785afc02517a00ca99ecfe093ee9e6cf" [[package]] name = "app" @@ -141,6 +107,12 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" +[[package]] +name = "arrayvec" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4dc07131ffa69b8072d35f5007352af944213cde02545e2103680baed38fcd" + [[package]] name = "async-stream" version = "0.3.2" @@ -308,11 +280,11 @@ checksum = "b48054b307f98bf2ddb17ffd4e9d029bfaf3e7cd5fe807e412768e4370015e3d" dependencies = [ "bs58", "hkd32", - "hmac 0.11.0", + "hmac", "k256", "ripemd160", "sha2", - "subtle 2.4.0", + "subtle 2.4.1", "zeroize", ] @@ -337,9 +309,9 @@ checksum = "7ce18265ec2324ad075345d5814fbeed4f41f0a660055dc78840b74d19b874b1" [[package]] name = "bitflags" -version = "1.2.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitvec" @@ -372,7 +344,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b64485778c4f16a6a5a9d335e80d449ac6c70cdd6a06d2af18a6f6f775a125b3" dependencies = [ "arrayref", - "arrayvec", + "arrayvec 0.5.2", "cc", "cfg-if 0.1.10", "constant_time_eq", @@ -381,6 +353,21 @@ dependencies = [ "rayon", ] +[[package]] +name = "blake3" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcd555c66291d5f836dbb6883b48660ece810fe25a31f3bdfb911945dff2691f" +dependencies = [ + "arrayref", + "arrayvec 0.7.1", + "cc", + "cfg-if 1.0.0", + "constant_time_eq", + "crypto-mac 0.11.1", + "digest 0.9.0", +] + [[package]] name = "block" version = "0.1.6" @@ -435,7 +422,7 @@ dependencies = [ "group", "pairing", "rand_core 0.6.3", - "subtle 2.4.0", + "subtle 2.4.1", ] [[package]] @@ -535,9 +522,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.68" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a72c244c1ff497a746a7e1fb3d14bd08420ecda70c8f25c7112f2781652d787" +checksum = "e70cc2f62c6ce1868963827bd677764c62d07c3d9a3e1fb1177ee1a9ab199eb2" dependencies = [ "jobserver", ] @@ -590,19 +577,10 @@ dependencies = [ "num-integer", "num-traits", "serde", - "time 0.1.43", + "time 0.1.44", "winapi", ] -[[package]] -name = "cipher" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" -dependencies = [ - "generic-array 0.14.4", -] - [[package]] name = "cipher" version = "0.3.0" @@ -810,9 +788,9 @@ checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" [[package]] name = "cookie" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdf8865bac3d9a3bde5bde9088ca431b11f5d37c7a578b8086af77248b76627" +checksum = "d5f1c7727e460397e56abc4bddc1d49e07a1ad78fc98eb2e1c8f032a58a2f80d" dependencies = [ "percent-encoding", "time 0.2.27", @@ -1069,15 +1047,15 @@ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" name = "crypto" version = "0.1.0" dependencies = [ - "aes-ctr", - "blake3", + "aes", + "blake3 1.0.0", "bs58", - "cipher 0.2.5", + "cipher", "digest 0.9.0", "ed25519-dalek", "generic-array 0.14.4", - "hkdf 0.10.0", - "hmac 0.8.1", + "hkdf", + "hmac", "log", "nymsphinx-types", "pemstore", @@ -1093,7 +1071,7 @@ checksum = "b32a398eb1ccfbe7e4f452bc749c44d38dd732e9a253f19da224c416f00ee7f4" dependencies = [ "generic-array 0.14.4", "rand_core 0.6.3", - "subtle 2.4.0", + "subtle 2.4.1", "zeroize", ] @@ -1114,27 +1092,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ "generic-array 0.14.4", - "subtle 2.4.0", + "subtle 2.4.1", ] [[package]] name = "crypto-mac" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4857fd85a0c34b3c3297875b747c1e02e06b6a0ea32dd892d8192b9ce0813ea6" +checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" dependencies = [ "generic-array 0.14.4", - "subtle 2.4.0", -] - -[[package]] -name = "crypto-mac" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25fab6889090c8133f3deb8f73ba3c65a7f456f66436fc012a1b1e272b1e103e" -dependencies = [ - "generic-array 0.14.4", - "subtle 2.4.0", + "subtle 2.4.1", ] [[package]] @@ -1173,34 +1141,25 @@ dependencies = [ "sct", ] -[[package]] -name = "ctr" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb4a30d54f7443bf3d6191dcd486aca19e67cb3c49fa7a06a319966346707e7f" -dependencies = [ - "cipher 0.2.5", -] - [[package]] name = "ctr" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a232f92a03f37dd7d7dd2adc67166c77e9cd88de5b019b9a9eecfaeaf7bfd481" dependencies = [ - "cipher 0.3.0", + "cipher", ] [[package]] name = "curve25519-dalek" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "639891fde0dbea823fc3d798a0fdf9d2f9440a42d64a78ab3488b0ca025117b3" +checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" dependencies = [ "byteorder", "digest 0.9.0", "rand_core 0.5.1", - "subtle 2.4.0", + "subtle 2.4.1", "zeroize", ] @@ -1306,9 +1265,9 @@ dependencies = [ [[package]] name = "der" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f215f706081a44cb702c71c39a52c05da637822e9c1645a50b7202689e982d" +checksum = "31e21d2d0f22cde6e88694108429775c0219760a07779bf96503b434a03d7412" dependencies = [ "const-oid", ] @@ -1326,21 +1285,22 @@ dependencies = [ [[package]] name = "derive_more" -version = "0.99.14" +version = "0.99.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc7b9cef1e351660e5443924e4f43ab25fbbed3e9a5f052df3677deb4d6b320" +checksum = "40eebddd2156ce1bb37b20bbe5151340a31828b1f2d22ba4141f3531710e38df" dependencies = [ "convert_case", "proc-macro2", "quote", + "rustc_version 0.3.3", "syn", ] [[package]] name = "devise" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "411cf45ac38f00df3679689616649dc12607b846db171780bb790b514a042832" +checksum = "50c7580b072f1c8476148f16e0a0d5dedddab787da98d86c5082c5e9ed8ab595" dependencies = [ "devise_codegen", "devise_core", @@ -1348,9 +1308,9 @@ dependencies = [ [[package]] name = "devise_codegen" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cf7081f06822f1787e29359354426132cf832cc977d7a8ff747848631462ad1" +checksum = "123c73e7a6e51b05c75fe1a1b2f4e241399ea5740ed810b0e3e6cacd9db5e7b2" dependencies = [ "devise_core", "quote", @@ -1358,9 +1318,9 @@ dependencies = [ [[package]] name = "devise_core" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80c23631758736875d7ce08f847f296b4001b72cf90878e85b47df7ac5442147" +checksum = "841ef46f4787d9097405cac4e70fb8644fc037b526e8c14054247c0263c400d0" dependencies = [ "bitflags", "proc-macro2", @@ -1475,21 +1435,21 @@ checksum = "ee2626afccd7561a06cf1367e2950c4718ea04565e20fb5029b6c7d8ad09abcf" [[package]] name = "ecdsa" -version = "0.12.2" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05cb0ed2d2ce37766ac86c05f66973ace8c51f7f1533bedce8fb79e2b54b3f14" +checksum = "43ee23aa5b4f68c7a092b5c3beb25f50c406adc75e2363634f242f28ab255372" dependencies = [ "der", "elliptic-curve", - "hmac 0.11.0", + "hmac", "signature", ] [[package]] name = "ed25519" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d0860415b12243916284c67a9be413e044ee6668247b99ba26d94b2bc06c8f6" +checksum = "4620d40f6d2601794401d6dd95a5cf69b6c157852539470eeda433a99b3c0efc" dependencies = [ "serde", "signature", @@ -1532,9 +1492,9 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" [[package]] name = "elliptic-curve" -version = "0.10.4" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83e5c176479da93a0983f0a6fdc3c1b8e7d5be0d7fe3fe05a99f15b96582b9a8" +checksum = "069397e10739989e400628cbc0556a817a8a64119d7a2315767f4456e1332c23" dependencies = [ "crypto-bigint", "ff", @@ -1542,7 +1502,7 @@ dependencies = [ "group", "pkcs8", "rand_core 0.6.3", - "subtle 2.4.0", + "subtle 2.4.1", "zeroize", ] @@ -1618,12 +1578,12 @@ checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" [[package]] name = "ff" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63eec06c61e487eecf0f7e6e6372e596a81922c28d33e645d6983ca6493a1af0" +checksum = "d0f40b2dcd8bc322217a5f6559ae5f9e9d1de202a2ecee2e9eafcbece7562a4f" dependencies = [ "rand_core 0.6.3", - "subtle 2.4.0", + "subtle 2.4.1", ] [[package]] @@ -1642,9 +1602,9 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d34cfa13a63ae058bfa601fe9e313bbdb3746427c1459185464ce0fcf62e1e8" +checksum = "975ccf83d8d9d0d84682850a38c8169027be83368805971cc4f238c2b245bc98" dependencies = [ "cfg-if 1.0.0", "libc", @@ -1744,9 +1704,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7e43a803dae2fa37c1f6a8fe121e1f7bf9548b4dfc0522a42f34145dadfc27" +checksum = "1adc00f486adfc9ce99f77d717836f0c5aa84965eb0b4f051f4e83f7cab53f8b" dependencies = [ "futures-channel", "futures-core", @@ -1759,9 +1719,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e682a68b29a882df0545c143dc3646daefe80ba479bcdede94d5a703de2871e2" +checksum = "74ed2411805f6e4e3d9bc904c95d5d423b89b3b25dc0250aa74729de20629ff9" dependencies = [ "futures-core", "futures-sink", @@ -1769,15 +1729,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0402f765d8a89a26043b889b26ce3c4679d268fa6bb22cd7c6aad98340e179d1" +checksum = "af51b1b4a7fdff033703db39de8802c673eb91855f2e0d47dcf3bf2c0ef01f99" [[package]] name = "futures-executor" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "badaa6a909fac9e7236d0620a2f57f7664640c56575b71a7552fbd68deafab79" +checksum = "4d0d535a57b87e1ae31437b892713aee90cd2d7b0ee48727cd11fc72ef54761c" dependencies = [ "futures-core", "futures-task", @@ -1786,15 +1746,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acc499defb3b348f8d8f3f66415835a9131856ff7714bf10dadfc4ec4bdb29a1" +checksum = "0b0e06c393068f3a6ef246c75cdca793d6a46347e75286933e5e75fd2fd11582" [[package]] name = "futures-macro" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c40298486cdf52cc00cd6d6987892ba502c7656a16a4192a9992b1ccedd121" +checksum = "c54913bae956fb8df7f4dc6fc90362aa72e69148e3f39041fbe8742d21e0ac57" dependencies = [ "autocfg 1.0.1", "proc-macro-hack", @@ -1805,21 +1765,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a57bead0ceff0d6dde8f465ecd96c9338121bb7717d3e7b108059531870c4282" +checksum = "c0f30aaa67363d119812743aa5f33c201a7a66329f97d1a887022971feea4b53" [[package]] name = "futures-task" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a16bef9fc1a4dddb5bee51c989e3fbba26569cbb0e31f5b303c184e3dd33dae" +checksum = "bbe54a98670017f3be909561f6ad13e810d9a51f3f061b902062ca3da80799f2" [[package]] name = "futures-util" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feb5c238d27e2bf94ffdfd27b2c29e3df4a68c4193bb6427384259e2bf191967" +checksum = "67eb846bfd58e44a8481a00049e82c43e0ccb5d61f8dc071057cb19249dd4d78" dependencies = [ "autocfg 1.0.1", "futures-channel", @@ -2145,7 +2105,7 @@ dependencies = [ "byteorder", "ff", "rand_core 0.6.3", - "subtle 2.4.0", + "subtle 2.4.1", ] [[package]] @@ -2257,8 +2217,8 @@ dependencies = [ "headers-core", "http", "mime", - "sha-1 0.9.6", - "time 0.1.43", + "sha-1 0.9.7", + "time 0.1.44", ] [[package]] @@ -2300,7 +2260,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84f2a5541afe0725f0b95619d6af614f48c1b176385b8aa30918cfb8c4bfafc8" dependencies = [ - "hmac 0.11.0", + "hmac", "once_cell", "pbkdf2", "rand_core 0.6.3", @@ -2308,16 +2268,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "hkdf" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51ab2f639c231793c5f6114bdb9bbe50a7dbbfcd7c7c6bd8475dec2d991e964f" -dependencies = [ - "digest 0.9.0", - "hmac 0.10.1", -] - [[package]] name = "hkdf" version = "0.11.0" @@ -2325,27 +2275,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "01706d578d5c281058480e673ae4086a9f4710d8df1ad80a5b03e39ece5f886b" dependencies = [ "digest 0.9.0", - "hmac 0.11.0", -] - -[[package]] -name = "hmac" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" -dependencies = [ - "crypto-mac 0.8.0", - "digest 0.9.0", -] - -[[package]] -name = "hmac" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" -dependencies = [ - "crypto-mac 0.10.0", - "digest 0.9.0", + "hmac", ] [[package]] @@ -2354,7 +2284,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" dependencies = [ - "crypto-mac 0.11.0", + "crypto-mac 0.11.1", "digest 0.9.0", ] @@ -2385,9 +2315,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60daa14be0e0786db0f03a9e57cb404c9d756eed2b6c62b9ea98ec5743ec75a9" +checksum = "399c583b2979440c60be0821a6199eca73bc3c8dcd9d070d75ac726e2c6186e5" dependencies = [ "bytes", "http", @@ -2433,9 +2363,9 @@ dependencies = [ [[package]] name = "hyper" -version = "0.14.9" +version = "0.14.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07d6baa1b441335f3ce5098ac421fb6547c46dda735ca1bc6d0153c838f9dd83" +checksum = "0b61cf2d1aebcf6e6352c97b81dc2244ca29194be1b276f5d8ad5c6330fffb11" dependencies = [ "bytes", "futures-channel", @@ -2600,9 +2530,9 @@ dependencies = [ [[package]] name = "instant" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec" +checksum = "bee0328b1209d157ef001c94dd85b4f8f64139adb0eac2659f4b08382b2f474d" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -2695,18 +2625,18 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.51" +version = "0.3.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83bdfbace3a0e81a4253f73b49e960b053e396a11012cbd49b9b74d6a2b67062" +checksum = "ce791b7ca6638aae45be056e068fc756d871eb3b3b10b8efa62d1c9cec616752" dependencies = [ "wasm-bindgen", ] [[package]] name = "k256" -version = "0.9.4" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3a26a4a8e8b0ab315c687767b543c923c9667a1f2bf42a42818d1453891c7c1" +checksum = "903ae2481bcdfdb7b68e0a9baa4b7c9aff600b9ae2e8e5bb5833b8c91ab851ea" dependencies = [ "cfg-if 1.0.0", "ecdsa", @@ -2751,7 +2681,7 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe" dependencies = [ - "arrayvec", + "arrayvec 0.5.2", "bitflags", "cfg-if 1.0.0", "ryu", @@ -2760,9 +2690,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.97" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b8adadd720df158f4d70dfe7ccc6adb0472d7c55ca83445f6a5ab3e36f8fb6" +checksum = "a7f823d141fe0a24df1e23b4af4e3c7ba9e5966ec514ea068c93024aa7deb765" [[package]] name = "libm" @@ -2861,9 +2791,9 @@ dependencies = [ [[package]] name = "matches" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" [[package]] name = "maybe-uninit" @@ -2988,19 +2918,18 @@ dependencies = [ [[package]] name = "multer" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fdd568fea4758b30d6423f013f7171e193c34aa97828d1bd9f924fb3af30a8c" +checksum = "408327e2999b839cd1af003fc01b2019a6c10a1361769542203f6fedc5179680" dependencies = [ "bytes", - "derive_more", "encoding_rs", "futures-util", "http", "httparse", "log", "mime", - "spin 0.9.1", + "spin 0.9.2", "tokio", "tokio-util", "twoway", @@ -3009,9 +2938,9 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8d96b2e1c8da3957d58100b09f102c6d9cfdfced01b7ec5a8974044bb09dbd4" +checksum = "48ba9f7719b5a0f42f338907614285fb5fd70e53858141f69898a1fb7203b24d" dependencies = [ "lazy_static", "libc", @@ -3698,7 +3627,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" dependencies = [ - "crypto-mac 0.11.0", + "crypto-mac 0.11.1", ] [[package]] @@ -3804,11 +3733,11 @@ dependencies = [ [[package]] name = "phf" -version = "0.9.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b21b531851d1d86a90bd62dd79be87ce2d90b7bcb6afbae07813921d6156696a" +checksum = "b2ac8b67553a7ca9457ce0e526948cad581819238f4a9d1ea74545851fa24f37" dependencies = [ - "phf_macros 0.9.1", + "phf_macros 0.9.0", "phf_shared 0.9.0", "proc-macro-hack", ] @@ -3859,9 +3788,9 @@ dependencies = [ [[package]] name = "phf_macros" -version = "0.9.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef44ec4684c899a8ab0c2330beb2b6852842e60458cc83721c333b5dbc04ece6" +checksum = "b706f5936eb50ed880ae3009395b43ed19db5bff2ebd459c95e7bf013a89ab86" dependencies = [ "phf_generator 0.9.1", "phf_shared 0.9.0", @@ -3891,18 +3820,18 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7509cc106041c40a4518d2af7a61530e1eed0e6285296a3d8c5472806ccc4a4" +checksum = "576bc800220cc65dac09e99e97b08b358cfab6e17078de8dc5fee223bd2d0c08" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c950132583b500556b1efd71d45b319029f2b71518d979fcc208e16b42426f" +checksum = "6e8fe8163d14ce7f0cdac2e040116f22eac817edabff0be91e8aff7e9accf389" dependencies = [ "proc-macro2", "quote", @@ -3923,9 +3852,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkcs8" -version = "0.7.0" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d156817ae0125e8aa5067710b0db24f0984830614f99875a70aa5e3b74db69" +checksum = "fbee84ed13e44dd82689fa18348a49934fa79cc774a344c42fc9b301c71b140a" dependencies = [ "der", "spki", @@ -4040,9 +3969,9 @@ checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" [[package]] name = "proc-macro2" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038" +checksum = "5c7ed8b8c7b886ea3ed7dde405212185f423ab44682667c8c6dd14aa1d9f6612" dependencies = [ "unicode-xid", ] @@ -4411,9 +4340,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab49abadf3f9e1c4bc499e8845e152ad87d2ad2d30371841171169e9d75feee" +checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" dependencies = [ "bitflags", ] @@ -4721,6 +4650,15 @@ dependencies = [ "semver 0.9.0", ] +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + [[package]] name = "rustls" version = "0.19.1" @@ -4917,9 +4855,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.126" +version = "1.0.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03" +checksum = "f03b9878abf6d14e6779d3f24f07b2cfa90352cfec4acc5aab8f1ac7f146fae8" dependencies = [ "serde_derive", ] @@ -4944,9 +4882,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.126" +version = "1.0.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43" +checksum = "a024926d3432516606328597e0f224a51355a493b49fdd67e9209187cbe55ecc" dependencies = [ "proc-macro2", "quote", @@ -5056,9 +4994,9 @@ dependencies = [ [[package]] name = "sha-1" -version = "0.9.6" +version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c4cfa741c5832d0ef7fab46cabed29c2aae926db0b11bb2069edd8db5e64e16" +checksum = "1a0c8611594e2ab4ebbf06ec7cbbf0a99450b8570e96cbf5188b5d5f6ef18d81" dependencies = [ "block-buffer 0.9.0", "cfg-if 1.0.0", @@ -5125,9 +5063,9 @@ checksum = "729a25c17d72b06c68cb47955d44fda88ad2d3e7d77e025663fdd69b93dd71a1" [[package]] name = "slab" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527" +checksum = "c307a32c1c5c437f38c7fd45d753050587732ba8628319fbdf12a7e289ccc590" [[package]] name = "sled" @@ -5183,9 +5121,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e3dfc207c526015c632472a77be09cf1b6e46866581aecae5cc38fb4235dea2" +checksum = "765f090f0e423d2b55843402a07915add955e7d60657db13707a159727326cad" dependencies = [ "libc", "winapi", @@ -5227,14 +5165,14 @@ dependencies = [ "chacha", "curve25519-dalek", "digest 0.9.0", - "hkdf 0.11.0", - "hmac 0.11.0", + "hkdf", + "hmac", "lioness", "log", "rand 0.7.3", "rand_distr", "sha2", - "subtle 2.4.0", + "subtle 2.4.1", ] [[package]] @@ -5245,9 +5183,9 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "spin" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5fdd7196b4ae35a111c6dc97f9cc152ca3ea8ad744f7cb46a9f27b3ef8f2f54" +checksum = "511254be0c5bcf062b019a6c89c01a664aa359ded62f78aa72c6fc137c0590e5" [[package]] name = "spki" @@ -5402,7 +5340,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" dependencies = [ "discard", - "rustc_version", + "rustc_version 0.2.3", "stdweb-derive", "stdweb-internal-macros", "stdweb-internal-runtime", @@ -5523,9 +5461,9 @@ checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" [[package]] name = "subtle" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e81da0851ada1f3e9d4312c704aa4f8806f0f9d69faaf8df2f3464b4a9437c2" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "subtle-encoding" @@ -5538,9 +5476,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.73" +version = "1.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f71489ff30030d2ae598524f61326b902466f72a0fb1a8564c001cc63425bcc7" +checksum = "1873d832550d4588c3dbc20f01361ab00bfe741048f71e3fecf145a7cc18b29c" dependencies = [ "proc-macro2", "quote", @@ -5549,9 +5487,9 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701" +checksum = "474aaa926faa1603c40b7885a9eaea29b444d1cb2850cb7c0e37bb1a4182f4fa" dependencies = [ "proc-macro2", "quote", @@ -5620,9 +5558,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tar" -version = "0.4.35" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d779dc6aeff029314570f666ec83f19df7280bb36ef338442cfa8c604021b80" +checksum = "d6f5515d3add52e0bbdcad7b83c388bb36ba7b754dda3b5f5bc2d38640cdba5c" dependencies = [ "filetime", "libc", @@ -5687,7 +5625,7 @@ version = "1.0.0-beta.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25daa8d7cbb24e5432cf54eaaa88d0efd539eef1bdda340233caea2872bca416" dependencies = [ - "blake3", + "blake3 0.3.8", "kuchiki", "proc-macro2", "quote", @@ -5753,7 +5691,7 @@ dependencies = [ "heck", "html5ever", "kuchiki", - "phf 0.9.1", + "phf 0.9.0", "proc-macro2", "quote", "serde", @@ -5802,7 +5740,7 @@ dependencies = [ "serde_repr", "sha2", "signature", - "subtle 2.4.0", + "subtle 2.4.1", "subtle-encoding", "tendermint-proto", "thiserror", @@ -5926,11 +5864,12 @@ dependencies = [ [[package]] name = "time" -version = "0.1.43" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" +checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" dependencies = [ "libc", + "wasi 0.10.0+wasi-snapshot-preview1", "winapi", ] @@ -5974,9 +5913,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b7b349f11a7047e6d1276853e612d152f5e8a352c61917887cc2169e2366b4c" +checksum = "01cf844b23c6131f624accf65ce0e4e9956a8bb329400ea5bcc26ae3a5c20b0b" dependencies = [ "autocfg 1.0.1", "bytes", @@ -5994,9 +5933,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c49e3df43841dafb86046472506755d8501c5615673955f6aa17181125d13c37" +checksum = "54473be61f4ebe4efd09cec9bd5d16fa51d70ea0192213d754d2d500457db110" dependencies = [ "proc-macro2", "quote", @@ -6026,9 +5965,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8864d706fdb3cc0843a49647ac892720dac98a6eeb818b77190592cf4994066" +checksum = "7b2f3f698253f03119ac0102beaa64f67a67e08074d03a22d18784104543727f" dependencies = [ "futures-core", "pin-project-lite", @@ -6157,7 +6096,7 @@ dependencies = [ "input_buffer", "log", "rand 0.8.4", - "sha-1 0.9.6", + "sha-1 0.9.7", "thiserror", "url", "utf-8", @@ -6243,12 +6182,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeb8be209bb1c96b7c177c7420d26e04eccacb0eeae6b980e35fcb74678107e0" -dependencies = [ - "matches", -] +checksum = "246f4c42e67e7a4e3c6106ff716a5d067d4132a642840b242e357e468a2a0085" [[package]] name = "unicode-normalization" @@ -6408,9 +6344,9 @@ checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" [[package]] name = "wasm-bindgen" -version = "0.2.74" +version = "0.2.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54ee1d4ed486f78874278e63e4069fc1ab9f6a18ca492076ffb90c5eb2997fd" +checksum = "b608ecc8f4198fe8680e2ed18eccab5f0cd4caaf3d83516fa5fb2e927fda2586" dependencies = [ "cfg-if 1.0.0", "serde", @@ -6420,9 +6356,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.74" +version = "0.2.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b33f6a0694ccfea53d94db8b2ed1c3a8a4c86dd936b13b9f0a15ec4a451b900" +checksum = "580aa3a91a63d23aac5b6b267e2d13cb4f363e31dce6c352fca4752ae12e479f" dependencies = [ "bumpalo", "lazy_static", @@ -6435,9 +6371,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.24" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fba7978c679d53ce2d0ac80c8c175840feb849a161664365d1287b41f2e67f1" +checksum = "16646b21c3add8e13fdb8f20172f8a28c3dbf62f45406bcff0233188226cfe0c" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -6447,9 +6383,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.74" +version = "0.2.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "088169ca61430fe1e58b8096c24975251700e7b1f6fd91cc9d59b04fb9b18bd4" +checksum = "171ebf0ed9e1458810dfcb31f2e766ad6b3a89dbda42d8901f2b268277e5f09c" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6457,9 +6393,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.74" +version = "0.2.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be2241542ff3d9f241f5e2cb6dd09b37efe786df8851c54957683a49f0987a97" +checksum = "6c2657dd393f03aa2a659c25c6ae18a13a4048cebd220e147933ea837efc589f" dependencies = [ "proc-macro2", "quote", @@ -6470,15 +6406,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.74" +version = "0.2.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7cff876b8f18eed75a66cf49b65e7f967cb354a7aa16003fb55dbfd25b44b4f" +checksum = "2e0c4a743a309662d45f4ede961d7afa4ba4131a59a639f29b0069c3798bbcc2" [[package]] name = "wasm-bindgen-test" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cab416a9b970464c2882ed92d55b0c33046b08e0bdc9d59b3b718acd4e1bae8" +checksum = "ce783b6c3854292723f498b7bfcf65a782a320b6f1cb3012d08dfbc603fa62f5" dependencies = [ "console_error_panic_hook", "js-sys", @@ -6490,9 +6426,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-test-macro" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd4543fc6cf3541ef0d98bf720104cc6bd856d7eba449fd2aa365ef4fed0e782" +checksum = "3859815cf8435b92f3a34381bef950daffc1403bbb77ef99e35422a7b0abb194" dependencies = [ "proc-macro2", "quote", @@ -6512,9 +6448,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.51" +version = "0.3.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e828417b379f3df7111d3a2a9e5753706cae29c41f7c4029ee9fd77f3e09e582" +checksum = "01c70a82d842c9979078c772d4a1344685045f1a5628f677c2b2eab4dd7d2696" dependencies = [ "js-sys", "wasm-bindgen", @@ -6773,9 +6709,9 @@ checksum = "9fc79f4a1e39857fc00c3f662cbf2651c771f00e9c15fe2abc341806bd46bd71" [[package]] name = "zeroize" -version = "1.3.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" +checksum = "377db0846015f7ae377174787dd452e1c5f5a9050bc6f954911d01f116daa0cd" dependencies = [ "zeroize_derive", ] @@ -6803,7 +6739,7 @@ dependencies = [ "crc32fast", "flate2", "thiserror", - "time 0.1.43", + "time 0.1.44", ] [[package]] diff --git a/clients/client-core/src/client/reply_key_storage.rs b/clients/client-core/src/client/reply_key_storage.rs index e8c01e9526..e934e4c5b3 100644 --- a/clients/client-core/src/client/reply_key_storage.rs +++ b/clients/client-core/src/client/reply_key_storage.rs @@ -18,7 +18,7 @@ pub enum ReplyKeyStorageError { /// Permanent storage for keys in all sent [`ReplySURB`] /// /// Each sent out [`ReplySURB`] has a new key associated with it that is going to be used for -/// payload encryption. In order to decrypt whatever reply we receive, we need to know which +/// payload encryption. In order to -decrypt whatever reply we receive, we need to know which /// key to use for that purpose. We do it based on received `H(t)` which has to be included /// with each reply. /// Moreover, there is no restriction when the [`ReplySURB`] might get used so we need to diff --git a/common/crypto/Cargo.toml b/common/crypto/Cargo.toml index 221cb9a8ac..284be17faa 100644 --- a/common/crypto/Cargo.toml +++ b/common/crypto/Cargo.toml @@ -7,15 +7,14 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -aes-ctr = "0.6.0" -bs58 = "0.4" -blake3 = "0.3" -#blake3 = { version = "0.3", features = ["traits-preview"]} -digest = "0.9" +aes = { version = "0.7.4", features = ["ctr"] } +bs58 = "0.4.0" +blake3 = { version = "1.0.0", features = ["traits-preview"] } +digest = "0.9.0" generic-array = "0.14" -hkdf = "0.10" -hmac = "0.8" -cipher = "0.2" +hkdf = "0.11.0" +hmac = "0.11.0" +cipher = "0.3.0" x25519-dalek = "1.1" ed25519-dalek = "1.0" log = "0.4" diff --git a/common/crypto/src/hmac.rs b/common/crypto/src/hmac.rs index 10de75d027..659bfe036b 100644 --- a/common/crypto/src/hmac.rs +++ b/common/crypto/src/hmac.rs @@ -18,7 +18,7 @@ where D::OutputSize: ArrayLength, { let mut hmac = - Hmac::::new_varkey(key).expect("HMAC should be able to take key of any size!"); + Hmac::::new_from_slice(key).expect("HMAC should be able to take key of any size!"); hmac.update(data); hmac.finalize() } @@ -31,7 +31,7 @@ where D::OutputSize: ArrayLength, { let mut hmac = - Hmac::::new_varkey(key).expect("HMAC should be able to take key of any size!"); + Hmac::::new_from_slice(key).expect("HMAC should be able to take key of any size!"); hmac.update(data); // note, under the hood ct_eq is called hmac.verify(tag).is_ok() diff --git a/common/crypto/src/lib.rs b/common/crypto/src/lib.rs index 97f90b3694..04ea643513 100644 --- a/common/crypto/src/lib.rs +++ b/common/crypto/src/lib.rs @@ -13,7 +13,7 @@ pub use generic_array; // with the below my idea was to try to introduce having a single place of importing all hashing, encryption, // etc. algorithms and import them elsewhere as needed via common/crypto -pub use aes_ctr; +pub use aes; pub use blake3; // TODO: this function uses all three modules: asymmetric crypto, symmetric crypto and derives key..., diff --git a/common/crypto/src/shared_key.rs b/common/crypto/src/shared_key.rs index f4334e652d..21042d9b21 100644 --- a/common/crypto/src/shared_key.rs +++ b/common/crypto/src/shared_key.rs @@ -3,7 +3,7 @@ use crate::asymmetric::encryption; use crate::hkdf; -use cipher::stream::{Key, NewStreamCipher, SyncStreamCipher}; +use cipher::{CipherKey, NewCipher, StreamCipher}; use digest::{BlockInput, FixedOutput, Reset, Update}; use generic_array::{typenum::Unsigned, ArrayLength}; use rand::{CryptoRng, RngCore}; @@ -13,9 +13,9 @@ use rand::{CryptoRng, RngCore}; pub fn new_ephemeral_shared_key( rng: &mut R, remote_key: &encryption::PublicKey, -) -> (encryption::KeyPair, Key) +) -> (encryption::KeyPair, CipherKey) where - C: SyncStreamCipher + NewStreamCipher, + C: StreamCipher + NewCipher, D: Update + BlockInput + FixedOutput + Reset + Default + Clone, D::BlockSize: ArrayLength, D::OutputSize: ArrayLength, @@ -31,7 +31,7 @@ where .expect("somehow too long okm was provided"); let derived_shared_key = - Key::::from_exact_iter(okm).expect("okm was expanded to incorrect length!"); + CipherKey::::from_exact_iter(okm).expect("okm was expanded to incorrect length!"); (ephemeral_keypair, derived_shared_key) } @@ -40,9 +40,9 @@ where pub fn recompute_shared_key( remote_key: &encryption::PublicKey, local_key: &encryption::PrivateKey, -) -> Key +) -> CipherKey where - C: SyncStreamCipher + NewStreamCipher, + C: StreamCipher + NewCipher, D: Update + BlockInput + FixedOutput + Reset + Default + Clone, D::BlockSize: ArrayLength, D::OutputSize: ArrayLength, @@ -53,5 +53,5 @@ where let okm = hkdf::extract_then_expand::(None, &dh_result, None, C::KeySize::to_usize()) .expect("somehow too long okm was provided"); - Key::::from_exact_iter(okm).expect("okm was expanded to incorrect length!") + CipherKey::::from_exact_iter(okm).expect("okm was expanded to incorrect length!") } diff --git a/common/crypto/src/symmetric/stream_cipher.rs b/common/crypto/src/symmetric/stream_cipher.rs index 0c135891fd..6f98c3205f 100644 --- a/common/crypto/src/symmetric/stream_cipher.rs +++ b/common/crypto/src/symmetric/stream_cipher.rs @@ -1,13 +1,14 @@ // Copyright 2020 - Nym Technologies SA // SPDX-License-Identifier: Apache-2.0 -use cipher::stream::{Nonce, StreamCipher, SyncStreamCipher}; +use cipher::{Nonce, StreamCipher}; use generic_array::{typenum::Unsigned, GenericArray}; use rand::{CryptoRng, RngCore}; // re-export this for ease of use -pub use cipher::stream::{Key, NewStreamCipher}; +pub use cipher::{CipherKey, NewCipher}; +// SECURITY: // TODO: note that this is not the most secure approach here // we are not using nonces properly but instead "kinda" thinking of them as IVs. // Nonce require, as the name suggest, being only seen once. Ever. @@ -20,9 +21,9 @@ pub use cipher::stream::{Key, NewStreamCipher}; #[allow(clippy::upper_case_acronyms)] pub type IV = Nonce; -pub fn generate_key(rng: &mut R) -> Key +pub fn generate_key(rng: &mut R) -> CipherKey where - C: NewStreamCipher, + C: NewCipher, R: RngCore + CryptoRng, { let mut key = GenericArray::default(); @@ -32,7 +33,7 @@ where pub fn random_iv(rng: &mut R) -> IV where - C: NewStreamCipher, + C: NewCipher, R: RngCore + CryptoRng, { let mut iv = GenericArray::default(); @@ -42,14 +43,14 @@ where pub fn zero_iv() -> IV where - C: NewStreamCipher, + C: NewCipher, { GenericArray::default() } pub fn iv_from_slice(b: &[u8]) -> &IV where - C: NewStreamCipher, + C: NewCipher, { if b.len() != C::NonceSize::to_usize() { // `from_slice` would have caused a panic about this issue anyway. @@ -66,38 +67,42 @@ where // TODO: there's really no way to use more parts of the keystream if it was required at some point. // However, do we really expect to ever need it? -pub fn encrypt(key: &Key, iv: &IV, data: &[u8]) -> Vec +#[inline] +pub fn encrypt(key: &CipherKey, iv: &IV, data: &[u8]) -> Vec where - C: SyncStreamCipher + NewStreamCipher, + C: StreamCipher + NewCipher, { let mut ciphertext = data.to_vec(); encrypt_in_place::(key, iv, &mut ciphertext); ciphertext } -pub fn encrypt_in_place(key: &Key, iv: &IV, data: &mut [u8]) +#[inline] +pub fn encrypt_in_place(key: &CipherKey, iv: &IV, data: &mut [u8]) where - C: SyncStreamCipher + NewStreamCipher, + C: StreamCipher + NewCipher, { let mut cipher = C::new(key, iv); - cipher.encrypt(data) + cipher.apply_keystream(data) } -pub fn decrypt(key: &Key, iv: &IV, ciphertext: &[u8]) -> Vec +#[inline] +pub fn decrypt(key: &CipherKey, iv: &IV, ciphertext: &[u8]) -> Vec where - C: SyncStreamCipher + NewStreamCipher, + C: StreamCipher + NewCipher, { let mut data = ciphertext.to_vec(); decrypt_in_place::(key, iv, &mut data); data } -pub fn decrypt_in_place(key: &Key, iv: &IV, data: &mut [u8]) +#[inline] +pub fn decrypt_in_place(key: &CipherKey, iv: &IV, data: &mut [u8]) where - C: SyncStreamCipher + NewStreamCipher, + C: StreamCipher + NewCipher, { let mut cipher = C::new(key, iv); - cipher.decrypt(data) + cipher.apply_keystream(data) } #[cfg(test)] @@ -108,7 +113,7 @@ mod tests { #[cfg(test)] mod aes_ctr128 { use super::*; - use aes_ctr::Aes128Ctr; + use aes::Aes128Ctr; #[test] fn zero_iv_is_actually_zero() { diff --git a/common/nymsphinx/acknowledgements/src/identifier.rs b/common/nymsphinx/acknowledgements/src/identifier.rs index 54bb30d475..988bdad156 100644 --- a/common/nymsphinx/acknowledgements/src/identifier.rs +++ b/common/nymsphinx/acknowledgements/src/identifier.rs @@ -3,7 +3,7 @@ use crate::AckKey; use crypto::generic_array::typenum::Unsigned; -use crypto::symmetric::stream_cipher::{self, encrypt, iv_from_slice, random_iv, NewStreamCipher}; +use crypto::symmetric::stream_cipher::{self, encrypt, iv_from_slice, random_iv, NewCipher}; use nymsphinx_params::{ packet_sizes::PacketSize, AckEncryptionAlgorithm, SerializedFragmentIdentifier, FRAG_ID_LEN, }; @@ -33,7 +33,7 @@ pub fn recover_identifier( return None; } - let iv_size = ::NonceSize::to_usize(); + let iv_size = ::NonceSize::to_usize(); let iv = iv_from_slice::(&iv_id_ciphertext[..iv_size]); let id = stream_cipher::decrypt::( diff --git a/common/nymsphinx/acknowledgements/src/key.rs b/common/nymsphinx/acknowledgements/src/key.rs index 9f27427137..a7ff5f9271 100644 --- a/common/nymsphinx/acknowledgements/src/key.rs +++ b/common/nymsphinx/acknowledgements/src/key.rs @@ -2,13 +2,13 @@ // SPDX-License-Identifier: Apache-2.0 use crypto::generic_array::{typenum::Unsigned, GenericArray}; -use crypto::symmetric::stream_cipher::{generate_key, Key, NewStreamCipher}; +use crypto::symmetric::stream_cipher::{generate_key, CipherKey, NewCipher}; use nymsphinx_params::AckEncryptionAlgorithm; use pemstore::traits::PemStorableKey; use rand::{CryptoRng, RngCore}; use std::fmt::{self, Display, Formatter}; -pub struct AckKey(Key); +pub struct AckKey(CipherKey); #[derive(Debug)] pub enum AckKeyConversionError { @@ -33,7 +33,7 @@ impl AckKey { } pub fn try_from_bytes(bytes: &[u8]) -> Result { - if bytes.len() != ::KeySize::to_usize() { + if bytes.len() != ::KeySize::to_usize() { return Err(AckKeyConversionError::BytesOfInvalidLengthError); } @@ -48,7 +48,7 @@ impl AckKey { self.0.as_ref() } - pub fn inner(&self) -> &Key { + pub fn inner(&self) -> &CipherKey { &self.0 } } diff --git a/common/nymsphinx/anonymous-replies/src/encryption_key.rs b/common/nymsphinx/anonymous-replies/src/encryption_key.rs index 85520bf6c8..c8ce8b851d 100644 --- a/common/nymsphinx/anonymous-replies/src/encryption_key.rs +++ b/common/nymsphinx/anonymous-replies/src/encryption_key.rs @@ -5,7 +5,7 @@ pub use crypto::generic_array::typenum::Unsigned; use crypto::{ crypto_hash, generic_array::GenericArray, - symmetric::stream_cipher::{generate_key, Key, NewStreamCipher}, + symmetric::stream_cipher::{generate_key, CipherKey, NewCipher}, Digest, }; use nymsphinx_params::{ReplySurbEncryptionAlgorithm, ReplySurbKeyDigestAlgorithm}; @@ -15,10 +15,10 @@ use std::fmt::{self, Display, Formatter}; pub type EncryptionKeyDigest = GenericArray::OutputSize>; -pub type SurbEncryptionKeySize = ::KeySize; +pub type SurbEncryptionKeySize = ::KeySize; #[derive(Clone, Debug)] -pub struct SurbEncryptionKey(Key); +pub struct SurbEncryptionKey(CipherKey); #[derive(Debug)] pub enum SurbEncryptionKeyError { @@ -64,7 +64,7 @@ impl SurbEncryptionKey { self.0.as_ref() } - pub fn inner(&self) -> &Key { + pub fn inner(&self) -> &CipherKey { &self.0 } } diff --git a/common/nymsphinx/params/src/lib.rs b/common/nymsphinx/params/src/lib.rs index ba230827c0..b8954fc975 100644 --- a/common/nymsphinx/params/src/lib.rs +++ b/common/nymsphinx/params/src/lib.rs @@ -1,7 +1,7 @@ // Copyright 2021 - Nym Technologies SA // SPDX-License-Identifier: Apache-2.0 -use crypto::aes_ctr::Aes128Ctr; +use crypto::aes::Aes128Ctr; use crypto::blake3; // Re-export for ease of use diff --git a/gateway/gateway-requests/src/iv.rs b/gateway/gateway-requests/src/iv.rs index 95fae40095..568d69f48c 100644 --- a/gateway/gateway-requests/src/iv.rs +++ b/gateway/gateway-requests/src/iv.rs @@ -2,11 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 use crypto::generic_array::{typenum::Unsigned, GenericArray}; -use crypto::symmetric::stream_cipher::{random_iv, NewStreamCipher, IV as CryptoIV}; +use crypto::symmetric::stream_cipher::{random_iv, NewCipher, IV as CryptoIV}; use nymsphinx::params::GatewayEncryptionAlgorithm; use rand::{CryptoRng, RngCore}; -type NonceSize = ::NonceSize; +type NonceSize = ::NonceSize; // I think 'IV' looks better than 'Iv', feel free to change that. #[allow(clippy::upper_case_acronyms)] diff --git a/gateway/gateway-requests/src/registration/handshake/shared_key.rs b/gateway/gateway-requests/src/registration/handshake/shared_key.rs index b07c6827d7..2d40bf613d 100644 --- a/gateway/gateway-requests/src/registration/handshake/shared_key.rs +++ b/gateway/gateway-requests/src/registration/handshake/shared_key.rs @@ -7,7 +7,7 @@ use crypto::generic_array::{ GenericArray, }; use crypto::hmac::{compute_keyed_hmac, recompute_keyed_hmac_and_verify_tag}; -use crypto::symmetric::stream_cipher::{self, Key, NewStreamCipher, IV}; +use crypto::symmetric::stream_cipher::{self, CipherKey, NewCipher, IV}; use nymsphinx::params::{GatewayEncryptionAlgorithm, GatewayIntegrityHmacAlgorithm}; use pemstore::traits::PemStorableKey; use std::fmt::{self, Display, Formatter}; @@ -17,14 +17,14 @@ pub type SharedKeySize = Sum; // we're using 16 byte long key in sphinx, so let's use the same one here type MacKeySize = U16; -type EncryptionKeySize = ::KeySize; +type EncryptionKeySize = ::KeySize; /// Shared key used when computing MAC for messages exchanged between client and its gateway. pub type MacKey = GenericArray; #[derive(Clone, Debug)] pub struct SharedKeys { - encryption_key: Key, + encryption_key: CipherKey, mac_key: MacKey, } @@ -138,7 +138,7 @@ impl SharedKeys { Ok(message_bytes_mut.to_vec()) } - pub fn encryption_key(&self) -> &Key { + pub fn encryption_key(&self) -> &CipherKey { &self.encryption_key }