From d95e00d33f4e98c0c670aae5d8a49b58e5db3f4d Mon Sep 17 00:00:00 2001 From: Nikita Strygin Date: Wed, 1 Nov 2023 11:31:36 +0300 Subject: [PATCH] [refactor] #3422: bump iroha_crypto deps Signed-off-by: Nikita Strygin --- Cargo.lock | 406 ++++++++++------------ Cargo.toml | 3 +- crypto/Cargo.toml | 28 +- crypto/src/encryption/chacha20poly1305.rs | 10 +- crypto/src/encryption/mod.rs | 8 +- crypto/src/kex/x25519.rs | 4 +- crypto/src/signature/ed25519.rs | 34 +- crypto/src/signature/secp256k1.rs | 38 +- 8 files changed, 244 insertions(+), 287 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2298e539b1f..e78ab306655 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -25,10 +25,11 @@ checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" [[package]] name = "aead" -version = "0.3.2" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fc95d1bdb8e6666b2b217308eeeb09f2d6728d104be3e31916cc74d15420331" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" dependencies = [ + "crypto-common", "generic-array 0.14.7", ] @@ -228,15 +229,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "autocfg" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dde43e75fd43e8a1bf86103336bc699aa8d17ad1be60c76c0bdfd4828e19b78" -dependencies = [ - "autocfg 1.1.0", -] - [[package]] name = "autocfg" version = "1.1.0" @@ -303,6 +295,12 @@ dependencies = [ "rustc-demangle", ] +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + [[package]] name = "base64" version = "0.13.1" @@ -315,6 +313,12 @@ version = "0.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + [[package]] name = "basic-toml" version = "0.1.4" @@ -393,15 +397,6 @@ dependencies = [ "generic-array 0.12.4", ] -[[package]] -name = "block-buffer" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "generic-array 0.14.7", -] - [[package]] name = "block-buffer" version = "0.10.4" @@ -513,19 +508,20 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chacha20" -version = "0.6.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed8738f14471a99f0e316c327e68fc82a3611cc2895fcb604b89eedaf8f39d95" +checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" dependencies = [ + "cfg-if", "cipher", - "zeroize", + "cpufeatures", ] [[package]] name = "chacha20poly1305" -version = "0.7.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1fc18e6d90c40164bf6c317476f2a98f04661e310e79830366b7e914c58a8e" +checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" dependencies = [ "aead", "chacha20", @@ -577,11 +573,13 @@ dependencies = [ [[package]] name = "cipher" -version = "0.2.5" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "generic-array 0.14.7", + "crypto-common", + "inout", + "zeroize", ] [[package]] @@ -775,9 +773,9 @@ dependencies = [ [[package]] name = "const-oid" -version = "0.6.2" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d6f2aa4d0537bcc1c74df8755072bd31c1ef1a3a1b85a68e8404a8c353b7b8b" +checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" [[package]] name = "core-foundation" @@ -822,12 +820,6 @@ dependencies = [ "libc", ] -[[package]] -name = "cpuid-bool" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb25d077389e53838a8158c8e99174c5a9d902dee4904320db714f3c653ffba" - [[package]] name = "cranelift-bforest" version = "0.100.0" @@ -1023,7 +1015,7 @@ version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" dependencies = [ - "autocfg 1.1.0", + "autocfg", "cfg-if", "crossbeam-utils", "memoffset", @@ -1076,9 +1068,9 @@ dependencies = [ [[package]] name = "crypto-bigint" -version = "0.2.11" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83bd3bb4314701c568e340cd8cf78c975aa0ca79e03d3f6d1677d5b0c9c0c03" +checksum = "740fe28e594155f10cfc383984cbefd529d7396050557148f79cb0f621204124" dependencies = [ "generic-array 0.14.7", "rand_core 0.6.4", @@ -1093,30 +1085,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array 0.14.7", + "rand_core 0.6.4", "typenum", ] [[package]] -name = "crypto-mac" -version = "0.11.1" +name = "curve25519-dalek" +version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" +checksum = "e89b8c6a2e4b1f45971ad09761aafb85514a84744b67a95e32c3cc1352d1f65c" dependencies = [ - "generic-array 0.14.7", + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "platforms", + "rustc_version", "subtle", + "zeroize", ] [[package]] -name = "curve25519-dalek" -version = "3.2.1" +name = "curve25519-dalek-derive" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", - "subtle", - "zeroize", + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] @@ -1234,11 +1232,12 @@ dependencies = [ [[package]] name = "der" -version = "0.4.5" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79b71cca7d95d7681a4b3b9cdf63c8dbc3730d0584c2c74e31416d64a90493f4" +checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" dependencies = [ "const-oid", + "zeroize", ] [[package]] @@ -1278,15 +1277,6 @@ dependencies = [ "generic-array 0.12.4", ] -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array 0.14.7", -] - [[package]] name = "digest" version = "0.10.7" @@ -1294,6 +1284,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", + "const-oid", "crypto-common", "subtle", ] @@ -1356,36 +1347,39 @@ checksum = "23d2f3407d9a573d666de4b5bdf10569d73ca9478087346697dcbae6244bfbcd" [[package]] name = "ecdsa" -version = "0.12.4" +version = "0.16.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43ee23aa5b4f68c7a092b5c3beb25f50c406adc75e2363634f242f28ab255372" +checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4" dependencies = [ "der", + "digest 0.10.7", "elliptic-curve", - "hmac 0.11.0", + "rfc6979", "signature", + "spki", ] [[package]] name = "ed25519" -version = "1.5.3" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ + "pkcs8", "signature", ] [[package]] name = "ed25519-dalek" -version = "1.0.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +checksum = "7277392b266383ef8396db7fdeb1e77b6c52fed775f5df15bb24f35b72156980" dependencies = [ "curve25519-dalek", "ed25519", - "rand 0.7.3", + "rand_core 0.6.4", "serde", - "sha2 0.9.9", + "sha2", "zeroize", ] @@ -1397,16 +1391,20 @@ checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "elliptic-curve" -version = "0.10.6" +version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "beca177dcb8eb540133e7680baff45e7cc4d93bf22002676cec549f82343721b" +checksum = "d97ca172ae9dc9f9b779a6e3a65d308f2af74e5b8c921299075bdb4a0370e914" dependencies = [ + "base16ct", "crypto-bigint", + "digest 0.10.7", "ff", "generic-array 0.14.7", "group", + "hkdf", "pkcs8", "rand_core 0.6.4", + "sec1", "subtle", "zeroize", ] @@ -1494,14 +1492,20 @@ checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "ff" -version = "0.10.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0f40b2dcd8bc322217a5f6559ae5f9e9d1de202a2ecee2e9eafcbece7562a4f" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" dependencies = [ "rand_core 0.6.4", "subtle", ] +[[package]] +name = "fiat-crypto" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a481586acf778f1b1455424c343f71124b048ffa5f4fc3f8f6ae9dc432dcb3c7" + [[package]] name = "filetime" version = "0.2.22" @@ -1708,6 +1712,7 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] @@ -2269,9 +2274,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "group" -version = "0.10.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c363a5301b8f153d80747126a04b3c82073b9fe3130571a9d170cacdeaf7912" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff", "rand_core 0.6.4", @@ -2406,17 +2411,7 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" dependencies = [ - "hmac 0.12.1", -] - -[[package]] -name = "hmac" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" -dependencies = [ - "crypto-mac", - "digest 0.9.0", + "hmac", ] [[package]] @@ -2587,7 +2582,7 @@ version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ - "autocfg 1.1.0", + "autocfg", "hashbrown 0.12.3", ] @@ -2602,6 +2597,15 @@ dependencies = [ "serde", ] +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array 0.14.7", +] + [[package]] name = "inquire" version = "0.6.2" @@ -2854,13 +2858,13 @@ dependencies = [ "libsodium-sys-stable", "openssl-sys", "parity-scale-codec", - "rand 0.7.3", - "rand_chacha 0.2.1", + "rand 0.8.5", + "rand_chacha 0.3.1", "secp256k1", "serde", "serde_json", "serde_with", - "sha2 0.10.8", + "sha2", "x25519-dalek", "zeroize", ] @@ -3444,14 +3448,16 @@ dependencies = [ [[package]] name = "k256" -version = "0.9.6" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "903ae2481bcdfdb7b68e0a9baa4b7c9aff600b9ae2e8e5bb5833b8c91ab851ea" +checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" dependencies = [ "cfg-if", "ecdsa", "elliptic-curve", - "sha2 0.9.9", + "once_cell", + "sha2", + "signature", ] [[package]] @@ -3586,7 +3592,7 @@ version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" dependencies = [ - "autocfg 1.1.0", + "autocfg", "scopeguard", ] @@ -3675,7 +3681,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ - "autocfg 1.1.0", + "autocfg", ] [[package]] @@ -3804,7 +3810,7 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ - "autocfg 1.1.0", + "autocfg", "libm", ] @@ -4113,7 +4119,7 @@ checksum = "1df74e9e7ec4053ceb980e7c0c8bd3594e977fde1af91daba9c928e8e8c6708d" dependencies = [ "once_cell", "pest", - "sha2 0.10.8", + "sha2", ] [[package]] @@ -4160,9 +4166,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkcs8" -version = "0.7.6" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee3ef9b64d26bad0536099c816c6734379e45bbd5f14798def6809e5cc350447" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ "der", "spki", @@ -4174,6 +4180,12 @@ version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +[[package]] +name = "platforms" +version = "3.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4503fa043bf02cee09a9582e9554b4c6403b2ef55e4612e96561d294419429f8" + [[package]] name = "plotters" version = "0.3.5" @@ -4204,11 +4216,12 @@ dependencies = [ [[package]] name = "poly1305" -version = "0.6.2" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b7456bc1ad2d4cf82b3a016be4c2ac48daf11bf990c1603ebd447fe6f30fca8" +checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" dependencies = [ - "cpuid-bool", + "cpufeatures", + "opaque-debug 0.3.0", "universal-hash", ] @@ -4305,7 +4318,7 @@ dependencies = [ "num-traits", "rand 0.8.5", "rand_chacha 0.3.1", - "rand_xorshift 0.3.0", + "rand_xorshift", "regex-syntax 0.7.5", "rusty-fork", "tempfile", @@ -4385,24 +4398,6 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" -[[package]] -name = "rand" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" -dependencies = [ - "autocfg 0.1.8", - "libc", - "rand_chacha 0.1.1", - "rand_core 0.4.2", - "rand_hc 0.1.0", - "rand_isaac", - "rand_jitter", - "rand_pcg", - "rand_xorshift 0.1.1", - "winapi", -] - [[package]] name = "rand" version = "0.7.3" @@ -4413,7 +4408,7 @@ dependencies = [ "libc", "rand_chacha 0.2.1", "rand_core 0.5.1", - "rand_hc 0.2.0", + "rand_hc", ] [[package]] @@ -4427,16 +4422,6 @@ dependencies = [ "rand_core 0.6.4", ] -[[package]] -name = "rand_chacha" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" -dependencies = [ - "autocfg 0.1.8", - "rand_core 0.3.1", -] - [[package]] name = "rand_chacha" version = "0.2.1" @@ -4457,21 +4442,6 @@ dependencies = [ "rand_core 0.6.4", ] -[[package]] -name = "rand_core" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -dependencies = [ - "rand_core 0.4.2", -] - -[[package]] -name = "rand_core" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" - [[package]] name = "rand_core" version = "0.5.1" @@ -4490,15 +4460,6 @@ dependencies = [ "getrandom 0.2.10", ] -[[package]] -name = "rand_hc" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" -dependencies = [ - "rand_core 0.3.1", -] - [[package]] name = "rand_hc" version = "0.2.0" @@ -4508,45 +4469,6 @@ dependencies = [ "rand_core 0.5.1", ] -[[package]] -name = "rand_isaac" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -dependencies = [ - "rand_core 0.3.1", -] - -[[package]] -name = "rand_jitter" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" -dependencies = [ - "libc", - "rand_core 0.4.2", - "winapi", -] - -[[package]] -name = "rand_pcg" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" -dependencies = [ - "autocfg 0.1.8", - "rand_core 0.4.2", -] - -[[package]] -name = "rand_xorshift" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" -dependencies = [ - "rand_core 0.3.1", -] - [[package]] name = "rand_xorshift" version = "0.3.0" @@ -4668,6 +4590,16 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3cbb081b9784b07cceb8824c8583f86db4814d172ab043f3c23f7dc600bf83d" +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + [[package]] name = "ring" version = "0.16.20" @@ -4701,6 +4633,15 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + [[package]] name = "rustix" version = "0.38.18" @@ -4815,22 +4756,36 @@ dependencies = [ "untrusted", ] +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array 0.14.7", + "pkcs8", + "subtle", + "zeroize", +] + [[package]] name = "secp256k1" -version = "0.19.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6179428c22c73ac0fbb7b5579a56353ce78ba29759b3b8575183336ea74cdfb" +checksum = "2acea373acb8c21ecb5a23741452acd2593ed44ee3d343e72baaa143bc89d0d5" dependencies = [ - "rand 0.6.5", + "rand 0.8.5", "secp256k1-sys", "serde", ] [[package]] name = "secp256k1-sys" -version = "0.3.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11553d210db090930f4432bea123b31f70bbf693ace14504ea2a35e796c28dd2" +checksum = "09e67c467c38fd24bd5499dc9a18183b31575c12ee549197e3e20d57aa4fe3b7" dependencies = [ "cc", ] @@ -4993,19 +4948,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" -[[package]] -name = "sha2" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug 0.3.0", -] - [[package]] name = "sha2" version = "0.10.8" @@ -5026,7 +4968,7 @@ dependencies = [ "async-trait", "bytes", "hex", - "sha2 0.10.8", + "sha2", "tokio", ] @@ -5090,11 +5032,11 @@ dependencies = [ [[package]] name = "signature" -version = "1.3.2" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2807892cfa58e081aa1f1111391c7a0649d4fa127a4ffbe34bcbfb35a1171a4" +checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" dependencies = [ - "digest 0.9.0", + "digest 0.10.7", "rand_core 0.6.4", ] @@ -5104,7 +5046,7 @@ version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ - "autocfg 1.1.0", + "autocfg", ] [[package]] @@ -5177,10 +5119,11 @@ dependencies = [ [[package]] name = "spki" -version = "0.4.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c01a0c15da1b0b0e1494112e7af814a678fec9bd157881b49beac661e9b6f32" +checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" dependencies = [ + "base64ct", "der", ] @@ -5942,11 +5885,11 @@ dependencies = [ [[package]] name = "universal-hash" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" dependencies = [ - "generic-array 0.14.7", + "crypto-common", "subtle", ] @@ -6299,7 +6242,7 @@ dependencies = [ "rustix", "serde", "serde_derive", - "sha2 0.10.8", + "sha2", "toml", "windows-sys 0.48.0", "zstd", @@ -6779,12 +6722,13 @@ dependencies = [ [[package]] name = "x25519-dalek" -version = "1.2.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2392b6b94a576b4e2bf3c5b2757d63f10ada8020a2e4d08ac849ebcf6ea8e077" +checksum = "fb66477291e7e8d2b0ff1bcb900bf29489a9692816d79874bea351e7a8b6de96" dependencies = [ "curve25519-dalek", - "rand_core 0.5.1", + "rand_core 0.6.4", + "serde", "zeroize", ] @@ -6799,9 +6743,9 @@ dependencies = [ [[package]] name = "zeroize" -version = "1.3.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" +checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" dependencies = [ "zeroize_derive", ] diff --git a/Cargo.toml b/Cargo.toml index 8f84f79908b..c7af0397b5f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -114,8 +114,7 @@ strum = { version = "0.25.0", default-features = false } getset = "0.1.2" hex-literal = "0.4.1" -ursa = "0.3.7" -aead = "0.3.2" +aead = "0.5.2" rand = "0.8.5" warp = { version = "0.3.6", default-features = false } diff --git a/crypto/Cargo.toml b/crypto/Cargo.toml index 7ce2c7e3f10..cfa374df916 100644 --- a/crypto/Cargo.toml +++ b/crypto/Cargo.toml @@ -58,30 +58,22 @@ sha2 = { version = "0.10.8", optional = true } hkdf = { version = "0.12.3", optional = true } amcl_wrapper = { version = "0.4.0", optional = true } -# TODO: bump these -ed25519-dalek = { version = "1.0.1", optional = true } -curve25519-dalek = { version = "3.2.1", optional = true } -x25519-dalek = { version = "1.2.0", optional = true } +ed25519-dalek = { version = "2.0.0", optional = true, features = ["rand_core"] } +curve25519-dalek = { version = "4.1.1", optional = true } +x25519-dalek = { version = "2.0.0", optional = true, features = ["static_secrets"] } -# TODO: bump me -rand = { version = "0.7", optional = true } -# TODO: bump me -rand_chacha = { version = "0.2", optional = true } +rand = { version = "0.8.5", optional = true } +rand_chacha = { version = "0.3.1", optional = true } -# TODO: bump me -secp256k1 = { version = "0.19", features = ["rand", "serde"], optional = true } +secp256k1 = { version = "0.28.0", features = ["rand", "serde"], optional = true } -# TODO: bump me -zeroize = { version = "1.1", optional = true } +zeroize = { version = "1.6.0", optional = true } arrayref = { version = "0.3.7", optional = true } -# TODO: bump me -aead = { version = "0.3", optional = true } -# TODO: bump me -chacha20poly1305 = { version = "0.7", optional = true } +aead = { workspace = true, optional = true } +chacha20poly1305 = { version = "0.10.1", optional = true } -# TODO: bump me -k256 = { version = "0.9.6", optional = true, features = ["ecdh", "ecdsa", "sha256"]} +k256 = { version = "0.13.1", optional = true, features = ["ecdh", "ecdsa", "sha256"]} [dev-dependencies] hex-literal = { workspace = true } diff --git a/crypto/src/encryption/chacha20poly1305.rs b/crypto/src/encryption/chacha20poly1305.rs index 5dfdf513186..9e8b771d409 100644 --- a/crypto/src/encryption/chacha20poly1305.rs +++ b/crypto/src/encryption/chacha20poly1305.rs @@ -3,7 +3,7 @@ use aead::{ typenum::{U0, U12, U16, U32, U36}, GenericArray, }, - Aead, Error, NewAead, Payload, + Aead, AeadCore, Error, KeyInit, KeySizeUser, Payload, }; use chacha20poly1305::ChaCha20Poly1305 as SysChaCha20Poly1305; @@ -19,19 +19,23 @@ impl Encryptor for ChaCha20Poly1305 { type MinSize = U36; } -impl NewAead for ChaCha20Poly1305 { +impl KeySizeUser for ChaCha20Poly1305 { type KeySize = U32; +} +impl KeyInit for ChaCha20Poly1305 { fn new(key: &GenericArray) -> Self { Self { key: *key } } } -impl Aead for ChaCha20Poly1305 { +impl AeadCore for ChaCha20Poly1305 { type NonceSize = U12; type TagSize = U16; type CiphertextOverhead = U0; +} +impl Aead for ChaCha20Poly1305 { fn encrypt<'msg, 'aad>( &self, nonce: &GenericArray, diff --git a/crypto/src/encryption/mod.rs b/crypto/src/encryption/mod.rs index 1c1d80c53b8..5ed425c2832 100644 --- a/crypto/src/encryption/mod.rs +++ b/crypto/src/encryption/mod.rs @@ -7,7 +7,7 @@ use std::io::{Read, Write}; use aead::{ generic_array::{typenum::Unsigned, ArrayLength, GenericArray}, - Aead, Error, NewAead, Payload, + Aead, Error, KeyInit, Payload, }; use rand::{rngs::OsRng, RngCore}; @@ -64,12 +64,12 @@ impl SymmetricEncryptor { } pub fn new_from_session_key(key: SessionKey) -> Self { - Self::new(::new(GenericArray::from_slice(&key.0))) + Self::new(::new(GenericArray::from_slice(&key.0))) } pub fn new_with_key>(key: A) -> Result { Ok(Self { - encryptor: ::new(GenericArray::from_slice(key.as_ref())), + encryptor: ::new(GenericArray::from_slice(key.as_ref())), }) } @@ -151,7 +151,7 @@ impl Default for SymmetricEncryptor { } /// Generic encryptor trait that all ciphers should extend. -pub trait Encryptor: Aead + NewAead { +pub trait Encryptor: Aead + KeyInit { /// The minimum size that the ciphertext will yield from plaintext type MinSize: ArrayLength; diff --git a/crypto/src/kex/x25519.rs b/crypto/src/kex/x25519.rs index a8f875dbac2..42367d8c7a0 100644 --- a/crypto/src/kex/x25519.rs +++ b/crypto/src/kex/x25519.rs @@ -26,7 +26,7 @@ impl KeyExchangeScheme for X25519Sha256 { let hash = sha2::Sha256::digest(s.as_slice()); s.zeroize(); let mut rng = ChaChaRng::from_seed(*array_ref!(hash.as_slice(), 0, 32)); - let sk = StaticSecret::new(&mut rng); + let sk = StaticSecret::random_from_rng(&mut rng); let pk = X25519PublicKey::from(&sk); (pk, sk) } @@ -39,7 +39,7 @@ impl KeyExchangeScheme for X25519Sha256 { }, None => { let mut rng = OsRng::default(); - let sk = StaticSecret::new(&mut rng); + let sk = StaticSecret::random_from_rng(&mut rng); let pk = X25519PublicKey::from(&sk); (pk, sk) } diff --git a/crypto/src/signature/ed25519.rs b/crypto/src/signature/ed25519.rs index 0ab78638020..1fb1ba492fc 100644 --- a/crypto/src/signature/ed25519.rs +++ b/crypto/src/signature/ed25519.rs @@ -4,7 +4,7 @@ use std::convert::TryFrom; use arrayref::array_ref; -use ed25519_dalek::{Keypair, PublicKey as PK, Signature, Signer, Verifier}; +use ed25519_dalek::{Signature, Signer, SigningKey, Verifier, VerifyingKey as PK}; pub use ed25519_dalek::{ EXPANDED_SECRET_KEY_LENGTH as PRIVATE_KEY_SIZE, PUBLIC_KEY_LENGTH as PUBLIC_KEY_SIZE, SIGNATURE_LENGTH as SIGNATURE_SIZE, @@ -19,6 +19,19 @@ const ALGORITHM: Algorithm = Algorithm::Ed25519; use crate::{Algorithm, Error, KeyGenOption, PrivateKey, PublicKey}; +fn parse_private_key(sk: &PrivateKey) -> Result { + assert_eq!(sk.digest_function, ALGORITHM); + SigningKey::from_keypair_bytes( + &<[u8; 64]>::try_from(&sk.payload[..]).map_err(|e| Error::Parse(e.to_string()))?, + ) + .map_err(|e| Error::Parse(e.to_string())) +} + +fn parse_public_key(pk: &PublicKey) -> Result { + assert_eq!(pk.digest_function, ALGORITHM); + PK::try_from(&pk.payload[..]).map_err(|e| Error::Parse(e.to_string())) +} + #[derive(Debug, Clone, Copy)] pub struct Ed25519Sha512; @@ -33,37 +46,32 @@ impl Ed25519Sha512 { let hash = sha2::Sha256::digest(s.as_slice()); s.zeroize(); let mut rng = ChaChaRng::from_seed(*array_ref!(hash.as_slice(), 0, 32)); - Keypair::generate(&mut rng) - } - KeyGenOption::FromPrivateKey(ref s) => { - assert_eq!(s.digest_function, ALGORITHM); - Keypair::from_bytes(&s.payload[..]).map_err(|e| Error::KeyGen(e.to_string()))? + SigningKey::generate(&mut rng) } + KeyGenOption::FromPrivateKey(ref s) => parse_private_key(s)?, }, None => { let mut rng = OsRng::default(); - Keypair::generate(&mut rng) + SigningKey::generate(&mut rng) } }; Ok(( PublicKey { digest_function: ALGORITHM, - payload: ConstVec::new(kp.public.to_bytes().to_vec()), + payload: ConstVec::new(kp.verifying_key().to_bytes().to_vec()), }, PrivateKey { digest_function: ALGORITHM, - payload: ConstVec::new(kp.to_bytes().to_vec()), + payload: ConstVec::new(kp.to_keypair_bytes().to_vec()), }, )) } pub fn sign(&self, message: &[u8], sk: &PrivateKey) -> Result, Error> { - assert_eq!(sk.digest_function, ALGORITHM); - let kp = Keypair::from_bytes(&sk.payload).map_err(|e| Error::KeyGen(e.to_string()))?; + let kp = parse_private_key(sk)?; Ok(kp.sign(message).to_bytes().to_vec()) } pub fn verify(&self, message: &[u8], signature: &[u8], pk: &PublicKey) -> Result { - assert_eq!(pk.digest_function, ALGORITHM); - let p = PK::from_bytes(&pk.payload).map_err(|e| Error::Parse(e.to_string()))?; + let p = parse_public_key(pk)?; let s = Signature::try_from(signature).map_err(|e| Error::Parse(e.to_string()))?; p.verify(message, &s) .map_err(|e| Error::Signing(e.to_string()))?; diff --git a/crypto/src/signature/secp256k1.rs b/crypto/src/signature/secp256k1.rs index 93c9fe980e6..09c962a6b4e 100644 --- a/crypto/src/signature/secp256k1.rs +++ b/crypto/src/signature/secp256k1.rs @@ -81,16 +81,16 @@ mod ecdsa_secp256k1 { impl EcdsaSecp256k1Impl { pub fn public_key_compressed(&self, pk: &PublicKey) -> Vec { assert_eq!(pk.digest_function, ALGORITHM); - let pk = secp256k1::key::PublicKey::from_slice(&pk.payload[..]).unwrap(); + let pk = secp256k1::PublicKey::from_slice(&pk.payload[..]).unwrap(); pk.serialize().to_vec() } pub fn public_key_uncompressed(&self, pk: &PublicKey) -> Vec { assert_eq!(pk.digest_function, ALGORITHM); - let pk = secp256k1::key::PublicKey::from_slice(&pk.payload[..]).unwrap(); + let pk = secp256k1::PublicKey::from_slice(&pk.payload[..]).unwrap(); pk.serialize_uncompressed().to_vec() } pub fn parse(&self, data: &[u8]) -> Result { - let res = secp256k1::key::PublicKey::from_slice(data)?; + let res = secp256k1::PublicKey::from_slice(data)?; let pk = PublicKey { digest_function: ALGORITHM, payload: ConstVec::new(res.serialize().to_vec()), @@ -116,11 +116,11 @@ mod ecdsa_secp256k1 { rng.fill_bytes(&mut s); let k = D::digest(&s); s.zeroize(); - secp256k1::key::SecretKey::from_slice(k.as_slice())? + secp256k1::SecretKey::from_slice(k.as_slice())? } KeyGenOption::FromPrivateKey(ref s) => { assert_eq!(s.digest_function, ALGORITHM); - secp256k1::key::SecretKey::from_slice(&s.payload[..])? + secp256k1::SecretKey::from_slice(&s.payload[..])? } }, None => { @@ -128,10 +128,10 @@ mod ecdsa_secp256k1 { OsRng.fill_bytes(&mut s); let k = D::digest(&s); s.zeroize(); - secp256k1::key::SecretKey::from_slice(k.as_slice())? + secp256k1::SecretKey::from_slice(k.as_slice())? } }; - let pk = secp256k1::key::PublicKey::from_secret_key(&self.0, &sk); + let pk = secp256k1::PublicKey::from_secret_key(&self.0, &sk); Ok(( PublicKey { digest_function: ALGORITHM, @@ -149,9 +149,9 @@ mod ecdsa_secp256k1 { { assert_eq!(sk.digest_function, ALGORITHM); let h = D::digest(message); - let msg = secp256k1::Message::from_slice(h.as_slice())?; - let s = secp256k1::key::SecretKey::from_slice(&sk.payload[..])?; - let sig = self.0.sign(&msg, &s); + let msg = secp256k1::Message::from_digest_slice(h.as_slice())?; + let s = secp256k1::SecretKey::from_slice(&sk.payload[..])?; + let sig = self.0.sign_ecdsa(&msg, &s); Ok(sig.serialize_compact().to_vec()) } pub fn verify( @@ -165,10 +165,10 @@ mod ecdsa_secp256k1 { { assert_eq!(pk.digest_function, ALGORITHM); let h = D::digest(message); - let msg = secp256k1::Message::from_slice(h.as_slice())?; + let msg = secp256k1::Message::from_digest_slice(h.as_slice())?; let p = secp256k1::PublicKey::from_slice(&pk.payload[..])?; - let sig = secp256k1::Signature::from_compact(signature)?; - let res = self.0.verify(&msg, &sig, &p); + let sig = secp256k1::ecdsa::Signature::from_compact(signature)?; + let res = self.0.verify_ecdsa(&msg, &sig, &p); match res { Ok(()) => Ok(true), Err(secp256k1::Error::IncorrectSignature) => Ok(false), @@ -176,7 +176,7 @@ mod ecdsa_secp256k1 { } } pub fn normalize_s(&self, signature: &mut [u8]) -> Result<(), Error> { - let mut sig = secp256k1::Signature::from_compact(signature)?; + let mut sig = secp256k1::ecdsa::Signature::from_compact(signature)?; sig.normalize_s(); let compact = sig.serialize_compact(); signature.clone_from_slice(&compact[..]); @@ -196,6 +196,16 @@ impl From for Error { secp256k1::Error::InvalidRecoveryId => Error::Parse("Invalid Recovery Id".to_string()), secp256k1::Error::InvalidTweak => Error::Parse("Invalid Tweak".to_string()), secp256k1::Error::NotEnoughMemory => Error::Parse("Not Enough Memory".to_string()), + secp256k1::Error::InvalidSharedSecret => { + Error::Parse("Invalid Shared Secret".to_string()) + } + secp256k1::Error::InvalidPublicKeySum => { + Error::Parse("Invalid Public Key Sum".to_string()) + } + secp256k1::Error::InvalidParityValue(e) => { + Error::Parse(format!("Invalid Parity Value: {}", e)) + } + secp256k1::Error::InvalidEllSwift => Error::Parse("Invalid Ell Swift".to_string()), } } }