mirror of
https://github.com/sigp/lighthouse.git
synced 2026-06-29 10:54:24 +00:00
Update Rust Edition to 2024 (#7766)
* #7749 Thanks @dknopik and @michaelsproul for your help!
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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};
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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};
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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};
|
||||
|
||||
@@ -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};
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
@@ -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<
|
||||
|
||||
@@ -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>;
|
||||
|
||||
@@ -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",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user