Update Rust Edition to 2024 (#7766)

* #7749

Thanks @dknopik and @michaelsproul for your help!
This commit is contained in:
chonghe
2025-08-13 11:04:31 +08:00
committed by GitHub
parent bd6b8b6a65
commit 522bd9e9c6
468 changed files with 3594 additions and 3396 deletions

View File

@@ -1,6 +1,6 @@
use crate::{
generic_public_key::{GenericPublicKey, TPublicKey},
Error,
generic_public_key::{GenericPublicKey, TPublicKey},
};
use std::fmt::{self, Debug};
use std::marker::PhantomData;

View File

@@ -1,8 +1,8 @@
use crate::{
Error, Hash256, INFINITY_SIGNATURE, SIGNATURE_BYTES_LEN,
generic_aggregate_public_key::TAggregatePublicKey,
generic_public_key::{GenericPublicKey, TPublicKey},
generic_signature::{GenericSignature, TSignature},
Error, Hash256, INFINITY_SIGNATURE, SIGNATURE_BYTES_LEN,
};
use serde::de::{Deserialize, Deserializer};
use serde::ser::{Serialize, Serializer};

View File

@@ -1,5 +1,5 @@
use crate::generic_public_key_bytes::GenericPublicKeyBytes;
use crate::Error;
use crate::generic_public_key_bytes::GenericPublicKeyBytes;
use serde::de::{Deserialize, Deserializer};
use serde::ser::{Serialize, Serializer};
use serde_utils::hex::encode as hex_encode;

View File

@@ -1,6 +1,6 @@
use crate::{
generic_public_key::{GenericPublicKey, TPublicKey},
Error, PUBLIC_KEY_BYTES_LEN,
generic_public_key::{GenericPublicKey, TPublicKey},
};
use serde::de::{Deserialize, Deserializer};
use serde::ser::{Serialize, Serializer};

View File

@@ -1,7 +1,7 @@
use crate::{
Error, Hash256, ZeroizeHash,
generic_public_key::{GenericPublicKey, TPublicKey},
generic_signature::{GenericSignature, TSignature},
Error, Hash256, ZeroizeHash,
};
use std::marker::PhantomData;

View File

@@ -1,6 +1,6 @@
use crate::{
generic_public_key::{GenericPublicKey, TPublicKey},
Error, Hash256,
generic_public_key::{GenericPublicKey, TPublicKey},
};
use serde::de::{Deserialize, Deserializer};
use serde::ser::{Serialize, Serializer};

View File

@@ -1,7 +1,7 @@
use crate::{
Error, INFINITY_SIGNATURE, SIGNATURE_BYTES_LEN,
generic_public_key::TPublicKey,
generic_signature::{GenericSignature, TSignature},
Error, INFINITY_SIGNATURE, SIGNATURE_BYTES_LEN,
};
use serde::de::{Deserialize, Deserializer};
use serde::ser::{Serialize, Serializer};

View File

@@ -1,9 +1,9 @@
use crate::{
Hash256,
generic_aggregate_public_key::TAggregatePublicKey,
generic_aggregate_signature::{GenericAggregateSignature, TAggregateSignature},
generic_public_key::{GenericPublicKey, TPublicKey},
generic_signature::{GenericSignature, TSignature},
Hash256,
};
use std::borrow::Cow;
use std::marker::PhantomData;

View File

@@ -1,29 +1,28 @@
use crate::{
BlstError, Error, Hash256, INFINITY_SIGNATURE, ZeroizeHash,
generic_aggregate_public_key::TAggregatePublicKey,
generic_aggregate_signature::TAggregateSignature,
generic_public_key::{
GenericPublicKey, TPublicKey, PUBLIC_KEY_BYTES_LEN, PUBLIC_KEY_UNCOMPRESSED_BYTES_LEN,
GenericPublicKey, PUBLIC_KEY_BYTES_LEN, PUBLIC_KEY_UNCOMPRESSED_BYTES_LEN, TPublicKey,
},
generic_secret_key::TSecretKey,
generic_signature::{TSignature, SIGNATURE_BYTES_LEN, SIGNATURE_UNCOMPRESSED_BYTES_LEN},
BlstError, Error, Hash256, ZeroizeHash, INFINITY_SIGNATURE,
generic_signature::{SIGNATURE_BYTES_LEN, SIGNATURE_UNCOMPRESSED_BYTES_LEN, TSignature},
};
pub use blst::min_pk as blst_core;
use blst::{blst_scalar, BLST_ERROR};
use blst::{BLST_ERROR, blst_scalar};
use rand::Rng;
pub const DST: &[u8] = b"BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_";
pub const RAND_BITS: usize = 64;
/// Provides the externally-facing, core BLS types.
pub mod types {
pub use super::BlstAggregatePublicKey as AggregatePublicKey;
pub use super::BlstAggregateSignature as AggregateSignature;
pub use super::SignatureSet;
pub use super::blst_core::PublicKey;
pub use super::blst_core::SecretKey;
pub use super::blst_core::Signature;
pub use super::verify_signature_sets;
pub use super::BlstAggregatePublicKey as AggregatePublicKey;
pub use super::BlstAggregateSignature as AggregateSignature;
pub use super::SignatureSet;
}
pub type SignatureSet<'a> = crate::generic_signature_set::GenericSignatureSet<
@@ -43,7 +42,7 @@ pub fn verify_signature_sets<'a>(
return false;
}
let rng = &mut rand::thread_rng();
let rng = &mut rand::rng();
let mut rands: Vec<blst_scalar> = Vec::with_capacity(sets.len());
let mut msgs_refs = Vec::with_capacity(sets.len());
@@ -55,7 +54,7 @@ pub fn verify_signature_sets<'a>(
let mut vals = [0u64; 4];
while vals[0] == 0 {
// Do not use zero
vals[0] = rng.gen();
vals[0] = rng.random();
}
let mut rand_i = std::mem::MaybeUninit::<blst_scalar>::uninit();
@@ -284,8 +283,8 @@ impl TAggregateSignature<blst_core::PublicKey, BlstAggregatePublicKey, blst_core
impl TSecretKey<blst_core::Signature, blst_core::PublicKey> for blst_core::SecretKey {
fn random() -> Self {
let rng = &mut rand::thread_rng();
let ikm: [u8; 32] = rng.gen();
let rng = &mut rand::rng();
let ikm: [u8; 32] = rng.random();
Self::key_gen(&ikm, &[]).unwrap()
}

View File

@@ -1,23 +1,23 @@
use crate::{
Error, Hash256, INFINITY_PUBLIC_KEY, INFINITY_SIGNATURE, ZeroizeHash,
generic_aggregate_public_key::TAggregatePublicKey,
generic_aggregate_signature::TAggregateSignature,
generic_public_key::{
GenericPublicKey, TPublicKey, PUBLIC_KEY_BYTES_LEN, PUBLIC_KEY_UNCOMPRESSED_BYTES_LEN,
GenericPublicKey, PUBLIC_KEY_BYTES_LEN, PUBLIC_KEY_UNCOMPRESSED_BYTES_LEN, TPublicKey,
},
generic_secret_key::{TSecretKey, SECRET_KEY_BYTES_LEN},
generic_signature::{TSignature, SIGNATURE_BYTES_LEN, SIGNATURE_UNCOMPRESSED_BYTES_LEN},
Error, Hash256, ZeroizeHash, INFINITY_PUBLIC_KEY, INFINITY_SIGNATURE,
generic_secret_key::{SECRET_KEY_BYTES_LEN, TSecretKey},
generic_signature::{SIGNATURE_BYTES_LEN, SIGNATURE_UNCOMPRESSED_BYTES_LEN, TSignature},
};
/// Provides the externally-facing, core BLS types.
pub mod types {
pub use super::verify_signature_sets;
pub use super::AggregatePublicKey;
pub use super::AggregateSignature;
pub use super::PublicKey;
pub use super::SecretKey;
pub use super::Signature;
pub use super::SignatureSet;
pub use super::verify_signature_sets;
}
pub type SignatureSet<'a> = crate::generic_signature_set::GenericSignatureSet<

View File

@@ -94,7 +94,7 @@ macro_rules! define_mod {
use crate::generics::*;
pub use bls_variant::{verify_signature_sets, SignatureSet};
pub use bls_variant::{SignatureSet, verify_signature_sets};
pub type PublicKey = GenericPublicKey<bls_variant::PublicKey>;
pub type PublicKeyBytes = GenericPublicKeyBytes<bls_variant::PublicKey>;

View File

@@ -1,6 +1,6 @@
use crate::{lamport_secret_key::LamportSecretKey, secret_bytes::SecretBytes, ZeroizeHash};
use crate::{ZeroizeHash, lamport_secret_key::LamportSecretKey, secret_bytes::SecretBytes};
use num_bigint_dig::BigUint;
use ring::hkdf::{KeyType, Prk, Salt, HKDF_SHA256};
use ring::hkdf::{HKDF_SHA256, KeyType, Prk, Salt};
use sha2::{Digest, Sha256};
use zeroize::Zeroize;
@@ -333,8 +333,7 @@ mod test {
fn get_raw_vector() -> RawTestVector {
RawTestVector {
seed: "0xc55257c360c07c72029aebc1b53c05ed0362ada38ead3e3e9efa3708e53495531f09a6987599d18264c1e1c92f2cf141630c7a3c4ab7c81b2f001698e7463b04",
master_sk:
"6083874454709270928345386274498605044986640685124978867557563392430687146096",
master_sk: "6083874454709270928345386274498605044986640685124978867557563392430687146096",
child_index: 0,
lamport_0: vec![
"0xe345d0ad7be270737de05cf036f688f385d5f99c7fddb054837658bdd2ebd519",
@@ -850,10 +849,8 @@ mod test {
"0x8b28838382e6892f59c42a7709d6d38396495d3af5a8d5b0a60f172a6a8940bd",
"0x261a605fa5f2a9bdc7cffac530edcf976e7ea7af4e443b625fe01ed39dad44b6",
],
compressed_lamport_pk:
"0xdd635d27d1d52b9a49df9e5c0c622360a4dd17cba7db4e89bce3cb048fb721a5",
child_sk:
"20397789859736650942317412262472558107875392172444076792671091975210932703118",
compressed_lamport_pk: "0xdd635d27d1d52b9a49df9e5c0c622360a4dd17cba7db4e89bce3cb048fb721a5",
child_sk: "20397789859736650942317412262472558107875392172444076792671091975210932703118",
}
}
}

View File

@@ -1,23 +1,24 @@
//! Provides a JSON keystore for a BLS keypair, as specified by
//! [EIP-2335](https://eips.ethereum.org/EIPS/eip-2335).
use crate::Uuid;
use crate::derived_key::DerivedKey;
use crate::json_keystore::{
Aes128Ctr, ChecksumModule, Cipher, CipherModule, Crypto, EmptyMap, EmptyString, JsonKeystore,
Kdf, KdfModule, Scrypt, Sha256Checksum, Version,
};
use crate::Uuid;
use aes::Aes128Ctr as AesCtr;
use aes::cipher::generic_array::GenericArray;
use aes::cipher::{NewCipher, StreamCipher};
use aes::Aes128Ctr as AesCtr;
use bls::{Keypair, PublicKey, SecretKey, ZeroizeHash};
use eth2_key_derivation::PlainText;
use hmac::Hmac;
use pbkdf2::pbkdf2;
use rand::prelude::*;
use scrypt::{
Params as ScryptParams,
errors::{InvalidOutputLen, InvalidParams},
scrypt, Params as ScryptParams,
scrypt,
};
use serde::{Deserialize, Serialize};
use sha2::{Digest, Sha256};
@@ -103,8 +104,8 @@ impl<'a> KeystoreBuilder<'a> {
if password.is_empty() {
Err(Error::EmptyPassword)
} else {
let salt = rand::thread_rng().gen::<[u8; SALT_SIZE]>();
let iv = rand::thread_rng().gen::<[u8; IV_SIZE]>().to_vec().into();
let salt = rand::rng().random::<[u8; SALT_SIZE]>();
let iv = rand::rng().random::<[u8; IV_SIZE]>().to_vec().into();
Ok(Self {
keypair,
@@ -574,7 +575,10 @@ fn validate_parameters(kdf: &Kdf) -> Result<(), Error> {
let default_kdf = Scrypt::default_scrypt(vec![0u8; 32]);
let default_npr = 128 * default_kdf.n * default_kdf.p * default_kdf.r;
if npr < default_npr {
eprintln!("WARN: Scrypt parameters are too weak (n: {}, p: {}, r: {}), we recommend (n: {}, p: {}, r: {})", params.n, params.p, params.r, default_kdf.n, default_kdf.p, default_kdf.r);
eprintln!(
"WARN: Scrypt parameters are too weak (n: {}, p: {}, r: {}), we recommend (n: {}, p: {}, r: {})",
params.n, params.p, params.r, default_kdf.n, default_kdf.p, default_kdf.r
);
}
// Validate `salt` length.

View File

@@ -9,7 +9,7 @@ pub mod json_keystore;
pub use bls::ZeroizeHash;
pub use eth2_key_derivation::PlainText;
pub use keystore::{
decrypt, default_kdf, encrypt, keypair_from_secret, Error, Keystore, KeystoreBuilder, DKLEN,
HASH_SIZE, IV_SIZE, SALT_SIZE,
DKLEN, Error, HASH_SIZE, IV_SIZE, Keystore, KeystoreBuilder, SALT_SIZE, decrypt, default_kdf,
encrypt, keypair_from_secret,
};
pub use uuid::Uuid;

View File

@@ -3,9 +3,8 @@
use bls::Keypair;
use eth2_keystore::{
default_kdf,
DKLEN, Error, Keystore, KeystoreBuilder, default_kdf,
json_keystore::{Kdf, Pbkdf2, Prf, Scrypt},
Error, Keystore, KeystoreBuilder, DKLEN,
};
use std::fs::File;
use tempfile::tempdir;

View File

@@ -4,8 +4,8 @@ mod wallet;
pub mod json_wallet;
pub use bip39;
pub use validator_path::{KeyType, ValidatorPath, COIN_TYPE, PURPOSE};
pub use validator_path::{COIN_TYPE, KeyType, PURPOSE, ValidatorPath};
pub use wallet::{
recover_validator_secret, recover_validator_secret_from_mnemonic, DerivedKey, Error,
KeystoreError, PlainText, Uuid, ValidatorKeystores, Wallet, WalletBuilder,
DerivedKey, Error, KeystoreError, PlainText, Uuid, ValidatorKeystores, Wallet, WalletBuilder,
recover_validator_secret, recover_validator_secret_from_mnemonic,
};

View File

@@ -1,17 +1,17 @@
use crate::{
KeyType, ValidatorPath,
json_wallet::{
Aes128Ctr, ChecksumModule, Cipher, CipherModule, Crypto, EmptyMap, EmptyString, JsonWallet,
Kdf, KdfModule, Sha256Checksum, TypeField, Version,
},
KeyType, ValidatorPath,
};
pub use bip39::{Mnemonic, Seed as Bip39Seed};
pub use eth2_key_derivation::{DerivedKey, DerivedKeyError};
use eth2_keystore::{
decrypt, default_kdf, encrypt, keypair_from_secret, Keystore, KeystoreBuilder, IV_SIZE,
SALT_SIZE,
};
pub use eth2_keystore::{Error as KeystoreError, PlainText};
use eth2_keystore::{
IV_SIZE, Keystore, KeystoreBuilder, SALT_SIZE, decrypt, default_kdf, encrypt,
keypair_from_secret,
};
use rand::prelude::*;
use serde::{Deserialize, Serialize};
use std::io::{Read, Write};
@@ -90,8 +90,8 @@ impl<'a> WalletBuilder<'a> {
} else if seed.is_empty() {
Err(Error::EmptySeed)
} else {
let salt = rand::thread_rng().gen::<[u8; SALT_SIZE]>();
let iv = rand::thread_rng().gen::<[u8; IV_SIZE]>().to_vec().into();
let salt = rand::rng().random::<[u8; SALT_SIZE]>();
let iv = rand::rng().random::<[u8; IV_SIZE]>().to_vec().into();
Ok(Self {
seed: seed.to_vec().into(),

View File

@@ -1,8 +1,9 @@
#![cfg(not(debug_assertions))]
use eth2_wallet::{
DerivedKey, Error, KeyType, KeystoreError, Wallet, WalletBuilder,
bip39::{Language, Mnemonic, Seed},
recover_validator_secret, DerivedKey, Error, KeyType, KeystoreError, Wallet, WalletBuilder,
recover_validator_secret,
};
use std::fs::File;
use tempfile::tempdir;