From 85b88a1cde027a834f299dda8a31fdb2582e7feb Mon Sep 17 00:00:00 2001 From: Dmitry Vagner Date: Fri, 23 Sep 2022 17:46:53 -0700 Subject: [PATCH] fix padlength overflow error --- evm/src/cpu/kernel/asm/ripemd/ripemd.asm | 19 +++++++++---------- evm/src/cpu/kernel/tests/ripemd.rs | 4 ++-- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/evm/src/cpu/kernel/asm/ripemd/ripemd.asm b/evm/src/cpu/kernel/asm/ripemd/ripemd.asm index 8112f20f..d0afb6d0 100644 --- a/evm/src/cpu/kernel/asm/ripemd/ripemd.asm +++ b/evm/src/cpu/kernel/asm/ripemd/ripemd.asm @@ -92,15 +92,14 @@ global process: %macro padlength // stack: count %mod_const(64) - // stack: count % 64 - PUSH 56 - SUB - // stack: x = 56 - count % 64 - DUP1 - %lt_const(9) - // stack: x < 9 , x + // stack: t = count % 64 + PUSH 47 + DUP2 + // stack: t , 47 , t + GT + // stack: t > 47 , t %mul_const(64) - // stack: 64*(x < 9) , x - ADD - // stack: 64*(x < 9) + x + %add_const(56) + // stack: 56 + 64*(t > 47), t + SUB %endmacro diff --git a/evm/src/cpu/kernel/tests/ripemd.rs b/evm/src/cpu/kernel/tests/ripemd.rs index a976b8cc..3eca4506 100644 --- a/evm/src/cpu/kernel/tests/ripemd.rs +++ b/evm/src/cpu/kernel/tests/ripemd.rs @@ -12,8 +12,8 @@ fn make_input(word: &str) -> Vec { #[test] fn test_ripemd() -> Result<()> { - let input: Vec = make_input("a"); - let expected = U256::from("0x0bdc9d2d256b3ee9daae347be6f4dc835a467ffe"); + let input: Vec = make_input("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"); + let expected = U256::from("0xb0e20b6e3116640286ed3a87a5713079b21f5189"); let kernel = combined_kernel(); let label = kernel.global_labels["ripemd_alt"];