Test Function: test_modexp()

Test the MODEXP precompile

Parametrized Test Cases

Test ID input output
ModExpInput_base_-exponent_-modulus_02-ExpectedOutput_call_return_code_0x01-returned_data_0x01 ModExpInput_base_-exponent_-modulus_02 ExpectedOutput_call_return_code_0x01-returned_data_0x01
ModExpInput_base_-exponent_-modulus_0002-ExpectedOutput_call_return_code_0x01-returned_data_0x0001 ModExpInput_base_-exponent_-modulus_0002 ExpectedOutput_call_return_code_0x01-returned_data_0x0001
ModExpInput_base_00-exponent_00-modulus_02-ExpectedOutput_call_return_code_0x01-returned_data_0x01 ModExpInput_base_00-exponent_00-modulus_02 ExpectedOutput_call_return_code_0x01-returned_data_0x01
ModExpInput_base_-exponent_01-modulus_02-ExpectedOutput_call_return_code_0x01-returned_data_0x00 ModExpInput_base_-exponent_01-modulus_02 ExpectedOutput_call_return_code_0x01-returned_data_0x00
ModExpInput_base_01-exponent_01-modulus_02-ExpectedOutput_call_return_code_0x01-returned_data_0x01 ModExpInput_base_01-exponent_01-modulus_02 ExpectedOutput_call_return_code_0x01-returned_data_0x01
ModExpInput_base_02-exponent_01-modulus_03-ExpectedOutput_call_return_code_0x01-returned_data_0x02 ModExpInput_base_02-exponent_01-modulus_03 ExpectedOutput_call_return_code_0x01-returned_data_0x02
ModExpInput_base_02-exponent_02-modulus_05-ExpectedOutput_call_return_code_0x01-returned_data_0x04 ModExpInput_base_02-exponent_02-modulus_05 ExpectedOutput_call_return_code_0x01-returned_data_0x04
ModExpInput_base_-exponent_-modulus_-ExpectedOutput_call_return_code_0x01-returned_data_0x ModExpInput_base_-exponent_-modulus_ ExpectedOutput_call_return_code_0x01-returned_data_0x
ModExpInput_base_-exponent_-modulus_00-ExpectedOutput_call_return_code_0x01-returned_data_0x00 ModExpInput_base_-exponent_-modulus_00 ExpectedOutput_call_return_code_0x01-returned_data_0x00
ModExpInput_base_-exponent_-modulus_01-ExpectedOutput_call_return_code_0x01-returned_data_0x00 ModExpInput_base_-exponent_-modulus_01 ExpectedOutput_call_return_code_0x01-returned_data_0x00
ModExpInput_base_-exponent_-modulus_0001-ExpectedOutput_call_return_code_0x01-returned_data_0x0000 ModExpInput_base_-exponent_-modulus_0001 ExpectedOutput_call_return_code_0x01-returned_data_0x0000
EIP-198-case1 ModExpInput_base_03-exponent_fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2e-modulus_fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f ExpectedOutput_call_return_code_0x01-returned_data_0000000000000000000000000000000000000000000000000000000000000001
EIP-198-case2 ModExpInput_base_-exponent_fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2e-modulus_fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f ExpectedOutput_call_return_code_0x01-returned_data_0000000000000000000000000000000000000000000000000000000000000000
EIP-198-case3-raw-input-out-of-gas ModExpRawInput_raw_input_00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd ExpectedOutput_call_return_code_0x00-returned_data_0000000000000000000000000000000000000000000000000000000000000000
EIP-198-case4-extra-data_07 ModExpInput_base_03-exponent_ffff-modulus_8000000000000000000000000000000000000000000000000000000000000000-extra_data_07 ExpectedOutput_call_return_code_0x01-returned_data_0x3b01b01ac41f2d6e917c6d6a221ce793802469026d9ab7578fa2e79e4da6aaab
EIP-198-case5-raw-input ModExpRawInput_raw_input_00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002003ffff80 ExpectedOutput_call_return_code_0x01-returned_data_0x3b01b01ac41f2d6e917c6d6a221ce793802469026d9ab7578fa2e79e4da6aaab
ModExpInput_base_-exponent_-modulus_02-ExpectedOutput_call_return_code_0x01-returned_data_0x01 ModExpInput_base_-exponent_-modulus_02 ExpectedOutput_call_return_code_0x01-returned_data_0x01
ModExpInput_base_-exponent_-modulus_0002-ExpectedOutput_call_return_code_0x01-returned_data_0x0001 ModExpInput_base_-exponent_-modulus_0002 ExpectedOutput_call_return_code_0x01-returned_data_0x0001
ModExpInput_base_00-exponent_00-modulus_02-ExpectedOutput_call_return_code_0x01-returned_data_0x01 ModExpInput_base_00-exponent_00-modulus_02 ExpectedOutput_call_return_code_0x01-returned_data_0x01
ModExpInput_base_-exponent_01-modulus_02-ExpectedOutput_call_return_code_0x01-returned_data_0x00 ModExpInput_base_-exponent_01-modulus_02 ExpectedOutput_call_return_code_0x01-returned_data_0x00
ModExpInput_base_01-exponent_01-modulus_02-ExpectedOutput_call_return_code_0x01-returned_data_0x01 ModExpInput_base_01-exponent_01-modulus_02 ExpectedOutput_call_return_code_0x01-returned_data_0x01
ModExpInput_base_02-exponent_01-modulus_03-ExpectedOutput_call_return_code_0x01-returned_data_0x02 ModExpInput_base_02-exponent_01-modulus_03 ExpectedOutput_call_return_code_0x01-returned_data_0x02
ModExpInput_base_02-exponent_02-modulus_05-ExpectedOutput_call_return_code_0x01-returned_data_0x04 ModExpInput_base_02-exponent_02-modulus_05 ExpectedOutput_call_return_code_0x01-returned_data_0x04
ModExpInput_base_-exponent_-modulus_-ExpectedOutput_call_return_code_0x01-returned_data_0x ModExpInput_base_-exponent_-modulus_ ExpectedOutput_call_return_code_0x01-returned_data_0x
ModExpInput_base_-exponent_-modulus_00-ExpectedOutput_call_return_code_0x01-returned_data_0x00 ModExpInput_base_-exponent_-modulus_00 ExpectedOutput_call_return_code_0x01-returned_data_0x00
ModExpInput_base_-exponent_-modulus_01-ExpectedOutput_call_return_code_0x01-returned_data_0x00 ModExpInput_base_-exponent_-modulus_01 ExpectedOutput_call_return_code_0x01-returned_data_0x00
ModExpInput_base_-exponent_-modulus_0001-ExpectedOutput_call_return_code_0x01-returned_data_0x0000 ModExpInput_base_-exponent_-modulus_0001 ExpectedOutput_call_return_code_0x01-returned_data_0x0000
EIP-198-case1 ModExpInput_base_03-exponent_fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2e-modulus_fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f ExpectedOutput_call_return_code_0x01-returned_data_0000000000000000000000000000000000000000000000000000000000000001
EIP-198-case2 ModExpInput_base_-exponent_fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2e-modulus_fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f ExpectedOutput_call_return_code_0x01-returned_data_0000000000000000000000000000000000000000000000000000000000000000
EIP-198-case3-raw-input-out-of-gas ModExpRawInput_raw_input_00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd ExpectedOutput_call_return_code_0x00-returned_data_0000000000000000000000000000000000000000000000000000000000000000
EIP-198-case4-extra-data_07 ModExpInput_base_03-exponent_ffff-modulus_8000000000000000000000000000000000000000000000000000000000000000-extra_data_07 ExpectedOutput_call_return_code_0x01-returned_data_0x3b01b01ac41f2d6e917c6d6a221ce793802469026d9ab7578fa2e79e4da6aaab
EIP-198-case5-raw-input ModExpRawInput_raw_input_00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002003ffff80 ExpectedOutput_call_return_code_0x01-returned_data_0x3b01b01ac41f2d6e917c6d6a221ce793802469026d9ab7578fa2e79e4da6aaab