@@ -3,52 +3,48 @@ use super::{apply_keccak_padding, keccak256};
33#[test]
44fn test_padding_no_collision () {
55 // Message size 134: padding bytes don't collide
6- // Expected: block_bytes[134] = 0x01, block_bytes[135] = 0x80
7- let mut block_bytes = [0 ; 136 ];
8- let real_max_blocks = (134 + 136 ) / 136 ;
9- apply_keccak_padding (&mut block_bytes , 134 , real_max_blocks );
6+ // Limb 16, byte offsets 6 and 7
7+ // block_array[16] = 0x01 << 48 (start) + 0x80 << 56 (end)
8+ let mut block_array = [0 ; 17 ]; // 1 block = 17 limbs
9+ let real_max_blocks = 1 ;
10+ apply_keccak_padding (&mut block_array , 134 , real_max_blocks );
1011
11- assert_eq (block_bytes [134 ], 0x01 , "First padding byte should be 0x01" );
12- assert_eq (block_bytes [135 ], 0x80 , "Second padding byte should be 0x80" );
12+ assert_eq (block_array [16 ], 0x8001000000000000 );
1313}
1414
1515#[test]
1616fn test_padding_collision_135 () {
17- // Message size 135: padding bytes collide at position 135
18- // Expected: block_bytes[135] = 0x81
19- let mut block_bytes = [0 ; 272 ];
20- let real_max_blocks = (135 + 136 ) / 136 ;
21- apply_keccak_padding (&mut block_bytes , 135 , real_max_blocks );
22-
23- assert_eq (block_bytes [135 ], 0x81 , "Combined padding byte should be 0x81" );
24- // Ensure no stray 0x80 elsewhere
25- for i in 136 ..272 {
26- assert_eq (block_bytes [i ], 0x00 , "No padding beyond position 135" );
27- }
17+ // Message size 135: padding bytes collide at byte 135 (offset 7 in limb 16)
18+ // block_array[16] = 0x01 << 56 + 0x80 << 56 = 0x81 << 56
19+ let mut block_array = [0 ; 17 ]; // 1 block = 17 limbs
20+ let real_max_blocks = 1 ;
21+ apply_keccak_padding (&mut block_array , 135 , real_max_blocks );
22+
23+ assert_eq (block_array [16 ], 0x8100000000000000 );
2824}
2925
3026#[test]
3127fn test_padding_zero_length () {
3228 // Message size 0: padding starts immediately
33- // Expected: block_bytes [0] = 0x01, block_bytes[135 ] = 0x80
34- let mut block_bytes = [0 ; 136 ];
35- let real_max_blocks = ( 0 + 136 ) / 136 ;
36- apply_keccak_padding (&mut block_bytes , 0 , real_max_blocks );
29+ // block_array [0] = 0x01, block_array[16 ] = 0x80 << 56
30+ let mut block_array = [0 ; 17 ]; // 1 block = 17 limbs
31+ let real_max_blocks = 1 ;
32+ apply_keccak_padding (&mut block_array , 0 , real_max_blocks );
3733
38- assert_eq (block_bytes [0 ], 0x01 , "First padding byte at position 0" );
39- assert_eq (block_bytes [ 135 ], 0x80 , "Second padding byte at end of block" );
34+ assert_eq (block_array [0 ], 0x01 );
35+ assert_eq (block_array [ 16 ], 0x8000000000000000 );
4036}
4137
4238#[test]
4339fn test_padding_full_block () {
4440 // Message size 136: exactly fills one block, needs another for padding
45- // Expected: block_bytes[136 ] = 0x01, block_bytes[271 ] = 0x80
46- let mut block_bytes = [0 ; 272 ];
47- let real_max_blocks = ( 136 + 136 ) / 136 ;
48- apply_keccak_padding (&mut block_bytes , 136 , real_max_blocks );
41+ // block_array[17 ] = 0x01, block_array[33 ] = 0x80 << 56
42+ let mut block_array = [0 ; 34 ]; // 2 blocks = 34 limbs
43+ let real_max_blocks = 2 ;
44+ apply_keccak_padding (&mut block_array , 136 , real_max_blocks );
4945
50- assert_eq (block_bytes [ 136 ], 0x01 , "First padding byte after full block" );
51- assert_eq (block_bytes [ 271 ], 0x80 , "Second padding byte at end of next block" );
46+ assert_eq (block_array [ 17 ], 0x01 );
47+ assert_eq (block_array [ 33 ], 0x8000000000000000 );
5248}
5349
5450#[test]
0 commit comments