Skip to content

test_invalid()

Documentation for tests/prague/eip2537_bls_12_381_precompiles/test_bls12_map_fp_to_g1.py::test_invalid@14a7429a.

Generate fixtures for these test cases for Prague with:

fill -v tests/prague/eip2537_bls_12_381_precompiles/test_bls12_map_fp_to_g1.py::test_invalid --fork Prague

Negative tests for the BLS12_MAP_FP_TO_G1 precompile.

Source code in tests/prague/eip2537_bls_12_381_precompiles/test_bls12_map_fp_to_g1.py
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
@pytest.mark.parametrize(
    "input_data",
    # Test vectors from the reference spec (from the cryptography team)
    vectors_from_file("fail-map_fp_to_G1_bls.json")
    + [
        pytest.param(b"\x80" + bytes(FP(0))[1:], id="invalid_encoding"),
        pytest.param(bytes(FP(0))[1:], id="input_too_short"),
        pytest.param(b"\x00" + FP(0), id="input_too_long"),
        pytest.param(b"", id="zero_length_input"),
        pytest.param(FP(Spec.P), id="fq_eq_q"),
        pytest.param(FP(2**512 - 1), id="fq_eq_2_512_minus_1"),
        pytest.param(Spec.G1, id="g1_input"),
        pytest.param(FP(Spec.P + 1), id="fp_above_modulus"),
        pytest.param(FP(2**384), id="fp_large_power_of_2"),
        pytest.param(bytes(FP(0)) + bytes([0x00]), id="fp_with_extra_byte"),
        pytest.param(bytes(FP(0))[:47], id="fp_one_byte_short"),
        pytest.param(bytes([0xFF]) + bytes(FP(0))[1:], id="fp_invalid_first_byte"),
        pytest.param(Spec.INF_G1, id="g1_inf_input"),
    ],
)
@pytest.mark.parametrize("expected_output", [Spec.INVALID], ids=[""])
def test_invalid(
    state_test: StateTestFiller,
    pre: Alloc,
    post: dict,
    tx: Transaction,
):
    """Negative tests for the BLS12_MAP_FP_TO_G1 precompile."""
    state_test(
        env=Environment(),
        pre=pre,
        tx=tx,
        post=post,
    )

Parametrized Test Cases

The interactive table below is also available as a standalone page.

Test ID (Abbreviated) expected_output input_data precompile_address
...fork_Prague-state_test--bls_mapg1_empty_input- 16
...fork_Prague-state_test--bls_mapg1_short_input- 00000000000000000000000000000000 156c8a6a2c184569d69a76be144b5cdc 5141d2d2ca4fe341f011e25e3969c55a d9e9b9ce2eb833c81a908e5fa4ac5f 16
...fork_Prague-state_test--bls_mapg1_large_input- 00000000000000000000000000000000 00156c8a6a2c184569d69a76be144b5c dc5141d2d2ca4fe341f011e25e3969c5 5ad9e9b9ce2eb833c81a908e5fa4ac5f 03 16
...fork_Prague-state_test--bls_mapg1_top_bytes- 10000000000000000000000000000000 00156c8a6a2c184569d69a76be144b5c dc5141d2d2ca4fe341f011e25e3969c5 5ad9e9b9ce2eb833c81a908e5fa4ac5f 16
...fork_Prague-state_test--bls_invalid_fq_element- 00000000000000000000000000000000 2f6d9c5465982c0421b61e74579709b3 b5b91e57bdd4f6015742b4ff301abb7e f895b9cce00c33c7d48f8e5fa4ac09ae 16
...fork_Prague-state_test--invalid_encoding- 80000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 16
...fork_Prague-state_test--input_too_short- 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 000000000000000000000000000000 16
...fork_Prague-state_test--input_too_long- 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00 16
...fork_Prague-state_test--zero_length_input- 16
...fork_Prague-state_test--fq_eq_q- FP(x=4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787) 16
...fork_Prague-state_test--fq_eq_2_512_minus_1- FP(x=13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084095) 16
...fork_Prague-state_test--g1_input- PointG1(x=3685416753713387016781088315183077757961620795782546409894578378688607592378376318836054947676345821548104185464507, y=1339506544944476473020471379941921221584933875938349620426543736416511423956333506472724655353366534992391756441569) 16
...fork_Prague-state_test--fp_above_modulus- FP(x=4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559788) 16
...fork_Prague-state_test--fp_large_power_of_2- FP(x=39402006196394479212279040100143613805079739270465446667948293404245721771497210611414266254884915640806627990306816) 16
...fork_Prague-state_test--fp_with_extra_byte- 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00 16
...fork_Prague-state_test--fp_one_byte_short- 00000000000000000000000000000000 00000000000000000000000000000000 000000000000000000000000000000 16
...fork_Prague-state_test--fp_invalid_first_byte- ff000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 16
...fork_Prague-state_test--g1_inf_input- PointG1(x=0, y=0) 16
...fork_Prague-blockchain_test_from_state_test--bls_mapg1_empty_input- 16
...fork_Prague-blockchain_test_from_state_test--bls_mapg1_short_input- 00000000000000000000000000000000 156c8a6a2c184569d69a76be144b5cdc 5141d2d2ca4fe341f011e25e3969c55a d9e9b9ce2eb833c81a908e5fa4ac5f 16
...fork_Prague-blockchain_test_from_state_test--bls_mapg1_large_input- 00000000000000000000000000000000 00156c8a6a2c184569d69a76be144b5c dc5141d2d2ca4fe341f011e25e3969c5 5ad9e9b9ce2eb833c81a908e5fa4ac5f 03 16
...fork_Prague-blockchain_test_from_state_test--bls_mapg1_top_bytes- 10000000000000000000000000000000 00156c8a6a2c184569d69a76be144b5c dc5141d2d2ca4fe341f011e25e3969c5 5ad9e9b9ce2eb833c81a908e5fa4ac5f 16
...fork_Prague-blockchain_test_from_state_test--bls_invalid_fq_element- 00000000000000000000000000000000 2f6d9c5465982c0421b61e74579709b3 b5b91e57bdd4f6015742b4ff301abb7e f895b9cce00c33c7d48f8e5fa4ac09ae 16
...fork_Prague-blockchain_test_from_state_test--invalid_encoding- 80000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 16
...fork_Prague-blockchain_test_from_state_test--input_too_short- 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 000000000000000000000000000000 16
...fork_Prague-blockchain_test_from_state_test--input_too_long- 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00 16
...fork_Prague-blockchain_test_from_state_test--zero_length_input- 16
...fork_Prague-blockchain_test_from_state_test--fq_eq_q- FP(x=4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787) 16
...fork_Prague-blockchain_test_from_state_test--fq_eq_2_512_minus_1- FP(x=13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084095) 16
...fork_Prague-blockchain_test_from_state_test--g1_input- PointG1(x=3685416753713387016781088315183077757961620795782546409894578378688607592378376318836054947676345821548104185464507, y=1339506544944476473020471379941921221584933875938349620426543736416511423956333506472724655353366534992391756441569) 16
...fork_Prague-blockchain_test_from_state_test--fp_above_modulus- FP(x=4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559788) 16
...fork_Prague-blockchain_test_from_state_test--fp_large_power_of_2- FP(x=39402006196394479212279040100143613805079739270465446667948293404245721771497210611414266254884915640806627990306816) 16
...fork_Prague-blockchain_test_from_state_test--fp_with_extra_byte- 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00 16
...fork_Prague-blockchain_test_from_state_test--fp_one_byte_short- 00000000000000000000000000000000 00000000000000000000000000000000 000000000000000000000000000000 16
...fork_Prague-blockchain_test_from_state_test--fp_invalid_first_byte- ff000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 16
...fork_Prague-blockchain_test_from_state_test--g1_inf_input- PointG1(x=0, y=0) 16
...fork_Osaka-state_test--bls_mapg1_empty_input- 16
...fork_Osaka-state_test--bls_mapg1_short_input- 00000000000000000000000000000000 156c8a6a2c184569d69a76be144b5cdc 5141d2d2ca4fe341f011e25e3969c55a d9e9b9ce2eb833c81a908e5fa4ac5f 16
...fork_Osaka-state_test--bls_mapg1_large_input- 00000000000000000000000000000000 00156c8a6a2c184569d69a76be144b5c dc5141d2d2ca4fe341f011e25e3969c5 5ad9e9b9ce2eb833c81a908e5fa4ac5f 03 16
...fork_Osaka-state_test--bls_mapg1_top_bytes- 10000000000000000000000000000000 00156c8a6a2c184569d69a76be144b5c dc5141d2d2ca4fe341f011e25e3969c5 5ad9e9b9ce2eb833c81a908e5fa4ac5f 16
...fork_Osaka-state_test--bls_invalid_fq_element- 00000000000000000000000000000000 2f6d9c5465982c0421b61e74579709b3 b5b91e57bdd4f6015742b4ff301abb7e f895b9cce00c33c7d48f8e5fa4ac09ae 16
...fork_Osaka-state_test--invalid_encoding- 80000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 16
...fork_Osaka-state_test--input_too_short- 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 000000000000000000000000000000 16
...fork_Osaka-state_test--input_too_long- 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00 16
...fork_Osaka-state_test--zero_length_input- 16
...fork_Osaka-state_test--fq_eq_q- FP(x=4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787) 16
...fork_Osaka-state_test--fq_eq_2_512_minus_1- FP(x=13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084095) 16
...fork_Osaka-state_test--g1_input- PointG1(x=3685416753713387016781088315183077757961620795782546409894578378688607592378376318836054947676345821548104185464507, y=1339506544944476473020471379941921221584933875938349620426543736416511423956333506472724655353366534992391756441569) 16
...fork_Osaka-state_test--fp_above_modulus- FP(x=4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559788) 16
...fork_Osaka-state_test--fp_large_power_of_2- FP(x=39402006196394479212279040100143613805079739270465446667948293404245721771497210611414266254884915640806627990306816) 16
...fork_Osaka-state_test--fp_with_extra_byte- 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00 16
...fork_Osaka-state_test--fp_one_byte_short- 00000000000000000000000000000000 00000000000000000000000000000000 000000000000000000000000000000 16
...fork_Osaka-state_test--fp_invalid_first_byte- ff000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 16
...fork_Osaka-state_test--g1_inf_input- PointG1(x=0, y=0) 16
...fork_Osaka-blockchain_test_from_state_test--bls_mapg1_empty_input- 16
...fork_Osaka-blockchain_test_from_state_test--bls_mapg1_short_input- 00000000000000000000000000000000 156c8a6a2c184569d69a76be144b5cdc 5141d2d2ca4fe341f011e25e3969c55a d9e9b9ce2eb833c81a908e5fa4ac5f 16
...fork_Osaka-blockchain_test_from_state_test--bls_mapg1_large_input- 00000000000000000000000000000000 00156c8a6a2c184569d69a76be144b5c dc5141d2d2ca4fe341f011e25e3969c5 5ad9e9b9ce2eb833c81a908e5fa4ac5f 03 16
...fork_Osaka-blockchain_test_from_state_test--bls_mapg1_top_bytes- 10000000000000000000000000000000 00156c8a6a2c184569d69a76be144b5c dc5141d2d2ca4fe341f011e25e3969c5 5ad9e9b9ce2eb833c81a908e5fa4ac5f 16
...fork_Osaka-blockchain_test_from_state_test--bls_invalid_fq_element- 00000000000000000000000000000000 2f6d9c5465982c0421b61e74579709b3 b5b91e57bdd4f6015742b4ff301abb7e f895b9cce00c33c7d48f8e5fa4ac09ae 16
...fork_Osaka-blockchain_test_from_state_test--invalid_encoding- 80000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 16
...fork_Osaka-blockchain_test_from_state_test--input_too_short- 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 000000000000000000000000000000 16
...fork_Osaka-blockchain_test_from_state_test--input_too_long- 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00 16
...fork_Osaka-blockchain_test_from_state_test--zero_length_input- 16
...fork_Osaka-blockchain_test_from_state_test--fq_eq_q- FP(x=4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787) 16
...fork_Osaka-blockchain_test_from_state_test--fq_eq_2_512_minus_1- FP(x=13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084095) 16
...fork_Osaka-blockchain_test_from_state_test--g1_input- PointG1(x=3685416753713387016781088315183077757961620795782546409894578378688607592378376318836054947676345821548104185464507, y=1339506544944476473020471379941921221584933875938349620426543736416511423956333506472724655353366534992391756441569) 16
...fork_Osaka-blockchain_test_from_state_test--fp_above_modulus- FP(x=4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559788) 16
...fork_Osaka-blockchain_test_from_state_test--fp_large_power_of_2- FP(x=39402006196394479212279040100143613805079739270465446667948293404245721771497210611414266254884915640806627990306816) 16
...fork_Osaka-blockchain_test_from_state_test--fp_with_extra_byte- 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00 16
...fork_Osaka-blockchain_test_from_state_test--fp_one_byte_short- 00000000000000000000000000000000 00000000000000000000000000000000 000000000000000000000000000000 16
...fork_Osaka-blockchain_test_from_state_test--fp_invalid_first_byte- ff000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 16
...fork_Osaka-blockchain_test_from_state_test--g1_inf_input- PointG1(x=0, y=0) 16