From 7342b9658355e052e6ce4940305c92134867a8d3 Mon Sep 17 00:00:00 2001 From: Dmitry Vagner Date: Thu, 22 Sep 2022 10:34:32 -0700 Subject: [PATCH] test compress --- evm/src/cpu/kernel/asm/ripemd/compression.asm | 18 ++++++------- evm/src/cpu/kernel/asm/ripemd/constants.asm | 19 +++++++++++++ evm/src/cpu/kernel/tests/ripemd.rs | 27 ++++++++++--------- 3 files changed, 42 insertions(+), 22 deletions(-) diff --git a/evm/src/cpu/kernel/asm/ripemd/compression.asm b/evm/src/cpu/kernel/asm/ripemd/compression.asm index d62d6857..c8cbd020 100644 --- a/evm/src/cpu/kernel/asm/ripemd/compression.asm +++ b/evm/src/cpu/kernel/asm/ripemd/compression.asm @@ -177,31 +177,31 @@ box: // stack: F, b, c, d, pre_rol, a, b, c, d, e, F, K, boxes, rounds, sides, virt JUMP pre_rol: - // stack: F(b, c, d), a, b, c, d, e, F, K, boxes, rounds, sides, virt + // stack: F(b, c, d), a, b, c, d, e, F, K, boxes, rounds, sides, virt ADD - // stack: a, b, c, d, e, F, K, boxes, rounds, sides, virt + // stack: a, b, c, d, e, F, K, boxes, rounds, sides, virt %get_box - // stack: box, a, b, c, d, e, F, K, boxes, rounds, sides, virt + // stack: box, a, b, c, d, e, F, K, boxes, rounds, sides, virt DUP1 %mload_kernel_code_label(R_data) DUP13 ADD // stack: virt + r, box, a, b, c, d, e, F, K, boxes, rounds, sides, virt - %load_u32_from_block - // stack: x, box, a, b, c, d, e, F, K, boxes, rounds, sides, virt + %mload_kernel_code_label_u32(Input_Block) // %load_u32_from_block + // stack: x, box, a, b, c, d, e, F, K, boxes, rounds, sides, virt SWAP1 SWAP2 - // stack: a, x, box, b, c, d, e, F, K, boxes, rounds, sides, virt + // stack: a, x, box, b, c, d, e, F, K, boxes, rounds, sides, virt ADD DUP8 ADD %u32 - // stack: a, box, b, c, d, e, F, K, boxes, rounds, sides, virt + // stack: a, box, b, c, d, e, F, K, boxes, rounds, sides, virt PUSH mid_rol SWAP2 - // stack: box, a, mid_rol, b, c, d, e, F, K, boxes, rounds, sides, virt + // stack: box, a, mid_rol, b, c, d, e, F, K, boxes, rounds, sides, virt %mload_kernel_code_label(S_data) - // stack: s, a, mid_rol, b, c, d, e, F, K, boxes, rounds, sides, virt + // stack: s, a, mid_rol, b, c, d, e, F, K, boxes, rounds, sides, virt %jump(rol) mid_rol: // stack: a, b, c, d, e, F, K, boxes, rounds, sides, virt diff --git a/evm/src/cpu/kernel/asm/ripemd/constants.asm b/evm/src/cpu/kernel/asm/ripemd/constants.asm index 18bf3595..6fb33490 100644 --- a/evm/src/cpu/kernel/asm/ripemd/constants.asm +++ b/evm/src/cpu/kernel/asm/ripemd/constants.asm @@ -118,3 +118,22 @@ global R_data: BYTES 04, 20, 32, 28 BYTES 24, 08, 52, 56 BYTES 00, 12, 36, 44 + + +global Input_Block: + BYTES 0x61, 0x62, 0x63, 0x64 + BYTES 0x65, 0x66, 0x67, 0x68 + BYTES 0x69, 0x6a, 0x6b, 0x6c + BYTES 0x6d, 0x6e, 0x6f, 0x70 + BYTES 0x71, 0x72, 0x73, 0x74 + BYTES 0x75, 0x76, 0x77, 0x78 + BYTES 0x79, 0x7a, 0x80, 0x00 + BYTES 0x00, 0x00, 0x00, 0x00 + BYTES 0x00, 0x00, 0x00, 0x00 + BYTES 0x00, 0x00, 0x00, 0x00 + BYTES 0x00, 0x00, 0x00, 0x00 + BYTES 0x00, 0x00, 0x00, 0x00 + BYTES 0x00, 0x00, 0x00, 0x00 + BYTES 0x00, 0x00, 0x00, 0x00 + BYTES 0xd0, 0x00, 0x00, 0x00 + BYTES 0x00, 0x00, 0x00, 0x00 \ No newline at end of file diff --git a/evm/src/cpu/kernel/tests/ripemd.rs b/evm/src/cpu/kernel/tests/ripemd.rs index c5ddf96b..acdb235b 100644 --- a/evm/src/cpu/kernel/tests/ripemd.rs +++ b/evm/src/cpu/kernel/tests/ripemd.rs @@ -4,23 +4,24 @@ use ethereum_types::U256; use crate::cpu::kernel::aggregator::combined_kernel; use crate::cpu::kernel::interpreter::run_with_kernel; + #[test] fn test_ripemd() -> Result<()> { - let expected = "0xf71c27109c692c1b56bbdceb5b9d2865b3708dbc"; - println!("{}", expected); + // let expected = "0xf71c27109c692c1b56bbdceb5b9d2865b3708dbc"; + let expected: Vec<&str> = vec!["10271CF7", "1B2C699C", "EBDCBB56", "65289D5B", "BC8D70B3"]; + println!("{:#?}", expected); + + let input: Vec = vec![0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0, 0, 0xdeadbeef]; + // let input: Vec = vec![ + // 0x1a, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, + // 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, + // ]; let kernel = combined_kernel(); - - let input: Vec = vec![ - 0x1a, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, - 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, - ]; - let stack_init: Vec = input.iter().map(|&x| U256::from(x as u32)).rev().collect(); - - let stack_result = run_with_kernel(&kernel, kernel.global_labels["ripemd_alt"], stack_init)?; - let result = stack_result.stack()[0]; - let actual = format!("{:X}", result); - println!("{}", actual); + let stack_input: Vec = input.iter().map(|&x| U256::from(x as u32)).rev().collect(); + let stack_output = run_with_kernel(&kernel, kernel.global_labels["compress"], stack_input)?; + let actual: Vec = stack_output.stack().iter().map(|&x| format!("{:#?}", x)).collect(); + println!("{:#?}", actual); assert_eq!(expected, actual); Ok(())