From 56966ea822b983503ad197cdf99cd775a85e2103 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Hodul=C3=A1k?= Date: Thu, 26 May 2022 11:05:13 +0200 Subject: [PATCH] Build(deps): Upgrade `libsecp256k1` version 0.3.5 => 0.7.0 This resolves security issues with Signature::parse functions See https://github.com/paritytech/libsecp256k1/commit/b525d5d318d9672a40250c1725fa1bb3156688b7 Also upgrades `aurora-blake2` version `0.9.1` => `0.10.4` to avoid using dicontinued `crypto-mac` dependency --- Cargo.lock | 150 ++++++++---------- Cargo.toml | 1 + engine-precompiles/Cargo.toml | 2 +- engine-precompiles/src/secp256k1.rs | 9 +- engine-tests/Cargo.toml | 4 +- engine-tests/src/benches/eth_deploy_code.rs | 2 +- engine-tests/src/benches/eth_erc20.rs | 2 +- .../src/benches/eth_standard_precompiles.rs | 2 +- engine-tests/src/benches/eth_transfer.rs | 2 +- engine-tests/src/benches/nft_pagination.rs | 2 +- engine-tests/src/test_utils/mod.rs | 8 +- engine-tests/src/test_utils/standalone/mod.rs | 2 +- engine-tests/src/tests/access_lists.rs | 2 +- engine-tests/src/tests/eip1559.rs | 3 +- engine-tests/src/tests/erc20.rs | 2 +- engine-tests/src/tests/erc20_connector.rs | 2 +- engine-tests/src/tests/multisender.rs | 2 +- engine-tests/src/tests/one_inch.rs | 2 +- engine-tests/src/tests/sanity.rs | 2 +- .../src/tests/standalone/json_snapshot.rs | 2 +- engine-tests/src/tests/uniswap.rs | 2 +- engine/Cargo.toml | 2 +- etc/state-migration-test/Cargo.lock | 124 +++++++++------ 23 files changed, 177 insertions(+), 154 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ed71b73f6..e623b466f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -111,7 +111,7 @@ source = "git+https://github.com/aurora-is-near/aurora-bn.git#8f1743884061981cac dependencies = [ "byteorder", "getrandom 0.2.2", - "rand 0.8.3", + "rand 0.8.5", "serde", ] @@ -165,7 +165,7 @@ dependencies = [ "ripemd160", "serde", "serde_json", - "sha2 0.9.5", + "sha2", "sha3 0.9.1", ] @@ -175,7 +175,7 @@ version = "1.0.0" dependencies = [ "aurora-engine-types", "borsh 0.8.2", - "sha2 0.9.5", + "sha2", "sha3 0.9.1", ] @@ -209,7 +209,7 @@ dependencies = [ "near-sdk-sim", "near-vm-logic", "near-vm-runner", - "rand 0.7.3", + "rand 0.8.5", "rlp", "serde", "serde_json", @@ -942,16 +942,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" -[[package]] -name = "crypto-mac" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" -dependencies = [ - "generic-array 0.12.4", - "subtle 1.0.0", -] - [[package]] name = "crypto-mac" version = "0.8.0" @@ -959,7 +949,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ "generic-array 0.14.4", - "subtle 2.4.0", + "subtle", ] [[package]] @@ -969,7 +959,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" dependencies = [ "generic-array 0.14.4", - "subtle 2.4.0", + "subtle", ] [[package]] @@ -1003,7 +993,7 @@ dependencies = [ "byteorder", "digest 0.9.0", "rand_core 0.5.1", - "subtle 2.4.0", + "subtle", "zeroize", ] @@ -1127,7 +1117,7 @@ dependencies = [ "ed25519", "rand 0.7.3", "serde", - "sha2 0.9.5", + "sha2", "zeroize", ] @@ -1342,12 +1332,6 @@ dependencies = [ "sha3 0.8.2", ] -[[package]] -name = "fake-simd" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" - [[package]] name = "fallible-iterator" version = "0.2.0" @@ -1361,7 +1345,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" dependencies = [ "byteorder", - "rand 0.8.3", + "rand 0.8.5", "rustc-hex", "static_assertions", ] @@ -1653,12 +1637,12 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hmac" -version = "0.7.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" dependencies = [ - "crypto-mac 0.7.0", - "digest 0.8.1", + "crypto-mac 0.8.0", + "digest 0.9.0", ] [[package]] @@ -1673,13 +1657,13 @@ dependencies = [ [[package]] name = "hmac-drbg" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6e570451493f10f6581b48cdd530413b63ea9e780f544bfd3bdcaa0d89d1a7b" +checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" dependencies = [ - "digest 0.8.1", - "generic-array 0.12.4", - "hmac 0.7.1", + "digest 0.9.0", + "generic-array 0.14.4", + "hmac 0.8.1", ] [[package]] @@ -1908,20 +1892,52 @@ dependencies = [ [[package]] name = "libsecp256k1" -version = "0.3.5" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc1e2c808481a63dc6da2074752fdd4336a3c8fcc68b83db6f1fd5224ae7962" +checksum = "b0452aac8bab02242429380e9b2f94ea20cea2b37e2c1777a1358799bbe97f37" dependencies = [ "arrayref", - "crunchy", - "digest 0.8.1", + "base64 0.13.0", + "digest 0.9.0", "hmac-drbg", - "rand 0.7.3", - "sha2 0.8.2", - "subtle 2.4.0", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.8.5", + "serde", + "sha2", "typenum", ] +[[package]] +name = "libsecp256k1-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c" +dependencies = [ + "libsecp256k1-core", +] + [[package]] name = "libssh2-sys" version = "0.2.21" @@ -2204,7 +2220,7 @@ dependencies = [ "num-rational 0.3.2", "serde", "serde_json", - "sha2 0.9.5", + "sha2", "smart-default", "tracing", ] @@ -2231,7 +2247,7 @@ dependencies = [ "rand_core 0.5.1", "serde", "serde_json", - "subtle 2.4.0", + "subtle", "thiserror", ] @@ -2317,7 +2333,7 @@ dependencies = [ "near-account-id", "num-rational 0.3.2", "serde", - "sha2 0.9.5", + "sha2", "strum", ] @@ -2457,7 +2473,7 @@ dependencies = [ "near-vm-errors", "ripemd160", "serde", - "sha2 0.8.2", + "sha2", "sha3 0.9.1", ] @@ -2751,7 +2767,7 @@ dependencies = [ "lazy_static", "percent-encoding", "pin-project", - "rand 0.8.3", + "rand 0.8.5", "thiserror", "tokio", "tokio-stream", @@ -3034,8 +3050,8 @@ dependencies = [ "hmac 0.11.0", "md-5", "memchr", - "rand 0.8.3", - "sha2 0.9.5", + "rand 0.8.5", + "sha2", "stringprep", ] @@ -3220,19 +3236,18 @@ dependencies = [ "libc", "rand_chacha 0.2.2", "rand_core 0.5.1", - "rand_hc 0.2.0", + "rand_hc", ] [[package]] name = "rand" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha 0.3.0", "rand_core 0.6.2", - "rand_hc 0.3.0", ] [[package]] @@ -3282,15 +3297,6 @@ dependencies = [ "rand_core 0.5.1", ] -[[package]] -name = "rand_hc" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" -dependencies = [ - "rand_core 0.6.2", -] - [[package]] name = "rayon" version = "1.5.0" @@ -3675,18 +3681,6 @@ dependencies = [ "serde", ] -[[package]] -name = "sha2" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" -dependencies = [ - "block-buffer 0.7.3", - "digest 0.8.1", - "fake-simd", - "opaque-debug 0.2.3", -] - [[package]] name = "sha2" version = "0.9.5" @@ -3835,12 +3829,6 @@ dependencies = [ "syn", ] -[[package]] -name = "subtle" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" - [[package]] name = "subtle" version = "2.4.0" @@ -3896,7 +3884,7 @@ checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" dependencies = [ "cfg-if 1.0.0", "libc", - "rand 0.8.3", + "rand 0.8.5", "redox_syscall 0.2.8", "remove_dir_all", "winapi", @@ -4731,7 +4719,7 @@ dependencies = [ "mach", "memoffset", "more-asserts", - "rand 0.8.3", + "rand 0.8.5", "region 2.2.0", "rustix", "thiserror", diff --git a/Cargo.toml b/Cargo.toml index 3aeef99be..679e301f2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,6 +28,7 @@ lto = true opt-level = 3 [workspace] +resolver = "2" members = [ "engine", "engine-precompiles", diff --git a/engine-precompiles/Cargo.toml b/engine-precompiles/Cargo.toml index 1965010b4..fa9f3e8be 100644 --- a/engine-precompiles/Cargo.toml +++ b/engine-precompiles/Cargo.toml @@ -20,7 +20,7 @@ borsh = { version = "0.8.2", default-features = false } bn = { package = "aurora-bn", git = "https://github.com/aurora-is-near/aurora-bn.git", default-features = false } evm = { git = "https://github.com/aurora-is-near/sputnikvm.git", rev = "37448b6cacd98b06282cff5a559684505c29bd2b", default-features = false } evm-core = { git = "https://github.com/aurora-is-near/sputnikvm.git", rev = "37448b6cacd98b06282cff5a559684505c29bd2b", default-features = false } -libsecp256k1 = { version = "0.3.5", default-features = false } +libsecp256k1 = { version = "0.7.0", default-features = false, features = ["static-context", "hmac"] } num = { version = "0.4.0", default-features = false, features = ["alloc"] } primitive-types = { version = "0.10.0", default-features = false, features = ["rlp"] } ripemd160 = { version = "0.9.1", default-features = false } diff --git a/engine-precompiles/src/secp256k1.rs b/engine-precompiles/src/secp256k1.rs index 0b3dbfe26..fa00a58d6 100644 --- a/engine-precompiles/src/secp256k1.rs +++ b/engine-precompiles/src/secp256k1.rs @@ -32,16 +32,17 @@ pub fn ecrecover(hash: H256, signature: &[u8]) -> Result { fn internal_impl(hash: H256, signature: &[u8]) -> Result { use sha3::Digest; - let hash = secp256k1::Message::parse_slice(hash.as_bytes()).unwrap(); + let hash = libsecp256k1::Message::parse_slice(hash.as_bytes()).unwrap(); let v = signature[64]; - let signature = secp256k1::Signature::parse_slice(&signature[0..64]).unwrap(); + let signature = libsecp256k1::Signature::parse_standard_slice(&signature[0..64]) + .map_err(|_| ExitError::Other(Borrowed(sdk::ECRecoverErr.as_str())))?; let bit = match v { 0..=26 => v, _ => v - 27, }; - if let Ok(recovery_id) = secp256k1::RecoveryId::parse(bit) { - if let Ok(public_key) = secp256k1::recover(&hash, &signature, &recovery_id) { + if let Ok(recovery_id) = libsecp256k1::RecoveryId::parse(bit) { + if let Ok(public_key) = libsecp256k1::recover(&hash, &signature, &recovery_id) { // recover returns a 65-byte key, but addresses come from the raw 64-byte key let r = sha3::Keccak256::digest(&public_key.serialize()[1..]); return Address::try_from_slice(&r[12..]) diff --git a/engine-tests/Cargo.toml b/engine-tests/Cargo.toml index 62fa984b5..fd91499eb 100644 --- a/engine-tests/Cargo.toml +++ b/engine-tests/Cargo.toml @@ -42,8 +42,8 @@ near-vm-runner = { git = "https://github.com/birchmd/nearcore.git", rev = "980bc near-vm-logic = { git = "https://github.com/birchmd/nearcore.git", rev = "980bc48dc02878fea1e0dbc5812ae7de49f12dda" } near-primitives-core = { git = "https://github.com/birchmd/nearcore.git", rev = "980bc48dc02878fea1e0dbc5812ae7de49f12dda" } near-primitives = { git = "https://github.com/birchmd/nearcore.git", rev = "980bc48dc02878fea1e0dbc5812ae7de49f12dda" } -libsecp256k1 = "0.3.5" -rand = "0.7.3" +libsecp256k1 = { version = "0.7.0", default-features = false } +rand = "0.8.5" criterion = "0.3.4" git2 = "0.13" tempfile = "3.2.0" diff --git a/engine-tests/src/benches/eth_deploy_code.rs b/engine-tests/src/benches/eth_deploy_code.rs index 2c83d28b0..20bfab1e1 100644 --- a/engine-tests/src/benches/eth_deploy_code.rs +++ b/engine-tests/src/benches/eth_deploy_code.rs @@ -1,5 +1,5 @@ use criterion::{BatchSize, BenchmarkId, Criterion, Throughput}; -use secp256k1::SecretKey; +use libsecp256k1::SecretKey; use crate::prelude::Wei; use crate::test_utils::{ diff --git a/engine-tests/src/benches/eth_erc20.rs b/engine-tests/src/benches/eth_erc20.rs index 137a16c7b..c48f764e0 100644 --- a/engine-tests/src/benches/eth_erc20.rs +++ b/engine-tests/src/benches/eth_erc20.rs @@ -1,6 +1,6 @@ use crate::prelude::U256; use criterion::{BatchSize, BenchmarkId, Criterion}; -use secp256k1::SecretKey; +use libsecp256k1::SecretKey; use crate::test_utils::erc20::{ERC20Constructor, ERC20}; use crate::test_utils::{address_from_secret_key, deploy_evm, sign_transaction, SUBMIT}; diff --git a/engine-tests/src/benches/eth_standard_precompiles.rs b/engine-tests/src/benches/eth_standard_precompiles.rs index e07fa1c27..778f41724 100644 --- a/engine-tests/src/benches/eth_standard_precompiles.rs +++ b/engine-tests/src/benches/eth_standard_precompiles.rs @@ -1,6 +1,6 @@ use crate::prelude::U256; use criterion::{BatchSize, BenchmarkId, Criterion}; -use secp256k1::SecretKey; +use libsecp256k1::SecretKey; use crate::prelude::Wei; use crate::test_utils::standard_precompiles::{PrecompilesConstructor, PrecompilesContract}; diff --git a/engine-tests/src/benches/eth_transfer.rs b/engine-tests/src/benches/eth_transfer.rs index 3aa7fdf45..4b704eac2 100644 --- a/engine-tests/src/benches/eth_transfer.rs +++ b/engine-tests/src/benches/eth_transfer.rs @@ -1,5 +1,5 @@ use criterion::{BatchSize, Criterion}; -use secp256k1::SecretKey; +use libsecp256k1::SecretKey; use crate::prelude::Wei; use crate::test_utils::{address_from_secret_key, create_eth_transaction, deploy_evm, SUBMIT}; diff --git a/engine-tests/src/benches/nft_pagination.rs b/engine-tests/src/benches/nft_pagination.rs index 61c90e54b..e928501fb 100644 --- a/engine-tests/src/benches/nft_pagination.rs +++ b/engine-tests/src/benches/nft_pagination.rs @@ -1,7 +1,7 @@ use crate::prelude::{Address, Wei, U256}; use crate::test_utils::{self, solidity}; use aurora_engine_transactions::legacy::TransactionLegacy; -use secp256k1::SecretKey; +use libsecp256k1::SecretKey; use std::path::{Path, PathBuf}; use std::process::Command; use std::sync::Once; diff --git a/engine-tests/src/test_utils/mod.rs b/engine-tests/src/test_utils/mod.rs index 9617a0271..151247747 100644 --- a/engine-tests/src/test_utils/mod.rs +++ b/engine-tests/src/test_utils/mod.rs @@ -2,6 +2,7 @@ use aurora_engine::parameters::ViewCallArgs; use aurora_engine_types::account_id::AccountId; use aurora_engine_types::types::NEP141Wei; use borsh::{BorshDeserialize, BorshSerialize}; +use libsecp256k1::{self, Message, PublicKey, SecretKey}; use near_primitives::runtime::config_store::RuntimeConfigStore; use near_primitives::version::PROTOCOL_VERSION; use near_primitives_core::config::VMConfig; @@ -12,7 +13,6 @@ use near_vm_logic::types::ReturnData; use near_vm_logic::{VMContext, VMOutcome, ViewConfig}; use near_vm_runner::{MockCompiledContractCache, VMError}; use rlp::RlpStream; -use secp256k1::{self, Message, PublicKey, SecretKey}; use crate::prelude::fungible_token::{FungibleToken, FungibleTokenMetadata}; use crate::prelude::parameters::{InitCallArgs, NewCallArgs, SubmitResult, TransactionStatus}; @@ -700,7 +700,7 @@ pub(crate) fn sign_transaction( let message_hash = sdk::keccak(rlp_stream.as_raw()); let message = Message::parse_slice(message_hash.as_bytes()).unwrap(); - let (signature, recovery_id) = secp256k1::sign(&message, secret_key); + let (signature, recovery_id) = libsecp256k1::sign(&message, secret_key); let v: u64 = match chain_id { Some(chain_id) => (recovery_id.serialize() as u64) + 2 * chain_id + 35, None => (recovery_id.serialize() as u64) + 27, @@ -725,7 +725,7 @@ pub(crate) fn sign_access_list_transaction( let message_hash = sdk::keccak(rlp_stream.as_raw()); let message = Message::parse_slice(message_hash.as_bytes()).unwrap(); - let (signature, recovery_id) = secp256k1::sign(&message, secret_key); + let (signature, recovery_id) = libsecp256k1::sign(&message, secret_key); let r = U256::from_big_endian(&signature.r.b32()); let s = U256::from_big_endian(&signature.s.b32()); @@ -747,7 +747,7 @@ pub(crate) fn sign_eip_1559_transaction( let message_hash = sdk::keccak(rlp_stream.as_raw()); let message = Message::parse_slice(message_hash.as_bytes()).unwrap(); - let (signature, recovery_id) = secp256k1::sign(&message, secret_key); + let (signature, recovery_id) = libsecp256k1::sign(&message, secret_key); let r = U256::from_big_endian(&signature.r.b32()); let s = U256::from_big_endian(&signature.s.b32()); diff --git a/engine-tests/src/test_utils/standalone/mod.rs b/engine-tests/src/test_utils/standalone/mod.rs index 9626a0b0e..b762f60b4 100644 --- a/engine-tests/src/test_utils/standalone/mod.rs +++ b/engine-tests/src/test_utils/standalone/mod.rs @@ -12,7 +12,7 @@ use engine_standalone_storage::{ }, BlockMetadata, Diff, Storage, }; -use secp256k1::SecretKey; +use libsecp256k1::SecretKey; use tempfile::TempDir; use crate::test_utils; diff --git a/engine-tests/src/tests/access_lists.rs b/engine-tests/src/tests/access_lists.rs index 4e44678c4..bdb0b76e4 100644 --- a/engine-tests/src/tests/access_lists.rs +++ b/engine-tests/src/tests/access_lists.rs @@ -10,7 +10,7 @@ use std::iter; // TODO(#170): generally support Ethereum tests #[test] fn test_access_list_tx_encoding_decoding() { - let secret_key = secp256k1::SecretKey::parse_slice( + let secret_key = libsecp256k1::SecretKey::parse_slice( &hex::decode("45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8").unwrap(), ) .unwrap(); diff --git a/engine-tests/src/tests/eip1559.rs b/engine-tests/src/tests/eip1559.rs index 84693ca02..fa13ecde9 100644 --- a/engine-tests/src/tests/eip1559.rs +++ b/engine-tests/src/tests/eip1559.rs @@ -113,7 +113,8 @@ fn encode_tx(signed_tx: &SignedTransaction1559) -> Vec { } fn exmaple_signer() -> test_utils::Signer { - let secret_key = secp256k1::SecretKey::parse_slice(&hex::decode(SECRET_KEY).unwrap()).unwrap(); + let secret_key = + libsecp256k1::SecretKey::parse_slice(&hex::decode(SECRET_KEY).unwrap()).unwrap(); test_utils::Signer { nonce: INITIAL_NONCE, diff --git a/engine-tests/src/tests/erc20.rs b/engine-tests/src/tests/erc20.rs index 8a4ae8189..ff628eb08 100644 --- a/engine-tests/src/tests/erc20.rs +++ b/engine-tests/src/tests/erc20.rs @@ -8,7 +8,7 @@ use crate::test_utils::{ use aurora_engine::parameters::TransactionStatus; use aurora_engine_sdk as sdk; use bstr::ByteSlice; -use secp256k1::SecretKey; +use libsecp256k1::SecretKey; const INITIAL_BALANCE: u64 = 1_000_000; const INITIAL_NONCE: u64 = 0; diff --git a/engine-tests/src/tests/erc20_connector.rs b/engine-tests/src/tests/erc20_connector.rs index 2d2e08f1e..44df03fe9 100644 --- a/engine-tests/src/tests/erc20_connector.rs +++ b/engine-tests/src/tests/erc20_connector.rs @@ -5,9 +5,9 @@ use aurora_engine::parameters::{CallArgs, FunctionCallArgsV2, SubmitResult}; use aurora_engine_transactions::legacy::LegacyEthSignedTransaction; use borsh::{BorshDeserialize, BorshSerialize}; use ethabi::Token; +use libsecp256k1::SecretKey; use near_vm_logic::VMOutcome; use near_vm_runner::VMError; -use secp256k1::SecretKey; use serde_json::json; use sha3::Digest; diff --git a/engine-tests/src/tests/multisender.rs b/engine-tests/src/tests/multisender.rs index 0cedfccc2..3bd9a2dc4 100644 --- a/engine-tests/src/tests/multisender.rs +++ b/engine-tests/src/tests/multisender.rs @@ -2,7 +2,7 @@ use crate::test_utils; use aurora_engine_transactions::legacy::TransactionLegacy; use aurora_engine_types::types::{Address, Wei}; use aurora_engine_types::U256; -use secp256k1::SecretKey; +use libsecp256k1::SecretKey; const INITIAL_NONCE: u64 = 0; diff --git a/engine-tests/src/tests/one_inch.rs b/engine-tests/src/tests/one_inch.rs index 8afed7993..c489e78a9 100644 --- a/engine-tests/src/tests/one_inch.rs +++ b/engine-tests/src/tests/one_inch.rs @@ -3,8 +3,8 @@ use crate::prelude::{Wei, U256}; use crate::test_utils::one_inch::liquidity_protocol; use crate::test_utils::{self, assert_gas_bound}; use borsh::BorshDeserialize; +use libsecp256k1::SecretKey; use near_vm_logic::VMOutcome; -use secp256k1::SecretKey; use std::sync::Once; const INITIAL_BALANCE: Wei = Wei::new_u64(1_000_000); diff --git a/engine-tests/src/tests/sanity.rs b/engine-tests/src/tests/sanity.rs index aa7c3d9cd..a8613fbea 100644 --- a/engine-tests/src/tests/sanity.rs +++ b/engine-tests/src/tests/sanity.rs @@ -6,8 +6,8 @@ use aurora_engine::fungible_token::FungibleTokenMetadata; use aurora_engine::parameters::{SubmitResult, TransactionStatus}; use aurora_engine_sdk as sdk; use borsh::BorshSerialize; +use libsecp256k1::SecretKey; use rand::RngCore; -use secp256k1::SecretKey; use std::path::{Path, PathBuf}; const INITIAL_BALANCE: Wei = Wei::new_u64(1_000_000); diff --git a/engine-tests/src/tests/standalone/json_snapshot.rs b/engine-tests/src/tests/standalone/json_snapshot.rs index 8b2664f59..993ed5a68 100644 --- a/engine-tests/src/tests/standalone/json_snapshot.rs +++ b/engine-tests/src/tests/standalone/json_snapshot.rs @@ -54,7 +54,7 @@ fn test_produce_snapshot() { // add a couple more transactions that write some extra keys runner.env.block_height = snapshot.result.block_height + 1; - let sk = secp256k1::SecretKey::parse(&[0x77; 32]).unwrap(); + let sk = libsecp256k1::SecretKey::parse(&[0x77; 32]).unwrap(); let mut signer = test_utils::Signer::new(sk); let signer_address = test_utils::address_from_secret_key(&signer.secret_key); let dest1 = Address::from_array([0x11; 20]); diff --git a/engine-tests/src/tests/uniswap.rs b/engine-tests/src/tests/uniswap.rs index 346414577..f3e4eb907 100644 --- a/engine-tests/src/tests/uniswap.rs +++ b/engine-tests/src/tests/uniswap.rs @@ -10,8 +10,8 @@ use crate::test_utils::{ }; use aurora_engine_types::types::Wei; use aurora_engine_types::H160; +use libsecp256k1::SecretKey; use rand::SeedableRng; -use secp256k1::SecretKey; const INITIAL_BALANCE: u64 = 1000; const INITIAL_NONCE: u64 = 0; diff --git a/engine/Cargo.toml b/engine/Cargo.toml index 8241b8eba..aa63774d3 100644 --- a/engine/Cargo.toml +++ b/engine/Cargo.toml @@ -25,7 +25,7 @@ borsh = { version = "0.8.2", default-features = false } bn = { package = "aurora-bn", git = "https://github.com/aurora-is-near/aurora-bn.git", default-features = false } evm = { git = "https://github.com/aurora-is-near/sputnikvm.git", rev = "37448b6cacd98b06282cff5a559684505c29bd2b", default-features = false } evm-core = { git = "https://github.com/aurora-is-near/sputnikvm.git", rev = "37448b6cacd98b06282cff5a559684505c29bd2b", default-features = false } -libsecp256k1 = { version = "0.3.5", default-features = false } +libsecp256k1 = { version = "0.7.0", default-features = false } num = { version = "0.4.0", default-features = false, features = ["alloc"] } primitive-types = { version = "0.10.0", default-features = false, features = ["rlp"] } ripemd160 = { version = "0.9.1", default-features = false } diff --git a/etc/state-migration-test/Cargo.lock b/etc/state-migration-test/Cargo.lock index ae3a5d865..f65c71a92 100644 --- a/etc/state-migration-test/Cargo.lock +++ b/etc/state-migration-test/Cargo.lock @@ -26,16 +26,6 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be4dc07131ffa69b8072d35f5007352af944213cde02545e2103680baed38fcd" -[[package]] -name = "aurora-blake2" -version = "0.9.1" -source = "git+https://github.com/aurora-is-near/aurora-blake2.git#05a0b5f7a544c527c0118f8afe2f943b3de4bb03" -dependencies = [ - "crypto-mac", - "digest 0.9.0", - "opaque-debug 0.3.0", -] - [[package]] name = "aurora-bn" version = "0.1.0" @@ -76,7 +66,6 @@ dependencies = [ name = "aurora-engine-precompiles" version = "1.0.0" dependencies = [ - "aurora-blake2", "aurora-bn", "aurora-engine-sdk", "aurora-engine-types", @@ -532,6 +521,27 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hmac" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" +dependencies = [ + "crypto-mac", + "digest 0.9.0", +] + +[[package]] +name = "hmac-drbg" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" +dependencies = [ + "digest 0.9.0", + "generic-array 0.14.4", + "hmac", +] + [[package]] name = "impl-codec" version = "0.5.1" @@ -590,17 +600,52 @@ checksum = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e" [[package]] name = "libsecp256k1" -version = "0.3.5" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc1e2c808481a63dc6da2074752fdd4336a3c8fcc68b83db6f1fd5224ae7962" +checksum = "b0452aac8bab02242429380e9b2f94ea20cea2b37e2c1777a1358799bbe97f37" dependencies = [ "arrayref", - "crunchy", - "digest 0.8.1", + "base64", + "digest 0.9.0", + "hmac-drbg", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", "rand", + "serde", + "sha2", + "typenum", +] + +[[package]] +name = "libsecp256k1-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451" +dependencies = [ + "crunchy", + "digest 0.9.0", "subtle", ] +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c" +dependencies = [ + "libsecp256k1-core", +] + [[package]] name = "log" version = "0.4.14" @@ -752,12 +797,6 @@ dependencies = [ "syn", ] -[[package]] -name = "ppv-lite86" -version = "0.2.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" - [[package]] name = "primitive-types" version = "0.10.1" @@ -834,39 +873,18 @@ dependencies = [ [[package]] name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "rand_chacha", - "rand_core", - "rand_hc", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ - "ppv-lite86", "rand_core", ] [[package]] name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" - -[[package]] -name = "rand_hc" -version = "0.2.0" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core", -] +checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" [[package]] name = "regex-syntax" @@ -946,6 +964,20 @@ name = "serde" version = "1.0.126" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] [[package]] name = "sha2"