Skip to content

test_invalid_g2_point()

Documentation for tests/byzantium/eip197_ec_pairing/test_ecpairing_fuzzed.py::test_invalid_g2_point@ffe48572.

Generate fixtures for these test cases for Bogota with:

fill -v tests/byzantium/eip197_ec_pairing/test_ecpairing_fuzzed.py::test_invalid_g2_point --fork Bogota

Test invalid g2 point inputs to the ecpairing precompile.

Source code in tests/byzantium/eip197_ec_pairing/test_ecpairing_fuzzed.py
@pytest.mark.parametrize(
    "expected_output", [pytest.param(Spec.INVALID, id=pytest.HIDDEN_PARAM)]
)
@pytest.mark.parametrize(
    "input_data",
    [
        pytest.param(
            Spec.INF_G1
            + Spec.INF_G2
            + Spec.INF_G1
            + PointG2(
                (
                    0x2D00E9FF0000000000000000FFFFFFFFFFFFFFFFBFB2FFFFFFFFFFFFFFFFA120,
                    0xFFFFFFFFFFF7FFFFFFFFFFFF0000000000000000000000000000,
                ),
                (
                    0x2D0002FF0000000000000000FFFFFFFFFFFF,
                    0xFFFFBFFFFFFFFFFFFFFFFFFFA120000000000000FF007D7D7D7D7D7D7D7D7D7D,
                ),
            ),
        ),
        pytest.param(
            Spec.INF_G1
            + PointG2(
                (0x0, 0x0),
                (0x0, 0xFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFF),
            ),
        ),
        pytest.param(
            Spec.INF_G1
            + PointG2((0x0, 0x0), (0x8000000, 0x0))
            + PointG1(0xF8FFFFFFFFFFFFFF0000, 0x0)
            + PointG2((0x0, 0x0), (0x8000000, 0x0)),
        ),
        pytest.param(
            Spec.INF_G1
            + PointG2(
                (0xFFFFFFFFFFFFFFFFFFA10000000000FFFFFFFFFFFFFFFFFFA100, 0x0),
                (
                    0x16C46EBE0077418D002F28E20236919AD92313729F18578BA8547626478EA52C,
                    0x2B5B688B4D8078D1E1ACD7ACC7BE7F9E0E30812CE2925B35559213646C93237F,
                ),
            )
            + Spec.INF_G1
            + Spec.INF_G2,
        ),
        pytest.param(
            Spec.INF_G1
            + PointG2(
                (0xFFFFFFFF << 184, 0xFFFFFFFF << 184),
                (
                    0x00FB55BF7DF894A746FBE20B6F8C54D0DC0D9FD4ED005174A42FC3C45E6E27F9,
                    0x12A20D63D446EB175733853B88DD36708EB7A81F5C79E7659C3A6E2B2C470077,
                ),
            )
            + PointG1(
                0x005ED60BA723A2DD3A5FC35520F982963DE61E3B563636FE6996CC2C30080357,
                0x20AD16F835A46FACA48C6D39AE00A10D3514E93AE3B946EE2F009EA2DCCFF97E,
            )
            + PointG2(
                (
                    0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
                    0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
                ),
                (
                    0x09068950585FF0759E99ECAD6903000000000000000000000000000000002C00,
                    0x85B7AEF328C21800DEEF5E0000AA426A00665E0000AA,
                ),
            ),
        ),
        pytest.param(
            Spec.INF_G1
            + PointG2(
                (
                    0x1A76DAE6D3272396D0CBE61FCED2BC532EDAC647851E3AC53CE1CC9C7E645A83,
                    0x0,
                ),
                (
                    0x0,
                    0x1A76DAE6D3272396D0CBE61FCED2BC532EDAC647851E3AC53CE1CC9C7E645A83,
                ),
            )
            + PointG1(
                0x29A0D6D5E7D14A774C3ABFF1435361DA2EE5D8B4F3EE62085CE779F248B41D4A,
                0x2FD37AE5468F6A17B7F9A0BCCA02EE128BDCED61402A566E4EEE2D0FA825F03D,
            )
            + PointG2(
                (
                    0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
                    0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
                ),
                (
                    0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
                    0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
                ),
            ),
        ),
        pytest.param(
            Spec.INF_G1
            + PointG2(
                (
                    0x2D00E9FF0000000000000000FFFFFFFFFFFFFFFFBFFFFFFFFFFFFFFFFFFFA120,
                    0xFFFFFFFFFFF7FFFFFFFFFFFF0000000000000000000000000000,
                ),
                (
                    0x2D0002FF0000000000000000FFFFFFFFFFFF,
                    0xFFFFBFFFFFFFFFFFFFFFFFFFA120000000000000FF007D7D7D7D7D7D7D7D7D7D,
                ),
            ),
        ),
        pytest.param(
            Spec.INF_G1
            + PointG2(
                (
                    0x30644E72E131A0294FAFBA497E1EC6D18C48814A690000000100000000300000,
                    0x00CD71EC682D26313681EA8A1A9A410C862CC44A5D0000000000000000000001,
                ),
                (
                    0x158D600A2D8411F2E9BD1A1B51EAC64E43B0C511F2E9BD1A1B51EAC64E43B0C5,
                    0x11FC9BA8B80B727A2C28EE454FC286FD659262C510A3E7F11A4B0E4B74BEBAFC,
                ),
            ),
        ),
        pytest.param(
            Spec.INF_G1
            + PointG2(
                (Spec.P, 0x45000000000000000000000000000000000000000000000001),
                (
                    0x07B55DE1642362D16B8FC4DCCFEC9E794D24968511CF8E252ED27AFC4D72CA1E,
                    0x0301CB4D7E0B7B52A6A8F78613C403EAD1543FEDB0D3F28C77685FDB9EAA2742,
                ),
            )
            + PointG1(
                0x0CDC335FA81DFF303B71CFFB0256D7097C2B4C6715CA7B1589EA9386A41C2F85,
                0x1223D6BB1F3E68DDFB08F4C95F590F99227FB681A3B0ABDF685CF12BDE37D8EE,
            )
            + PointG2(
                (0x0, 0x10000000000000000000000000000),
                (
                    0x1F1CD7F247F2AE1BA9A1AEB4B32ED4C8C13C70C8861B6AB5340E276C58E1046B,
                    0x13D7DE2B557E0AE2B53380AD596BA79F07C037C9D9AA17CF407E9ED86201436E,
                ),
            ),
        ),
        pytest.param(
            PointG1(0x1, 0x2)
            + Spec.INF_G2
            + Spec.INF_G1
            + PointG2(
                (
                    0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
                    0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
                ),
                (
                    0x95BC4B313370B38EF355ACDADCD122975B4B313370B38EF355ACDADCD122975B,
                    0x120000C8DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
                ),
            ),
        ),
        pytest.param(
            PointG1(0x1, 0x2)
            + PointG2(
                (
                    0x5B0045000000000000000000000000000000000000000000000001,
                    Spec.P,
                ),
                (
                    0x218C0CEF2A606613357BFAA3C880E71FF8490195337FA26205A21CCD9A6949A3,
                    0x13FED2C79ADD9D85B9949C5852EF8CCCF02B69EA6FC4DB0D1660AC7B50DF39E1,
                ),
            )
            + PointG1(0x1, Spec.P - 2)
            + PointG2(
                (
                    0x5B0045000000000000000000000000000000000000000000000001,
                    Spec.P - 2,
                ),
                (
                    0x218C0CEF2A606613357BFAA3C880E71FF8490195337FA26205A21CCD9A6949A3,
                    0x13FED2C79ADD9D85B9949C5852EF8CCCF02B69EA6FC4DB0D1660AC7B50DF39E1,
                ),
            ),
        ),
        pytest.param(
            PointG1(0x1, 0x2)
            + PointG2(
                (
                    0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
                    0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
                ),
                (
                    0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
                    0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
                ),
            )
            + PointG1(
                0x0F25929BCB43D5A57391564615C9E70A992B10EAFA4DB109709649CF48C50DD2,
                0x16DA2F5CB6BE7A0AA72C440C53C9BBDFEC6C36C7D515536431B3A865468ACBBA,
            )
            + PointG2(
                (
                    0x2E89718AD33C8BED92E210E81D1853435399A271913A6520736A4729CF0D51EB,
                    0x01A9E2FFA2E92599B68E44DE5BCF354FA2642BD4F26B259DAA6F7CE3ED57AEB3,
                ),
                (
                    0x14A9A87B789A58AF499B314E13C3D65BEDE56C07EA2D418D6874857B70763713,
                    0x178FB49A2D6CD347DC58973FF49613A20757D0FCC22079F9ABD10C3BAEE24590,
                ),
            )
            + PointG1(0x1, 0x2)
            + PointG2(
                (
                    0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
                    0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
                ),
                (
                    0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
                    0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
                ),
            )
            + Spec.INF_G1
            + PointG2((0x200000000000000000000000000000B4, 0x0), (0x0, 0x0)),
        ),
        pytest.param(
            PointG1(
                0x2A4F1DBC9FE6D2882462FB11AFEAE7B7F2A0CF213B1F19C45CB222336283F380,
                0x1141763C897C9A90E387EA80F68EB88C2D79AAB680196D9538CD2CA632A5E81B,
            )
            + PointG2(
                (
                    0x0E540F5B5BE91F82ED05349750761224F543068CE30D2D5E838BF66866F34520,
                    0x0FA5AC8C46F725E54505019BDA3356EF6E35B0A89B9B4F79BB0C62211235C931,
                ),
                (
                    0x2E6D97A1F7E0428FC0BE6BE02C811095F5166710DCBE869C36A8EF89CAC63E01,
                    0x2657BBAF3BCFD106DD677EEF03172F693A6C919776F441DC0FD47A4BD91D0487,
                ),
            )
            + PointG1(
                0x225FDAB8FE6CD876363D27075CDF0D01C209DA61B1634B574A5D811CFAE40700,
                0x1216B7C3E2ADC07C3BEF31771C7BB9E1D02F07FF3A5B74953C4FD5BF9A7A6DFF,
            )
            + PointG2(
                (
                    0x25F63FCC543337B8F6275F97D6479633B921541A96AC1BC2AFF2E0905DB7407C,
                    0x206776F9480168741ECA625C06E5526B4664A02CE664BC656F39664D96278B6E,
                ),
                (
                    0x1E40E8084FD648BA315F691E8367BE1D4C13844421C87223D84829C31A0D7AFE,
                    0x24B8042D4CB604AE66C0DC97CA8A9C2D22C743335D92BC401700F6B00D5CDC5B,
                ),
            ),
        ),
        pytest.param(
            PointG1(
                0x2ECA0C7238BF16E83E7A1E6C5D49540685FF51380F309842A98561558019FC02,
                0x03D3260361BB8451DE5FF5ECD17F010FF22F5C31CDF184E9020B06FA5997DB84,
            )
            + PointG2(
                (
                    0x1213D2149B006137FCFB23036606F848D638D576A120CA981B5B1A5F9300B3EE,
                    0x2276CF730CF493CD95D64677BBB75FC42DB72513A4C1E387B476D056F80AA75F,
                ),
                (
                    0x21EE6226D31426322AFCDA621464D0611D226783262E21BB3BC86B537E986237,
                    0x096DF1F82DFF337DD5972E32A8AD43E28A78A96A823EF1CD4DEBE12B6552EA5F,
                ),
            )
            + PointG1(
                0x06967A1237EBFECA9AAAE0D6D0BAB8E28C198C5A339EF8A2407E31CDAC516DB9,
                0x22160FA257A5FD5B280642FF47B65ECA77E626CB685C84FA6D3B6882A283DDD1,
            )
            + PointG2(
                (
                    0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
                    0xE8FF2110EDE0E189426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
                ),
                (
                    0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
                    0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
                ),
            ),
        ),
    ],
    ids=lambda _: "invalid_g2_point_",
)
def test_invalid_g2_point(
    state_test: StateTestFiller,
    pre: Alloc,
    post: dict,
    tx: Transaction,
) -> None:
    """Test invalid g2 point inputs to the ecpairing precompile."""
    state_test(
        env=Environment(),
        pre=pre,
        tx=tx,
        post=post,
    )

Parametrized Test Cases

This test generates 14 parametrized test cases across 13 forks.