http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto-c/blob/8d28d2c3/testVectors/fp/test_vector_25519.txt ---------------------------------------------------------------------- diff --git a/testVectors/fp/test_vector_25519.txt b/testVectors/fp/test_vector_25519.txt new file mode 100644 index 0000000..d3e7866 --- /dev/null +++ b/testVectors/fp/test_vector_25519.txt @@ -0,0 +1,161 @@ +# FP ARITHMETICS - CURVE: C25519, Modulo = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed; BIGmax = 2^256 + +#test1 +FP_1 = 10BE02 +FP_2 = 01F85596 +FPadd = 02091398 +FPsub = 7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE186859 +FP_1nres = 10BE02 +FP_2nres = 01F85596 +FPmulmod = 20FBACD5FF2C +FPsmallmul = A76C14 +FPsqr = 01184D46F804 +FPreduce = 10BE02 +FPneg = 7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF41EB +FPdiv2 = 085F01 +FPinv = 6A416248B459455D253A474A268CF17ACF7144FE88C7E8F87C1F00580A78A5EE +FPexp = 7F509C7621B87F354D8C461DA2CE3085FADA414C47488D90D14815554D291A3C + +#test2 +FP_1 = 0175F86D11C646 +FP_2 = 067208AD05BF1B +FPadd = 07E8011A178561 +FPsub = 7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB03EFC00C0718 +FP_1nres = 0175F86D11C646 +FP_2nres = 067208AD05BF1B +FPmulmod = 096A67DB813F384D19F12C2362 +FPsmallmul = 0E9BB442B1BEBC +FPsqr = 02224DDEE94CB047B38ADC5B24 +FPreduce = 0175F86D11C646 +FPneg = 7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8A0792EE39A7 +FPdiv2 = BAFC3688E323 +FPinv = 632E70A6B7033A5F85539010957C8C3B01DB5291DBE7751AC6419F7BFE990E37 +FPexp = 6C43CA231C7823D4F4677B3F8AB7CD6CF881E9559A49299AC240F643660BCB5A + +#test3 +FP_1 = 020C9874 +FP_2 = 17D8033511CEE6BB45C3 +FPadd = 17D8033511CEE8C7DE37 +FPsub = 7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE827FCCAEE311B51529E +FP_1nres = 020C9874 +FP_2nres = 17D8033511CEE6BB45C3 +FPmulmod = 30DC59A0696A1F3212896B645C +FPsmallmul = 147DF488 +FPsqr = 04330075A9F490 +FPreduce = 020C9874 +FPneg = 7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF36779 +FPdiv2 = 01064C3A +FPinv = 07193A49437697F25793A2852E8CB56DB033A0FAA34AFADD595B2F91CD2149E8 +FPexp = 596955C9009351C4FDE2AF9FDB72C82BB38F2C42E721B2149233E5E07D1AE205 + +#test4 +FP_1 = D784A0DA1B2518BDBA +FP_2 = 46D4D5393673549AB4B910945D +FPadd = 46D4D53A0DF7F574CFDE295217 +FPsub = 7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB92B2AC7A1114C3F666C08294A +FP_1nres = D784A0DA1B2518BDBA +FP_2nres = 46D4D5393673549AB4B910945D +FPmulmod = 3BA171525C3EFA5E4D3BCCE5D69F32976ABE0D4C7492 +FPsmallmul = 086B2E48850F72F76944 +FPsqr = B5700AE49F95A990CF0FF438F677E37C2B24 +FPreduce = D784A0DA1B2518BDBA +FPneg = 7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF287B5F25E4DAE74233 +FPdiv2 = 6BC2506D0D928C5EDD +FPinv = 6A4E07E6A05282CD69A9F14C638720B391DDD0FDB5373CD88CB04556225D04E1 +FPexp = 30A56B34B019BF8D2C8012ED88BC80907D641CEC857689F8D9AD80476954D683 + +#test5 +FP_1 = 793C78C27D30D6 +FP_2 = 4DF98215800F9C66CE82FFCDD4FD6FE2 +FPadd = 4DF98215800F9C66CEFC3C46977AA0B8 +FPsub = 7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2067DEA7FF0639931F63CAAED7FC0E1 +FP_1nres = 793C78C27D30D6 +FP_2nres = 4DF98215800F9C66CE82FFCDD4FD6FE2 +FPmulmod = 24ED59BED8C1C1631326A3AAB7F2AB3338E678762FE6EC +FPsmallmul = 04BC5CB798E3E85C +FPsqr = 396A3870AE79C25013DD124CF2E4 +FPreduce = 793C78C27D30D6 +FPneg = 7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86C3873D82CF17 +FPdiv2 = 3C9E3C613E986B +FPinv = 3BFC186EC293C37485109DE73F6F4D3131F3B2FCAB7F753DB2436006B34A698B +FPexp = 6B32B18BA308D2367FB4FBC0D71AD77304F94932D8C1E6F08026F910D047C12B + +#test6 +FP_1 = 05484B0ECFE2F5B1C3570CF966D2494AF3D27A +FP_2 = 6199923FAFDD9DD10B58FF7A1D31C8829EF699 +FPadd = 66E1DD4E7FC09382CEB00C73840411CD92C913 +FPsub = 7FFFFFFFFFFFFFFFFFFFFFFFFFA3AEB8CF200557E0B7FE0D7F49A080C854DBCE +FP_1nres = 05484B0ECFE2F5B1C3570CF966D2494AF3D27A +FP_2nres = 6199923FAFDD9DD10B58FF7A1D31C8829EF699 +FPmulmod = 26EB5D6A7DE978A5429872C241C2DEB1C685BC10A91E3AB7136A450946829920 +FPsmallmul = 34D2EE941EDD98F1A16681BE0436DCED8638C4 +FPsqr = 7BED873921EB9CFF02AF2C85F715B1099C745432ECB90520E78813A01FD9FF82 +FPreduce = 05484B0ECFE2F5B1C3570CF966D2494AF3D27A +FPneg = 7FFFFFFFFFFFFFFFFFFFFFFFFFFAB7B4F1301D0A4E3CA8F306992DB6B50C2D73 +FPdiv2 = 02A4258767F17AD8E1AB867CB36924A579E93D +FPinv = 1A3B4C10314BDE7D27BC25FDD26E9A2350834A7175EA0AA238BDDBE7AB38C979 +FPexp = 7F776BCB2A82CF253AE51AC15E4EAF6F853C3A71C392C2F3A35A4D2B95FEE4E6 + +#test7 +FP_1 = 20C403E748F236 +FP_2 = 0211A3518FA36D5A82BC26C3BA03D34EE60FB9309FDD4C +FPadd = 0211A3518FA36D5A82BC26C3BA03D34F06D3BD17E8CF82 +FPsub = 7FFFFFFFFFFFFFFFFFFDEE5CAE705C92A57D43D93C45FC2CB13AB44AB6A914D7 +FP_1nres = 20C403E748F236 +FP_2nres = 0211A3518FA36D5A82BC26C3BA03D34EE60FB9309FDD4C +FPmulmod = 43C9F34FD1A51D9C564CA59EBBC379EB9BE85C646E47281691324A8608 +FPsmallmul = 0147A82708D9761C +FPsqr = 0431970FCC737D0D172A978A2364 +FPreduce = 20C403E748F236 +FPneg = 7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF3BFC18B70DB7 +FPdiv2 = 106201F3A4791B +FPinv = 1870714ACF3F4E4B99643576CEEE65CBA0042C66439CA678B1E50402EE858965 +FPexp = 285CB0CCB0CDDD79D17843E474E3F56BD5CFC87CDD06F0137ADC6705BC5DA594 + +#test8 +FP_1 = 066930FA5FD4 +FP_2 = 019B4B786854EB4BDA11DEA7055957FAC88C12114133FA1475DB +FPadd = 019B4B786854EB4BDA11DEA7055957FAC88C1211479D2B0ED5AF +FPsub = 7FFFFFFFFFFFFE64B48797AB14B425EE2158FAA6A8053773EDEEC53536E5E9E6 +FP_1nres = 066930FA5FD4 +FP_2nres = 019B4B786854EB4BDA11DEA7055957FAC88C12114133FA1475DB +FPmulmod = 0A4CC5773D051A46B2C7268C91423D4D9B1004D8E1E5F4D649CFBFD88BDE5C +FPsmallmul = 401BE9C7BE48 +FPsqr = 291984F33F64B6CDEF0790 +FPreduce = 066930FA5FD4 +FPneg = 7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF996CF05A019 +FPdiv2 = 0334987D2FEA +FPinv = 7263C04C20B64C3020BC14903828218DD841B728364ECE53C2009FD24D50B355 +FPexp = 72A71BAAF627564E7D9E31A1B3073630B8481E5DE8A30BD66F8D18FE8C788687 + +#test9 +FP_1 = 04 +FP_2 = 56636CC914401E3E4DA6B73F7681D79C9CF078A44F017630A3CA8C690E +FPadd = 56636CC914401E3E4DA6B73F7681D79C9CF078A44F017630A3CA8C6912 +FPsub = 7FFFFFA99C9336EBBFE1C1B25948C0897E2863630F875BB0FE89CF5C357396E3 +FP_1nres = 04 +FP_2nres = 56636CC914401E3E4DA6B73F7681D79C9CF078A44F017630A3CA8C690E +FPmulmod = 01598DB324510078F9369ADCFDDA075E7273C1E2913C05D8C28F2A31A438 +FPsmallmul = 28 +FPsqr = 10 +FPreduce = 04 +FPneg = 7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 +FPdiv2 = 02 +FPinv = 5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2 +FPexp = 4E567523EC1CD09A4C5C0470C2FAE417BB4C077FF9B6C764C812562EF1C3D995 + +#test10 +FP_1 = 07CC0AD86C278993B0FF38E86A23A07F750EA55DBBFECCD14FE8BAB0A84C6B +FP_2 = 5C4B8A6A7EB1EEE2BC07CAA1262CC1FEBB1370868FF829C173DC038A74DBDCE0 +FPadd = 5C535675571E166C4FB8C9DA0E96E59F3A887F2BEDB4288E452BEC452584294B +FPsub = 23BC41A059BA38A6D7A93497C23D61A1C4619E1ECDC3D50B5D73E5303BCC6F78 +FP_1nres = 07CC0AD86C278993B0FF38E86A23A07F750EA55DBBFECCD14FE8BAB0A84C6B +FP_2nres = 5C4B8A6A7EB1EEE2BC07CAA1262CC1FEBB1370868FF829C173DC038A74DBDCE0 +FPmulmod = 22FCC9BA22307FFE0D026B275E3DE8E959E965DE2A5449F9A7987DE4ABE629CD +FPsmallmul = 4DF86C74398B5FC4E9F83914256444FA929275A957F4002D1F174AE692FC2E +FPsqr = 0557E5A203025995B2D1F8E48B9AE42FCCA1F6ABC543E97A4768D21327F7EB24 +FPreduce = 07CC0AD86C278993B0FF38E86A23A07F750EA55DBBFECCD14FE8BAB0A84C6B +FPneg = 7FF833F52793D8766C4F00C71795DC5F808AF15AA24401332EB017454F57B382 +FPdiv2 = 4003E6056C3613C4C9D87F9C743511D03FBA8752AEDDFF6668A7F45D5854262C +FPinv = 0BB719EE640CA6EC3B19E0FBCDD9D22A7885A0600B5ECC6C1962BFAEACBB4B3E +FPexp = 14CBC13C26EBB705CFDCD7BA84C6052BFDB19D53A99C0F32A28196DE2F715025
http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto-c/blob/8d28d2c3/testVectors/fp/test_vector_256PME.txt ---------------------------------------------------------------------- diff --git a/testVectors/fp/test_vector_256PME.txt b/testVectors/fp/test_vector_256PME.txt new file mode 100644 index 0000000..5f98cc1 --- /dev/null +++ b/testVectors/fp/test_vector_256PME.txt @@ -0,0 +1,161 @@ +# FP ARITHMETICS - CURVE: MS256, Modulo = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff43; BIGmax = 2^256 + +#test1 +FP_1 = 6F1D50 +FP_2 = 02A38570 +FPadd = 0312A2C0 +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDCB9723 +FP_1nres = 6F1D50 +FP_2nres = 02A38570 +FPmulmod = 01253434C76300 +FPsmallmul = 04572520 +FPsqr = 303A6EBB3900 +FPreduce = 6F1D50 +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90E1F3 +FPdiv2 = 378EA8 +FPinv = 2BC3E93CC92C50FB55D82D662C5EA94EF71C6FFC5F842E890B60995F91DC820A +FPexp = E40D0E61DB41BC01AA075C49B775506F080011D4875A115191F325B95F09E72B + +#test2 +FP_1 = 527E85 +FP_2 = 8B79885EAA00 +FPadd = 8B7988B12885 +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF748677F3D3C8 +FP_1nres = 527E85 +FP_2nres = 8B79885EAA00 +FPmulmod = 2CF1DBF594E4DA5200 +FPsmallmul = 0338F132 +FPsqr = 1A954BBB3119 +FPreduce = 527E85 +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD80BE +FPdiv2 = 8000000000000000000000000000000000000000000000000000000000293EE4 +FPinv = 16843BFF486000764FB2E8B391DD64B02570932BF3399CF92802B1999013B031 +FPexp = 8EC9F6232B889877393A942C945BD785AC0EB963D8E59679CA0FC27A5CF60648 + +#test3 +FP_1 = F73C +FP_2 = 0A4908C48892CDF6DCE1 +FPadd = 0A4908C48892CDF7D41D +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B6F73B776D320A199E +FP_1nres = F73C +FP_2nres = 0A4908C48892CDF6DCE1 +FPmulmod = 09EEE093ADD5A72174F8DBBC +FPsmallmul = 09A858 +FPsqr = EEC4D610 +FPreduce = F73C +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0807 +FPdiv2 = 7B9E +FPinv = 325A603341483D38A48203A80D1296F32B89A27400D75FE48F79A6560A315867 +FPexp = 559C5D72662F1E19ABD3E2CCF1F7F700D3214B77D53D7BA8EE2CFB43735EFB7D + +#test4 +FP_1 = 0E95DEF056 +FP_2 = 1EAAB7FA03094869F5A71045D4 +FPadd = 1EAAB7FA0309486A043CEF362A +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1554805FCF6B79618EECEA9C5 +FP_1nres = 0E95DEF056 +FP_2nres = 1EAAB7FA03094869F5A71045D4 +FPmulmod = 01BF4A219692E92FD3A001D10F7E52C63538 +FPsmallmul = 91DAB5635C +FPsqr = D4BC1F8F51D2C95CE4 +FPreduce = 0E95DEF056 +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16A210EED +FPdiv2 = 074AEF782B +FPinv = CFE3C3EB2259D5681CE737FCE979268C12E80559988A3F4C351682C8E8735AB7 +FPexp = E66A76C7AE8D2BD8B1353655D503CE606B30A010A83137E86CB825683B609010 + +#test5 +FP_1 = 18EF1DF2A0E4FB1072E15A7A +FP_2 = DE9D8A79260344D34CD5EC506002D91A +FPadd = DE9D8A793EF262C5EDBAE760D2E43394 +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21627586F2EBD91F540F0EC012DE80A3 +FP_1nres = 18EF1DF2A0E4FB1072E15A7A +FP_2nres = DE9D8A79260344D34CD5EC506002D91A +FPmulmod = 15AEB41A783100832E873DE5181874404DE6EAECB69E96DD25889A64 +FPsmallmul = F9572B7A48F1CEA47CCD88C4 +FPsqr = 026DB4F66CB43908552C2D82CB7A477E20740634D26E0224 +FPreduce = 18EF1DF2A0E4FB1072E15A7A +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE710E20D5F1B04EF8D1EA4C9 +FPdiv2 = 0C778EF950727D883970AD3D +FPinv = F78DB3A85B77BBC6922BAF6A822C47ABCAC2DC6BAF8B9D87C9A9F44CB27B68EC +FPexp = 26E1E5F4D842EB47AB2F6DADF7E91CEE1122A1044290E2AB1053BD5FAD94E4D9 + +#test6 +FP_1 = 0F63 +FP_2 = 036898B4136EF3A7591F8A9BA4273878126026B5 +FPadd = 036898B4136EF3A7591F8A9BA427387812603618 +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFC97674BEC910C58A6E075645BD8C787ED9FE7F1 +FP_1nres = 0F63 +FP_2nres = 036898B4136EF3A7591F8A9BA4273878126026B5 +FPmulmod = 3472659AC7042F07F05051B8CEC779DF82BD7392FF +FPsmallmul = 99DE +FPsqr = ECC049 +FPreduce = 0F63 +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFE0 +FPdiv2 = 8000000000000000000000000000000000000000000000000000000000000753 +FPinv = 2783BCAB510B3E53941D6040789F9E40DC732A0C9BB7FD667DB15C5A3529A8AB +FPexp = ACECBAA4BDA85F7A744BAEB1B72AC19A3A4865DDA2B2E08353630D94FB15E213 + +#test7 +FP_1 = 2C4230D7 +FP_2 = D088AF153A09ECDC5773D7072DBA5B2E2604B6B4A98E +FPadd = D088AF153A09ECDC5773D7072DBA5B2E2604E2F6DA65 +FPsub = FFFFFFFFFFFFFFFFFFFF2F7750EAC5F61323A88C28F8D245A4D1D9FB758D868C +FP_1nres = 2C4230D7 +FP_2nres = D088AF153A09ECDC5773D7072DBA5B2E2604B6B4A98E +FPmulmod = 240D691D8D11B0FA8A95B245D650C151C909D780F7EF70210642 +FPsmallmul = 01BA95E866 +FPsqr = 07A6D1E7202D5491 +FPreduce = 2C4230D7 +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3BDCE6C +FPdiv2 = 800000000000000000000000000000000000000000000000000000001621180D +FPinv = 5DBAF8980C942D0BDD6224365032C74FF0B79F5928463CDEE97989C38F9507F7 +FPexp = 3EE30E0A8D1FB4103B2CF7F07BFB836D2E9954F9834646C881835F90C3D99220 + +#test8 +FP_1 = 0ACC18EE7EDE5148859A315ED3E73EEC72 +FP_2 = 097885BB6398277A694DFB2CB777826ABBB88B266DE04D6AC64E +FPadd = 097885BB6398277A6958C745A5F660BC043E2557CCB434A9B2C0 +FPsub = FFFFFFFFFFFFF6877A449C67D88596BCD0EC37075BE68CCD0F0AF0F399D42567 +FP_1nres = 0ACC18EE7EDE5148859A315ED3E73EEC72 +FP_2nres = 097885BB6398277A694DFB2CB777826ABBB88B266DE04D6AC64E +FPmulmod = 072145EF5013DD2A89CCB6B13BEFB74F78CD61C8DB958754BD2D77DB9A05F462 +FPsmallmul = 6BF8F950F4AF2CD53805EDB44708753C74 +FPsqr = 94AA607126A509814E93E2BFD6A2184587A159FD66FC563CE3E41A191D9AB868 +FPreduce = 0ACC18EE7EDE5148859A315ED3E73EEC72 +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF533E7118121AEB77A65CEA12C18C112D1 +FPdiv2 = 05660C773F6F28A442CD18AF69F39F7639 +FPinv = F491DE0D48C1C268A4DD5CC0C6836DE714B15D3256D83DE991B6DD403A655AF1 +FPexp = 3A88A082A5B25DFDE5AFBF934732D6802BCE6CB05EC7D880DC6BE20E8E346A77 + +#test9 +FP_1 = 0590863A1D8E3D +FP_2 = 210A842F2FDE0BDCE17268AD8E55B59E8B5F11D86958320064896540CC +FPadd = 210A842F2FDE0BDCE17268AD8E55B59E8B5F11D869583790EAC382CF09 +FPsub = FFFFFFDEF57BD0D021F4231E8D975271AA4A6174A0EE2796A7D39021B0B84CB4 +FP_1nres = 0590863A1D8E3D +FP_2nres = 210A842F2FDE0BDCE17268AD8E55B59E8B5F11D86958320064896540CC +FPmulmod = 47DD758F3B424D5DBF00F19F5AB967BABAAD27B93B90C2A9B6150819FDEAE2A6 +FPsmallmul = 37A53E45278E62 +FPsqr = 1EF6D58CE9B288EFB92CD9BA89 +FPreduce = 0590863A1D8E3D +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6F79C5E27106 +FPdiv2 = 8000000000000000000000000000000000000000000000000002C8431D0EC6C0 +FPinv = 7A21004294A8BFB831BED435F7D544A904C2E44A0355767B77CBA1A75D1801A9 +FPexp = B23C729E7B63CE7685FEC138B6B4D177B50F959257CC96A98A6E4AA46EB74B93 + +#test10 +FP_1 = 2FEC47A73AEC99213EDBA074CB3EF9978D32BDEC4460316BC4 +FP_2 = 943405AE5E7F45965A7A4F50ED12DE75677A7B5C5C191D94754CAB457AA18467 +FPadd = 943405AE5E7F45C646C1F68BD9ABFFB4431AF0279B12B521A80A9789DAD2F02B +FPsub = 6BCBFA51A180BA9991CD57E9FF8642C97425F96EE2E079F8BD7140FEE58FE6A0 +FP_1nres = 2FEC47A73AEC99213EDBA074CB3EF9978D32BDEC4460316BC4 +FP_2nres = 943405AE5E7F45965A7A4F50ED12DE75677A7B5C5C191D94754CAB457AA18467 +FPmulmod = 2AA1A3E2511F01F8009557A7B141A17C892B87C37AC525C26429571346CB5FC0 +FPsmallmul = 01DF3ACC884D3DFB4C7494448FF075BFEB83FB6B3AABC1EE35A8 +FPsqr = 07BE51198121866363B140CEFE5F65E4922A7F626F947484ACC972EEF0D9D612 +FPreduce = 2FEC47A73AEC99213EDBA074CB3EF9978D32BDEC4460316BC4 +FPneg = FFFFFFFFFFFFFFD013B858C51366DEC1245F8B34C1066872CD4213BB9FCE937F +FPdiv2 = 17F623D39D764C909F6DD03A659F7CCBC6995EF6223018B5E2 +FPinv = 42824BFBBFC475143C47B9F10000D554F5D4D782B9703C598482F4A44397645A +FPexp = 1FE0A2746C260CF33C08F39AA6C1A87A2EE68EC60775D38289E5DC7CD36CDDB0 http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto-c/blob/8d28d2c3/testVectors/fp/test_vector_256PMW.txt ---------------------------------------------------------------------- diff --git a/testVectors/fp/test_vector_256PMW.txt b/testVectors/fp/test_vector_256PMW.txt new file mode 100644 index 0000000..5f98cc1 --- /dev/null +++ b/testVectors/fp/test_vector_256PMW.txt @@ -0,0 +1,161 @@ +# FP ARITHMETICS - CURVE: MS256, Modulo = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff43; BIGmax = 2^256 + +#test1 +FP_1 = 6F1D50 +FP_2 = 02A38570 +FPadd = 0312A2C0 +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDCB9723 +FP_1nres = 6F1D50 +FP_2nres = 02A38570 +FPmulmod = 01253434C76300 +FPsmallmul = 04572520 +FPsqr = 303A6EBB3900 +FPreduce = 6F1D50 +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90E1F3 +FPdiv2 = 378EA8 +FPinv = 2BC3E93CC92C50FB55D82D662C5EA94EF71C6FFC5F842E890B60995F91DC820A +FPexp = E40D0E61DB41BC01AA075C49B775506F080011D4875A115191F325B95F09E72B + +#test2 +FP_1 = 527E85 +FP_2 = 8B79885EAA00 +FPadd = 8B7988B12885 +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF748677F3D3C8 +FP_1nres = 527E85 +FP_2nres = 8B79885EAA00 +FPmulmod = 2CF1DBF594E4DA5200 +FPsmallmul = 0338F132 +FPsqr = 1A954BBB3119 +FPreduce = 527E85 +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD80BE +FPdiv2 = 8000000000000000000000000000000000000000000000000000000000293EE4 +FPinv = 16843BFF486000764FB2E8B391DD64B02570932BF3399CF92802B1999013B031 +FPexp = 8EC9F6232B889877393A942C945BD785AC0EB963D8E59679CA0FC27A5CF60648 + +#test3 +FP_1 = F73C +FP_2 = 0A4908C48892CDF6DCE1 +FPadd = 0A4908C48892CDF7D41D +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B6F73B776D320A199E +FP_1nres = F73C +FP_2nres = 0A4908C48892CDF6DCE1 +FPmulmod = 09EEE093ADD5A72174F8DBBC +FPsmallmul = 09A858 +FPsqr = EEC4D610 +FPreduce = F73C +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0807 +FPdiv2 = 7B9E +FPinv = 325A603341483D38A48203A80D1296F32B89A27400D75FE48F79A6560A315867 +FPexp = 559C5D72662F1E19ABD3E2CCF1F7F700D3214B77D53D7BA8EE2CFB43735EFB7D + +#test4 +FP_1 = 0E95DEF056 +FP_2 = 1EAAB7FA03094869F5A71045D4 +FPadd = 1EAAB7FA0309486A043CEF362A +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1554805FCF6B79618EECEA9C5 +FP_1nres = 0E95DEF056 +FP_2nres = 1EAAB7FA03094869F5A71045D4 +FPmulmod = 01BF4A219692E92FD3A001D10F7E52C63538 +FPsmallmul = 91DAB5635C +FPsqr = D4BC1F8F51D2C95CE4 +FPreduce = 0E95DEF056 +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16A210EED +FPdiv2 = 074AEF782B +FPinv = CFE3C3EB2259D5681CE737FCE979268C12E80559988A3F4C351682C8E8735AB7 +FPexp = E66A76C7AE8D2BD8B1353655D503CE606B30A010A83137E86CB825683B609010 + +#test5 +FP_1 = 18EF1DF2A0E4FB1072E15A7A +FP_2 = DE9D8A79260344D34CD5EC506002D91A +FPadd = DE9D8A793EF262C5EDBAE760D2E43394 +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21627586F2EBD91F540F0EC012DE80A3 +FP_1nres = 18EF1DF2A0E4FB1072E15A7A +FP_2nres = DE9D8A79260344D34CD5EC506002D91A +FPmulmod = 15AEB41A783100832E873DE5181874404DE6EAECB69E96DD25889A64 +FPsmallmul = F9572B7A48F1CEA47CCD88C4 +FPsqr = 026DB4F66CB43908552C2D82CB7A477E20740634D26E0224 +FPreduce = 18EF1DF2A0E4FB1072E15A7A +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE710E20D5F1B04EF8D1EA4C9 +FPdiv2 = 0C778EF950727D883970AD3D +FPinv = F78DB3A85B77BBC6922BAF6A822C47ABCAC2DC6BAF8B9D87C9A9F44CB27B68EC +FPexp = 26E1E5F4D842EB47AB2F6DADF7E91CEE1122A1044290E2AB1053BD5FAD94E4D9 + +#test6 +FP_1 = 0F63 +FP_2 = 036898B4136EF3A7591F8A9BA4273878126026B5 +FPadd = 036898B4136EF3A7591F8A9BA427387812603618 +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFC97674BEC910C58A6E075645BD8C787ED9FE7F1 +FP_1nres = 0F63 +FP_2nres = 036898B4136EF3A7591F8A9BA4273878126026B5 +FPmulmod = 3472659AC7042F07F05051B8CEC779DF82BD7392FF +FPsmallmul = 99DE +FPsqr = ECC049 +FPreduce = 0F63 +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFE0 +FPdiv2 = 8000000000000000000000000000000000000000000000000000000000000753 +FPinv = 2783BCAB510B3E53941D6040789F9E40DC732A0C9BB7FD667DB15C5A3529A8AB +FPexp = ACECBAA4BDA85F7A744BAEB1B72AC19A3A4865DDA2B2E08353630D94FB15E213 + +#test7 +FP_1 = 2C4230D7 +FP_2 = D088AF153A09ECDC5773D7072DBA5B2E2604B6B4A98E +FPadd = D088AF153A09ECDC5773D7072DBA5B2E2604E2F6DA65 +FPsub = FFFFFFFFFFFFFFFFFFFF2F7750EAC5F61323A88C28F8D245A4D1D9FB758D868C +FP_1nres = 2C4230D7 +FP_2nres = D088AF153A09ECDC5773D7072DBA5B2E2604B6B4A98E +FPmulmod = 240D691D8D11B0FA8A95B245D650C151C909D780F7EF70210642 +FPsmallmul = 01BA95E866 +FPsqr = 07A6D1E7202D5491 +FPreduce = 2C4230D7 +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3BDCE6C +FPdiv2 = 800000000000000000000000000000000000000000000000000000001621180D +FPinv = 5DBAF8980C942D0BDD6224365032C74FF0B79F5928463CDEE97989C38F9507F7 +FPexp = 3EE30E0A8D1FB4103B2CF7F07BFB836D2E9954F9834646C881835F90C3D99220 + +#test8 +FP_1 = 0ACC18EE7EDE5148859A315ED3E73EEC72 +FP_2 = 097885BB6398277A694DFB2CB777826ABBB88B266DE04D6AC64E +FPadd = 097885BB6398277A6958C745A5F660BC043E2557CCB434A9B2C0 +FPsub = FFFFFFFFFFFFF6877A449C67D88596BCD0EC37075BE68CCD0F0AF0F399D42567 +FP_1nres = 0ACC18EE7EDE5148859A315ED3E73EEC72 +FP_2nres = 097885BB6398277A694DFB2CB777826ABBB88B266DE04D6AC64E +FPmulmod = 072145EF5013DD2A89CCB6B13BEFB74F78CD61C8DB958754BD2D77DB9A05F462 +FPsmallmul = 6BF8F950F4AF2CD53805EDB44708753C74 +FPsqr = 94AA607126A509814E93E2BFD6A2184587A159FD66FC563CE3E41A191D9AB868 +FPreduce = 0ACC18EE7EDE5148859A315ED3E73EEC72 +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF533E7118121AEB77A65CEA12C18C112D1 +FPdiv2 = 05660C773F6F28A442CD18AF69F39F7639 +FPinv = F491DE0D48C1C268A4DD5CC0C6836DE714B15D3256D83DE991B6DD403A655AF1 +FPexp = 3A88A082A5B25DFDE5AFBF934732D6802BCE6CB05EC7D880DC6BE20E8E346A77 + +#test9 +FP_1 = 0590863A1D8E3D +FP_2 = 210A842F2FDE0BDCE17268AD8E55B59E8B5F11D86958320064896540CC +FPadd = 210A842F2FDE0BDCE17268AD8E55B59E8B5F11D869583790EAC382CF09 +FPsub = FFFFFFDEF57BD0D021F4231E8D975271AA4A6174A0EE2796A7D39021B0B84CB4 +FP_1nres = 0590863A1D8E3D +FP_2nres = 210A842F2FDE0BDCE17268AD8E55B59E8B5F11D86958320064896540CC +FPmulmod = 47DD758F3B424D5DBF00F19F5AB967BABAAD27B93B90C2A9B6150819FDEAE2A6 +FPsmallmul = 37A53E45278E62 +FPsqr = 1EF6D58CE9B288EFB92CD9BA89 +FPreduce = 0590863A1D8E3D +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6F79C5E27106 +FPdiv2 = 8000000000000000000000000000000000000000000000000002C8431D0EC6C0 +FPinv = 7A21004294A8BFB831BED435F7D544A904C2E44A0355767B77CBA1A75D1801A9 +FPexp = B23C729E7B63CE7685FEC138B6B4D177B50F959257CC96A98A6E4AA46EB74B93 + +#test10 +FP_1 = 2FEC47A73AEC99213EDBA074CB3EF9978D32BDEC4460316BC4 +FP_2 = 943405AE5E7F45965A7A4F50ED12DE75677A7B5C5C191D94754CAB457AA18467 +FPadd = 943405AE5E7F45C646C1F68BD9ABFFB4431AF0279B12B521A80A9789DAD2F02B +FPsub = 6BCBFA51A180BA9991CD57E9FF8642C97425F96EE2E079F8BD7140FEE58FE6A0 +FP_1nres = 2FEC47A73AEC99213EDBA074CB3EF9978D32BDEC4460316BC4 +FP_2nres = 943405AE5E7F45965A7A4F50ED12DE75677A7B5C5C191D94754CAB457AA18467 +FPmulmod = 2AA1A3E2511F01F8009557A7B141A17C892B87C37AC525C26429571346CB5FC0 +FPsmallmul = 01DF3ACC884D3DFB4C7494448FF075BFEB83FB6B3AABC1EE35A8 +FPsqr = 07BE51198121866363B140CEFE5F65E4922A7F626F947484ACC972EEF0D9D612 +FPreduce = 2FEC47A73AEC99213EDBA074CB3EF9978D32BDEC4460316BC4 +FPneg = FFFFFFFFFFFFFFD013B858C51366DEC1245F8B34C1066872CD4213BB9FCE937F +FPdiv2 = 17F623D39D764C909F6DD03A659F7CCBC6995EF6223018B5E2 +FPinv = 42824BFBBFC475143C47B9F10000D554F5D4D782B9703C598482F4A44397645A +FPexp = 1FE0A2746C260CF33C08F39AA6C1A87A2EE68EC60775D38289E5DC7CD36CDDB0 http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto-c/blob/8d28d2c3/testVectors/fp/test_vector_384PM.txt ---------------------------------------------------------------------- diff --git a/testVectors/fp/test_vector_384PM.txt b/testVectors/fp/test_vector_384PM.txt new file mode 100644 index 0000000..abb474e --- /dev/null +++ b/testVectors/fp/test_vector_384PM.txt @@ -0,0 +1,161 @@ +# FP ARITHMETICS - 384PM, Modulo = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec3; + +#test1 +FP_1 = 2A9FFD6529 +FP_2 = 455E41B91C +FPadd = 6FFE3F1E45 +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE541BBAAD0 +FP_1nres = 2A9FFD6529 +FP_2nres = 455E41B91C +FPmulmod = 0B8CD0FCC0D05B3AB17C +FPsmallmul = 01AA3FE5F39A +FPsqr = 0718E321EFEE09036091 +FPreduce = 2A9FFD6529 +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD56002999A +FPdiv2 = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000154FFEB1F6 +FPinv = 40535BE4746F8AF96E32EC7C2739CC10EC119AD8DE956CD66BA6C3199FEBB207E4E1DACB2F993A6D750365D3858DF402 +FPexp = 6BA24CE422988D5DD6016C447F0E6DDB2856FF6233E663A787D88B58CE15E41DDB48727C93F6800D20E0A14F6C905F60 + +#test2 +FP_1 = 1EEB364BAA1C +FP_2 = 1A46AEA7FC7DF31E6685 +FPadd = 1A46AEA81B69296A10A1 +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5B95158226D432D425A +FP_1nres = 1EEB364BAA1C +FP_2nres = 1A46AEA7FC7DF31E6685 +FPmulmod = 032C6CECB0CDF44BEF2596D7DE5E888C +FPsmallmul = 0135301EF4A518 +FPsqr = 03BBF8D6764CE188ED713310 +FPreduce = 1EEB364BAA1C +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE114C9B454A7 +FPdiv2 = 0F759B25D50E +FPinv = 5A54BFCFED653F548031090EE3B82C09AAEE6DB0A49D90C721056121C62D5A4812DFD15853649F492854D06648AA1847 +FPexp = 3E22B82639A9C5BF3089FB12FB272E59D4908FA12BABDEF047AD31E857CF733C6C37ECB74DCDBDB36607DC5CEAF7B95D + +#test3 +FP_1 = 99AF18FA41E1FDFD23 +FP_2 = 07EF0CD29DDDDE0C6D4F850E80FE3D +FPadd = 07EF0CD29DDE77BB8649C6F07EFB60 +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF810F32D6222BBA2ABAABCD37CFDA9 +FP_1nres = 99AF18FA41E1FDFD23 +FP_2nres = 07EF0CD29DDDDE0C6D4F850E80FE3D +FPmulmod = 04C34BD9CF047C160682D890391CBFDA728732F2562E0B57 +FPsmallmul = 0600D6F9C692D3EBE35E +FPsqr = 5C42C39E4B561590F1E3ED735ABBD77C32C9 +FPreduce = 99AF18FA41E1FDFD23 +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6650E705BE1E0201A0 +FPdiv2 = 8000000000000000000000000000000000000000000000000000000000000000000000000000004CD78C7D20F0FEFDF3 +FPinv = ACEEBA94F6234D2CCC984F3AA4FF1F8C9285D02DE194009AD2BFC3BD38730CD19E827AAB1D572D7116C2B1DC6B87B41E +FPexp = 6493FFA28A47B58707EA538538982B6E72D6CC37F3BC8F9CF596B32DA85B38BE5D046363B3AB63DFEDF8C51A67743D13 + +#test4 +FP_1 = 021268807BC625D5D141F25398 +FP_2 = 029C8E19E470D39B577719D2B76F0CC1AD454526 +FPadd = 029C8E19E470D39D69DF9A4E7D94E292EF3798BE +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6371E61B8F2C66BAF166A90EB6C90F94AD0D35 +FP_1nres = 021268807BC625D5D141F25398 +FP_2nres = 029C8E19E470D39B577719D2B76F0CC1AD454526 +FPmulmod = 05692F1ADFC1154DB3588252A2495216B7D7814BE76EA6D6A1BAD23C5A786090 +FPsmallmul = 14B81504D5BD7A5A2C937743F0 +FPsqr = 044AF4DEA92581AA1206A03C64310A203547B4620556ABEA40 +FPreduce = 021268807BC625D5D141F25398 +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDED977F8439DA2A2EBE0DAB2B +FPdiv2 = 010934403DE312EAE8A0F929CC +FPinv = CBDD8CBA71056A0A0084DF6DDE4927C747CBE407D396CF62C85BAD85154CB787E399F815FCAE9AE40458F0031F9DF92A +FPexp = 04866E1D41C3613DC3D289F8F98BDB4316498604B1B90CECE5015E0A9BDF16E4D35D9AD80337C18019BA8C8055C849DB + +#test5 +FP_1 = 5CF1F5CFD164609E37B9DC7A78E695FE +FP_2 = C4D40F58230A2956474DF4E5ECCAC10B7B36E94037A85BA8 +FPadd = C4D40F58230A2956A43FEAB5BE2F21A9B2F0C5BAB08EF1A6 +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B2BF0A7DCF5D6AA15A400E9E4999F92BC82F33A413E3919 +FP_1nres = 5CF1F5CFD164609E37B9DC7A78E695FE +FP_2nres = C4D40F58230A2956474DF4E5ECCAC10B7B36E94037A85BA8 +FPmulmod = 47763E24D9B6B2DF19241AB7E4127789A4D918EC6A6A30CBF3A36BB27B7CF741696EC8654F53B8B0 +FPsmallmul = 03A1739A1E2DEBC62E2D429CC8B901DBEC +FPsqr = 21BECD5E1BCFD3EE0E7AA60EFB2266364C3B17591E6831A3B3C88267FC49A804 +FPreduce = 5CF1F5CFD164609E37B9DC7A78E695FE +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30E0A302E9B9F61C8462385871968C5 +FPdiv2 = 2E78FAE7E8B2304F1BDCEE3D3C734AFF +FPinv = FB4E5DF5625710CA34DCF66658AFDFA8422B1C21A09EA36AEA7292984575C011B7EBF4D8F473EE7CBA5AFEF0F466221A +FPexp = 2846E55D4EDAD623FB5D423E96E44F967AE6C5D706E320E3F16B155BA056679BBEF63418F96D4DFB627665DDE6D8EE7B + +#test6 +FP_1 = 0CE923E0CFED52FA9680CA73EB +FP_2 = 3C5A587191240AEBF327992E097954969AC03C68C9EF652E76910CDC96 +FPadd = 3C5A587191240AEBF327992E09795496A7A9604999DCB8290D11D75081 +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3A5A78E6EDBF5140CD866D1F686AB697228E77805FDEDCC1FEFBD9618 +FP_1nres = 0CE923E0CFED52FA9680CA73EB +FP_2nres = 3C5A587191240AEBF327992E097954969AC03C68C9EF652E76910CDC96 +FPmulmod = 030B32D52C54B53FA6B78A3D5048F8F2B490A0E26BE11162D772E7DECE5A356863BA3AD58854FC41DFB2 +FPsmallmul = 811B66C81F453DC9E107E8872E +FPsqr = A6AFAF67BFFC0FF7256D4DFC0C32B05E63F8FDE76A2358F9B9 +FPreduce = 0CE923E0CFED52FA9680CA73EB +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF316DC1F3012AD05697F358AD8 +FPdiv2 = 8000000000000000000000000000000000000000000000000000000000000000000000067491F067F6A97D4B40653957 +FPinv = 7CBDC6E16B83C6957E2E8F0A0996E01A8C6E9672F5FCE108532E306F9EFDBBFFE9F98E7D4ED6BE8B15E83FCFF3347048 +FPexp = AB42F1EA54BF1BD698DE5B89499614ADE6238F398E56B95CDB00CA4C1E7ECF7CDD382B12BE5DF6B2DCA45D624F836398 + +#test7 +FP_1 = 0AEA7F571A9299C90D6199976830E0FA +FP_2 = 075DF06B13308A55817FFDCB694988E92DF6496B3917D6EE534D6A6D8E1597DDBA16 +FPadd = 075DF06B13308A55817FFDCB694988E92DF65455B86EF180ED1677CF27AD000E9B10 +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A20F94ECCF75AA7E80023496B67716D209C17F463F43A4467BA2F40B81D05325A7 +FP_1nres = 0AEA7F571A9299C90D6199976830E0FA +FP_2nres = 075DF06B13308A55817FFDCB694988E92DF6496B3917D6EE534D6A6D8E1597DDBA16 +FPmulmod = 6AEC0C9505194E2F03B41FCAF40724FB4062BD426E0E7DE3A33544076F8226067100C66ACCAA5239ED641C1E257B5C8C +FPsmallmul = 6D28F96709BA01DA85CFFFEA11E8C9C4 +FPsqr = 7728BFD8A792055F94338B2815EFA2C0E2F47A904C5C8E626FFB0C43767424 +FPreduce = 0AEA7F571A9299C90D6199976830E0FA +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51580A8E56D6636F29E666897CF1DC9 +FPdiv2 = 05753FAB8D494CE486B0CCCBB418707D +FPinv = C82C3CE7B814F92EB7539EC349A45A7AABA7CF8EEA7A0E992E40AA5BA94C777CCB9F9BC9FA5F77A546BF0283081ABE8E +FPexp = 7069A179BC0C1A282371C7D7BC188AD2DC4AF0574BFD2F7D3F5E43A9CCBEC67D2F363F9F2B3EEA1FAE34AEF40802501B + +#test8 +FP_1 = 014E3B +FP_2 = 01344FE5B4CE22D13BC0E3FC831A579C173EA7AC21B63F36B0B10DC08323D6A87F35A9C801A871 +FPadd = 01344FE5B4CE22D13BC0E3FC831A579C173EA7AC21B63F36B0B10DC08323D6A87F35A9C802F6AC +FPsub = FFFFFFFFFFFFFFFFFFFECBB01A4B31DD2EC43F1C037CE5A863E8C15853DE49C0C94F4EF23F7CDC295780CA5637FFA48D +FP_1nres = 014E3B +FP_2nres = 01344FE5B4CE22D13BC0E3FC831A579C173EA7AC21B63F36B0B10DC08323D6A87F35A9C801A871 +FPmulmod = 0192874C1BD59CEF022E6EE7FE3E955FD74D1A3338A78B79EC21B8BF5676FB524ECD54E1134225400B +FPsmallmul = 0D0E4E +FPsqr = 01B45E0199 +FPreduce = 014E3B +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB088 +FPdiv2 = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A67F +FPinv = 01FEE189FAC9BC2C2C5114EF45A3383EE0F6EB6062B5D8368C9773CF2EF2577D9334F1485928F7FF1D483D96143E5716 +FPexp = 68E2CD50FFEFE5BCA5527BF722388C3657BF7EC7722C17E7D37AFA8B675FDCB85A9AC6B5FDCEDC3470DE38DF8892CEDE + +#test9 +FP_1 = 1E2D99D469D5C546EFCD721028687C35651363A8899A077A51BBC7C62225CE24 +FP_2 = 026233F63D0A5DDF3340D07B9C728C4BB2D56905C41C869D475E6FC9E656287CB73BF0F63C3A0B7691331A08 +FPadd = 026233F63D0A5DDF3340D07BBAA026201CAB2E4CB3E9F8AD6FC6EBFF4B698C2540D5F8708DF5D33CB358E82C +FPsub = FFFFFFFFFD9DCC09C2F5A220CCBF2F8481BB0D88B7005C412BB0EB72E10A0C6B7EBD3B2BD25E16841581BC4F90F2B2DF +FP_1nres = 1E2D99D469D5C546EFCD721028687C35651363A8899A077A51BBC7C62225CE24 +FP_2nres = 026233F63D0A5DDF3340D07B9C728C4BB2D56905C41C869D475E6FC9E656287CB73BF0F63C3A0B7691331A08 +FPmulmod = 9D4EF0B4936E5180395E2094C5E42E1AE52F7C1A7BA496CEA5A015F7A499A46BD2901AC6313DAF323037DA1A943DF3B3 +FPsmallmul = 012DC8024C2259B4C55E0674A19414DA15F2C1E49560044AC73155CDBD557A0D68 +FPsqr = 468D121090F5669147D48ACFA31175D78264A71034A9494AF178FEB3ECCBD050290DA03EB974E0331DA20D9FE2370997 +FPreduce = 1E2D99D469D5C546EFCD721028687C35651363A8899A077A51BBC7C62225CE24 +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1D2662B962A3AB910328DEFD79783CA9AEC9C577665F885AE443839DDDA309F +FPdiv2 = 0F16CCEA34EAE2A377E6B90814343E1AB289B1D444CD03BD28DDE3E31112E712 +FPinv = 9EF287139338690813E210739BBF8DAE8373733F995846614ABBBC746704AAFD8F711B2A52F29723727A3248CB15D9D8 +FPexp = A33E2FC40535830405AD58185A604B369BDADBDA13D5EF7AB7747F7B0680E55315887B8B2272CE13C552B9B28D5EB8D7 + +#test10 +FP_1 = 0387B9454F9E9443CF851E0138A6BE14A9D220E6B7549CE67663E5C127E0BA06411A7F1203E542BAA40A +FP_2 = 811E78A2D0D2F30DDA3A10BD11917FA942F8E12D9E12E5004EE71CEF316E4BAE5BA1A701523D9B2AD0DC9C941929BE08 +FPadd = 811E78A2D0D2F695937F605BA5D54F2E60FA19D45C278ED26FCDD443CE54C2124162CEE20C43DC454FEEA0795BE46212 +FPsub = 7EE1875D2F2D1079DF0B3EE182B24FDBDB0857792001C4D1D1FF9A656B782AB58A1F80DF67C8A5EFAE3567512990E4C5 +FP_1nres = 0387B9454F9E9443CF851E0138A6BE14A9D220E6B7549CE67663E5C127E0BA06411A7F1203E542BAA40A +FP_2nres = 811E78A2D0D2F30DDA3A10BD11917FA942F8E12D9E12E5004EE71CEF316E4BAE5BA1A701523D9B2AD0DC9C941929BE08 +FPmulmod = 346BF03A043DACBFE41DCE661CD61B8603CE39DEF4A7CB51CBF818D1C3B22AFF45177CDF95BD4E635577EA54664093FC +FPsmallmul = 234D3CB51C31CAA61B332C0C36836CCEA2354903294E21009FE6F98B8EC7443E8B08F6B426F49B4A6864 +FPsqr = A112192350DC7021C02D3F9B83B4E4DB65EE090094CB55338E55EE7AFF02C9242471C080DD544D2C22454C88B0CD04D4 +FPreduce = 0387B9454F9E9443CF851E0138A6BE14A9D220E6B7549CE67663E5C127E0BA06411A7F1203E542BAA40A +FPneg = FFFFFFFFFFFFFC7846BAB0616BBC307AE1FEC75941EB562DDF1948AB6319899C1A3ED81F45F9BEE580EDFC1ABD455AB9 +FPdiv2 = 01C3DCA2A7CF4A21E7C28F009C535F0A54E910735BAA4E733B31F2E093F05D03208D3F8901F2A15D5205 +FPinv = 262F255F11C62645FB624C1647B1867123CBC062038CB8BC56D719104ABDBBD1331E8CB29AB3634AF18B15E705228921 +FPexp = 058997A2AAC8D4E69DDD7D786E9D574F96E266106BC0C7540EA4290B6A0581032FA53162C787BCED178DF6E49BDDF69B http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto-c/blob/8d28d2c3/testVectors/fp/test_vector_512PM.txt ---------------------------------------------------------------------- diff --git a/testVectors/fp/test_vector_512PM.txt b/testVectors/fp/test_vector_512PM.txt new file mode 100644 index 0000000..d8e069a --- /dev/null +++ b/testVectors/fp/test_vector_512PM.txt @@ -0,0 +1,161 @@ +# FP ARITHMETICS - 512PM, Modulo = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc7; + +#test1 +FP_1 = 049F175D7A8F +FP_2 = 0BC38403458333 +FPadd = 0BC8231AA2FDC2 +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4411B1417F523 +FP_1nres = 049F175D7A8F +FP_2nres = 0BC38403458333 +FPmulmod = 365D91E7A338D80432E1977D +FPsmallmul = 2E36E9A6C996 +FPsqr = 155B98F414A3C9F8929BE1 +FPreduce = 049F175D7A8F +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB60E8A28338 +FPdiv2 = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024F8BAEBC2B +FPinv = 42730B1A23A2AD8121BE8A19230A0E8D5F9264FA34F31D0EBB1DE7595CA6E6259239D83AD6000241FD5708516002DD09B6D225915C9F9C9E88FE1E287EC3193C +FPexp = 7233404BF6E2A10605EE6B21AF433842E524170538E4CA52D13EF1D7969FBC28D3E612CA47305BADB719F3007475CD9B2607D8602B2CD0A18187F86897604BE3 + +#test2 +FP_1 = 6C7C3F5E903E0C3CED08E67730 +FP_2 = 5E3960A8103229B650F4B04AA6 +FPadd = CAB5A006A07035F33DFD96C1D6 +FPsub = 0E42DEB6800BE2869C14362C8A +FP_1nres = 6C7C3F5E903E0C3CED08E67730 +FP_2nres = 5E3960A8103229B650F4B04AA6 +FPmulmod = 27EDEFE4A52EF85C782EB09FA83FB431478AAC6F2D5214E52920 +FPsmallmul = 043CDA79B1A26C7A61425900A7E0 +FPsqr = 2DF911C53CFFC45C0BE1F94AC0B10175C4FBEF6665CD61BDA900 +FPreduce = 6C7C3F5E903E0C3CED08E67730 +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9383C0A16FC1F3C312F7198697 +FPdiv2 = 363E1FAF481F061E7684733B98 +FPinv = 12820479FB89FB5779BDB40CBEBA1AB9E1B5D86D93AB002A95A23CAA1F0C5BFF4119EAFC69FA1E73AB77EC3CD67473A5E8580D83BC1FA206927F882ECE607A33 +FPexp = 5E7C9766241C867C3C646433F954A7DA64148987F211F245931B0193FB8D74A9D12DD280FDD6101DBE980F7185141AB0643435856DD13D182E8DD2EE2F56DF1F + +#test3 +FP_1 = 0685EF0807B65FA4914A505E +FP_2 = 3B4DF9E2CC34E318192EB8343939D171FCC9B4 +FPadd = 3B4DF9E2CC34E31E9F1DC03BEF997603471A12 +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4B2061D33CB1CEE6CC04FD37D25D31F4D8471 +FP_1nres = 0685EF0807B65FA4914A505E +FP_2nres = 3B4DF9E2CC34E318192EB8343939D171FCC9B4 +FPmulmod = 0182DABDCC2141F537F1066DB7D2D10BE91554A7884A948DF2D3281BE25018 +FPsmallmul = 413B56504D1FBC6DACE723AC +FPsqr = 2A8D469DE48EA21A052FB4E20CBD8F0AFA010D0B92E284 +FPreduce = 0685EF0807B65FA4914A505E +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97A10F7F849A05B6EB5AD69 +FPdiv2 = 0342F78403DB2FD248A5282F +FPinv = D04BF74E171E8A8E060584DC3C2657F3FBA87D6FC9F2459CCF2C541FC53A4D935E52BDF3E6F7C083B3F2DFE6045C18027E3FB4EACFF5FF29DEBD20A5CA60F6CD +FPexp = 4656F58449FA8B6A249E743580EFDC6707E8343E1E1215B7A341D536FDC4F528070A62A8E54A04052CD66833A7B9DFBFBFD06F1D52E9F5330B47ED5B14CF510E + +#test4 +FP_1 = 06C02E311E8602FF22 +FP_2 = 133DB24655D3FAEE2110EBCD12FCAFB1EE3940F2ACD84E614076 +FPadd = 133DB24655D3FAEE2110EBCD12FCAFB1EE400120DDF6D4643F98 +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECC24DB9AA2C0511DEEF1432ED03504E11CD7F3B844637A1BC73 +FP_1nres = 06C02E311E8602FF22 +FP_2nres = 133DB24655D3FAEE2110EBCD12FCAFB1EE3940F2ACD84E614076 +FPmulmod = 81E3EC21E6672983501A82C4E46692229FE3EB39551A95D2649ACF0E13218D0C19AC +FPsmallmul = 4381CDEB313C1DF754 +FPsqr = 2D926F9F71C18D504F84BDF31892CCC084 +FPreduce = 06C02E311E8602FF22 +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93FD1CEE179FCFEA5 +FPdiv2 = 036017188F43017F91 +FPinv = D7207FCE5E364BB909626B562EBB57E9DF45144AAC5D2893D8F8B504E574032444B60F6D1458308D15A034FD8E5FCD6A4B147A7A7923673F8FCA3EE1245ECE59 +FPexp = 415B24B49D5A2BEAA2D78E0E6D3404AE43DB9A02E971E97EC33825A69A9D13ECB9350A550EDE618D305FD8CF46680471D76BF422D294600392E98D3C1E74F2FD + +#test5 +FP_1 = 191A00F7334C5D3D7365F2115DD25F8DA02A4921C7C2B4A5FFFC29 +FP_2 = 0DD284E8964C6595DB3FCF79CF7805B9275A92177E36B1135E5C022A76F66F89 +FPadd = 0DD284E896657F96D2731BD70CEB6BAB38B864770BD6DB5C8023C4DF1CF66BB2 +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22D7B1769CCB46B1BF37CE36DFB6038EA0340480F697935C36BC08A2F098A67 +FP_1nres = 191A00F7334C5D3D7365F2115DD25F8DA02A4921C7C2B4A5FFFC29 +FP_2nres = 0DD284E8964C6595DB3FCF79CF7805B9275A92177E36B1135E5C022A76F66F89 +FPmulmod = 015AF6698F3006198E029719F3709158028D8BDF1C7AC82486BE7EF0E2C28E7508D30F44456AA1250D77C31E4C5475AB0DF20CF822B99809B9B8F1 +FPsmallmul = FB0409A800FBA46681FB74ADAA37BB8841A6DB51CD9B0E7BFFD99A +FPsqr = 027616D47A3C446CF8A8CA7F39001A7B082D6FABBFF3FC887F00C55F719652FB9BF3A062EF920A6B53BFE3B7A1706F8AB8AD2C0EBE91 +FPreduce = 191A00F7334C5D3D7365F2115DD25F8DA02A4921C7C2B4A5FFFC29 +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E5FF08CCB3A2C28C9A0DEEA22DA0725FD5B6DE383D4B5A00019E +FPdiv2 = 800000000000000000000000000000000000000000000000000000000000000000000000000C8D007B99A62E9EB9B2F908AEE92FC6D0152490E3E15A52FFFCF8 +FPinv = 7B980690A6FF799E67E85D8F434CEDA5039F37FC4E0D7644FE98CAA1240DE2C00651FA3CE807941A3C7B0DA33BA8B1910168C00511F834BEF3412A862C6E0447 +FPexp = B881D2B462FDCDE76125D83F7196FEC6C5B2269CC96A157573A5E408A2518EC6411A4FEB461281719521B75716630735AC650EF7ABC4949C46E0BA9C997F0831 + +#test6 +FP_1 = 27E8D09D56989D16996ECF5241CE3211 +FP_2 = 0E0ABF23764513B14EB5531B6854855E38C45BFD2717D4A296A23DEC89F8A3683AF26C0EEC22D1 +FPadd = 0E0ABF23764513B14EB5531B6854855E38C45BFD2717D4CA7F72DB432295BA01A9C1BE50BA54E2 +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F540DC89BAEC4EB14AACE497AB7AA1C73BA402D8E82B85522E5F6A0EA4733133DCE632E20D07 +FP_1nres = 27E8D09D56989D16996ECF5241CE3211 +FP_2nres = 0E0ABF23764513B14EB5531B6854855E38C45BFD2717D4A296A23DEC89F8A3683AF26C0EEC22D1 +FPmulmod = 0230684CFBCBB8A6BF63321C65B7C7F267FE31420F1D83BBA08D0D62AA1A019B06816AA7C0915E12C07BD100AC001B889950E431A921E1 +FPsmallmul = 018F18262561F622E1FE541936920DF4AA +FPsqr = 0638C34AB78F81E4EF76279532456FE1D045E1FA3E489AD10695EC653F26A521 +FPreduce = 27E8D09D56989D16996ECF5241CE3211 +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8172F62A96762E9669130ADBE31CBB6 +FPdiv2 = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013F4684EAB4C4E8B4CB767A920E717EC +FPinv = F21063D10CFB61FF0E45680114CE7E51A0191CEAAAFB300E42F57CD81A26C9F2A097CF1122F023BFBD0843D96C6C60BB4EA06A54E637AA2C2EB799B79C61076A +FPexp = 54A4529A7F8A7B3B60079989C55C8FB3A43D7822DE84C49A81A4079AEF58FD02B7DD7B9BA2790C8F07B29CE5C76F0A54B74524B01969433A4132865EE49B21FC + +#test7 +FP_1 = 0508EA93589BB2694C22CA1647554D2E9E464966 +FP_2 = 2E2A76250E70E3508E2CBE4911B7C38D02655347687007530A77703D4638F3F95188529214C071F991DE83B093 +FPadd = 2E2A76250E70E3508E2CBE4911B7C38D02655347687007530A7C7927D9918FABBAD4755C2B07C746C07CC9F9F9 +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1D589DAF18F1CAF71D341B6EE483C72FD9AACB8978FF8ACF58D98AD4D1FA7B917C3D0380186E3539CBFC2969A +FP_1nres = 0508EA93589BB2694C22CA1647554D2E9E464966 +FP_2nres = 2E2A76250E70E3508E2CBE4911B7C38D02655347687007530A77703D4638F3F95188529214C071F991DE83B093 +FPmulmod = E86FEFCCCB0AF0F0972136DD33E3F3DEB39B8F6F8FF23940FAD7A40B9DE5A78EDA70E48A6D5CDFF7E5824C621833F0A48AB7A715EBDD60CF706118F938044592 +FPsmallmul = 325929C17614F81CF95BE4DEC95503D22EBEDDFC +FPsqr = 195979419D517EC730EB8875C350967662F4B103A5A60DB7F116F26306C09EDD00928E20D354A4 +FPreduce = 0508EA93589BB2694C22CA1647554D2E9E464966 +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF7156CA7644D96B3DD35E9B8AAB2D161B9B461 +FPdiv2 = 02847549AC4DD934A611650B23AAA6974F2324B3 +FPinv = 7D5F42549EC60A6B0F9A9678B1F53AB6EE60C720901DB14A1779F3340A46D78FBE3EAD4260A6566EDEB18C5E52C83A1C03F06931BA306162D826C516D2D9598C +FPexp = 84A262F4BE58A0AA765D5D84A42B6481573FE615E70AE350AF27F4FEBB3DDE7A12FE2381B4561CEC136D848283C3580660B4D5099A19127462132CAD679E3A83 + +#test8 +FP_1 = 01DE58FB581E4994F8681B977264EFB892EE54DCF4ED878D8152641FF0B2E13497145516 +FP_2 = 03DCEA3160D2CCDA76B1D67BA266CB0A34AE8F26FBF3E22EE29B0B918FF44ED55FB6696706024D592C843AC94C711969EA766FD4 +FPadd = 03DCEA3160D2CCDA76B1D67BA266CB0A368CE82254122BC3DB03272902593E8DF2A4BE43FAEFD4E6ADD69EE93D23FA9E818AC4EA +FPsub = FFFFFFFFFFFFFFFFFFFFFFFFFC2315CE9F2D3325894E29845D9934F5CD2FC9D45C2A676615CD1005E270A0E33337EB75EEEB3A3454CE2956A441C7CAAC9DE309 +FP_1nres = 01DE58FB581E4994F8681B977264EFB892EE54DCF4ED878D8152641FF0B2E13497145516 +FP_2nres = 03DCEA3160D2CCDA76B1D67BA266CB0A34AE8F26FBF3E22EE29B0B918FF44ED55FB6696706024D592C843AC94C711969EA766FD4 +FPmulmod = B68706962B48B472FA8FA750ECCA6F638A2975B35122C3C872CD64B3861245DC115461107F06AF6C17E4AFCF3FCAA87E421B2806D2F159FAD8E0FF9B40F62AE0 +FPsmallmul = 12AF79D1712EDFD1B41113EA77F15D35BD4F50A191474B870D37E93F66FCCC0DE6CB52DC +FPsqr = 849F2FD9778582490B4C0595A831824D3AF3CE33105EB0C8E7CFF8F3DF3A53A3860AB2A802A4C5ABE84BDAFDD5D428848C65B907B6037F831156DF27F149D5F1 +FPreduce = 01DE58FB581E4994F8681B977264EFB892EE54DCF4ED878D8152641FF0B2E13497145516 +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE21A704A7E1B66B0797E4688D9B10476D11AB230B1278727EAD9BE00F4D1ECB68EBA8B1 +FPdiv2 = EF2C7DAC0F24CA7C340DCBB93277DC49772A6E7A76C3C6C0A9320FF859709A4B8A2A8B +FPinv = 5DB24886E527B833EB204E6888D4035ECFEDA16C4F3CFBAF4AFD74AFE9C719E8F9F7E0DF88A00A039AC4FA6A95D6D94595CDC62DB1BB84D97110801DD1D30AE4 +FPexp = 45EA58834C326D429F21C2CC3349EB5CE773168B9751AC0E006CC967FDFDE78498E63B8C5CB9F73DD4CEAD217065A0F3EDC14DD9F1C5C677ED1B31D991477CE6 + +#test9 +FP_1 = 05F3054CAFD6D45D6A +FP_2 = 0964FF73F18227261B064E8F944CC8A2DACBC715777EB2AA3F27C91AB32ED870AF6C95DA065DEFB21D7125703419B9DA4EBE4604C8E31630F157 +FPadd = 0964FF73F18227261B064E8F944CC8A2DACBC715777EB2AA3F27C91AB32ED870AF6C95DA065DEFB21D7125703419B9DA4EC4390A1592ED054EC1 +FPsub = FFFFFFFFFFFFF69B008C0E7DD8D9E4F9B1706BB3375D253438EA88814D55C0D836E54CD1278F50936A25F9A2104DE28EDA8FCBE64625B147AD0083CCC0A369DA +FP_1nres = 05F3054CAFD6D45D6A +FP_2nres = 0964FF73F18227261B064E8F944CC8A2DACBC715777EB2AA3F27C91AB32ED870AF6C95DA065DEFB21D7125703419B9DA4EBE4604C8E31630F157 +FPmulmod = 0D8832D04B033EA2D0D29EF7BBCB82EBC749402B53A20F11B3E48890FA81798B599ACED6BC5800487D301FB1E3CABC6849EF77D9B9770EACEA5EC5D68E78C2CA +FPsmallmul = 3B7E34FEDE644BA624 +FPsqr = 2364E80E904BFA141C643A634411A62FE4 +FPreduce = 05F3054CAFD6D45D6A +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0CFAB350292BA05D +FPdiv2 = 02F982A657EB6A2EB5 +FPinv = 16F228E2CA0592B03C68E112C686D89CCC5AFA124847A718E136CE1D03C9DA65E1A59E019BCE88B1745A96126A318A49A9DEBC190C366FD3D9D570C8874F9D2F +FPexp = 6CCD751DF6803DBDA8AD328C79AE2C9CC5B0DFFB8E121A9C2F40DE111E14ACEEA9AEC207632CBF503D7FA8C86EDB21B0BBE0AA07A23298598D63DE215DEAE109 + +#test10 +FP_1 = 152C811D7724309A731FE552 +FP_2 = DB5B56C8EB6B5805A8216BB27BA4B269B7D88437B59902EABBCDF09D622CD468948FAE57A4737EF3C2782335A258D0236D5150A5E41BDBAB1BA9CC7AE11B2939 +FPadd = DB5B56C8EB6B5805A8216BB27BA4B269B7D88437B59902EABBCDF09D622CD468948FAE57A4737EF3C2782335A258D0236D5150A5F9485CC892CDFD15543B0E8B +FPsub = 24A4A9371494A7FA57DE944D845B4D9648277BC84A66FD1544320F629DD32B976B7051A85B8C810C3D87DCCA5DA72FDC92AEAF5A3110A5725B7A641F9204B9E0 +FP_1nres = 152C811D7724309A731FE552 +FP_2nres = DB5B56C8EB6B5805A8216BB27BA4B269B7D88437B59902EABBCDF09D622CD468948FAE57A4737EF3C2782335A258D0236D5150A5E41BDBAB1BA9CC7AE11B2939 +FPmulmod = 86E058A47C04AAF5AFAD93322394ACBA6087EEC93974250A8B9A9A27758FBD105C4F82C715507909FEBA0DEFB2F59015D67969D9140766A2D5A36F85AB3F61C2 +FPsmallmul = D3BD0B26A769E6087F3EF534 +FPsqr = 01C054EB78CB99E0BA9C23E7CE38E919673452A90347CE44 +FPreduce = 152C811D7724309A731FE552 +FPneg = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAD37EE288DBCF658CE01875 +FPdiv2 = 0A96408EBB92184D398FF2A9 +FPinv = 76800F81BB7785D40BF41DAE40183137335978454CC8ECA6867AC87666BADF903BD42239EA201C859C7AD6A390B12C9F8A5B5878ECED543F0C4C1AE038FCFB82 +FPexp = E1A3F2FED4C94F2D5BAD0580FFC5A0FE73226C89F7787FC7E27E360A3A90BEADB46414C45DC5A06C885EB8AB3700C0A2470C40982B38D851C2F9555E601C4F7E http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto-c/blob/8d28d2c3/testVectors/fp/test_vector_ANSSI.txt ---------------------------------------------------------------------- diff --git a/testVectors/fp/test_vector_ANSSI.txt b/testVectors/fp/test_vector_ANSSI.txt new file mode 100644 index 0000000..4ce6ed1 --- /dev/null +++ b/testVectors/fp/test_vector_ANSSI.txt @@ -0,0 +1,161 @@ +# FP ARITHMETICS - CURVE: ANSSI, Modulo = f1fd178c0b3ad58f10126de8ce42435b3961adbcabc8ca6de8fcf353d86e9c03; BIGmax = 2^256 + +#test1 +FP_1 = 03 +FP_2 = 03977D5C +FPadd = 03977D5F +FPsub = F1FD178C0B3AD58F10126DE8CE42435B3961ADBCABC8CA6DE8FCF353D4D71EAA +FP_1nres = 03 +FP_2nres = 03977D5C +FPmulmod = 0AC67814 +FPsmallmul = 1E +FPsqr = 09 +FPreduce = 03 +FPneg = F1FD178C0B3AD58F10126DE8CE42435B3961ADBCABC8CA6DE8FCF353D86E9C00 +FPdiv2 = 78FE8BC6059D6AC7880936F4672121AD9CB0D6DE55E46536F47E79A9EC374E03 +FPinv = 50A9B28403BE472FB00624A2EF6B6BC913208F3EE3ED98CF4DA9A6714824DEAC +FPexp = D686EA981FFCE97C1B582EE8012EF8FB24B131B6C951B02496F2E40B37E41191 + +#test2 +FP_1 = FDE7DC +FP_2 = 0C5036AFBB7540 +FPadd = 0C5036B0B95D1C +FPsub = F1FD178C0B3AD58F10126DE8CE42435B3961ADBCABC8CA6DE8F0A31D29B10E9F +FP_1nres = FDE7DC +FP_2nres = 0C5036AFBB7540 +FPmulmod = 0C366D01F3D40C258300 +FPsmallmul = 09EB0E98 +FPsqr = FBD41AD6C510 +FPreduce = FDE7DC +FPneg = F1FD178C0B3AD58F10126DE8CE42435B3961ADBCABC8CA6DE8FCF353D770B427 +FPdiv2 = 7EF3EE +FPinv = 12E89755D0C321DEB896C1CD0D67ADF95D9B000E2819F7F8844452C7975CAADD +FPexp = 51A7D3B4C082020DABC3385AAB7C8F75103AC01F771F6E8BCF82DCACBF19CE07 + +#test3 +FP_1 = 29265D66C3CC +FP_2 = 1266D1621A14BC0BEC08 +FPadd = 1266D162433B1972AFD4 +FPsub = F1FD178C0B3AD58F10126DE8CE42435B3961ADBCABC8B807179B026579C973C7 +FP_1nres = 29265D66C3CC +FP_2nres = 1266D1621A14BC0BEC08 +FPmulmod = 02F5398287D83D2E53302671E17A2E60 +FPsmallmul = 019B7FA603A5F8 +FPsqr = 069D4FAAC74D4C12D4506A90 +FPreduce = 29265D66C3CC +FPneg = F1FD178C0B3AD58F10126DE8CE42435B3961ADBCABC8CA6DE8FCCA2D7B07D837 +FPdiv2 = 14932EB361E6 +FPinv = 876E7FAD25695D25F63E980057EBA8B44E33675CF68FCEBCE9B9AF911B40A709 +FPexp = 8F560C20125AD726FFBB4BA8117F165A49187C0B95C63768E834B47898A1D8DB + +#test4 +FP_1 = 2F550D2078 +FP_2 = 76FCA32E1B7D411512FB7B5F17 +FPadd = 76FCA32E1B7D41154250887F8F +FPsub = F1FD178C0B3AD58F10126DE8CE42435B3961AD45AF259C526BBBDE7032005D64 +FP_1nres = 2F550D2078 +FP_2nres = 76FCA32E1B7D411512FB7B5F17 +FPmulmod = 15FFE9F190FF492FE35464417164C4E272C8 +FPsmallmul = 01D9528344B0 +FPsqr = 08C05713A44C004E3840 +FPreduce = 2F550D2078 +FPneg = F1FD178C0B3AD58F10126DE8CE42435B3961ADBCABC8CA6DE8FCF32483617B8B +FPdiv2 = 17AA86903C +FPinv = B73ADC291FFE611A25E706C1DD7B60EE21F54F80C336DF9775DCADCF9E269CAF +FPexp = 03CC58A49223ADF9433BEBE1EF24564334CF9D5062399D698849FB96B0B5914D + +#test5 +FP_1 = 6F974B151521F6D3F10A8C6CB645B2 +FP_2 = DFB90E404D33CC96A34643CD1295E965 +FPadd = E028A58B6248EE8D77374E597F4C2F17 +FPsub = F1FD178C0B3AD58F10126DE8CE42435A5A1836C773AA1FCE19A7BA13328EF850 +FP_1nres = 6F974B151521F6D3F10A8C6CB645B2 +FP_2nres = DFB90E404D33CC96A34643CD1295E965 +FPmulmod = 618574F2ED39DDE2A853DB0B5318391A7CBAEF250304BB2AF274DFDDF2813A +FPsmallmul = 045BE8EED2D353A4476A697C3F1EB8F4 +FPsqr = 30A48C85F137BE3B58FEC539FE7E15B043E2E78241AFF81C6F455C116FC4 +FPreduce = 6F974B151521F6D3F10A8C6CB645B2 +FPneg = F1FD178C0B3AD58F10126DE8CE42435B38F2167196B3A877150BE8C76BB85651 +FPdiv2 = 37CBA58A8A90FB69F88546365B22D9 +FPinv = 764AEFF66EF76A00851E2C743B351FED606E1BDAD406EDDFA1ED3B212DF8E08C +FPexp = 3FEDA2274F9C109B9AF9825F7466078BFD81E4C5C1151202E0AA2E99C027EDFB + +#test6 +FP_1 = 03EA113A3E5AADAB0FC954DE +FP_2 = 02AF2F2CAEF7511F37D715B1DE4367BE6F213C92 +FPadd = 02AF2F2CAEF7511F3BC126EC1C9E15697EEA9170 +FPsub = F1FD178C0B3AD58F10126DE8CB93142E8A6A5C9D77DBC5F6491439407916B44F +FP_1nres = 03EA113A3E5AADAB0FC954DE +FP_2nres = 02AF2F2CAEF7511F37D715B1DE4367BE6F213C92 +FPmulmod = 0A81DCE35EDC972AC18184669C1F70A6184FFD865129E9D1FCC6C663546E9C +FPsmallmul = 2724AC466F8AC8AE9DDD50AC +FPsqr = 0F526ADD18E75FDA6F09E5AC1534E768BCA2DC64BE7084 +FPreduce = 03EA113A3E5AADAB0FC954DE +FPneg = F1FD178C0B3AD58F10126DE8CE42435B3961ADBCA7DEB933AAA245A8C8A54725 +FPdiv2 = 01F5089D1F2D56D587E4AA6F +FPinv = E7814437A375CF18755C490C774FC21CE8F1938C26DD9826F983273F4074B6D6 +FPexp = 6A8A0DAD712BD5259FA78BA257106E48BE2D9292FB3B1720AE2A015F3F35F97A + +#test7 +FP_1 = 19327596B9E8E205665D +FP_2 = 0B2FBD794F5D581397461F99EABC40322103DECF6D126A +FPadd = 0B2FBD794F5D581397461F99EAD572A7B7BDC7B17278C7 +FPsub = F1FD178C0B3AD58F10073E2B54F2E60325CA679D11DE27602C72A95DEB06EFF6 +FP_1nres = 19327596B9E8E205665D +FP_2nres = 0B2FBD794F5D581397461F99EABC40322103DECF6D126A +FPmulmod = 27E0DFB617866A7A73247B140DA38F2F36219722AC2D28C64447DCB5E799507F +FPsmallmul = FBF897E34318D435FFA2 +FPsqr = 027AE4E9953339CA9A9E5EBF36457B695C903DC9 +FPreduce = 19327596B9E8E205665D +FPneg = F1FD178C0B3AD58F10126DE8CE42435B3961ADBCABC8B13B7366396AF66935A6 +FPdiv2 = 78FE8BC6059D6AC7880936F4672121AD9CB0D6DE55E471D02F49D69E5D3A0130 +FPinv = B69E3A2000ACA3AC8F8AB7B8D1B6CFAE24BB79C20B9F79CA7F3E6FB6C57D9BF1 +FPexp = CE6ABC2DA376F77D88FA7B4E1EC8C74A8D0B17581D19085E5A08FE21C23ECEC7 + +#test8 +FP_1 = 6CB6C7B496473B4E +FP_2 = 01A34853DBFF112931A960B340B8C689F2D326C5CA393D259079 +FPadd = 01A34853DBFF112931A960B340B8C689F2D3937C91EDD36CCBC7 +FPsub = F1FD178C0B3AD3EBC7BE91E9BD1911B1D8AE6D03E53ED79B2EEDF0CF319046D8 +FP_1nres = 6CB6C7B496473B4E +FP_2nres = 01A34853DBFF112931A960B340B8C689F2D326C5CA393D259079 +FPmulmod = 58029693EF640870E14BF33B91710A4E659A7D932093A355DF8DB91B501255AA +FPsmallmul = 043F23CD0DDEC8510C +FPsqr = 2E2ABB00EF5C08588D7E37015B010BC4 +FPreduce = 6CB6C7B496473B4E +FPneg = F1FD178C0B3AD58F10126DE8CE42435B3961ADBCABC8CA6D7C462B9F422760B5 +FPdiv2 = 365B63DA4B239DA7 +FPinv = 94C260E762D44D671327A1B40A43E22613FF0DD55FF9A6FDBE45571204D8EAB0 +FPexp = 8F46899AB75FD38AB6AF4F79ABC305D6CAC9F06E22693B9EBD52A9B7B81AC6FB + +#test9 +FP_1 = C729C5 +FP_2 = 3331170FC2778BB8A9B888F6421781687495842F105C0EBDDFB08F1C0D +FPadd = 3331170FC2778BB8A9B888F6421781687495842F105C0EBDDFB15645D2 +FPsub = F1FD1758DA23C5CC9886B53F15B94D1921E0454816449B5D8CEE357428A6A9BB +FP_1nres = C729C5 +FP_2nres = 3331170FC2778BB8A9B888F6421781687495842F105C0EBDDFB08F1C0D +FPmulmod = 27D3832EB8703367EB06BBA05E365C3802F04769CFF965CACCA32FA897B9AB01 +FPsmallmul = 07C7A1B2 +FPsqr = 9AF1F716B199 +FPreduce = C729C5 +FPneg = F1FD178C0B3AD58F10126DE8CE42435B3961ADBCABC8CA6DE8FCF353D7A7723E +FPdiv2 = 78FE8BC6059D6AC7880936F4672121AD9CB0D6DE55E46536F47E79A9EC9AE2E4 +FPinv = 8D794F447BB3F79B10E1F429871ACE125A6C889882BBBD25FA663C749A284C0B +FPexp = 6DE6FD5716AB883202208F8D865ECA7B013DB09042DA13CCEBA2C8DD324C2704 + +#test10 +FP_1 = 2F03B830ED58C9A744065C6F8430348E3FEEF7 +FP_2 = 56773F147F2AD617C8A2F3CD3B7D355833687A26CC2AA72CE9307A20378B9DAF +FPadd = 56773F147F2AD617C8A2F3CD3BAC39106455D2F0736EAD8958B4AA54C5CB8CA6 +FPsub = 9B85D8778C0FFF77476F7A1B92F411BB36E68C5F86E2299D6F50A9682F22ED4B +FP_1nres = 2F03B830ED58C9A744065C6F8430348E3FEEF7 +FP_2nres = 56773F147F2AD617C8A2F3CD3B7D355833687A26CC2AA72CE9307A20378B9DAF +FPmulmod = 7E5D52602F0CD539D2D9C7B950D4A8CDEFC494078B8C73B54BFCC59A7ABFF998 +FPsmallmul = 01D62531E94577E088A83F9C5B29E20D8E7F55A6 +FPsqr = 8F641E9243E4595644E9FF77FC28A55BC2C407A4368E02C289329F32B7A04F05 +FPreduce = 2F03B830ED58C9A744065C6F8430348E3FEEF7 +FPneg = F1FD178C0B3AD58F10126DE8CE133FA3087454F30484C4117978C31F4A2EAD0C +FPdiv2 = 78FE8BC6059D6AC7880936F46738A389B5278343298668652C4091C43357457D +FPinv = 32DE920EA5635BD52CEA6665F5954CAB573AEF1AB1CF45CC8246BEEEB5BACA8F +FPexp = 33CF5E3DAE63DA37901808D2090F25905186AE77EFA9574E168580186D5597A1 http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto-c/blob/8d28d2c3/testVectors/fp/test_vector_BLS24.txt ---------------------------------------------------------------------- diff --git a/testVectors/fp/test_vector_BLS24.txt b/testVectors/fp/test_vector_BLS24.txt new file mode 100644 index 0000000..95ddd5c --- /dev/null +++ b/testVectors/fp/test_vector_BLS24.txt @@ -0,0 +1,161 @@ +# FP ARITHMETICS - CURVE: BLS24, Modulo = 0x555c007803ccc5ba839aec6e803f2e77e4c1ba825079733568e09e1f244061873220df068a328b6f1c5cbdb6a642ffe2e82d30daf844c1674a06152b + +#test1 +FP_1 = 1FC0515B058B59DF5D298C4D1669BC1F5C815CE6B902193F72043A61F1E97127B8A1E370F30DCE68720812DEAC8FA3EA4F4E4D52187C889603D6CC3B +FP_2 = 4DDFD80F11585B8A620287E77C2405B0A0A4C8DA5FC9FBBA7F72DD0388D90592388035F5795157EAA77E1A33EA4BB6EC0A9C46283CEAC491C5537590 +FPadd = 184428F21316EFAF3B9127C6124E935818646B3EC852A1C48896794656821532BF013A5FE22C9AE3FD296F5BF0985AF371BD629F5D228BC07F242CA0 +FPsub = 273C79C3F7FFC40F7EC1F0D41A84E4E6A09E4E8EA9B190BA5B71FB7D8D50CD1CB2428C8203EF01ECE6E6B6616886ECE12CDF3804D3D6856B88896BD6 +FP_1nres = 1FC0515B058B59DF5D298C4D1669BC1F5C815CE6B902193F72043A61F1E97127B8A1E370F30DCE68720812DEAC8FA3EA4F4E4D52187C889603D6CC3B +FP_2nres = 4DDFD80F11585B8A620287E77C2405B0A0A4C8DA5FC9FBBA7F72DD0388D90592388035F5795157EAA77E1A33EA4BB6EC0A9C46283CEAC491C5537590 +FPmulmod = 0EFA333C32865959D0D1B909CD148BE5C7F44CFAB9A6DA72B0A8C894304A81B43BB419DC8EE3DBEBD051296A1DDB5A159334A7F86CB2FC810A268F5C +FPsmallmul = 3D6F2C262C0B318A18CEB5B75F63CDD1EEC8717C48A8A2DA39886D76065D46F79FF04555DFF26DC71F3A838ECAD3677E608772A40C0F11A64851BACD +FPsqr = 1D8163C792768258FCDD386932FBD8C478988FA337D3AF82006E4EE0578759CA0CA3D39FABDC0BA608FB4EF90A53835013D74BF28C853DBD9E800799 +FPreduce = 1FC0515B058B59DF5D298C4D1669BC1F5C815CE6B902193F72043A61F1E97127B8A1E370F30DCE68720812DEAC8FA3EA4F4E4D52187C889603D6CC3B +FPneg = 359BAF1CFE416BDB2671602169D5725888405D9B977759F5F6DC63BD3256F05F797EFB959724BD06AA54AAD7F9B35BF898DEE388DFC838D1462F48F0 +FPdiv2 = 3A8E28E984AC0FCCF0623C5DCB54754BA0A18BB484BDC63A6D726C408B14E9577561613BBEA02CEBC732684AA96951E69BBDBF168860A4FEA6EE70B3 +FPinv = 397D3C6367D9E4A1768A02AC969282342970A825217B16A0DA237CA51A55AA73E511C7441DC5C66C4B17348B959B31D225BA60C8FF31743F352CBC65 +FPexp = 12A9D7A4065DED445080ACD1D063B05AF4EAAF8284A420EE62630F0DB0D0D80F03A2765B8BA60F779CAA4F64374317F3C8B1A76221638AC0D5A0B471 + +#test2 +FP_1 = 4AF20BA1023A6659E8BB71F5617F479795C06CA18D2B5C45DBE3B837204C972018836BF816FAE2618590F3A13FE71F0B6DEAC7AF17570C43D6132BC2 +FP_2 = 2FE11DAC21B665329DB12E7184ED16E1552AB6959F7772E4552B569050088507642107136B774AA1507ED96C01A3D038B7B27924E673DFDB40DF9E23 +FPadd = 257728D5202405D202D1B3F8662D3001062968B4DC295BF4C82E70A84C14BAA04A839404F83FA193B9B30F569B47EF613D700FF905862AB7CCECB4BA +FPsub = 1B10EDF4E08401274B0A4383DC9230B64095B60BEDB3E96186B861A6D0441218B46264E4AB8397C035121A353E434ED2B6384E8A30E32C6895338D9F +FP_1nres = 4AF20BA1023A6659E8BB71F5617F479795C06CA18D2B5C45DBE3B837204C972018836BF816FAE2618590F3A13FE71F0B6DEAC7AF17570C43D6132BC2 +FP_2nres = 2FE11DAC21B665329DB12E7184ED16E1552AB6959F7772E4552B569050088507642107136B774AA1507ED96C01A3D038B7B27924E673DFDB40DF9E23 +FPmulmod = 1ED754D636E6AAC36799121E607636AFDCB63B26855BD8C297A408CD234C8C92C362378E942E91693A632E57A69D47807B99EDABD90F9661DE9C9995 +FPsmallmul = 42947089F7E1D1AEFA7B1021CCFF582CB3766A3CFFE6010F4FE0412E20FADB07641B3F7C94387C5654C396974CEF375B09C245FF27406F6C0C8F0C3C +FPsqr = 15033BEE6AE6CC26D07416143E83E64B231AFEE8C36A7CC2CB308E3EEBDE9B0A9CB0C1A144AABE1A1456119A74229DF38CD176CA74567841C694852F +FPreduce = 4AF20BA1023A6659E8BB71F5617F479795C06CA18D2B5C45DBE3B837204C972018836BF816FAE2618590F3A13FE71F0B6DEAC7AF17570C43D6132BC2 +FPneg = 0A69F4D701925F609ADF7A791EBFE6E04F014DE0C34E16EF8CFCE5E803F3CA67199D730E7337A90D96CBCA15665BE0D77A42692BE0EDB52373F2E969 +FPdiv2 = 257905D0811D332CF45DB8FAB0BFA3CBCAE03650C695AE22EDF1DC1B90264B900C41B5FC0B7D7130C2C879D09FF38F85B6F563D78BAB8621EB0995E1 +FPinv = 25690C9F872BF065FCDB571483C0D8FE5F7D7BDA5093FE0ED68A6B53D41AE3A0A73C889208646683493CADC9D6895D26F8D2299799A8C5B3C0189506 +FPexp = 0FFC731A817468AB48E833099C421C362FBC9B3B59ED4373771E5418F761A42A9AB80EE7CC4ADF70E382D461B9BD6FA432E772AB31A69942E3799134 + +#test3 +FP_1 = 4670AB26C3E639C601106397244587634959E4B46EFC4B168849112327AA21C97F3724D7E85CD4E333D1C1C59F9CE8FCDBB80C051505EC9B7BAA151A +FP_2 = 1C58E5F5D0F8EDBB513EA444236A83A7B93577E5525B84E1D01D706DD2CADEFD8EF290A774FEDDB8AF3B6E5F65895552656EB5938855B93FEF2AF79B +FPadd = 0D6D90A4911261C6CEB41B6CC770DC931DCDA21770DE5CC2EF85E371D6349F3FDC08D678D329272CC6B0726E5EE33E6C58F990BDA516E47420CEF78A +FPsub = 2A17C530F2ED4C0AAFD1BF5300DB03BB90246CCF1CA0C634B82BA0B554DF42CBF0449430735DF72A849653663A1393AA764956718CB0335B8C7F1D7F +FP_1nres = 4670AB26C3E639C601106397244587634959E4B46EFC4B168849112327AA21C97F3724D7E85CD4E333D1C1C59F9CE8FCDBB80C051505EC9B7BAA151A +FP_2nres = 1C58E5F5D0F8EDBB513EA444236A83A7B93577E5525B84E1D01D706DD2CADEFD8EF290A774FEDDB8AF3B6E5F65895552656EB5938855B93FEF2AF79B +FPmulmod = 2C8B69D243D054E166B78E171D0E00393076CE39A9C8DA707F6DC677004FEF75655AF5F4D9155E14A5517094685355139865903DB5323E956C405872 +FPsmallmul = 1586ABC3889813E7EDCC807368BDD621B7751AF9D20F55360BD5BA666AA245A56720783AC20BF567234BA4030A091AC953C6F15B101532D8847429AC +FPsqr = 10A39024BDE9B96C685CDF06084E6B5A353E3CC19E90CCCDC7D704CE06C142F3E357034CBA90ACE44C6386E81CC503B7D863BF88D5AD6B3488C79AE9 +FPreduce = 4670AB26C3E639C601106397244587634959E4B46EFC4B168849112327AA21C97F3724D7E85CD4E333D1C1C59F9CE8FCDBB80C051505EC9B7BAA151A +FPneg = 0EEB55513FE68BF4828A88D75BF9A7149B67D5CDE17D281EE0978CFBFC963FBDB2E9BA2EA1D5B68BE88AFBF106A616E60C7524D5E33ED4CBCE5C0011 +FPdiv2 = 2338559361F31CE3008831CB9222C3B1A4ACF25A377E258B4424889193D510E4BF9B926BF42E6A7199E8E0E2CFCE747E6DDC06028A82F64DBDD50A8D +FPinv = 034747BF40E9D4FF056B6428DA30F221B6FDBC3B958D12B19D6EF2786B478D2F62FCF043646CF5370034C861464AB4F159FD77ED195F0DD804BBEBFD +FPexp = 255792F8458AFC303A44C5CA41CDD7D0FB0C42D55C92B5BA470200F9847EFD9EC20DCA189B571C17E368FD0558182C36C2F6CEA603AC34FBEE7BD94F + +#test4 +FP_1 = 3D7465E2E9397345BC6146F02BEF3FBB85746F49EDDCA5945CC6C5B3003F60E97337BDB83674489AB12785E2B8D31221060C70C4C5DF00FCE7869354 +FP_2 = 12570DF1F7E35B4C4DDC339DD15BA55486A885BB318EC1C6B6D8B6D702B77197F3664B3D9995B05642B3CEFC15B9DA92611D8F73C22BA7AD338C8693 +FPadd = 4FCB73D4E11CCE920A3D7A8DFD4AE5100C1CF5051F6B675B139F7C8A02F6D281669E08F5D009F8F0F3DB54DECE8CECB3672A0038880AA8AA1B1319E7 +FPsub = 2B1D57F0F15617F96E8513525A939A66FECBE98EBC4DE3CDA5EE0EDBFD87EF517FD1727A9CDE98446E73B6E6A319378EA4EEE15103B3594FB3FA0CC1 +FP_1nres = 3D7465E2E9397345BC6146F02BEF3FBB85746F49EDDCA5945CC6C5B3003F60E97337BDB83674489AB12785E2B8D31221060C70C4C5DF00FCE7869354 +FP_2nres = 12570DF1F7E35B4C4DDC339DD15BA55486A885BB318EC1C6B6D8B6D702B77197F3664B3D9995B05642B3CEFC15B9DA92611D8F73C22BA7AD338C8693 +FPmulmod = 40BFA4DC70902664FB83B99EAD979C522454424773016E53FF51AA62412B46E687E5CA43811CFCB1FC0A56E9E368550792974A8197F25C80F33959B8 +FPsmallmul = 1107F79501A5189FC2904E5C359E380BF5403F53174C5155C19F662404B71E6C214750045929060125020ADCAC69B615E34011B2F0D4C00E05172D1B +FPsqr = 2AACC72D5852BC2E3A58ECE2591B9F5BD015CD50AB7B18ABE20D414AF1788897BEA3AC37925E6DBD989D75B65E4A45B5FBA1EE1F2EB05F7517C3AA2F +FPreduce = 3D7465E2E9397345BC6146F02BEF3FBB85746F49EDDCA5945CC6C5B3003F60E97337BDB83674489AB12785E2B8D31221060C70C4C5DF00FCE7869354 +FPneg = 17E79A951A935274C739A57E544FEEBC5F4D4B38629CCDA10C19D86C2401009DBEE9214E53BE42D46B3537D3ED6FEDC1E220C0163265C06A627F81D7 +FPdiv2 = 1EBA32F1749CB9A2DE30A37815F79FDDC2BA37A4F6EE52CA2E6362D9801FB074B99BDEDC1B3A244D5893C2F15C6989108306386262EF807E73C349AA +FPinv = 0AD0CAA72BABB29D539164031A9AEDF921997EA2C196B45A944E39DCEE0FAD43D92CD9F62A6202B35807770B0A044C3134136CACFB34360B7E4423FC +FPexp = 22DB0251EDECA6C235645E4C4EA8AD1FBB8A38D7CB0F1A947A01207D8EB4F5B3A0BD025AED63EA3773D5E8989F2229D56A7395134684056064BDD5BE + +#test5 +FP_1 = 5239FFD30376F97CF0DDCCAA29FA9F4D1A9202B17058C180E2BCF471495B897D0559FB938514C44CB9BDC5E9DBAD7CCF3E109B55AC657649410F8AE0 +FP_2 = 0D2AAA31DC6B9FD3CC70B43B13AB496AD4FFBE9CA22BA39E106C23CD17B00F312A699534E07189171DF77AF20E612BDB0340E53CE4EB20E5CECF1382 +FPadd = 0A08A98CDC15D39639B39476BD66BA400AD006CBC20AF1E98A487A1F3CCB3726FDA2B1C1DB53C1F4BB58832543CBA8C759244FB7990BD5C7C5D88937 +FPsub = 450F55A1270B59A9246D186F164F55E245924414CE2D1DE2D250D0A431AB7A4BDAF0665EA4A33B359BC64AF7CD4C50F43ACFB618C77A55637240775E +FP_1nres = 5239FFD30376F97CF0DDCCAA29FA9F4D1A9202B17058C180E2BCF471495B897D0559FB938514C44CB9BDC5E9DBAD7CCF3E109B55AC657649410F8AE0 +FP_2nres = 0D2AAA31DC6B9FD3CC70B43B13AB496AD4FFBE9CA22BA39E106C23CD17B00F312A699534E07189171DF77AF20E612BDB0340E53CE4EB20E5CECF1382 +FPmulmod = 4F073D4811173751A114CC49FAE6DE5D5DA474A36DAB4E0B99085E6DE013800FBF232909D8D808CC06828912C8B1A7E4DE5A79F151213A540F8D7C30 +FPsmallmul = 3607FA060072CB52C837AEC3219196CBFEE48C598F3282282B7BFD54974FF121725BFC885708C41742270FB6BC6BE11E430F59A6018BD23AF064AE3D +FPsqr = 4393D4BEE651AC77654790C488E5DFCC68CBA408B875BF6DBFFACAAE7FB0869287CC6108365B4AA70E3BBE00215E3FCCE1E9510E2F9B0EAFB12185C5 +FPreduce = 5239FFD30376F97CF0DDCCAA29FA9F4D1A9202B17058C180E2BCF471495B897D0559FB938514C44CB9BDC5E9DBAD7CCF3E109B55AC657649410F8AE0 +FPneg = 032200A50055CC3D92BD1FC456448F2ACA2FB7D0E020B1B48623A9ADDAE4D80A2CC6E373051DC722629EF7CCCA958313AA1C95854BDF4B1E08F68A4B +FPdiv2 = 291CFFE981BB7CBE786EE65514FD4FA68D490158B82C60C0715E7A38A4ADC4BE82ACFDC9C28A62265CDEE2F4EDD6BE679F084DAAD632BB24A087C570 +FPinv = 0E6D5C34F259BBC92C6DC4DE4C8C0775239F165539391BB0B2B4D2B1759B3C8B58595A1BE4AEFED54335C7E1040C39E6D597A27D08875CA887DB7BDA +FPexp = 2749947304DB29099B9EB1372D2D60A1624809A294E437B0D3B611DD47468D62BE31EC93CB17F60E6C9FA4AACAE8125649246351E5FEC209DA95E535 + +#test6 +FP_1 = 3A4AFB3774AD66BD648CD593065F34F14E0DEBF85774A8F6003B78FBC97583A1CB4E5E06DB08BF3DBC061BEC60E54924C8B34266BA5429FB989951D9 +FP_2 = 479D91031D5E9F762D47649E49B5EBCB46AB7B1EFFEEC7F63F43CE8FAD253D57E94A7A86A717397D9E53C2DD5F3518D0F673F4EAD5EC389510EAD2BE +FPadd = 2C8C8BC28E3F40790E394DC2CFD5F244AFF7AC9506E9FDB6D69EA96C525A5F728277F986F7ED6D4C3DFD211319D76212D6FA067697FBA1295F7E0F6C +FPsub = 48096AAC5B1B8D01BAE05D633CE8779DEC242B5BA7FF543529D8488B4090A7D11424C286BE24112F3A0F16C5A7F33036BA6C7E56DCACB2CDD1B49446 +FP_1nres = 3A4AFB3774AD66BD648CD593065F34F14E0DEBF85774A8F6003B78FBC97583A1CB4E5E06DB08BF3DBC061BEC60E54924C8B34266BA5429FB989951D9 +FP_2nres = 479D91031D5E9F762D47649E49B5EBCB46AB7B1EFFEEC7F63F43CE8FAD253D57E94A7A86A717397D9E53C2DD5F3518D0F673F4EAD5EC389510EAD2BE +FPmulmod = 4B891093161E099B0FC72F01C38B20F19F624A1AE120CE80BA98B46FF04E7F3C0A1A7C4C6E12F7686631C95293767B7F6805056854C997325E300988 +FPsmallmul = 46C5CD5A77F96106D7DECD273E3CFA9DB000D8A587B5E65B8D0F051B0514DB26C44A721D512833CEAE10A4F3E362DC1E65F172E175AD1B6839D8B378 +FPsqr = 14A658F00A81C59B18892602076E4D9BC59DB8D251879CE8D6FF736F7E7352BC1D305047563710BE89E1774E85CA49C5818E57436BFE10B40137A814 +FPreduce = 3A4AFB3774AD66BD648CD593065F34F14E0DEBF85774A8F6003B78FBC97583A1CB4E5E06DB08BF3DBC061BEC60E54924C8B34266BA5429FB989951D9 +FPneg = 1B1105408F1F5EFD1F0E16DB79DFF98696B3CE89F904CA3F68A525235ACADDE566D280FFAF29CC316056A1CA455DB6BE1F79EE743DF0976BB16CC352 +FPdiv2 = 47D37DD7BC3D163BF413E100C34F31B49967D33D53F70E15B48E0B8D76DAF2947EB79E86B29DA5566C316CD183942483D87039A0D94C75B1714FB382 +FPinv = 5144A1BA233A87F828D35BADB0A8DC990265F40BF4E0CE2CD2BAE2488946F476DC9CC7088DA351466E32CF1B8AD3E7D7A110379821BB88EC20EBBBE8 +FPexp = 534C6A7A964EAD33C84F14F16DF34A3D77581E04FFC2E8FAAFE5D2BD75AF443A2D1473FD14AB44B19ADA08EA3BD11E20E04138EEEA130D1B4B16BAA0 + +#test7 +FP_1 = 170701235139DEADE57B4717343AC47E5D98E5B3A86A6D27C1238A159E6B8893C25DA1179B2AA2373B9C801E3206199B53AC256694E47EBFA8F7BD5B +FP_2 = 1F8464BF158E2C8936E1A981042D8D921C12064B1ACB676B92AC2C9C2F9C91AF4A39D8490B14465F4AB6F37370783EF0206FFB694225C0E1414C1653 +FPadd = 368B65E266C80B371C5CF0983868521079AAEBFEC335D49353CFB6B1CE081A430C977960A63EE89686537391A27E588B741C20CFD70A3FA0EA43D3AE +FPsub = 4CDE9CDC3F7877DF32348A04B04C6564264899EADE1878F19757FB98930F586BAA44A7D51A48E7470D424A6167D0DA8E1B695AD84B037F45B1B1BC33 +FP_1nres = 170701235139DEADE57B4717343AC47E5D98E5B3A86A6D27C1238A159E6B8893C25DA1179B2AA2373B9C801E3206199B53AC256694E47EBFA8F7BD5B +FP_2nres = 1F8464BF158E2C8936E1A981042D8D921C12064B1ACB676B92AC2C9C2F9C91AF4A39D8490B14465F4AB6F37370783EF0206FFB694225C0E1414C1653 +FPmulmod = 33CFC596385C903BCEDCC098B2A8B360FB0EDC95C184E2D2926189569177BD58B9688F3EF7466418665C3534AFAF6E88F73C9072DAADE0211DA4FA3B +FPsmallmul = 3B8E0A7124A92755EF9AEE0B09CD4FFFDE7583FFF3355D22B9A22899E7B292B733668CDEFB453F4A1B6385C0A7B7004B745F144BE06370AE05A13B38 +FPsqr = 140E300A8E4A37A4C67EA86FA721A5606D9F70B35C1E9E5EDBBD228ADB336A0F00DB6194744F64B1A308D7FE3E7EF6BA9DA64304EDCD3735CA58E24E +FPreduce = 170701235139DEADE57B4717343AC47E5D98E5B3A86A6D27C1238A159E6B8893C25DA1179B2AA2373B9C801E3206199B53AC256694E47EBFA8F7BD5B +FPneg = 3E54FF54B292E70C9E1FA5574C0469F98728D4CEA80F060DA7BD140985D4D8F36FC33DEEEF07E937E0C03D98743CE64794810B74636042A7A10E57D0 +FPdiv2 = 363180CDAA835234348B19C2DA3CF97B212D501AFC71F02E9502141A6155F50D7A3F400F12AE96D32BFC9EEA6C248CBF1DECAB20C694A013797EE943 +FPinv = 1C3D7358EEA647EC65BAEFC351AC5D0668A746F56C85BFB6EF4806E3029DE6848BEB16ECD4E24DDC355E7B0575EF94237FFE679E93BB80C56FFEF767 +FPexp = 0C818A3C893EF0A2F901E66DA2E7EFC354B5D34C0BBB0A7DCB4F4B44B79E123E4D0D0FB48CE903850204AA90D5DA195C353A090CD26166E07AAFEA60 + +#test8 +FP_1 = 1A90C86E40FCEECA40F6C8C50F4A9C03D5AE3C90F29C91513913BE9C263964D2D7CE1C550250D7274D07C1A9B2551D9A610350F61FF630CEFF9739AD +FP_2 = 30D2AA234DEF7186C0D02E0EB32B3A244BB2658B8D1C55F070F269E3FC1DA1EF58D449290D1244CCC33C9A116A6B314C5F5A0977D97B1D623187DBB8 +FPadd = 4B6372918EEC605101C6F6D3C275D6282160A21C7FB8E741AA062880225706C230A2657E0F631BF410445BBB1CC04EE6C05D5A6DF9714E31311F1565 +FPsub = 3F1A1EC2F6DA42FE03C18724DC5E90576EBD9187B5F9AE963101F2D74E5C246AB11AB2327F711DC9A627E54EEE2CEC30E9D678593EBFD4D418157320 +FP_1nres = 1A90C86E40FCEECA40F6C8C50F4A9C03D5AE3C90F29C91513913BE9C263964D2D7CE1C550250D7274D07C1A9B2551D9A610350F61FF630CEFF9739AD +FP_2nres = 30D2AA234DEF7186C0D02E0EB32B3A244BB2658B8D1C55F070F269E3FC1DA1EF58D449290D1244CCC33C9A116A6B314C5F5A0977D97B1D623187DBB8 +FPmulmod = 36A11156C9D8A946A461C439095EF49AB0A3239426ADC5794B7F7DD64D89671BE360A0678C2227A466C7D3D525BA9B8E365CD9BEEFC96913902F61E9 +FPsmallmul = 0993D2E67E7B02B6FED31267182C8CBEAA892E2288B1538C002397BC117CCBA6D7AA7E3E7890C53BAD37577D048A285F1199970C56CFA3E01DD60141 +FPsqr = 05E34CA908F6D22D53780824BF5CA05922F8F9B0C75816408F9B6281D43D1AB9DC3A9A10F14B10D49889746A5CEE88521ACBABD5C37E2625CA4B1707 +FPreduce = 1A90C86E40FCEECA40F6C8C50F4A9C03D5AE3C90F29C91513913BE9C263964D2D7CE1C550250D7274D07C1A9B2551D9A610350F61FF630CEFF9739AD +FPneg = 3ACB3809C2CFD6F042A423A970F492740F137DF15DDCE1E42FCCDF82FE06FCB45A52C2B187E1B447CF54FC0CF3EDE2488729DFE4D84E90984A6EDB7E +FPdiv2 = 37F664732264DA426248DA99C7C4E53DDD37FB89A18B024350FA2E5DA53CE32D04F77DADC641B14B34B23FB02C4C0EBEA49840E88C1D791B24CEA76C +FPinv = 24F3FE64C6BC990F64E7C2BFA3F66CC66575DA4087827E9E839AB91CFD26BF2A1501F2623A64AF23853B25A3BE113BFF73063E4367E529361AF40033 +FPexp = 3E52B69E988DFDE63E26627102C87A2CDC79F2E3A3609DD4EC7CBFA53C91744E5C2F724013FB4285D2AE70810C1AA89D704CC0E660378F8E4DAF497F + +#test9 +FP_1 = 0958F1D99AA2757D140290F426539B62EE0E088BA71BA6FE7E0C97C2A4D6737544CC004D2B06C077F11A32B6DAC12C8B9F78C27643179C2AAAC6C0C9 +FP_2 = 28EEAFCEA864998996EB622D475D7B7BF157077A70C4D7AC3D4889C9573653660BDB7F6C2E69EA52477F72F0856F3221030E142BED61A3BFCD947A6F +FPadd = 3247A1A843070F06AAEDF3216DB116DEDF65100617E07EAABB55218BFC0CC6DB50A77FB95970AACA3899A5A760305EACA286D6A230793FEA785B3B38 +FPsub = 35C64282F60AA1AE00B21B355F354E5EE178BB9386D04287A9A4AC1871E081966B115FE786CF6194C5F77D7CFB94FA4D8497DF254DFAB9D227385B85 +FP_1nres = 0958F1D99AA2757D140290F426539B62EE0E088BA71BA6FE7E0C97C2A4D6737544CC004D2B06C077F11A32B6DAC12C8B9F78C27643179C2AAAC6C0C9 +FP_2nres = 28EEAFCEA864998996EB622D475D7B7BF157077A70C4D7AC3D4889C9573653660BDB7F6C2E69EA52477F72F0856F3221030E142BED61A3BFCD947A6F +FPmulmod = 0E451C4E474E19755DA4411F8927289D7CF54A726BF2A5D90DD29938E3BED7003C04296D5622D77E3426F632B7AEE27FF8D2CC152E8C6711F972D9EF +FPsmallmul = 081D7208068BD128447EBD1AFF04E36567CA9AF2369B12BB839D4F7B4C20210D7DD723FD2410F9404EA93D6DE548BD91528A67C3A6A7584361BD72AF +FPsqr = 4FEA4DC2611A791740A133B73070B4A0198C52510909AA4BD9FF61AABBAFD9A791860B5330DC4D104173609D2AD2E50FFFA1D31D2E50767C3C1281F0 +FPreduce = 0958F1D99AA2757D140290F426539B62EE0E088BA71BA6FE7E0C97C2A4D6737544CC004D2B06C077F11A32B6DAC12C8B9F78C27643179C2AAAC6C0C9 +FPneg = 4C030E9E692A503D6F985B7A59EB9314F6B3B1F6A95DCC36EAD4065C7F69EE11ED54DEB95F2BCAF72B428AFFCB81D35748B46E64B52D253C9F3F5462 +FPdiv2 = 2F5A7928CF379D9BCBCEBEB1534964ED6967E186FBCA8D19F3769AF0E48B6A7E3B766FA9DA9CA5F386BB7836C082163743D2F9A89DAE2EC8FA666AFA +FPinv = 25592574D2953F1F7AEDCAF8A7B5EEE935F94B7F29616474A1DF2FB3F0741153F6C0C4DC77FDCE5DFEE0175B584188B302572720E39DE6668A3E6364 +FPexp = 2F5A4FE17EAD24ECFE44F5B0715F3CB213B48EB00FE5E775A0503481763A378082796F6209A9A15846BD9B1B0A8CC6A67A29C62F36C7A71988408FDF + +#test10 +FP_1 = 09DB6332E3465E1B3351FC1622CC9DD7FDF19903CF49F07003A6EADBB8E73FD3037BE3E701FECC76F9564C8353DCB04C1FA1FDAF26B1ADB15AB6ECE8 +FP_2 = 36FA1586F21837088ACA7AE13067FF651C2ED3E43E1002399C32347A13426CBA2A57C297F18EBBA3B5203C1E37E54B6B7D7D2A35D14B5670BA61150B +FPadd = 40D578B9D55E9523BE1C76F753349D3D1A206CE80D59F2A99FD91F55CC29AC8D2DD3A67EF38D881AAE7688A18BC1FBB79D1F27E4F7FD0422151801F3 +FPsub = 283D4E23F4FAECCD2C226DA372A3CCEAC6847FA1E1B3616BD0555480C9E534A00B4500559AA29C426092CE1BC23A64C38A5204544DAB18A7EA5BED08 +FP_1nres = 09DB6332E3465E1B3351FC1622CC9DD7FDF19903CF49F07003A6EADBB8E73FD3037BE3E701FECC76F9564C8353DCB04C1FA1FDAF26B1ADB15AB6ECE8 +FP_2nres = 36FA1586F21837088ACA7AE13067FF651C2ED3E43E1002399C32347A13426CBA2A57C297F18EBBA3B5203C1E37E54B6B7D7D2A35D14B5670BA61150B +FPmulmod = 3ECC55F97DBBFDF544811B866FCE7C18B30818361AD4FE9FFB5F6C348F735C957E624DB31F97D379F3479871BDA56B846AE062EF63AABABFC5ED77AE +FPsmallmul = 0D35DF84DCF2E7557D98EC6EDBBEFBF806AE3FA3C869F12ABBA48E7614C81CB6F0B607FF89C17136A1023F6AA05BE3165426B7FC8AAC0786411F2BE5 +FPsqr = 56EC48C9F5A2F2A9D064B44DE2B5067A76768B4C1831FBBEDF0BEB1013FF6E1D5EA3F71AABFC9D1C7A5A04F21825DBC9D08707884A8C014A65BBDE +FPreduce = 09DB6332E3465E1B3351FC1622CC9DD7FDF19903CF49F07003A6EADBB8E73FD3037BE3E701FECC76F9564C8353DCB04C1FA1FDAF26B1ADB15AB6ECE8 +FPneg = 4B809D452086679F5048F0585D72909FE6D0217E812F82C56539B3436B5921B42EA4FB1F8833BEF82306713352664F96C88B332BD19313B5EF4F2843 +FPdiv2 = 04EDB19971A32F0D99A8FE0B11664EEBFEF8CC81E7A4F83801D3756DDC739FE981BDF1F380FF663B7CAB2641A9EE58260FD0FED79358D6D8AD5B7674 +FPinv = 190689D18F867FD680E895C44C0A161A674249B3A5348BBB64C26504686689710C72181870B326287CCCAD0AB311B132E0FCCB8B48BA4605FF000A15 +FPexp = 2587B613AF5F4EA74A0A7AAAD132BB7A24702CBB26ED8C73BC97A87D2479685AE507BC88928F3DC1AE7B4A51E0D871EBCB87EE21A4812926C6B7FD76 http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto-c/blob/8d28d2c3/testVectors/fp/test_vector_BLS381.txt ---------------------------------------------------------------------- diff --git a/testVectors/fp/test_vector_BLS381.txt b/testVectors/fp/test_vector_BLS381.txt new file mode 100644 index 0000000..b28dfd9 --- /dev/null +++ b/testVectors/fp/test_vector_BLS381.txt @@ -0,0 +1,162 @@ +# FP ARITHMETICS - CURVE: BLS461, Modulus = 0x15555545554d5a555a55d69414935fbd6f1e32d8bacca47b14848b42a8dffa5c1cc00f26aa91557f00400020000555554aaaaaac0000aaaaaaab, BIGmax = 2^461 + +#test1 +FP_1 = 118D1CA65E1FD938679112944D5896F07424B416AF672DE10619B7ED51F70AA5B15989C4CBEA138C3E3F60702C5DC527 +FP_2 = 124C35CCD6C2883A3AD650D2A1869AA95FA588284D8195DFA4A24C3FBD72ADB0D9C2BDAE5FB87F76C8EECEF91F14F3A2 +FPadd = 09D84088FB627AD8574BBBB0AB9384C26F52F0BA0963B101438B318C18B8C2326C7047747A4E93034D2F2F694B730E1E +FPsub = 1941F8C3C0DD379877D66977EF1DA91E78F67773556AAAC0C8A83E4E8B355318F642CC151D8594152F4F91770D487C30 +FP_1nres = 118D1CA65E1FD938679112944D5896F07424B416AF672DE10619B7ED51F70AA5B15989C4CBEA138C3E3F60702C5DC527 +FP_2nres = 124C35CCD6C2883A3AD650D2A1869AA95FA588284D8195DFA4A24C3FBD72ADB0D9C2BDAE5FB87F76C8EECEF91F14F3A2 +FPmulmod = 0F393E9AAA14F439BD32EDB838960EDF237E887E61348D9301F09863CE2D23C4D1A91931235ACB09816D761A5DE25AC8 +FPsmallmul = 137CB302543F14964904CB8571AFD8582EA343C524E95A4DD1DC3F7F6B80A5A0357761B7CF2CC37C127FC461BBABB384 +FPsqr = 04326B36C087B5D83AF1CE28447FF182959ECAE4361B98ED665A2493CAF5F06BD5199D212CC37F58B333FB12BDD73BC5 +FPreduce = 118D1CA65E1FD938679112944D5896F07424B416AF672DE10619B7ED51F70AA5B15989C4CBEA138C3E3F60702C5DC527 +FPneg = 0873F543DB600D61E38A9521F5F315E6F052976E441DE4DE61171AB3A4B9EB7E6D527639E569EC737BBF9F8FD3A1E584 +FPdiv2 = 15C717484BCFDFE959565D25485221E3EC4DFFCDD176205036A5454724540064E802C4E1BE9F09C5FC1F3038162EB7E9 +FPinv = 0ED2060A0126E0F934802DBC1185931C29FFC3222856335B40AECA5A04F217FC68497227ACBDBF5FA44663CD55CF2ACE +FPexp = 047DB38F0EC9B887E4BE98190F74CD6D37D51808371FF954ED4C9A81F7AEF965946CAA1CFF8E9405B6E0297521AFFAFF + +#test2 +FP_1 = 07CFF8739FC78E899F8745677C85E72DF5396CAAC7CB4F0F54C08E359C659F0D8DBA57EACD7D5A0C88F8295352CC0F36 +FP_2 = 186325F90EABFD4B0E742B39686B822FF9CC8868E4CDF00C4FE695A72AE293AD5EE2763AF6143DE43287430D0DD5F9F3 +FPadd = 06320C8274F3A53A62DFC8EAA1A5BC868A8EA98EB9142C5C3D76513BD0973C96CDF0CE27123D97F101806C6060A25E7E +FPsub = 096DE464CA9B77D8DC2EC1E4576611D55FE42FC6D68271C26C0ACB2F683401844D83E1AE88BD1C28106FE64644F5BFEE +FP_1nres = 07CFF8739FC78E899F8745677C85E72DF5396CAAC7CB4F0F54C08E359C659F0D8DBA57EACD7D5A0C88F8295352CC0F36 +FP_2nres = 186325F90EABFD4B0E742B39686B822FF9CC8868E4CDF00C4FE695A72AE293AD5EE2763AF6143DE43287430D0DD5F9F3 +FPmulmod = 09AD2B59E0C6FF6B9C857869D2B02103039F3AAA931832FDF612242C79C2F27F6573063CBF8F54F0A619CCED5D5FCCBC +FPsmallmul = 1C7EC5914BDD9159F5BEE81358014566D85C1CF361DE5B19F3163537E5541B2D436F2FF2E9847E2BB49D413BF9981B +FPsqr = 15F2CA567521C0CDDEC20C1EEB9A806DD744ED325518F1A64A3B83278025530A419F3E5C159F75FFC7AD5B681F263FC1 +FPreduce = 07CFF8739FC78E899F8745677C85E72DF5396CAAC7CB4F0F54C08E359C659F0D8DBA57EACD7D5A0C88F8295352CC0F36 +FPneg = 1231197699B85810AB94624EC6C5C5A96F3DDEDA2BB9C3B01270446B5A4B571690F1A813E3D6A5F33106D6ACAD339B75 +FPdiv2 = 03E7FC39CFE3C744CFC3A2B3BE42F396FA9CB65563E5A787AA60471ACE32CF86C6DD2BF566BEAD06447C14A9A966079B +FPinv = 02191DFF9BD68D11F0F2D2B659DF688578AAACDC74251EFE6B459B23DFC8BE09C675A01B7F07FA3A76F06FFCD8880CF5 +FPexp = 0C82A5C35E9D48222669F5CDE9F37382A1DD0776F2EDA09BF21E5E7BE4BF173E2460FCA98CB322FD7AB5524C965A8E94 + +#test3 +FP_1 = 074EDE8013509B1B983D4A71A5620F99AD5DFE2EF3E5DDDE6B4DB4C9AEACE3C63198DA3951ECDC9B871502C1A8D022A5 +FP_2 = 0CA784C3951643B58FD58BD24F5B54ADE8A2680E90627CB1B380DF654EEB40387870E3EEF583097AE154AFB3BD881965 +FPadd = 13F66343A866DED12812D643F4BD64479600663D84485A901ECE942EFD9823FEAA09BE28476FE6166869B27566583C0A +FPsub = 14A86BA6B7BA3E0053836655995267C32932E1A5570873EC1EFDA805567299B1D7D3F6490DBDD3205FBF530DEB47B3EB +FP_1nres = 074EDE8013509B1B983D4A71A5620F99AD5DFE2EF3E5DDDE6B4DB4C9AEACE3C63198DA3951ECDC9B871502C1A8D022A5 +FP_2nres = 0CA784C3951643B58FD58BD24F5B54ADE8A2680E90627CB1B380DF654EEB40387870E3EEF583097AE154AFB3BD881965 +FPmulmod = 0A874E0FF99DF22C7230CAA0E5F0C365EB29BF3D10DF9737AD209515A3EA58EDD9B7B7EB35B46775A096C4872CD00C76 +FPsmallmul = 15128D2C4E2641DF5C2D9903EF3D4251FCBD56CB9FF0853162A76A9EE55EF975B2A0863FD0989E13D2D41B909822051C +FPsqr = 0E56DCAFB26DAD14A4088B153541B7F730DAE310ABEE29DE6DF01CFB6F18B2D947A1956978F1A9EE7356A12489682AC9 +FPreduce = 074EDE8013509B1B983D4A71A5620F99AD5DFE2EF3E5DDDE6B4DB4C9AEACE3C63198DA3951ECDC9B871502C1A8D022A5 +FPneg = 12B2336A262F4B7EB2DE5D449DE99D3DB7194D55FF9F34E0FBE31DD74804125DED1325C55F67236432E9FD3E572F8806 +FPdiv2 = 10A7F835266840DAF1AC7913F456DE3888EAA4D9F3B5784EE93F43B552AEECF528226D1C01A06E4DA08A0160D467E6A8 +FPinv = 0BDEA0E3A9781CE2AEEAD5425316BC7316655BAB7A6D79ED4159E735EB33AA40994E1BD05CB101C38F70B1CED107DC59 +FPexp = 010EE51BD08245CF38102535900B2BF387CD5F935A78A478ED5122D76716CFECEB55715A7D7C8EDC9E4A4A9618CEF8B6 + +#test4 +FP_1 = 044D3E518A53445F98B98A4FFE76F6756D38395D37E00D9329498DD5CE0BAF6F8AB5E460E8E1234B3A1C3D2607542C38 +FP_2 = 018694C80540BF379F0726FAB288BC330F3118F338F8C6A9D8C533174A16F7EDB575682E59496BC0A232253D9264A60D +FPadd = 05D3D3198F94039737C0B14AB0FFB2A87C69525070D8D43D020EC0ED1822A75D402B4C8F422A8F0BDC4E626399B8D245 +FPsub = 02C6A98985128527F9B263554BEE3A425E072069FEE746E950845ABE83F4B781D5407C328F97B78A97EA17E874EF862B +FP_1nres = 044D3E518A53445F98B98A4FFE76F6756D38395D37E00D9329498DD5CE0BAF6F8AB5E460E8E1234B3A1C3D2607542C38 +FP_2nres = 018694C80540BF379F0726FAB288BC330F3118F338F8C6A9D8C533174A16F7EDB575682E59496BC0A232253D9264A60D +FPmulmod = 15B712576E4D6144DD8CCFDD08EB8E19FB1CBA13BCA832ECED4E37D56B7AE041EBC60ED23BDF64A35DE96328683EAD81 +FPsmallmul = 11035D452DC0C521AC23BF69AD59F3BEDFBAF21F3B3B750035AEB7B915C3E4374C6EEBCA677760F08B1B637C494A0F85 +FPsqr = 1405769BEFCAB1A7BCF1C9EBDA1328708C0F12D1140C5F6B18188EF66DFB5EA15D7C8BE24B9F706F4A6C460D161CC4A2 +FPreduce = 044D3E518A53445F98B98A4FFE76F6756D38395D37E00D9329498DD5CE0BAF6F8AB5E460E8E1234B3A1C3D2607542C38 +FPneg = 15B3D398AF2CA23AB2621D6644D4B661F73F1227BBA5052C3DE744CB28A546B493F61B9DC872DCB47FE2C2D9F8AB7E73 +FPdiv2 = 02269F28C529A22FCC5CC527FF3B7B3AB69C1CAE9BF006C994A4C6EAE705D7B7C55AF230747091A59D0E1E9303AA161C +FPinv = 11FB2E672E9DAEE0080ED73C689905AB889058CB216EAD70025BCFEBA59A417AF033909196A8BA68407AB582C1622A2C +FPexp = 1902D025129118B51530255C2BECBC670AF9005A68A4FA90317118D0DE04B620CDE603680FFC76FE7CA405A01391F7F8 + +#test5 +FP_1 = 0487D0659A994B765D13DDDA32585508B4CD22FFCB90F9A423A3C4847A240E46F94303326CF47ED459F26BE65FAF1A27 +FP_2 = 16053BDD5181FA0A8D0B5F01C69B1D11CFB877E651656B87A51B349B9A6DEE114692FD9F309F422656F3BD2C87442FB5 +FPadd = 8BFA58B29B5EE69F039525B5A7C543200E4F612971526C618E267F1DE10634212A00D2EC3FC0FAF6E72912E6F39F31 +FPsub = 0883A672829738061B24268EAF08E4CE498BF69E6DB0A0DBE5B96289D6671659D15C0591EDA93CADBCFDAEB9D86A951D +FP_1nres = 0487D0659A994B765D13DDDA32585508B4CD22FFCB90F9A423A3C4847A240E46F94303326CF47ED459F26BE65FAF1A27 +FP_2nres = 16053BDD5181FA0A8D0B5F01C69B1D11CFB877E651656B87A51B349B9A6DEE114692FD9F309F422656F3BD2C87442FB5 +FPmulmod = 190C55B1BDEEFDDD47C5CC2B4A4BA2C567E5E049AD900D93D609F933C63095F8F2335A61986D7BC4EA96D6F7035345E3 +FPsmallmul = 134D120DD07D0C0557AB02CFB427A57FAB8C12790024ADA9FD34DA8BCEB798A19DF21FF99038F44BC97936FFBCD75ADB +FPsqr = 126C39E69CD000D884E3D6E73DDF4AA8CA185B6E20C7635016426C15E38A7E2C8D39866A1171539CCE97FD3844EB0BED +FPreduce = 0487D0659A994B765D13DDDA32585508B4CD22FFCB90F9A423A3C4847A240E46F94303326CF47ED459F26BE65FAF1A27 +FPneg = 157941849EE69B23EE07C9DC10F357CEAFAA288527F4191B438D0E1C7C8CE7DD2568FCCC445F812B600C9419A0509084 +FPdiv2 = 0F447127EA0C99085417C2C83AD200F00CA237425F8B0631C56A4B92B86A82358BF781988F243F6A09F8B5F32FD76269 +FPinv = 02D7B94BAB74247698E6D6A1E3D5DBB2D5B9BDEB14BFFCFA979945B825761216AA9721CDB46017EFBBEA2C5E9664F397 +FPexp = 0DC5F8D1E9B51D6132CB0324A692F2A9487CC2B49EE5BA265FF08002E49C13657276C0983A0D228C23F498811D258A6D + +#test6 +FP_1 = BC0E32396257A71515C2317FFE491E6624CCB645945CF2CC115F3F355DFD0608EBCB4BB39A8EC94E97BB33ECA0C560 +FP_2 = 0EBE140CBDC065E8075FB0EB816B4EB804270E4056098873D3D34146951479F6830E093B262E0A8B5B0EC47A7FC04BC9 +FPadd = 0F7A223EF722BD8F1C75731D016997D66A4BDAF69B9DE5669FE4A085CA7276FC8BF9D486D9C89954A9A67FAE6C611129 +FPsub = 0BFF0C0FB521D85958D1B8FC41DEA73DC67509FAE30FE73E5F6EF09996FA7933A489C20F3EC0843DAD87F6B96CE02442 +FP_1nres = BC0E32396257A71515C2317FFE491E6624CCB645945CF2CC115F3F355DFD0608EBCB4BB39A8EC94E97BB33ECA0C560 +FP_2nres = 0EBE140CBDC065E8075FB0EB816B4EB804270E4056098873D3D34146951479F6830E093B262E0A8B5B0EC47A7FC04BC9 +FPmulmod = 152540B13FD0CCCF78BE19F24B239AE483BB3486BBEBECF17CF388AD92098AC55E0041747E44F7A9D71BD71308386BD2 +FPsmallmul = 07588DF63DD76C86D2D995EEFFEEDB2FFD6FFF1EB7CBA17BF8ADB87815ABE23C5935F0F5040993DD11ED50073E47B5C0 +FPsqr = 0C03DD2087F3B0BC7F7F37158E0086C6A60188DCAB5AD2FF19EF0DE4EB45EF774BE2C953FC0BCFF33C5D4D3473C456D8 +FPreduce = BC0E32396257A71515C2317FFE491E6624CCB645945CF2CC115F3F355DFD0608EBCB4BB39A8EC94E97BB33ECA0C560 +FPneg = 194503B8001D8EF33605E584C34D63B8FE527ECEADF0B5CC9B1F7361C152F91E15C034B2FDB971366B6744CC135EE54B +FPdiv2 = 5E07191CB12BD38A8AE118BFFF248F3312665B22CA2E796608AF9F9AAEFE830475E5A5D9CD4764A74BDD99F65062B0 +FPinv = 0BDC76CF66958C1BC353683254A99AEB1C67AA489226B6B8B5BEBA8F49B37FF301FEC3C841B80F9A36865AA06A2FFDAF +FPexp = 14AE413BE53CB03CDE98770D7994184BF843B2E48D5F743207593BCD1268543BAEC6882E98232ECE489B3091DAFAD346 + +#test7 +FP_1 = 05587AC743D03ECC6C899306CF826CB0E3E4E5CD6E6BC0BD12AB87DE9957579C17B22B9E9DA662F8CEED47AF33E6F696 +FP_2 = 07089B5CBEA01474A4C0A5997FBE56D1B57991FB6513109AA91EEC5E08B74FD061EF0DADA29F5C210D1E1FC2D66ECD48 +FPadd = 0C61162402705341114A38A04F40C382995E77C8D37ED157BBCA743CA20EA76C79A1394C4045BF19DC0B67720A55C3DE +FPsub = 1850F154BEB010F212E49523930FC2B692E29F56FCDDC2E1D0BD6E218750FDEFD46F1DEFAC5B06D77BCE27EC5D77D3F9 +FP_1nres = 05587AC743D03ECC6C899306CF826CB0E3E4E5CD6E6BC0BD12AB87DE9957579C17B22B9E9DA662F8CEED47AF33E6F696 +FP_2nres = 07089B5CBEA01474A4C0A5997FBE56D1B57991FB6513109AA91EEC5E08B74FD061EF0DADA29F5C210D1E1FC2D66ECD48 +FPmulmod = 0411BEA8C05C42054DE769D7CC1AB24F7C259DC0F7723BDB1B4898EC82AA35AD0D363352B86D3E27BEFB34FDCE1E57FE +FPsmallmul = 0172A7F43322A6C7A7286ED79480E53A1E0262FC692B61E3EC51A97010077FD0AF9DB434C5D7DDB8A146CCD807064C86 +FPsqr = 138BB29738AE3E8140E3795115B44D68C20A89A710DA93BAE76DF9E676C213F929523217BE962D7C6D596E2D86666ED4 +FPreduce = 05587AC743D03ECC6C899306CF826CB0E3E4E5CD6E6BC0BD12AB87DE9957579C17B22B9E9DA662F8CEED47AF33E6F696 +FPneg = 14A89722F5AFA7CDDE9214AF73C94026809265B78519520254854AC25D599E8806F9D46013AD9D06EB11B850CC18B415 +FPdiv2 = 02AC3D63A1E81F663644C98367C1365871F272E6B735E05E8955C3EF4CABABCE0BD915CF4ED3317C6776A3D799F37B4B +FPinv = 08EE0443C9637DD8DFD581005E959FE80995859047658F9128565265C41A85511976CF1BE9CD24545CD74E2C76B847B8 +FPexp = 04E2CD5F8F28B91C3C0D47BD6D30E7D11CC9573B215B6B4B80534D5D3272017141FA0BA9A64C1D242F9F2AF5E2B33D0C + +#test8 +FP_1 = 0BE94A689CD9B85949497DF595DDE5600997AD28862A8944D6BB768C045D3A8B92EBC34B61C8663AAE1B4E1676157E2F +FP_2 = 17A5B3E8FF43E6752EC9499DEDF3E86750A99DD13C47B5711D6269A69DC71D6530EF41EB0A448982CDCA1D4590FE009B +FPadd = 098DEC67629DB8342CF71FDD408620EFF5C9FF74CEED2BF68CED0D91AB7361CCA52F0537BAB8EFBDC1E66B5C0713D41F +FPsub = 0E44A869D715B87E659BDC0DEB35A9D01D655ADC3D67E6932089DF865D47134A80A8815F08D7DCB79A5030D0E517283F +FP_1nres = 0BE94A689CD9B85949497DF595DDE5600997AD28862A8944D6BB768C045D3A8B92EBC34B61C8663AAE1B4E1676157E2F +FP_2nres = 17A5B3E8FF43E6752EC9499DEDF3E86750A99DD13C47B5711D6269A69DC71D6530EF41EB0A448982CDCA1D4590FE009B +FPmulmod = 12E6AA0C275591FDBB0B95D0867E00BD306ABCB69FEAE3A1645699B72EB1BEFB4CB05ADF400481AAC785F58814F1F397 +FPsmallmul = 0F18A06D3A819913B0704CBECD7C4262CE0F95816F9511B2C68F56F450E070E34285A0F70C83FE4BE5150CE09CD8432A +FPsqr = 124BCE851E1361D3E5D3F1B83D3FCAD57D83DEC7C551CED90254DC83749D1A725545D14E9CCC86A42472BC79CD700C77 +FPreduce = 0BE94A689CD9B85949497DF595DDE5600997AD28862A8944D6BB768C045D3A8B92EBC34B61C8663AAE1B4E1676157E2F +FPneg = 0E17C7819CA62E4101D229C0AD6DC7775ADF9E5C6D5A897A90755C14F253BB988BC03CB34F8B99C50BE3B1E989EA2C7C +FPdiv2 = 12F52E296B2CCF79CA3292D5EC94C91BB7077C56BCD7CE021EF624967D871857D8CBE1A5098E331D340D270B3B0A946D +FPinv = 0E90715CA2B810C02DE878C392BC17C9E0327B84B684F1D248556BC65A01D64A4626520A355873EDC71AF609F0BBB9D2 +FPexp = 0349C8A45496079F3DC8232D23F52E59C5E6096F4476E42D0997339D6D5689E2645C63D12A0299D26BFAE7085F98CF1C + +#test9 +FP_1 = B24207BC80A135AE53268A42C9A881F462FFF4F76EA969D33B1AE4B387345E9B81733A1B847B2DA308529E5E65C9F1 +FP_2 = 160109B28DCE861DD6C9AAF4A326A0F05CADF44BC333568BFAEE972AF384417C87EFF1B5D471F23916E5146127CCBC74 +FPadd = 16B34BBA4A4F2753851CD17EE5F049725110F440BAA1FFF5CE29B20FA70B75DB237164EFEFF66D66B9ED66FF86328665 +FPsub = 04B24A3F683201B222A5234BE2EEB468FC2C572E27C0659D3F7D565AB6B3E906323D8182F86688F446223E3D3698B828 +FP_1nres = B24207BC80A135AE53268A42C9A881F462FFF4F76EA969D33B1AE4B387345E9B81733A1B847B2DA308529E5E65C9F1 +FP_2nres = 160109B28DCE861DD6C9AAF4A326A0F05CADF44BC333568BFAEE972AF384417C87EFF1B5D471F23916E5146127CCBC74 +FPmulmod = 19D1B6EF7238FB921DD2D7B48FB247FE5B6E7ABFBB7B2AD8826812565AD609A9E212B3085C1507A2B9D7B8E665B98A7E +FPsmallmul = 06F6944D5D064C18CF3F81669BE095138BDDFF91AA529E22404F0CEF03480BB2130E8045132CCFC85E533A2FAFF9E36A +FPsqr = 0A9A3006BED7DBBD0952F57AAC30ED102027E77F43029244F4594418CB54AF40ECFD94395C7BBC14554956B66F42C309 +FPreduce = B24207BC80A135AE53268A42C9A881F462FFF4F76EA969D33B1AE4B387345E9B81733A1B847B2DA308529E5E65C9F1 +FPneg = 194ECFE27CFF45649CC8812C0082045570144B8FFC16695593F5B7BC4329C1C5832A8CC495CF84D216F6AD61A199E0BA +FPdiv2 = 0D59A9F8FB0043E7FCB76720430AAAACAC6D25BCF579DE149D35F6C2D51C15415D16B99C666C3D96AE83A94F2F32BA4E +FPinv = 187BF4AB39E9C16BE00C74246EDC36BC7E2F9FBBAA260E2977BFD8BE1E8F727B6F4EFA14C7D9991AA18BF07CAD87B9FA +FPexp = 175D4172843620348251D7CBA37FA230D7697AABB01047A55BA953003542599EC8FA09931903395AD06F826ACE3F3ED1 + +#test10 +FP_1 = 086CA02133F9E4B7AC53456F2A773532FEE2613855A0855957E3DE9A8BA3081EE08A3643A20E09EC7FA3B0AA75ED64BD +FP_2 = 155C48EFA1F6BB5B783BA4724C2B8E9945DE4E1C2696CAE5E16201B92F078B5185D13104333B33F42C9F1F8717768927 +FPadd = 03C7D7269C70B978D973422B335716F4E04963CF88B23D7FD2150DB2C3F99D4C47AF674923F53DE0F243D0318D644339 +FPsub = 0D11691BCB830FF67F3348B3219753711D7B5EA1228ECD32DDB2AF82534C72F17965053E2026D5F80D0391235E768641 +FP_1nres = 086CA02133F9E4B7AC53456F2A773532FEE2613855A0855957E3DE9A8BA3081EE08A3643A20E09EC7FA3B0AA75ED64BD +FP_2nres = 155C48EFA1F6BB5B783BA4724C2B8E9945DE4E1C2696CAE5E16201B92F078B5185D13104333B33F42C9F1F8717768927 +FPmulmod = 11D43FC8902A380A1EC9307C7EB2E69776FE29E0F73CDFA887059000AB95AAE1D9B822C3600F4F1C8117A25F8DDC48C4 +FPsmallmul = 063B0B8D5B433B5DD9EDBF34DEC50D77C771E9A47DB5FD3F39543A26904B6EC869621EA84090633DCE67E6A89B46EF61 +FPsqr = 17216F6FA2BB7386A26FBEA772E7D62820AD7CE6CAC24967408E2FE5C26E400161BB86CC8897309D5CD30AA06960A8C0 +FPreduce = 086CA02133F9E4B7AC53456F2A773532FEE2613855A0855957E3DE9A8BA3081EE08A3643A20E09EC7FA3B0AA75ED64BD +FPneg = 119471C9058601E29EC8624718D477A46594EA4C9DE48D660F4CF4066B0DEE053E21C9BB0F45F6133A5B4F558A1245EE +FPdiv2 = 1136D905B6BCE5A8FBB77692B6E1710531ACD65EA492CC0C5F8A589DC129FF217F9B1B2129B104F61CD158553AF687B4 +FPinv = 0258B01D35ED57E08B372CAD4F75F61F4CA3FD4511654E78135CBEF04667004505C5A324AE328753BF810EF326F65E60 +FPexp = 050B4C40E5F7C30459189626AC797BC90BD0657958CC6CB9EFFDB0E6D420374959F7C95EC97BD86184108495B00A60AF +cd \ No newline at end of file
