From ad9e13102692a77ad48a6357a14ea7348c0233ab Mon Sep 17 00:00:00 2001 From: wborgeaud Date: Thu, 14 Jul 2022 13:16:25 +0200 Subject: [PATCH] Add test --- evm/src/cpu/kernel/asm/ecrecover.asm | 17 ----------------- evm/src/cpu/kernel/tests/ecrecover.rs | 22 ++++++++++++++++++++++ evm/src/cpu/kernel/tests/mod.rs | 1 + 3 files changed, 23 insertions(+), 17 deletions(-) create mode 100644 evm/src/cpu/kernel/tests/ecrecover.rs diff --git a/evm/src/cpu/kernel/asm/ecrecover.asm b/evm/src/cpu/kernel/asm/ecrecover.asm index 1f36eb61..14d398af 100644 --- a/evm/src/cpu/kernel/asm/ecrecover.asm +++ b/evm/src/cpu/kernel/asm/ecrecover.asm @@ -48,23 +48,6 @@ ecrecover_valid_input: // stack: x, y, u1, ecrecover_with_first_point, hash, r^(-1), retdest %jump(ec_mul_valid_point_secp) - SWAP2 - // stack: hash, y, u1, x, r^(-1), retdest - SWAP3 - // stack: x, y, u1, hash, r^(-1), retdest - SWAP4 - // stack: r^(-1), y, hash, x, u1, retdest - SWAP1 - // stack: y, r^(-1), hash, x, u1, retdest - SWAP2 - // stack: hash, r^(-1), y, x, u1, retdest - %secp_scalar - // stack: p, hash, r^(-1), y, x, u1, retdest - SUB - // stack: p - hash, r^(-1), y, x, u1, retdest // Assume hash < p, should be hard (127-bit) to find a hash larger than p. - %mulmodn_secp_scalar - // stack: u2, y, x, u1, retdest // Assume hash < p, should be hard (127-bit) to find a hash larger than p. - ecrecover_with_first_point: JUMPDEST // stack: X, Y, hash, r^(-1), retdest diff --git a/evm/src/cpu/kernel/tests/ecrecover.rs b/evm/src/cpu/kernel/tests/ecrecover.rs new file mode 100644 index 00000000..e185dcd3 --- /dev/null +++ b/evm/src/cpu/kernel/tests/ecrecover.rs @@ -0,0 +1,22 @@ +use anyhow::Result; + +use crate::cpu::kernel::aggregator::combined_kernel; +use crate::cpu::kernel::interpreter::run; +use crate::cpu::kernel::tests::u256ify; + +#[test] +fn test_ec_ops() -> Result<()> { + // Make sure we can parse and assemble the entire kernel. + let kernel = combined_kernel(); + let ecrecover = kernel.global_labels["ecrecover"]; + let hash = "0x0"; + let v = "0x27"; + let r = "0x1"; + let s = "0x1"; + + let initial_stack = u256ify([s, r, v, hash])?; + let stack = run(&kernel.code, ecrecover, initial_stack); + dbg!(stack); + + Ok(()) +} diff --git a/evm/src/cpu/kernel/tests/mod.rs b/evm/src/cpu/kernel/tests/mod.rs index 49f16da6..100ef377 100644 --- a/evm/src/cpu/kernel/tests/mod.rs +++ b/evm/src/cpu/kernel/tests/mod.rs @@ -1,4 +1,5 @@ mod curve_ops; +mod ecrecover; mod exp; use std::str::FromStr;