Remove duplicated crypto dependencies (#8605)

#8547


  This unifies the following `crypto` dependencies to a single version each:

- `sha2`
- `hmac`
- `pbkdf2`
- `aes`
- `cipher`
- `ctr`
- `scrypt`
- `digest`


Co-Authored-By: Mac L <mjladson@pm.me>
This commit is contained in:
Mac L
2026-01-07 23:38:31 +04:00
committed by GitHub
parent 2fe59405bc
commit 3662e1ab7f
7 changed files with 105 additions and 214 deletions

275
Cargo.lock generated
View File

@@ -65,19 +65,6 @@ dependencies = [
"generic-array", "generic-array",
] ]
[[package]]
name = "aes"
version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8"
dependencies = [
"cfg-if",
"cipher 0.3.0",
"cpufeatures",
"ctr 0.8.0",
"opaque-debug",
]
[[package]] [[package]]
name = "aes" name = "aes"
version = "0.8.4" version = "0.8.4"
@@ -85,7 +72,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"cipher 0.4.4", "cipher",
"cpufeatures", "cpufeatures",
] ]
@@ -96,9 +83,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1"
dependencies = [ dependencies = [
"aead", "aead",
"aes 0.8.4", "aes",
"cipher 0.4.4", "cipher",
"ctr 0.9.2", "ctr",
"ghash", "ghash",
"subtle", "subtle",
] ]
@@ -253,7 +240,7 @@ dependencies = [
"either", "either",
"serde", "serde",
"serde_with", "serde_with",
"sha2 0.10.9", "sha2",
"thiserror 2.0.17", "thiserror 2.0.17",
] ]
@@ -1284,7 +1271,7 @@ dependencies = [
"tree_hash_derive", "tree_hash_derive",
"typenum", "typenum",
"types", "types",
"zstd 0.13.3", "zstd",
] ]
[[package]] [[package]]
@@ -1459,15 +1446,6 @@ dependencies = [
"digest 0.10.7", "digest 0.10.7",
] ]
[[package]]
name = "block-buffer"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
dependencies = [
"generic-array",
]
[[package]] [[package]]
name = "block-buffer" name = "block-buffer"
version = "0.10.4" version = "0.10.4"
@@ -1637,26 +1615,6 @@ dependencies = [
"serde", "serde",
] ]
[[package]]
name = "bzip2"
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8"
dependencies = [
"bzip2-sys",
"libc",
]
[[package]]
name = "bzip2-sys"
version = "0.1.13+1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14"
dependencies = [
"cc",
"pkg-config",
]
[[package]] [[package]]
name = "c-kzg" name = "c-kzg"
version = "2.1.5" version = "2.1.5"
@@ -1750,7 +1708,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"cipher 0.4.4", "cipher",
"cpufeatures", "cpufeatures",
] ]
@@ -1762,7 +1720,7 @@ checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35"
dependencies = [ dependencies = [
"aead", "aead",
"chacha20", "chacha20",
"cipher 0.4.4", "cipher",
"poly1305", "poly1305",
"zeroize", "zeroize",
] ]
@@ -1808,15 +1766,6 @@ dependencies = [
"half", "half",
] ]
[[package]]
name = "cipher"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7"
dependencies = [
"generic-array",
]
[[package]] [[package]]
name = "cipher" name = "cipher"
version = "0.4.4" version = "0.4.4"
@@ -2075,12 +2024,6 @@ dependencies = [
"unicode-xid", "unicode-xid",
] ]
[[package]]
name = "constant_time_eq"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc"
[[package]] [[package]]
name = "context_deserialize" name = "context_deserialize"
version = "0.2.0" version = "0.2.0"
@@ -2280,32 +2223,13 @@ dependencies = [
"typenum", "typenum",
] ]
[[package]]
name = "crypto-mac"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25fab6889090c8133f3deb8f73ba3c65a7f456f66436fc012a1b1e272b1e103e"
dependencies = [
"generic-array",
"subtle",
]
[[package]]
name = "ctr"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea"
dependencies = [
"cipher 0.3.0",
]
[[package]] [[package]]
name = "ctr" name = "ctr"
version = "0.9.2" version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835"
dependencies = [ dependencies = [
"cipher 0.4.4", "cipher",
] ]
[[package]] [[package]]
@@ -2558,7 +2482,7 @@ dependencies = [
"hex", "hex",
"reqwest", "reqwest",
"serde_json", "serde_json",
"sha2 0.9.9", "sha2",
"tree_hash", "tree_hash",
"types", "types",
] ]
@@ -2668,7 +2592,7 @@ version = "0.10.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
dependencies = [ dependencies = [
"block-buffer 0.10.4", "block-buffer",
"const-oid", "const-oid",
"crypto-common", "crypto-common",
"subtle", "subtle",
@@ -2709,11 +2633,11 @@ version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f170f4f6ed0e1df52bf43b403899f0081917ecf1500bfe312505cc3b515a8899" checksum = "f170f4f6ed0e1df52bf43b403899f0081917ecf1500bfe312505cc3b515a8899"
dependencies = [ dependencies = [
"aes 0.8.4", "aes",
"aes-gcm", "aes-gcm",
"alloy-rlp", "alloy-rlp",
"arrayvec", "arrayvec",
"ctr 0.9.2", "ctr",
"delay_map", "delay_map",
"enr", "enr",
"fnv", "fnv",
@@ -2837,7 +2761,7 @@ dependencies = [
"ed25519", "ed25519",
"rand_core 0.6.4", "rand_core 0.6.4",
"serde", "serde",
"sha2 0.10.9", "sha2",
"subtle", "subtle",
"zeroize", "zeroize",
] ]
@@ -2905,7 +2829,7 @@ dependencies = [
"itertools 0.14.0", "itertools 0.14.0",
"serde", "serde",
"serde_json", "serde_json",
"sha2 0.10.9", "sha2",
] ]
[[package]] [[package]]
@@ -2970,7 +2894,7 @@ dependencies = [
"ekzg-bls12-381", "ekzg-bls12-381",
"ekzg-maybe-rayon", "ekzg-maybe-rayon",
"ekzg-polynomial", "ekzg-polynomial",
"sha2 0.10.9", "sha2",
] ]
[[package]] [[package]]
@@ -3195,7 +3119,7 @@ dependencies = [
"hex", "hex",
"num-bigint-dig", "num-bigint-dig",
"ring", "ring",
"sha2 0.9.9", "sha2",
"zeroize", "zeroize",
] ]
@@ -3203,18 +3127,20 @@ dependencies = [
name = "eth2_keystore" name = "eth2_keystore"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"aes 0.7.5", "aes",
"bls", "bls",
"cipher",
"ctr",
"eth2_key_derivation", "eth2_key_derivation",
"hex", "hex",
"hmac 0.11.0", "hmac",
"pbkdf2 0.8.0", "pbkdf2",
"rand 0.9.2", "rand 0.9.2",
"scrypt", "scrypt",
"serde", "serde",
"serde_json", "serde_json",
"serde_repr", "serde_repr",
"sha2 0.9.9", "sha2",
"tempfile", "tempfile",
"unicode-normalization", "unicode-normalization",
"uuid 0.8.2", "uuid 0.8.2",
@@ -3235,7 +3161,7 @@ dependencies = [
"reqwest", "reqwest",
"sensitive_url", "sensitive_url",
"serde_yaml", "serde_yaml",
"sha2 0.9.9", "sha2",
"tempfile", "tempfile",
"tokio", "tokio",
"tracing", "tracing",
@@ -3277,7 +3203,7 @@ checksum = "5aa93f58bb1eb3d1e556e4f408ef1dac130bad01ac37db4e7ade45de40d1c86a"
dependencies = [ dependencies = [
"cpufeatures", "cpufeatures",
"ring", "ring",
"sha2 0.10.9", "sha2",
] ]
[[package]] [[package]]
@@ -3423,7 +3349,7 @@ dependencies = [
"sensitive_url", "sensitive_url",
"serde", "serde",
"serde_json", "serde_json",
"sha2 0.9.9", "sha2",
"slot_clock", "slot_clock",
"ssz_types", "ssz_types",
"state_processing", "state_processing",
@@ -3567,6 +3493,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb"
dependencies = [ dependencies = [
"crc32fast", "crc32fast",
"libz-rs-sys",
"libz-sys", "libz-sys",
"miniz_oxide", "miniz_oxide",
] ]
@@ -4143,17 +4070,7 @@ version = "0.12.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7"
dependencies = [ dependencies = [
"hmac 0.12.1", "hmac",
]
[[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",
] ]
[[package]] [[package]]
@@ -4856,7 +4773,7 @@ dependencies = [
"elliptic-curve", "elliptic-curve",
"once_cell", "once_cell",
"serdect", "serdect",
"sha2 0.10.9", "sha2",
"signature", "signature",
] ]
@@ -5143,7 +5060,7 @@ dependencies = [
"quick-protobuf-codec", "quick-protobuf-codec",
"rand 0.8.5", "rand 0.8.5",
"regex", "regex",
"sha2 0.10.9", "sha2",
"tracing", "tracing",
"web-time", "web-time",
] ]
@@ -5183,7 +5100,7 @@ dependencies = [
"multihash", "multihash",
"quick-protobuf", "quick-protobuf",
"rand 0.8.5", "rand 0.8.5",
"sha2 0.10.9", "sha2",
"thiserror 2.0.17", "thiserror 2.0.17",
"tracing", "tracing",
"zeroize", "zeroize",
@@ -5423,6 +5340,15 @@ dependencies = [
"vcpkg", "vcpkg",
] ]
[[package]]
name = "libz-rs-sys"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "15413ef615ad868d4d65dce091cb233b229419c7c0c4bcaa746c0901c49ff39c"
dependencies = [
"zlib-rs",
]
[[package]] [[package]]
name = "libz-sys" name = "libz-sys"
version = "1.1.23" version = "1.1.23"
@@ -5523,7 +5449,7 @@ dependencies = [
"rand 0.9.2", "rand 0.9.2",
"regex", "regex",
"serde", "serde",
"sha2 0.9.9", "sha2",
"smallvec", "smallvec",
"snap", "snap",
"ssz_types", "ssz_types",
@@ -6736,17 +6662,6 @@ dependencies = [
"windows-link", "windows-link",
] ]
[[package]]
name = "password-hash"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700"
dependencies = [
"base64ct",
"rand_core 0.6.4",
"subtle",
]
[[package]] [[package]]
name = "paste" name = "paste"
version = "1.0.15" version = "1.0.15"
@@ -6755,23 +6670,12 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
[[package]] [[package]]
name = "pbkdf2" name = "pbkdf2"
version = "0.8.0" version = "0.12.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2"
dependencies = [
"crypto-mac",
]
[[package]]
name = "pbkdf2"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917"
dependencies = [ dependencies = [
"digest 0.10.7", "digest 0.10.7",
"hmac 0.12.1", "hmac",
"password-hash",
"sha2 0.10.9",
] ]
[[package]] [[package]]
@@ -7586,7 +7490,7 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2"
dependencies = [ dependencies = [
"hmac 0.12.1", "hmac",
"subtle", "subtle",
] ]
@@ -7913,11 +7817,11 @@ checksum = "b147bb6111014916d3ef9d4c85173124a8e12193a67f6176d67244afd558d6c1"
[[package]] [[package]]
name = "salsa20" name = "salsa20"
version = "0.8.1" version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ecbd2eb639fd7cab5804a0837fe373cc2172d15437e804c054a9fb885cb923b0" checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213"
dependencies = [ dependencies = [
"cipher 0.3.0", "cipher",
] ]
[[package]] [[package]]
@@ -7985,14 +7889,13 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]] [[package]]
name = "scrypt" name = "scrypt"
version = "0.7.0" version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "879588d8f90906e73302547e20fffefdd240eb3e0e744e142321f5d49dea0518" checksum = "0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f"
dependencies = [ dependencies = [
"hmac 0.11.0", "pbkdf2",
"pbkdf2 0.8.0",
"salsa20", "salsa20",
"sha2 0.9.9", "sha2",
] ]
[[package]] [[package]]
@@ -8246,19 +8149,6 @@ dependencies = [
"digest 0.10.7", "digest 0.10.7",
] ]
[[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",
]
[[package]] [[package]]
name = "sha2" name = "sha2"
version = "0.10.9" version = "0.10.9"
@@ -8505,7 +8395,7 @@ dependencies = [
"rand_core 0.6.4", "rand_core 0.6.4",
"ring", "ring",
"rustc_version 0.4.1", "rustc_version 0.4.1",
"sha2 0.10.9", "sha2",
"subtle", "subtle",
] ]
@@ -8654,7 +8544,7 @@ dependencies = [
"typenum", "typenum",
"types", "types",
"xdelta3", "xdelta3",
"zstd 0.13.3", "zstd",
] ]
[[package]] [[package]]
@@ -9025,17 +8915,15 @@ dependencies = [
[[package]] [[package]]
name = "tiny-bip39" name = "tiny-bip39"
version = "1.0.0" version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62cc94d358b5a1e84a5cb9109f559aa3c4d634d2b1b4de3d0fa4adc7c78e2861" checksum = "a30fd743a02bf35236f6faf99adb03089bb77e91c998dac2c2ad76bb424f668c"
dependencies = [ dependencies = [
"anyhow",
"hmac 0.12.1",
"once_cell", "once_cell",
"pbkdf2 0.11.0", "pbkdf2",
"rand 0.8.5", "rand 0.8.5",
"rustc-hash 1.1.0", "rustc-hash 1.1.0",
"sha2 0.10.9", "sha2",
"thiserror 1.0.69", "thiserror 1.0.69",
"unicode-normalization", "unicode-normalization",
"wasm-bindgen", "wasm-bindgen",
@@ -10827,31 +10715,34 @@ dependencies = [
[[package]] [[package]]
name = "zip" name = "zip"
version = "0.6.6" version = "6.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" checksum = "eb2a05c7c36fde6c09b08576c9f7fb4cda705990f73b58fe011abf7dfb24168b"
dependencies = [ dependencies = [
"aes 0.8.4", "arbitrary",
"byteorder",
"bzip2",
"constant_time_eq",
"crc32fast", "crc32fast",
"crossbeam-utils",
"flate2", "flate2",
"hmac 0.12.1", "indexmap 2.12.0",
"pbkdf2 0.11.0", "memchr",
"sha1", "zopfli",
"time",
"zstd 0.11.2+zstd.1.5.2",
] ]
[[package]] [[package]]
name = "zstd" name = "zlib-rs"
version = "0.11.2+zstd.1.5.2" version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" checksum = "51f936044d677be1a1168fae1d03b583a285a5dd9d8cbf7b24c23aa1fc775235"
[[package]]
name = "zopfli"
version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249"
dependencies = [ dependencies = [
"zstd-safe 5.0.2+zstd.1.5.2", "bumpalo",
"crc32fast",
"log",
"simd-adler32",
] ]
[[package]] [[package]]
@@ -10860,17 +10751,7 @@ version = "0.13.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a"
dependencies = [ dependencies = [
"zstd-safe 7.2.4", "zstd-safe",
]
[[package]]
name = "zstd-safe"
version = "5.0.2+zstd.1.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db"
dependencies = [
"libc",
"zstd-sys",
] ]
[[package]] [[package]]

View File

@@ -225,7 +225,7 @@ serde = { version = "1", features = ["derive"] }
serde_json = "1" serde_json = "1"
serde_repr = "0.1" serde_repr = "0.1"
serde_yaml = "0.9" serde_yaml = "0.9"
sha2 = "0.9" sha2 = "0.10"
signing_method = { path = "validator_client/signing_method" } signing_method = { path = "validator_client/signing_method" }
slasher = { path = "slasher", default-features = false } slasher = { path = "slasher", default-features = false }
slashing_protection = { path = "validator_client/slashing_protection" } slashing_protection = { path = "validator_client/slashing_protection" }
@@ -276,7 +276,7 @@ warp_utils = { path = "common/warp_utils" }
workspace_members = { path = "common/workspace_members" } workspace_members = { path = "common/workspace_members" }
xdelta3 = { git = "https://github.com/sigp/xdelta3-rs", rev = "4db64086bb02e9febb584ba93b9d16bb2ae3825a" } xdelta3 = { git = "https://github.com/sigp/xdelta3-rs", rev = "4db64086bb02e9febb584ba93b9d16bb2ae3825a" }
zeroize = { version = "1", features = ["zeroize_derive", "serde"] } zeroize = { version = "1", features = ["zeroize_derive", "serde"] }
zip = "0.6" zip = { version = "6.0", default-features = false, features = ["deflate"] }
zstd = "0.13" zstd = "0.13"
[profile.maxperf] [profile.maxperf]

View File

@@ -7,14 +7,16 @@ autotests = false
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
aes = { version = "0.7", features = ["ctr"] } aes = "0.8"
bls = { workspace = true } bls = { workspace = true }
cipher = "0.4"
ctr = "0.9"
eth2_key_derivation = { workspace = true } eth2_key_derivation = { workspace = true }
hex = { workspace = true } hex = { workspace = true }
hmac = "0.11.0" hmac = "0.12.0"
pbkdf2 = { version = "0.8.0", default-features = false } pbkdf2 = { version = "0.12.0", default-features = false }
rand = { workspace = true } rand = { workspace = true }
scrypt = { version = "0.7.0", default-features = false } scrypt = { version = "0.11.0", default-features = false }
serde = { workspace = true } serde = { workspace = true }
serde_json = { workspace = true } serde_json = { workspace = true }
serde_repr = { workspace = true } serde_repr = { workspace = true }

View File

@@ -5,9 +5,10 @@
use super::hex_bytes::HexBytes; use super::hex_bytes::HexBytes;
use crate::DKLEN; use crate::DKLEN;
use hmac::{Hmac, Mac, NewMac}; use hmac::{Hmac, Mac};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use sha2::Sha256; use sha2::Sha256;
use sha2::digest::KeyInit;
/// KDF module representation. /// KDF module representation.
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] #[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
@@ -67,7 +68,7 @@ pub enum Prf {
impl Prf { impl Prf {
pub fn mac(&self, password: &[u8]) -> impl Mac { pub fn mac(&self, password: &[u8]) -> impl Mac {
match &self { match &self {
Prf::HmacSha256 => Hmac::<Sha256>::new_from_slice(password) Prf::HmacSha256 => <Hmac<Sha256> as KeyInit>::new_from_slice(password)
.expect("Could not derive HMAC using SHA256."), .expect("Could not derive HMAC using SHA256."),
} }
} }

View File

@@ -7,10 +7,11 @@ use crate::json_keystore::{
Aes128Ctr, ChecksumModule, Cipher, CipherModule, Crypto, EmptyMap, EmptyString, JsonKeystore, Aes128Ctr, ChecksumModule, Cipher, CipherModule, Crypto, EmptyMap, EmptyString, JsonKeystore,
Kdf, KdfModule, Scrypt, Sha256Checksum, Version, Kdf, KdfModule, Scrypt, Sha256Checksum, Version,
}; };
use aes::Aes128Ctr as AesCtr; use aes::Aes128;
use aes::cipher::generic_array::GenericArray;
use aes::cipher::{NewCipher, StreamCipher};
use bls::{Keypair, PublicKey, SecretKey, ZeroizeHash}; use bls::{Keypair, PublicKey, SecretKey, ZeroizeHash};
use cipher::generic_array::GenericArray;
use cipher::{KeyIvInit, StreamCipher};
use ctr::Ctr64BE;
use eth2_key_derivation::PlainText; use eth2_key_derivation::PlainText;
use hmac::Hmac; use hmac::Hmac;
use pbkdf2::pbkdf2; use pbkdf2::pbkdf2;
@@ -350,7 +351,7 @@ pub fn encrypt(
// AES Encrypt // AES Encrypt
let key = GenericArray::from_slice(&derived_key.as_bytes()[0..16]); let key = GenericArray::from_slice(&derived_key.as_bytes()[0..16]);
let nonce = GenericArray::from_slice(params.iv.as_bytes()); let nonce = GenericArray::from_slice(params.iv.as_bytes());
let mut cipher = AesCtr::new(key, nonce); let mut cipher = Ctr64BE::<Aes128>::new(key, nonce);
cipher.apply_keystream(&mut cipher_text); cipher.apply_keystream(&mut cipher_text);
} }
}; };
@@ -396,7 +397,7 @@ pub fn decrypt(password: &[u8], crypto: &Crypto) -> Result<PlainText, Error> {
// AES Decrypt // AES Decrypt
let key = GenericArray::from_slice(&derived_key.as_bytes()[0..16]); let key = GenericArray::from_slice(&derived_key.as_bytes()[0..16]);
let nonce = GenericArray::from_slice(params.iv.as_bytes()); let nonce = GenericArray::from_slice(params.iv.as_bytes());
let mut cipher = AesCtr::new(key, nonce); let mut cipher = Ctr64BE::<Aes128>::new(key, nonce);
cipher.apply_keystream(plain_text.as_mut_bytes()); cipher.apply_keystream(plain_text.as_mut_bytes());
} }
}; };
@@ -444,13 +445,15 @@ fn derive_key(password: &[u8], kdf: &Kdf) -> Result<DerivedKey, Error> {
params.salt.as_bytes(), params.salt.as_bytes(),
params.c, params.c,
dk.as_mut_bytes(), dk.as_mut_bytes(),
); )
// `pbkdf2` accepts keys of any size so this error should never occur in practice.
.map_err(|_| Error::InvalidPassword)?;
} }
Kdf::Scrypt(params) => { Kdf::Scrypt(params) => {
scrypt( scrypt(
password, password,
params.salt.as_bytes(), params.salt.as_bytes(),
&ScryptParams::new(log2_int(params.n) as u8, params.r, params.p) &ScryptParams::new(log2_int(params.n) as u8, params.r, params.p, DKLEN as usize)
.map_err(Error::ScryptInvalidParams)?, .map_err(Error::ScryptInvalidParams)?,
dk.as_mut_bytes(), dk.as_mut_bytes(),
) )

View File

@@ -13,7 +13,7 @@ rand = { workspace = true }
serde = { workspace = true } serde = { workspace = true }
serde_json = { workspace = true } serde_json = { workspace = true }
serde_repr = { workspace = true } serde_repr = { workspace = true }
tiny-bip39 = "1" tiny-bip39 = "2"
uuid = { workspace = true } uuid = { workspace = true }
[dev-dependencies] [dev-dependencies]

View File

@@ -11,7 +11,11 @@ deny = [
{ crate = "derivative", reason = "use educe or derive_more instead" }, { crate = "derivative", reason = "use educe or derive_more instead" },
{ crate = "ark-ff", reason = "present in Cargo.lock but not needed by Lighthouse" }, { crate = "ark-ff", reason = "present in Cargo.lock but not needed by Lighthouse" },
{ crate = "strum", deny-multiple-versions = true, reason = "takes a long time to compile" }, { crate = "strum", deny-multiple-versions = true, reason = "takes a long time to compile" },
{ crate = "reqwest", deny-multiple-versions = true, reason = "takes a long time to compile" } { crate = "reqwest", deny-multiple-versions = true, reason = "takes a long time to compile" },
{ crate = "aes", deny-multiple-versions = true, reason = "takes a long time to compile" },
{ crate = "sha2", deny-multiple-versions = true, reason = "takes a long time to compile" },
{ crate = "pbkdf2", deny-multiple-versions = true, reason = "takes a long time to compile" },
{ crate = "scrypt", deny-multiple-versions = true, reason = "takes a long time to compile" },
] ]
[sources] [sources]