TKK_E32232028/.venv/lib/python3.10/site-packages/lightecc/curves/weierstrass.py

975 lines
45 KiB
Python

# project dependencies
from lightecc.interfaces.form import WeierstrassInterface
from lightecc.commons.logger import Logger
logger = Logger(module="lightecc/curves/weierstrass.py")
DEFAULT_CURVE = "secp256k1"
# pylint: disable=too-few-public-methods
class Secp256k1(WeierstrassInterface):
a = 0
b = 7
p = (
pow(2, 256)
- pow(2, 32)
- pow(2, 9)
- pow(2, 8)
- pow(2, 7)
- pow(2, 6)
- pow(2, 4)
- pow(2, 0)
)
G = (
55066263022277343669578718895168534326250603453777594175500187360389116729240,
32670510020758816978083085130507043184471273380659243275938904335757337482424,
)
n = 115792089237316195423570985008687907852837564279074904382605163141518161494337
class P192(WeierstrassInterface):
a = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC
b = 0x64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1
p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF
G = (
0x188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012,
0x07192B95FFC8DA78631011ED6B24CDD573F977A11E794811,
)
n = 0xFFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831
class P224(WeierstrassInterface):
a = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE
b = 0xB4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4
p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001
G = (
0xB70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21,
0xBD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34,
)
n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D
class P256(WeierstrassInterface):
a = 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC
b = 0x5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B
p = 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF
G = (
0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296,
0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5,
)
n = 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551
class P384(WeierstrassInterface):
a = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFC
b = 0xB3312FA7E23EE7E4988E056BE3F82D19181D9C6EFE8141120314088F5013875AC656398D8A2ED19D2A85C8EDD3EC2AEF
p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF
G = (
0xAA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7,
0x3617DE4A96262C6F5D9E98BF9292DC29F8F41DBD289A147CE9DA3113B5F0B8C00A60B1CE1D7E819D7A431D7C90EA0E5F,
)
n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973
class P521(WeierstrassInterface):
a = 0x01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
b = 0x0051953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00
p = 0x01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
G = (
0x00C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66,
0x011839296A789A3BC0045C8A5FB42C7D1BD998F54449579B446817AFBD17273E662C97EE72995EF42640C550B9013FAD0761353C7086A272C24088BE94769FD16650,
)
n = 0x01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409
class Curve22103(WeierstrassInterface):
a = 0x155555555555555555555555555555555555555555555552174084FF
b = 0x1425ED097B425ED097B425ED097B425ED097B425ED0BBA9428427967
p = 0x1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
G = (
0xCB476FE081B61F56A60B1D1B34FB7207D072EF25DADF377731049B0,
0x36429404D97E1E217BAD2E5601F6551F95D8FE9481BD454D1F3E7B6,
)
n = 0x3FFFFFFFFFFFFFFFFFFFFFFFFFFF5CD04695A145C3067CF4AAE2025
class Curve4417(WeierstrassInterface):
a = 0x4648D10B419379D50F4BA01869D9AE363285E01FE66920878EE075B0
b = 0x4C4DCEDFAC09383A0311B98EE9637415B9134B4115FDB760C1A3D419
p = 0x3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
G = (
0xFF9D7EDD97D523012FFAACA32B7C90F1A8E026F21972C789A8484A2B,
0x3E9036ADC1A41FCE2F2CA08E2D1BE4F6D97E30CA7761DB1F3E2F2CE96,
)
n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4A75594D4923FC93D42713CDAF
class Curve1174(WeierstrassInterface):
a = 0x486BE25B34C8080922B969257EEB54C404F914A29067A5560BB9AEE0BC67A6D
b = 0xE347A25BF875DD2F1F12D8A10334D417CC15E77893A99F4BF278CA563072E6
p = 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
G = (
0x3BE821D63D2CD5AFE0504F452E5CF47A60A10446928CEAECFD5294F89B45051,
0x66FE4E7B8B6FE152F743393029A61BFB839747C8FB00F7B27A6841C07532A0,
)
n = 0x1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77965C4DFD307348944D45FD166C971
class Curve67254(WeierstrassInterface):
a = 0x2E32419A32377AF8E7F03148A106D112C8C2E26D31A89F46B743DEED322C7ADC3024AFE4B5AFD8DB7180281586549F4A
b = 0x22F6EF3BE72A67FDC236D7173727CD2AF6D02A195753C44BDF451369B02EA0F963D9A775CAE6DC3AE9CCABB7F183C1AD
p = 0x3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
G = (
0x141946416199FDDA96EC1F1AC80058AA3F0CE96B1BCD023E97BAE542FE3404B4738DB9B81A13698339387672ECA360C0,
0xD51BF79D968F4A076022E750F821058E2B5073697B639EDD355EBF8AD32352B1EFA9478DE7EB5662EF0D26EF6EEA795,
)
n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5FB21F21E95EEE17C5E69281B102D2773E27E13FD3C9719
class Fp254BNa(WeierstrassInterface):
a = 0
b = 0x05
p = 0x2370FB049D410FBE4E761A9886E502417D023F40180000017E80600000000001
G = (0x01, 0xD45589B158FAAF6AB0E4AD38D998E9982E7FF63964EE1460342A592677CCCB0)
n = 0x2370FB049D410FBE4E761A9886E502411DC1AF70120000017E80600000000001
class Fp254BNb(WeierstrassInterface):
a = 0x00
b = 0x02
p = 0x2523648240000001BA344D80000000086121000000000013A700000000000013
G = (0x2523648240000001BA344D80000000086121000000000013A700000000000012, 0x01)
n = 0x2523648240000001BA344D8000000007FF9F800000000010A10000000000000D
class Fp224BN(WeierstrassInterface):
a = 0
b = 0x03
p = 0xFFFFFFFFFFF107288EC29E602C4520DB42180823BB907D1287127833
G = (0x01, 0x02)
n = 0xFFFFFFFFFFF107288EC29E602C4420DB4218082B36C2ACCFF76C58ED
class Fp256BN(WeierstrassInterface):
a = 0
b = 0x03
p = 0xFFFFFFFFFFFCF0CD46E5F25EEE71A49F0CDC65FB12980A82D3292DDBAED33013
G = (0x01, 0x02)
n = 0xFFFFFFFFFFFCF0CD46E5F25EEE71A49E0CDC65FB1299921AF62D536CD10B500D
class Fp384BN(WeierstrassInterface):
a = 0
b = 0x03
p = 0xFFFFFFFFFFFFFFFFFFF2A96823D5920D2A127E3F6FBCA024C8FBE29531892C79534F9D306328261550A7CABD7CCCD10B
G = (0x01, 0x02)
n = 0xFFFFFFFFFFFFFFFFFFF2A96823D5920D2A127E3F6FBCA023C8FBE29531892C795356487D8AC63E4F4DB17384341A5775
class Fp512BN(WeierstrassInterface):
a = 0
b = 0x03
p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFF9EC7F01C60BA1D8CB5307C0BBE3C111B0EF455146CF1EACBE98B8E48C65DEAB236FE1916A55CE5F4C6467B4EB280922ADEF33
G = (0x01, 0x02)
n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFF9EC7F01C60BA1D8CB5307C0BBE3C111B0EF445146CF1EACBE98B8E48C65DEAB2679A34A10313E04F9A2B406A64A5F519A09ED
class Tweedledum(WeierstrassInterface):
a = 0
b = 5
p = 0x40000000000000000000000000000000038AA1276C3F59B9A14064E200000001
G = (0x40000000000000000000000000000000038AA1276C3F59B9A14064E200000000, 0x02)
n = 0x40000000000000000000000000000000038AA127696286C9842CAFD400000001
class Tweedledee(WeierstrassInterface):
a = 0
b = 5
p = 0x40000000000000000000000000000000038AA127696286C9842CAFD400000001
G = (0x40000000000000000000000000000000038AA127696286C9842CAFD400000000, 0x02)
n = 0x40000000000000000000000000000000038AA1276C3F59B9A14064E200000001
class Pallas(WeierstrassInterface):
a = 0x00
b = 0x05
p = 0x40000000000000000000000000000000224698FC094CF91B992D30ED00000001
G = (0x40000000000000000000000000000000224698FC094CF91B992D30ED00000000, 0x02)
n = 0x40000000000000000000000000000000224698FC0994A8DD8C46EB2100000001
class Vesta(WeierstrassInterface):
a = 0x00
b = 0x05
p = 0x40000000000000000000000000000000224698FC0994A8DD8C46EB2100000001
G = (0x40000000000000000000000000000000224698FC0994A8DD8C46EB2100000000, 0x02)
n = 0x40000000000000000000000000000000224698FC094CF91B992D30ED00000001
class Tom256(WeierstrassInterface):
a = 0xFFFFFFFF0000000100000000000000017E72B42B30E7317793135661B1C4B114
b = 0xB441071B12F4A0366FB552F8E21ED4AC36B06ACEEB354224863E60F20219FC56
p = 0xFFFFFFFF0000000100000000000000017E72B42B30E7317793135661B1C4B117
G = (0x03, 0x5A6DD32DF58708E64E97345CBE66600DECD9D538A351BB3C30B4954925B1F02D)
n = 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF
class Numsp256d1(WeierstrassInterface):
a = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
b = 0x25581
p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
G = (0x01, 0x696F1853C1E466D7FC82C96CCEEEDD6BD02C2F9375894EC10BF46306C2B56C77)
n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE43C8275EA265C6020AB20294751A825
class Numsp384d1(WeierstrassInterface):
a = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC0
b = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77BB
p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC3
G = (
0x02,
0x3C9F82CB4B87B4DC71E763E0663E5DBD8034ED422F04F82673330DC58D15FFA2B4A3D0BAD5D30F865BCBBF503EA66F43,
)
n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD61EAF1EEB5D6881BEDA9D3D4C37E27A604D81F67B0E61B9
class Numsp512d1(WeierstrassInterface):
a = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC4
b = 0x1D99B
p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC7
G = (
0x02,
0x1C282EB23327F9711952C250EA61AD53FCC13031CF6DD336E0B9328433AFBDD8CC5A1C1F0C716FDC724DDE537C2B0ADB00BB3D08DC83755B205CC30D7F83CF28,
)
n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B3CA4FB94E7831B4FC258ED97D0BDC63B568B36607CD243CE153F390433555D
class BrainpoolP160r1(WeierstrassInterface):
a = 0x340E7BE2A280EB74E2BE61BADA745D97E8F7C300
b = 0x1E589A8595423412134FAA2DBDEC95C8D8675E58
p = 0xE95E4A5F737059DC60DFC7AD95B3D8139515620F
G = (
0xBED5AF16EA3F6A4F62938C4631EB5AF7BDBCDBC3,
0x1667CB477A1A8EC338F94741669C976316DA6321,
)
n = 0xE95E4A5F737059DC60DF5991D45029409E60FC09
class BrainpoolP160t1(WeierstrassInterface):
a = 0xE95E4A5F737059DC60DFC7AD95B3D8139515620C
b = 0x7A556B6DAE535B7B51ED2C4D7DAA7A0B5C55F380
p = 0xE95E4A5F737059DC60DFC7AD95B3D8139515620F
G = (
0xB199B13B9B34EFC1397E64BAEB05ACC265FF2378,
0xADD6718B7C7C1961F0991B842443772152C9E0AD,
)
n = 0xE95E4A5F737059DC60DF5991D45029409E60FC09
class BrainpoolP192r1(WeierstrassInterface):
a = 0x6A91174076B1E0E19C39C031FE8685C1CAE040E5C69A28EF
b = 0x469A28EF7C28CCA3DC721D044F4496BCCA7EF4146FBF25C9
p = 0xC302F41D932A36CDA7A3463093D18DB78FCE476DE1A86297
G = (
0xC0A0647EAAB6A48753B033C56CB0F0900A2F5C4853375FD6,
0x14B690866ABD5BB88B5F4828C1490002E6773FA2FA299B8F,
)
n = 0xC302F41D932A36CDA7A3462F9E9E916B5BE8F1029AC4ACC1
class BrainpoolP192t1(WeierstrassInterface):
a = 0xC302F41D932A36CDA7A3463093D18DB78FCE476DE1A86294
b = 0x13D56FFAEC78681E68F9DEB43B35BEC2FB68542E27897B79
p = 0xC302F41D932A36CDA7A3463093D18DB78FCE476DE1A86297
G = (
0x3AE9E58C82F63C30282E1FE7BBF43FA72C446AF6F4618129,
0x97E2C5667C2223A902AB5CA449D0084B7E5B3DE7CCC01C9,
)
n = 0xC302F41D932A36CDA7A3462F9E9E916B5BE8F1029AC4ACC1
class BrainpoolP224r1(WeierstrassInterface):
a = 0x68A5E62CA9CE6C1C299803A6C1530B514E182AD8B0042A59CAD29F43
b = 0x2580F63CCFE44138870713B1A92369E33E2135D266DBB372386C400B
p = 0xD7C134AA264366862A18302575D1D787B09F075797DA89F57EC8C0FF
G = (
0xD9029AD2C7E5CF4340823B2A87DC68C9E4CE3174C1E6EFDEE12C07D,
0x58AA56F772C0726F24C6B89E4ECDAC24354B9E99CAA3F6D3761402CD,
)
n = 0xD7C134AA264366862A18302575D0FB98D116BC4B6DDEBCA3A5A7939F
class BrainpoolP224t1(WeierstrassInterface):
a = 0xD7C134AA264366862A18302575D1D787B09F075797DA89F57EC8C0FC
b = 0x4B337D934104CD7BEF271BF60CED1ED20DA14C08B3BB64F18A60888D
p = 0xD7C134AA264366862A18302575D1D787B09F075797DA89F57EC8C0FF
G = (
0x6AB1E344CE25FF3896424E7FFE14762ECB49F8928AC0C76029B4D580,
0x374E9F5143E568CD23F3F4D7C0D4B1E41C8CC0D1C6ABD5F1A46DB4C,
)
n = 0xD7C134AA264366862A18302575D0FB98D116BC4B6DDEBCA3A5A7939F
class BrainpoolP256r1(WeierstrassInterface):
a = 0x7D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9
b = 0x26DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B6
p = 0xA9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E5377
G = (
0x8BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262,
0x547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F046997,
)
n = 0xA9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A7
class BrainpoolP256t1(WeierstrassInterface):
a = 0xA9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E5374
b = 0x662C61C430D84EA4FE66A7733D0B76B7BF93EBC4AF2F49256AE58101FEE92B04
p = 0xA9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E5377
G = (
0xA3E8EB3CC1CFE7B7732213B23A656149AFA142C47AAFBC2B79A191562E1305F4,
0x2D996C823439C56D7F7B22E14644417E69BCB6DE39D027001DABE8F35B25C9BE,
)
n = 0xA9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A7
class BrainpoolP320r1(WeierstrassInterface):
a = 0x3EE30B568FBAB0F883CCEBD46D3F3BB8A2A73513F5EB79DA66190EB085FFA9F492F375A97D860EB4
b = 0x520883949DFDBC42D3AD198640688A6FE13F41349554B49ACC31DCCD884539816F5EB4AC8FB1F1A6
p = 0xD35E472036BC4FB7E13C785ED201E065F98FCFA6F6F40DEF4F92B9EC7893EC28FCD412B1F1B32E27
G = (
0x43BD7E9AFB53D8B85289BCC48EE5BFE6F20137D10A087EB6E7871E2A10A599C710AF8D0D39E20611,
0x14FDD05545EC1CC8AB4093247F77275E0743FFED117182EAA9C77877AAAC6AC7D35245D1692E8EE1,
)
n = 0xD35E472036BC4FB7E13C785ED201E065F98FCFA5B68F12A32D482EC7EE8658E98691555B44C59311
class BrainpoolP320t1(WeierstrassInterface):
a = 0xD35E472036BC4FB7E13C785ED201E065F98FCFA6F6F40DEF4F92B9EC7893EC28FCD412B1F1B32E24
b = 0xA7F561E038EB1ED560B3D147DB782013064C19F27ED27C6780AAF77FB8A547CEB5B4FEF422340353
p = 0xD35E472036BC4FB7E13C785ED201E065F98FCFA6F6F40DEF4F92B9EC7893EC28FCD412B1F1B32E27
G = (
0x925BE9FB01AFC6FB4D3E7D4990010F813408AB106C4F09CB7EE07868CC136FFF3357F624A21BED52,
0x63BA3A7A27483EBF6671DBEF7ABB30EBEE084E58A0B077AD42A5A0989D1EE71B1B9BC0455FB0D2C3,
)
n = 0xD35E472036BC4FB7E13C785ED201E065F98FCFA5B68F12A32D482EC7EE8658E98691555B44C59311
class BrainpoolP384r1(WeierstrassInterface):
a = 0x7BC382C63D8C150C3C72080ACE05AFA0C2BEA28E4FB22787139165EFBA91F90F8AA5814A503AD4EB04A8C7DD22CE2826
b = 0x4A8C7DD22CE28268B39B55416F0447C2FB77DE107DCD2A62E880EA53EEB62D57CB4390295DBC9943AB78696FA504C11
p = 0x8CB91E82A3386D280F5D6F7E50E641DF152F7109ED5456B412B1DA197FB71123ACD3A729901D1A71874700133107EC53
G = (
0x1D1C64F068CF45FFA2A63A81B7C13F6B8847A3E77EF14FE3DB7FCAFE0CBD10E8E826E03436D646AAEF87B2E247D4AF1E,
0x8ABE1D7520F9C2A45CB1EB8E95CFD55262B70B29FEEC5864E19C054FF99129280E4646217791811142820341263C5315,
)
n = 0x8CB91E82A3386D280F5D6F7E50E641DF152F7109ED5456B31F166E6CAC0425A7CF3AB6AF6B7FC3103B883202E9046565
class BrainpoolP384t1(WeierstrassInterface):
a = 0x8CB91E82A3386D280F5D6F7E50E641DF152F7109ED5456B412B1DA197FB71123ACD3A729901D1A71874700133107EC50
b = 0x7F519EADA7BDA81BD826DBA647910F8C4B9346ED8CCDC64E4B1ABD11756DCE1D2074AA263B88805CED70355A33B471EE
p = 0x8CB91E82A3386D280F5D6F7E50E641DF152F7109ED5456B412B1DA197FB71123ACD3A729901D1A71874700133107EC53
G = (
0x18DE98B02DB9A306F2AFCD7235F72A819B80AB12EBD653172476FECD462AABFFC4FF191B946A5F54D8D0AA2F418808CC,
0x25AB056962D30651A114AFD2755AD336747F93475B7A1FCA3B88F2B6A208CCFE469408584DC2B2912675BF5B9E582928,
)
n = 0x8CB91E82A3386D280F5D6F7E50E641DF152F7109ED5456B31F166E6CAC0425A7CF3AB6AF6B7FC3103B883202E9046565
class BrainpoolP512r1(WeierstrassInterface):
a = 0x7830A3318B603B89E2327145AC234CC594CBDD8D3DF91610A83441CAEA9863BC2DED5D5AA8253AA10A2EF1C98B9AC8B57F1117A72BF2C7B9E7C1AC4D77FC94CA
b = 0x3DF91610A83441CAEA9863BC2DED5D5AA8253AA10A2EF1C98B9AC8B57F1117A72BF2C7B9E7C1AC4D77FC94CADC083E67984050B75EBAE5DD2809BD638016F723
p = 0xAADD9DB8DBE9C48B3FD4E6AE33C9FC07CB308DB3B3C9D20ED6639CCA703308717D4D9B009BC66842AECDA12AE6A380E62881FF2F2D82C68528AA6056583A48F3
G = (
0x81AEE4BDD82ED9645A21322E9C4C6A9385ED9F70B5D916C1B43B62EEF4D0098EFF3B1F78E2D0D48D50D1687B93B97D5F7C6D5047406A5E688B352209BCB9F822,
0x7DDE385D566332ECC0EABFA9CF7822FDF209F70024A57B1AA000C55B881F8111B2DCDE494A5F485E5BCA4BD88A2763AED1CA2B2FA8F0540678CD1E0F3AD80892,
)
n = 0xAADD9DB8DBE9C48B3FD4E6AE33C9FC07CB308DB3B3C9D20ED6639CCA70330870553E5C414CA92619418661197FAC10471DB1D381085DDADDB58796829CA90069
class BrainpoolP512t1(WeierstrassInterface):
a = 0xAADD9DB8DBE9C48B3FD4E6AE33C9FC07CB308DB3B3C9D20ED6639CCA703308717D4D9B009BC66842AECDA12AE6A380E62881FF2F2D82C68528AA6056583A48F0
b = 0x7CBBBCF9441CFAB76E1890E46884EAE321F70C0BCB4981527897504BEC3E36A62BCDFA2304976540F6450085F2DAE145C22553B465763689180EA2571867423E
p = 0xAADD9DB8DBE9C48B3FD4E6AE33C9FC07CB308DB3B3C9D20ED6639CCA703308717D4D9B009BC66842AECDA12AE6A380E62881FF2F2D82C68528AA6056583A48F3
G = (
0x640ECE5C12788717B9C1BA06CBC2A6FEBA85842458C56DDE9DB1758D39C0313D82BA51735CDB3EA499AA77A7D6943A64F7A3F25FE26F06B51BAA2696FA9035DA,
0x5B534BD595F5AF0FA2C892376C84ACE1BB4E3019B71634C01131159CAE03CEE9D9932184BEEF216BD71DF2DADF86A627306ECFF96DBB8BACE198B61E00F8B332,
)
n = 0xAADD9DB8DBE9C48B3FD4E6AE33C9FC07CB308DB3B3C9D20ED6639CCA70330870553E5C414CA92619418661197FAC10471DB1D381085DDADDB58796829CA90069
class Mnt1(WeierstrassInterface):
a = 0x22FFBB20CC052993FA27DC507800B624C650E4FF3D2
b = 0x1C7BE6FA8DA953B5624EFC72406AF7FA77499803D08
p = 0x26DCCACC5041939206CF2B7DEC50950E3C9FA4827AF
G = (
0x25A3AE778F7EF6586ABAE5ACDE21E54B6C64EDF33D0,
0x05B4ACE33AA53C670CE35535D6C273698A182DA557D,
)
n = 0x0000A60FD646AD409B3312C3B23BA64E082AD7B354D
class Mnt2_1(WeierstrassInterface):
a = 0x3DD24A7E5C0BDFACCC215E22760469C73EE9D879
b = 0x478C31A992B294E19F6E4416F958646DDDEDE5E3
p = 0x5AFFFFFFFFFFFF4B46081000000059BB1BF600B7
G = (
0x2725AF3D7DEA98CB9242AC6DDB9BD89BDCF38898,
0x480B4184ED2C50C0230B4C73CA939C1B6B7F1103,
)
n = 0x5AFFFFFFFFFFFF4B46081000000059BB1BF600B5
class Mnt2_2(WeierstrassInterface):
a = 0x07B29491C1A02CD87844F5098D0381F6C45D6523
b = 0x41CC630BD66AC817D43358B108AD3D214037993C
p = 0x5AFFFFFFFFFFFF4B46081000000059BB1BF600B7
G = (
0x0D76B3E1F1ED76A282FA99575D29FF2E587049E9,
0x36E1557ED145AD409F924420E12F74A900FAB054,
)
n = 0x5AFFFFFFFFFFFF4B46081000000059BB1BF600B5
class Mnt3_1(WeierstrassInterface):
a = 0x6D01FD0A017C62075AE999977379867E07F2A6D4
b = 0x7701535C00FD965341D38BBA4CFBDCF9A4651825
p = 0x8AFFFFFFFFFFFEEB0FA77000000089F0DD49FAC7
G = (
0x1781998103C3CA14EA76B9D3A700A53E1C784789,
0x53352DDE04447C25C9BB332A3C7634D3B8801F34,
)
n = 0x8AFFFFFFFFFFFEEB0FA77000000089F0DD49FAC5
class Mnt3_2(WeierstrassInterface):
a = 0x5FBE0085BD2B23AFCD5B9C7704AEED2BFDBE89E4
b = 0x3FD4005928C76D1FDE3D12FA031F48C7FE7F0698
p = 0x8AFFFFFFFFFFFEEB0FA77000000089F0DD49FAC7
G = (
0x494E297179D42C761701AB03B2E5BCA98A24DFE7,
0x3274201D6596252A780390A222E3763BBECFE5F1,
)
n = 0x8AFFFFFFFFFFFEEB0FA77000000089F0DD49FAC5
class Mnt3_3(WeierstrassInterface):
a = 0x2DDF23ACB05A91BDA6BA9C20D7A584AA25075CE0
b = 0x1F8125C46A31E79FD6CC25298B23AB130CD22B5A
p = 0x8AFFFFFFFFFFFEEB0FA77000000089F0DD49FAC7
G = (
0x3F710D05B65B5E16AE1B946D3FC582B16A927432,
0x4A30945C64FD7F85E148BA816005468447616B1F,
)
n = 0x8AFFFFFFFFFFFEEB0FA77000000089F0DD49FAC5
class Mnt4(WeierstrassInterface):
a = 0x4BE28760AA064734852CB4FF51EF2928A7A3CD75087C35CB1433714F7407
b = 0x329704EB1C042F7858C878AA369F70C5C517DE4E05A823DCB8224B8A4D5A
p = 0xA2FFFFFFFFFFFFFFFFFFFFFFFFC298B00000000000000000000005C866CF
G = (
0x82556D57811807A0D7675674B3D57222CFBF9A2A2A2CD146572D7B67627E,
0x73AFACEA28DC870BAA1D5B0BD4300DDD975E2EEFC7C2DB508FC2E92A8345,
)
n = 0xA2FFFFFFFFFFFFFFFFFFFFFFFFC298B00000000000000000000005C866CD
class Mnt5_1(WeierstrassInterface):
a = 0xD149265D4687DCAB1F2046E0947E51AC5E8E7F25916D35539D4DF2E9017A
b = 0x489E7783A1F584712BD4F6D48CF2D1CA2C975678936E639083991C5FC369
p = 0xD2FFFFFFFFFFFFFFFFFFFFFFFE9058D000000000000000000000A0271007
G = (
0x1D871A744F1E02ED15D7D84ABD95E80476E6307085F12DBA27092FF06D60,
0x5C0C8BAE9661303107B0077949DEE16A7F6DDE4982657B9196DE23D9F9D0,
)
n = 0xD2FFFFFFFFFFFFFFFFFFFFFFFE9058D000000000000000000000A0271005
class Mnt5_2(WeierstrassInterface):
a = 0x26CAACED434C5A4C2C9C1B09E0DDC167548A95516E7C81B20702485C9809
b = 0x6031C89E2CDD91881DBD675BEAC3F3DF8DB1B8E0F45301215A01BAF56AB3
p = 0xD2FFFFFFFFFFFFFFFFFFFFFFFE9058D000000000000000000000A0271007
G = (
0x16E55A2EF696238A7AAF19E51B6A81E1582F28B4BCB6575AB4E0331E569B,
0x38DE9844643FC9DB3C568EC528983DA16A177D56145A1D4BF88A2340D839,
)
n = 0xD2FFFFFFFFFFFFFFFFFFFFFFFE9058D000000000000000000000A0271005
class Mnt5_3(WeierstrassInterface):
a = 0x44CFC0F3BC92EC82F818B443B564CF25DEE3EBAE7902E370F9E80283D3BD
b = 0x2DDFD5F7D30C9DACA565CD8278EDDF6E9497F27450AC97A0A69AAC57E27E
p = 0xD2FFFFFFFFFFFFFFFFFFFFFFFE9058D000000000000000000000A0271007
G = (
0xB071579C8CC322DC7FDCE378E5B539B4B7580823ABA3CFDD6637CBFA0BBB,
0x15D1B75795732B1E2DB1EFA55CDBB19357E0AA0422CC03B442809339CF02,
)
n = 0xD2FFFFFFFFFFFFFFFFFFFFFFFE9058D000000000000000000000A0271005
class Prime192v2(WeierstrassInterface):
a = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC
b = 0xCC22D6DFB95C6B25E49C0D6364A4E5980C393AA21668D953
p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF
G = (
0xEEA2BAE7E1497842F2DE7769CFE9C989C072AD696F48034A,
0x6574D11D69B6EC7A672BB82A083DF2F2B0847DE970B2DE15,
)
n = 0xFFFFFFFFFFFFFFFFFFFFFFFE5FB1A724DC80418648D8DD31
class Prime192v3(WeierstrassInterface):
a = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC
b = 0x22123DC2395A05CAA7423DAECCC94760A7D462256BD56916
p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF
G = (
0x7D29778100C65A1DA1783716588DCE2B8B4AEE8E228F1896,
0x38A90F22637337334B49DCB66A6DC8F9978ACA7648A943B0,
)
n = 0xFFFFFFFFFFFFFFFFFFFFFFFF7A62D031C83F4294F640EC13
class Prime239v1(WeierstrassInterface):
a = 0x7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFC
b = 0x6B016C3BDCF18941D0D654921475CA71A9DB2FB27D1D37796185C2942C0A
p = 0x7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFF
G = (
0x0FFA963CDCA8816CCC33B8642BEDF905C3D358573D3F27FBBD3B3CB9AAAF,
0x7DEBE8E4E90A5DAE6E4054CA530BA04654B36818CE226B39FCCB7B02F1AE,
)
n = 0x7FFFFFFFFFFFFFFFFFFFFFFF7FFFFF9E5E9A9F5D9071FBD1522688909D0B
class Prime239v2(WeierstrassInterface):
a = 0x7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFC
b = 0x617FAB6832576CBBFED50D99F0249C3FEE58B94BA0038C7AE84C8C832F2C
p = 0x7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFF
G = (
0x38AF09D98727705120C921BB5E9E26296A3CDCF2F35757A0EAFD87B830E7,
0x5B0125E4DBEA0EC7206DA0FC01D9B081329FB555DE6EF460237DFF8BE4BA,
)
n = 0x7FFFFFFFFFFFFFFFFFFFFFFF800000CFA7E8594377D414C03821BC582063
class Prime239v3(WeierstrassInterface):
a = 0x7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFC
b = 0x255705FA2A306654B1F4CB03D6A750A30C250102D4988717D9BA15AB6D3E
p = 0x7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFF
G = (
0x6768AE8E18BB92CFCF005C949AA2C6D94853D0E660BBF854B1C9505FE95A,
0x1607E6898F390C06BC1D552BAD226F3B6FCFE48B6E818499AF18E3ED6CF3,
)
n = 0x7FFFFFFFFFFFFFFFFFFFFFFF7FFFFF975DEB41B3A6057C3C432146526551
class Bls12_377(WeierstrassInterface):
a = 0x00
b = 0x01
p = 0x01AE3A4617C510EAC63B05C06CA1493B1A22D9F300F5138F1EF3622FBA094800170B5D44300000008508C00000000001
G = (
0x008848DEFE740A67C8FC6225BF87FF5485951E2CAA9D41BB188282C8BD37CB5CD5481512FFCD394EEAB9B16EB21BE9EF,
0x01914A69C5102EFF1F674F5D30AFEEC4BD7FB348CA3E52D96D182AD44FB82305C2FE3D3634A9591AFD82DE55559C8EA6,
)
n = 0x12AB655E9A2CA55660B44D1E5C37B00159AA76FED00000010A11800000000001
class Bls12_381(WeierstrassInterface):
a = 0x00
b = 0x04
p = 0x1A0111EA397FE69A4B1BA7B6434BACD764774B84F38512BF6730D2A0F6B0F6241EABFFFEB153FFFFB9FEFFFFFFFFAAAB
G = (
0x17F1D3A73197D7942695638C4FA9AC0FC3688C4F9774B905A14E3A3F171BAC586C55E83FF97A1AEFFB3AF00ADB22C6BB,
0x08B3F481E3AAA0F1A09E30ED741D8AE4FCF5E095D5D00AF600DB18CB2C04B3EDD03CC744A2888AE40CAA232946C5E7E1,
)
n = 0x73EDA753299D7D483339D80809A1D80553BDA402FFFE5BFEFFFFFFFF00000001
class Bls12_446(WeierstrassInterface):
a = 0x00
b = 0x01
p = 0x3CDEE0FB28C5E535200FC34965AAD6400095A4B78A02FE320F75A64BBAC71602824E6DC3E23ACDEE56EE4528C573B5CC311C0026AAB0AAAB
G = (
0x297792B2D03DE39D64FACA6D49FCF7A8850144CA24FC5D815C082A3AA87D1A16929E56228C136123BA51421AE89CACD5B4789A38CE39035A,
0xDC40DDCBAB2823A7870B5C688AA04FEE40369D913E4F2F0947A152FE1C27A79B7F787E9C35B869C3846FAC4F12A70D0FE22D2E244268CC,
)
n = 0x511B70539F27995B34995830FA4D04C98CCC4C050BC7BB9B0E8D8CA34610428001400040001
class Bls12_455(WeierstrassInterface):
a = 0x00
b = 0x0A
p = 0x55555955557955572AA00E0F95B49203003F665E3A5B1D56234BD93954FCB314B8B3DB9994ACE86D1BA6C589556B2AA956AAA00001800002AB
G = (
0x03018DF4C2336D178E6EA61540353ABA01923E3890B3295848906DFC90E0C43008E4751FFC913DC1FF3DF33D11DB57BADA7A9297195ACFB2FA,
0x19A8A9C4C3AC2FFB4C6B380D17B8282E029615052EAA6416C16C8F36F251D87C272657F0702CC58C4E072628D7BAD3C0E9B3A8AEBFC6B2357C,
)
n = 0x10000080000380002E0000F10004F00025E000750001D1000A00000400001C00007FFFFC00001
class Bls12_638(WeierstrassInterface):
a = 0x00
b = 0x04
p = 0x3CB868653D300B3FE80015554DD25DB0FC01DCDE95D4000000631BBD421715013955555555529C005C75D6C2AB00000000000AC79600D2ABAAAAAAAAAAAAAA93EAF3FF000AAAAAAAAAAAAAAABEAB000B
G = (
0x160F63A3A3B297F113075ED79466138E85B025F7FE724B78E32D7AFC4D734BDD54F871092B8D1966D491C0F45A48A8BBA5586095DFFCC1410B7E26ED16BAF98C1117959134C24A17A7BE31E1AFBF844F,
0x2D340B33877480A9785E86ED2EDCAFC170B82568CB21B708B79FC6DA3748461FCD80697E486695F3CAE76FCB1781E784F6812F57BE05DFC850426650DED8B40A464B00A35718228EC8E02B52B59D876E,
)
n = 0x50F94035FF4000FFFFFFFFFFF9406BFDC0040000000000000035FB801DFFBFFFFFFFFFFFFFFF401BFF80000000000000000000FFC01
class Bls24_477(WeierstrassInterface):
a = 0x00
b = 0x04
p = 0x167278FAC63BD5B007EBB8F693A2AB3DBD9F92CF437C399D928E94BFE9A04A009FDA9E8CF9226901DE62AEA9DCEA48BF1A0EBBF8860A5E7AD000152B
G = (
0x15DFD8E4893A408A34B600532B51CC86CAB3AF07103CFCF3EC7B9AF836904CFB60AB0FA8AC91EE6255E5EF6286FA0C24DF9D76EA50599C2E103E40AD,
0x0A683957A59B1B488FA657E11B44815056BDE33C09D6AAD392D299F89C7841B91A683BF01B7E70547E48E0FBE1CA9E991983131470F886BA9B6FCE2E,
)
n = 0x57F52EE445CC41781FCD53D13E45F6ACDFE4F9F2A3CD414E71238AFC9FCFC7D38CAEF64F4FF79F90013FFFFFF0000001
class Gost256(WeierstrassInterface):
a = 0x7
b = 0x5FBFF498AA938CE739B8E022FBAFEF40563F6E6A3472FC2A514C0CE9DAE23B7E
p = 0x8000000000000000000000000000000000000000000000000000000000000431
G = (0x2, 0x8E2A8A0E65147D4BD6316030E16D19C85C97F0A9CA267122B96ABBCEA7E8FC8)
n = 0x8000000000000000000000000000000150FE8A1892976154C59CFC193ACCF5B3
class Gost512(WeierstrassInterface):
a = 0x7
b = 0x1CFF0806A31116DA29D8CFA54E57EB748BC5F377E49400FDD788B649ECA1AC4361834013B2AD7322480A89CA58E0CF74BC9E540C2ADD6897FAD0A3084F302ADC
p = 0x4531ACD1FE0023C7550D267B6B2FEE80922B14B2FFB90F04D4EB7C09B5D2D15DF1D852741AF4704A0458047E80E4546D35B8336FAC224DD81664BBF528BE6373
G = (
0x24D19CC64572EE30F396BF6EBBFD7A6C5213B3B3D7057CC825F91093A68CD762FD60611262CD838DC6B60AA7EEE804E28BC849977FAC33B4B530F1B120248A9A,
0x2BB312A43BD2CE6E0D020613C857ACDDCFBF061E91E5F2C3F32447C259F39B2C83AB156D77F1496BF7EB3351E1EE4E43DC1A18B91B24640B6DBB92CB1ADD371E,
)
n = 0x4531ACD1FE0023C7550D267B6B2FEE80922B14B2FFB90F04D4EB7C09B5D2D15DA82F2D7ECB1DBAC719905C5EECC423F1D86E25EDBE23C595D644AAF187E6E6DF
class Bn158(WeierstrassInterface):
a = 0x0000000000000000000000000000000000000000
b = 0x0000000000000000000000000000000000000011
p = 0x24240D8241D5445106C8442084001384E0000013
G = (
0x24240D8241D5445106C8442084001384E0000012,
0x0000000000000000000000000000000000000004,
)
n = 0x24240D8241D5445106C7E3F07E0010842000000D
class Bn190(WeierstrassInterface):
a = 0x000000000000000000000000000000000000000000000000
b = 0x000000000000000000000000000000000000000000001001
p = 0x240001B0000948001E60004134005F10005DC0003A800013
G = (
0x240001B0000948001E60004134005F10005DC0003A800012,
0x000000000000000000000000000000000000000000000040,
)
n = 0x240001B0000948001E600040D4005CD0005760003180000D
class Bn222(WeierstrassInterface):
a = 0x00000000000000000000000000000000000000000000000000000000
b = 0x00000000000000000000000000000000000000000000000000000101
p = 0x23DC0D7DC02402CDE486F4C00015B5215C0000004C6CE00000000067
G = (
0x23DC0D7DC02402CDE486F4C00015B5215C0000004C6CE00000000066,
0x00000000000000000000000000000000000000000000000000000010,
)
n = 0x23DC0D7DC02402CDE486F4C00015555156000000496DA00000000061
class Bn254(WeierstrassInterface):
a = 0x0000000000000000000000000000000000000000000000000000000000000000
b = 0x0000000000000000000000000000000000000000000000000000000000000002
p = 0x2523648240000001BA344D80000000086121000000000013A700000000000013
G = (
0x2523648240000001BA344D80000000086121000000000013A700000000000012,
0x0000000000000000000000000000000000000000000000000000000000000001,
)
n = 0x2523648240000001BA344D8000000007FF9F800000000010A10000000000000D
class Bn286(WeierstrassInterface):
a = 0x000000000000000000000000000000000000000000000000000000000000000000000000
b = 0x000000000000000000000000000000000000000000000000000000000000000000000002
p = 0x240900D8991B25B0E2CB51DDA534A205391892080A008108000853813800138000000013
G = (
0x240900D8991B25B0E2CB51DDA534A205391892080A008108000853813800138000000012,
0x000000000000000000000000000000000000000000000000000000000000000000000001,
)
n = 0x240900D8991B25B0E2CB51DDA534A205391831FC099FC0FC0007F081080010800000000D
class Bn318(WeierstrassInterface):
a = 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000
b = 0x00000000000000000000000000000000000000000000000000000000000000000000000000000002
p = 0x24009000D800900024075015F015F0075000008F411E808F4000000004E484E4800000000000101B
G = (
0x24009000D800900024075015F015F0075000008F411E808F4000000004E484E4800000000000101A,
0x00000000000000000000000000000000000000000000000000000000000000000000000000000001,
)
n = 0x24009000D800900024075015F015F0075000008EE11DC08EE000000004DB84DB8000000000000FE5
class Bn350(WeierstrassInterface):
a = 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
b = 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000002
p = 0x23FFB80035FFEE24020A01CAFD738EC3F24B475EBC0AD0F6A0530FD78443FDF01A3FF64084000004E0000013
G = (
0x23FFB80035FFEE24020A01CAFD738EC3F24B475EBC0AD0F6A0530FD78443FDF01A3FF64084000004E0000012,
0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000001,
)
n = 0x23FFB80035FFEE24020A01CAFD738EC3F24B475EBC0A70F70052F7D78413FE08173FF7C07E0000042000000D
class Bn382(WeierstrassInterface):
a = 0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
b = 0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002
p = 0x240026400F3D82B2E42DE125B00158405B710818AC00000840046200950400000000001380052E000000000000000013
G = (
0x240026400F3D82B2E42DE125B00158405B710818AC00000840046200950400000000001380052E000000000000000012,
0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001,
)
n = 0x240026400F3D82B2E42DE125B00158405B710818AC000007E0042F008E3E00000000001080046200000000000000000D
class Bn414(WeierstrassInterface):
a = 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
b = 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002
p = 0x240024000D7EE23F2823CA035D31B144364C75E59AEFFF60544845142000765EFFF7C0000021138004DFFFFFD900000000000013
G = (
0x240024000D7EE23F2823CA035D31B144364C75E59AEFFF60544845142000765EFFF7C0000021138004DFFFFFD900000000000012,
0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001,
)
n = 0x240024000D7EE23F2823CA035D31B144364C75E59AEFFF605447E513F00070607FF82000001F9080041FFFFFDF0000000000000D
class Bn446(WeierstrassInterface):
a = 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
b = 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101
p = 0x2400000000000000002400000002D00000000D800000021C0000001800000000870000000B0400000057C00000015C000000132000000067
G = (
0x2400000000000000002400000002D00000000D800000021C0000001800000000870000000B0400000057C00000015C000000132000000066,
0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010,
)
n = 0x2400000000000000002400000002D00000000D800000021C00000017A0000000870000000AD400000054C000000156000000126000000061
class Bn478(WeierstrassInterface):
a = 0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
b = 0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002
p = 0x23FFFFFFFFFFFFFEDFFFFFFFEE0001B3600000006BFFF5DB835FFF5D28085442328002888F96F2944D7DED781430FFD780065FFF010020FFFD900013
G = (
0x23FFFFFFFFFFFFFEDFFFFFFFEE0001B3600000006BFFF5DB835FFF5D28085442328002888F96F2944D7DED781430FFD780065FFF010020FFFD900012,
0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001,
)
n = 0x23FFFFFFFFFFFFFEDFFFFFFFEE0001B3600000006BFFF5DB835FFF5D2807F442328002888F9872944D7E0578112F7FD780062FFF07001F7FFDF0000D
class Bn510(WeierstrassInterface):
a = 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
b = 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101
p = 0x2400000000000000003F000000000001B0002958000000000237000C0F0000084000F8100151A400073800242D00001380019440000000000888000000000013
G = (
0x2400000000000000003F000000000001B0002958000000000237000C0F0000084000F8100151A400073800242D00001380019440000000000888000000000012,
0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010,
)
n = 0x2400000000000000003F000000000001B0002958000000000237000C0F000007E000F8100151A40006E400242D000010800181E000000000073800000000000D
class Bn542(WeierstrassInterface):
a = 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
b = 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002
p = 0x2400090000D80009000024000090001B01B1B051090510001B00D8001B0510D8A2084511080008D000090510005110800108138025380001B00000084000001380000013
G = (
0x2400090000D80009000024000090001B01B1B051090510001B00D8001B0510D8A2084511080008D000090510005110800108138025380001B00000084000001380000012,
0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001,
)
n = 0x2400090000D80009000024000090001B01B1B051090510001B00D8001B0510D8A207E510FC0008700009051000510FC000FC108025080001B0000007E00000108000000D
class Bn574(WeierstrassInterface):
a = 0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
b = 0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002
p = 0x2400023FFFFB7FFF4C00002400167FFFEE01AEE014423FAEFFFB5C000A200050FFFF2808400041FFFE73FFF7C000210000000000001380004DFFFD90000000000000000000000013
G = (
0x2400023FFFFB7FFF4C00002400167FFFEE01AEE014423FAEFFFB5C000A200050FFFF2808400041FFFE73FFF7C000210000000000001380004DFFFD90000000000000000000000012,
0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001,
)
n = 0x2400023FFFFB7FFF4C00002400167FFFEE01AEE014423FAEFFFB5C000A200050FFFF2807E0003EFFFE85FFF820001F80000000000010800041FFFDF000000000000000000000000D
class Bn606(WeierstrassInterface):
a = 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
b = 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002
p = 0x23FFFFFFFFFFFEE00000000000036000000241AFFB7FFFFFF275E0024000001B1440000D94482DF27FFFC9AEDF0000000036512100245142137FFFFFB75D7BD900000000000000246C844E13
G = (
0x23FFFFFFFFFFFEE00000000000036000000241AFFB7FFFFFF275E0024000001B1440000D94482DF27FFFC9AEDF0000000036512100245142137FFFFFB75D7BD900000000000000246C844E12,
0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001,
)
n = 0x23FFFFFFFFFFFEE00000000000036000000241AFFB7FFFFFF275E0024000001B1440000D9447CDF27FFFC9AEE08000000036511F8024513F107FFFFFB75D81DF00000000000000246C7E420D
class Bn638(WeierstrassInterface):
a = 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
b = 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101
p = 0x23FFFFFDC000000D7FFFFFB8000001D3FFFFF942D000165E3FFF94870000D52FFFFDD0E00008DE55C00086520021E55BFFFFF51FFFF4EB800000004C80015ACDFFFFFFFFFFFFECE00000000000000067
G = (
0x23FFFFFDC000000D7FFFFFB8000001D3FFFFF942D000165E3FFF94870000D52FFFFDD0E00008DE55C00086520021E55BFFFFF51FFFF4EB800000004C80015ACDFFFFFFFFFFFFECE00000000000000066,
0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010,
)
n = 0x23FFFFFDC000000D7FFFFFB8000001D3FFFFF942D000165E3FFF94870000D52FFFFDD0E00008DE55600086550021E555FFFFF54FFFF4EAC000000049800154D9FFFFFFFFFFFFEDA00000000000000061
class Secp112r1(WeierstrassInterface):
a = 0xDB7C2ABF62E35E668076BEAD2088
b = 0x659EF8BA043916EEDE8911702B22
p = 0xDB7C2ABF62E35E668076BEAD208B
G = (0x09487239995A5EE76B55F9C2F098, 0xA89CE5AF8724C0A23E0E0FF77500)
n = 0xDB7C2ABF62E35E7628DFAC6561C5
class Secp112r2(WeierstrassInterface):
a = 0x6127C24C05F38A0AAAF65C0EF02C
b = 0x51DEF1815DB5ED74FCC34C85D709
p = 0xDB7C2ABF62E35E668076BEAD208B
G = (0x4BA30AB5E892B4E1649DD0928643, 0xADCD46F5882E3747DEF36E956E97)
n = 0x36DF0AAFD8B8D7597CA10520D04B
class Secp128r1(WeierstrassInterface):
a = 0xFFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC
b = 0xE87579C11079F43DD824993C2CEE5ED3
p = 0xFFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF
G = (0x161FF7528B899B2D0C28607CA52C5B86, 0xCF5AC8395BAFEB13C02DA292DDED7A83)
n = 0xFFFFFFFE0000000075A30D1B9038A115
class Secp128r2(WeierstrassInterface):
a = 0xD6031998D1B3BBFEBF59CC9BBFF9AEE1
b = 0x5EEEFCA380D02919DC2C6558BB6D8A5D
p = 0xFFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF
G = (0x7B6AA5D85E572983E6FB32A7CDEBC140, 0x27B6916A894D3AEE7106FE805FC34B44)
n = 0x3FFFFFFF7FFFFFFFBE0024720613B5A3
class Secp160k1(WeierstrassInterface):
a = 0x0000000000000000000000000000000000000000
b = 0x0000000000000000000000000000000000000007
p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73
G = (
0x3B4C382CE37AA192A4019E763036F4F5DD4D7EBB,
0x938CF935318FDCED6BC28286531733C3F03C4FEE,
)
n = 0x0100000000000000000001B8FA16DFAB9ACA16B6B3
class Secp160r1(WeierstrassInterface):
a = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC
b = 0x1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45
p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF
G = (
0x4A96B5688EF573284664698968C38BB913CBFC82,
0x23A628553168947D59DCC912042351377AC5FB32,
)
n = 0x0100000000000000000001F4C8F927AED3CA752257
class Secp160r2(WeierstrassInterface):
a = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC70
b = 0xB4E134D3FB59EB8BAB57274904664D5AF50388BA
p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73
G = (
0x52DCB034293A117E1F4FF11B30F7199D3144CE6D,
0xFEAFFEF2E331F296E071FA0DF9982CFEA7D43F2E,
)
n = 0x0100000000000000000000351EE786A818F3A1A16B
class Secp192k1(WeierstrassInterface):
a = 0x000000000000000000000000000000000000000000000000
b = 0x000000000000000000000000000000000000000000000003
p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37
G = (
0xDB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D,
0x9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D,
)
n = 0xFFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D
class Secp224k1(WeierstrassInterface):
a = 0x00000000000000000000000000000000000000000000000000000000
b = 0x00000000000000000000000000000000000000000000000000000005
p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFE56D
G = (
0xA1455B334DF099DF30FC28A169A467E9E47075A90F7E650EB6B7A45C,
0x7E089FED7FBA344282CAFBD6F7E319F7C0B0BD59E2CA4BDB556D61A5,
)
n = 0x10000000000000000000000000001DCE8D2EC6184CAF0A971769FB1F7
class EccFrog512CK2(WeierstrassInterface):
"""
github.com/victormeloasm/OpenFrogget
"""
a = -7
b = 95864189850957917703933006131793785649240252916618759767550461391845895018181
p = 9149012705592502490164965176888130701548053918699793689672344807772801105830681498780746622530729418858477103073591918058480028776841126664954537807339721
G = (
8426241697659200371183582771153260966569955699615044232640972423431947060129573736112298744977332416175021337082775856058058394786264506901662703740544432,
4970129934163735248083452609809843496231929620419038489506391366136186485994288320758668172790060801809810688192082146431970683113557239433570011112556001,
)
n = 9149012705592502490164965176888130701548053918699793689672344807772801105830557269123255850915745063541133157503707284048429261692283957712127567713136519
class SM2(WeierstrassInterface):
a = 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFC
b = 0x28E9FA9E9D9F5E344D5A9E4BCF6509A7F39789F515AB8F92DDBCBD414D940E93
p = 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF
G = (
0x32C4AE2C1F1981195F9904466A39C9948FE30BBFF2660BE1715A4589334C74C7,
0xBC3736A2F4F6779C59BDCEE36B692153D0A9877CC62A474002DF32E52139F0A0,
)
n = 0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF40939D54123
class Test_Curve(WeierstrassInterface):
"""
koclab.cs.ucsb.edu/teaching/ccs130h/2018/04ecc.pdf
"""
a = 1
b = 1
p = 23
G = (0, 1)
n = 28
def __init__(self):
logger.warn(
"weierstrass test-curve is for development and educational purposes only"
" and should not be used in production."
)
class SS_Weierstrass_307(WeierstrassInterface):
a = 1
b = 0
p = 307
G = (182, 240)
n = 77
class CustomWeierstrassCurve(WeierstrassInterface):
def __init__(self, p, a, b, G, n):
self.p = p
self.a = a
self.b = b
self.G = G
self.n = n