http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_curve_FP512BN.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_curve_FP512BN.c b/version3/c/rom_curve_FP512BN.c new file mode 100644 index 0000000..fa29e20 --- /dev/null +++ b/version3/c/rom_curve_FP512BN.c @@ -0,0 +1,87 @@ +#include "arch.h" +#include "ecp_FP512BN.h" + +/* Curve FP512BN - Pairing friendly BN curve */ + +/* ISO curve */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 + +const int CURVE_Cof_I_FP512BN= 1; +const int CURVE_A_FP512BN= 0; +const int CURVE_B_I_FP512BN= 3; +const BIG_512_29 CURVE_B_FP512BN= {0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const BIG_512_29 CURVE_Order_FP512BN= {0x119A09ED,0x153252FA,0x1E68AD01,0x627C09,0x79A34A1,0x12EF5593,0x2E39231,0x3D597D3,0x45146CF,0x88D877A,0x102EF8F0,0x1196A60F,0x1C60BA1D,0x1CF63F80,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x7FFFF}; +const BIG_512_29 CURVE_Gx_FP512BN= {0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const BIG_512_29 CURVE_Gy_FP512BN= {0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; + +const BIG_512_29 CURVE_Bnx_FP512BN= {0x1E1BD80F,0x59835DA,0xC3DFC04,0x5EB8061,0x688,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const BIG_512_29 CURVE_Cof_FP512BN= {0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; + +const BIG_512_29 CURVE_Cru_FP512BN= {0x1C79298A,0x1838B104,0x2C5F052,0x1DCCF337,0x6092AEC,0x4B35F29,0x1EB361E,0x11384EA,0x3074B20,0x17BB08FD,0x3A8B3E3,0xD70D66F,0x3D2A614,0x1CF63EE4,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x7FFFF}; + +const BIG_512_29 CURVE_Pxa_FP512BN= {0xDB646B5,0x183D4B70,0x1CBFFA3,0x11F0E632,0x1C78F221,0x1F10DE5D,0x171B715E,0xF0C6A29,0x10B02453,0xBE63C66,0xE6D5F69,0x166B1E1B,0x4BBBD29,0x179E750F,0x6E9D04,0xC912B10,0x1339E138,0x1D8B2}; +const BIG_512_29 CURVE_Pxb_FP512BN= {0x1A8AE0E9,0xDAE5F7E,0x22446CF,0x1948239B,0x15ADCE40,0xB709C1E,0x18357943,0xE50AA4D,0x19781E22,0x12B35CA6,0x11DAA2C0,0x18D8DDE4,0x5EA656D,0x15F45A41,0xD311A02,0xCFCD913,0x13CBF850,0x240E0}; +const BIG_512_29 CURVE_Pya_FP512BN= {0xDDE67A1,0x12401895,0x17BEE178,0x142F5AC2,0xB7BC5CD,0x92A1404,0x1A3B748C,0x17BD82A7,0x14B6CD18,0xAC34CE,0x1740FB97,0x1ECC15F9,0x17085B1D,0x1D1BA793,0x1BD6AC32,0x18F70525,0xC84C827,0x3780F}; +const BIG_512_29 CURVE_Pyb_FP512BN= {0x84F8E8B,0xC5B8C36,0xFDD85A1,0xB84449,0x19C08DFF,0x56BF713,0x1C5290C4,0x187C5CA0,0x1DA2897F,0x24B0CA0,0x326D8F4,0x2310CF6,0x1021438C,0xFBAEC8F,0xD9030C5,0x1CF06358,0x1CEC8B04,0x28D1D}; +const BIG_512_29 CURVE_W_FP512BN[2]= {{0x9834583,0x887C4BA,0x5A85CFC,0xBF7223A,0xF63FE96,0x1FFFFFFE,0x1FFFFFFF,0x1FFFFFFF,0xFFFFFF,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x1C37B01F,0xB306BB5,0x187BF808,0xBD700C2,0xD10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}}; +const BIG_512_29 CURVE_SB_FP512BN[2][2]= {{{0xD4B9564,0x1D575904,0xD2C64F3,0x202177,0xF63F186,0x1FFFFFFE,0x1FFFFFFF,0x1FFFFFFF,0xFFFFFF,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x156259CE,0xA01E744,0x5ECB4F9,0x148B7B47,0x79A2790,0x12EF5593,0x2E39231,0x3D597D3,0x45146CF,0x88D877A,0x102EF8F0,0x1196A60F,0x1C60BA1D,0x1CF63F80,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x7FFFF}},{{0x1C37B01F,0xB306BB5,0x187BF808,0xBD700C2,0xD10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x9834583,0x887C4BA,0x5A85CFC,0xBF7223A,0xF63FE96,0x1FFFFFFE,0x1FFFFFFF,0x1FFFFFFF,0xFFFFFF,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}}}; +const BIG_512_29 CURVE_WB_FP512BN[4]= {{0x155A29F0,0x16D59B55,0xF4C305,0x18858C0B,0x5215FBF,0xAAAAAAA,0x15555555,0xAAAAAAA,0x555555,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x2355D4B,0x1758095D,0x1FE13C5F,0x41F83FA,0xBB5E5CF,0x97D4EF1,0xB503D62,0x172C0C9B,0x16315274,0x15E1A9A8,0x859835D,0x2C3DFC0,0x105EB806,0x68,0x0,0x0,0x0,0x0},{0x289AAD,0x1E781F9C,0x60F9C31,0x1505822E,0x15DAF62B,0x4BEA778,0x15A81EB1,0xB96064D,0xB18A93A,0x1AF0D4D4,0x42CC1AE,0x161EFE0,0x82F5C03,0x34,0x0,0x0,0x0,0x0},{0x192279D1,0xBA52F9F,0x878CAFD,0xCAE8B48,0x52152AF,0xAAAAAAA,0x15555555,0xAAAAAAA,0x555555,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}}; +const BIG_512_29 CURVE_BB_FP512BN[4][4]= {{{0x1E1BD810,0x59835DA,0xC3DFC04,0x5EB8061,0x688,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, + {0x1E1BD80F,0x59835DA,0xC3DFC04,0x5EB8061,0x688,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, + {0x1E1BD80F,0x59835DA,0xC3DFC04,0x5EB8061,0x688,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, + {0x156259CF,0xA01E744,0x5ECB4F9,0x148B7B47,0x79A2790,0x12EF5593,0x2E39231,0x3D597D3,0x45146CF,0x88D877A,0x102EF8F0,0x1196A60F,0x1C60BA1D,0x1CF63F80,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x7FFFF} + }, + { {0x1C37B01F,0xB306BB5,0x187BF808,0xBD700C2,0xD10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, + {0x137E31DE,0xF9A1D1F,0x122AB0FD,0x1A76FBA8,0x79A2E18,0x12EF5593,0x2E39231,0x3D597D3,0x45146CF,0x88D877A,0x102EF8F0,0x1196A60F,0x1C60BA1D,0x1CF63F80,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x7FFFF}, + {0x137E31DD,0xF9A1D1F,0x122AB0FD,0x1A76FBA8,0x79A2E18,0x12EF5593,0x2E39231,0x3D597D3,0x45146CF,0x88D877A,0x102EF8F0,0x1196A60F,0x1C60BA1D,0x1CF63F80,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x7FFFF}, + {0x137E31DE,0xF9A1D1F,0x122AB0FD,0x1A76FBA8,0x79A2E18,0x12EF5593,0x2E39231,0x3D597D3,0x45146CF,0x88D877A,0x102EF8F0,0x1196A60F,0x1C60BA1D,0x1CF63F80,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x7FFFF} + }, + { {0x1C37B01E,0xB306BB5,0x187BF808,0xBD700C2,0xD10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, + {0x1C37B01F,0xB306BB5,0x187BF808,0xBD700C2,0xD10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, + {0x1C37B01F,0xB306BB5,0x187BF808,0xBD700C2,0xD10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, + {0x1C37B01F,0xB306BB5,0x187BF808,0xBD700C2,0xD10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0} + }, + { {0x137E31DF,0xF9A1D1F,0x122AB0FD,0x1A76FBA8,0x79A2E18,0x12EF5593,0x2E39231,0x3D597D3,0x45146CF,0x88D877A,0x102EF8F0,0x1196A60F,0x1C60BA1D,0x1CF63F80,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x7FFFF}, + {0x192AA9AF,0x1ED17B8E,0xD70BCF0,0x8B47A84,0x79A1A80,0x12EF5593,0x2E39231,0x3D597D3,0x45146CF,0x88D877A,0x102EF8F0,0x1196A60F,0x1C60BA1D,0x1CF63F80,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x7FFFF}, + {0x1C37B01D,0xB306BB5,0x187BF808,0xBD700C2,0xD10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, + {0x137E31DF,0xF9A1D1F,0x122AB0FD,0x1A76FBA8,0x79A2E18,0x12EF5593,0x2E39231,0x3D597D3,0x45146CF,0x88D877A,0x102EF8F0,0x1196A60F,0x1C60BA1D,0x1CF63F80,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x7FFFF} + } +}; + + +#endif + +#if CHUNK==64 + +const int CURVE_Cof_I_FP512BN= 1; +const int CURVE_A_FP512BN= 0; +const int CURVE_B_I_FP512BN= 3; +const BIG_512_60 CURVE_B_FP512BN= {0x3L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}; +const BIG_512_60 CURVE_Order_FP512BN= {0x6A64A5F519A09EDL,0x10313E04F9A2B40L,0xC65DEAB2679A34AL,0xCF1EACBE98B8E48L,0x3C111B0EF445146L,0xA1D8CB5307C0BBEL,0xFFFF9EC7F01C60BL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFL}; +const BIG_512_60 CURVE_Gx_FP512BN= {0x1L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}; +const BIG_512_60 CURVE_Gy_FP512BN= {0x2L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}; + +const BIG_512_60 CURVE_Bnx_FP512BN= {0xB306BB5E1BD80FL,0x82F5C030B0F7F01L,0x68L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}; +const BIG_512_60 CURVE_Cof_FP512BN= {0x1L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}; + +const BIG_512_60 CURVE_Cru_FP512BN= {0xB0716209C79298AL,0xCEE6799B8B17C14L,0x78966BE526092AEL,0x20089C27507ACD8L,0xF8EF7611FA3074BL,0x6146B86B378EA2CL,0xFFFF9EC7DC83D2AL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFL}; + +const BIG_512_60 CURVE_Pxa_FP512BN= {0xF07A96E0DB646B5L,0x18F87319072FFE8L,0x7BE21BCBBC78F22L,0x537863514DC6DC5L,0xDA57CC78CD0B024L,0xD29B358F0DB9B57L,0x7412F3CEA1E4BBBL,0xE138648958801BAL,0x3B165339L}; +const BIG_512_60 CURVE_Pxb_FP512BN= {0xDB5CBEFDA8AE0E9L,0xCA411CD88911B3L,0xD6E1383D5ADCE4L,0x227285526E0D5E5L,0xB02566B94D9781EL,0x56DC6C6EF2476A8L,0x680ABE8B4825EA6L,0xF85067E6C89B4C4L,0x481C13CBL}; +const BIG_512_60 CURVE_Pya_FP512BN= {0x2480312ADDE67A1L,0xDA17AD615EFB85EL,0x312542808B7BC5CL,0x18BDEC153E8EDD2L,0xE5C158699D4B6CDL,0xB1DF660AFCDD03EL,0xB0CBA374F277085L,0xC827C7B8292EF5AL,0x6F01EC84L}; +const BIG_512_60 CURVE_Pyb_FP512BN= {0x58B7186C84F8E8BL,0xF05C2224BF76168L,0x10AD7EE279C08DFL,0x7FC3E2E50714A43L,0x3D04961941DA289L,0x38C118867B0C9B6L,0xC315F75D91F0214L,0x8B04E7831AC3640L,0x51A3BCECL}; +const BIG_512_60 CURVE_W_FP512BN[2]= {{0x110F89749834583L,0x65FB911D16A173FL,0xFFFFFFFFCF63FE9L,0xFFFFFFFFFFFFFFFL,0xFFFFL,0x0L,0x0L,0x0L,0x0L},{0x1660D76BC37B01FL,0x5EB806161EFE02L,0xD1L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}}; +const BIG_512_60 CURVE_SB_FP512BN[2][2]= {{{0xFAAEB208D4B9564L,0x601010BBB4B193CL,0xFFFFFFFFCF63F18L,0xFFFFFFFFFFFFFFFL,0xFFFFL,0x0L,0x0L,0x0L,0x0L},{0x5403CE8956259CEL,0xA45BDA397B2D3EL,0xC65DEAB2679A279L,0xCF1EACBE98B8E48L,0x3C111B0EF445146L,0xA1D8CB5307C0BBEL,0xFFFF9EC7F01C60BL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFL}},{{0x1660D76BC37B01FL,0x5EB806161EFE02L,0xD1L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L},{0x110F89749834583L,0x65FB911D16A173FL,0xFFFFFFFFCF63FE9L,0xFFFFFFFFFFFFFFFL,0xFFFFL,0x0L,0x0L,0x0L,0x0L}}}; +const BIG_512_60 CURVE_WB_FP512BN[4]= {{0x6DAB36AB55A29F0L,0xFC42C60583D30C1L,0x5555555545215FBL,0x555555555555555L,0x5555L,0x0L,0x0L,0x0L,0x0L},{0xEEB012BA2355D4BL,0xF20FC1FD7F84F17L,0x892FA9DE2BB5E5CL,0x74B96064DAD40F5L,0xD76BC3535163152L,0x806161EFE021660L,0xD105EBL,0x0L,0x0L},{0x7CF03F380289AADL,0xBA82C117183E70CL,0xC497D4EF15DAF62L,0x3A5CB0326D6A07AL,0x6BB5E1A9A8B18A9L,0xC030B0F7F010B30L,0x6882F5L,0x0L,0x0L},{0x574A5F3F92279D1L,0xF65745A421E32BFL,0x55555555452152AL,0x555555555555555L,0x5555L,0x0L,0x0L,0x0L,0x0L}}; +const BIG_512_60 CURVE_BB_FP512BN[4][4]= {{{0xB306BB5E1BD810L,0x82F5C030B0F7F01L,0x68L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L},{0xB306BB5E1BD80FL,0x82F5C030B0F7F01L,0x68L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L},{0xB306BB5E1BD80FL,0x82F5C030B0F7F01L,0x68L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L},{0x5403CE8956259CFL,0xA45BDA397B2D3EL,0xC65DEAB2679A279L,0xCF1EACBE98B8E48L,0x3C111B0EF445146L,0xA1D8CB5307C0BBEL,0xFFFF9EC7F01C60BL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFL}},{{0x1660D76BC37B01FL,0x5EB806161EFE02L,0xD1L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L},{0x5F343A3F37E31DEL,0x8D3B7DD448AAC3FL,0xC65DEAB2679A2E1L,0xCF1EACBE98B8E48L,0x3C111B0EF445146L,0xA1D8CB5307C0BBEL,0xFFFF9EC7F01C60BL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFL},{0x5F343A3F37E31DDL,0x8D3B7DD448AAC3FL,0xC65DEAB2679A2E1L,0xCF1EACBE98B8E48L,0x3C111B0EF445146L,0xA1D8CB5307C0BBEL,0xFFFF9EC7F01C60BL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFL},{0x5F343A3F37E31DEL,0x8D3B7DD448AAC3FL,0xC65DEAB2679A2E1L,0xCF1EACBE98B8E48L,0x3C111B0EF445146L,0xA1D8CB5307C0BBEL,0xFFFF9EC7F01C60BL,0xFFFFFFFFFFFFFFFL,0x FFFFFFFFL}},{{0x1660D76BC37B01EL,0x5EB806161EFE02L,0xD1L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L},{0x1660D76BC37B01FL,0x5EB806161EFE02L,0xD1L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L},{0x1660D76BC37B01FL,0x5EB806161EFE02L,0xD1L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L},{0x1660D76BC37B01FL,0x5EB806161EFE02L,0xD1L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}},{{0x5F343A3F37E31DFL,0x8D3B7DD448AAC3FL,0xC65DEAB2679A2E1L,0xCF1EACBE98B8E48L,0x3C111B0EF445146L,0xA1D8CB5307C0BBEL,0xFFFF9EC7F01C60BL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFL},{0x3DA2F71D92AA9AFL,0x45A3D4235C2F3CL,0xC65DEAB2679A1A8L,0xCF1EACBE98B8E48L,0x3C111B0EF445146L,0xA1D8CB5307C0BBEL,0xFFFF9EC7F01C60BL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFL},{0x1660D76BC37B01DL,0x5EB806161EFE02L,0xD1L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L},{0x5F343A3F37E31DFL,0x8D3B7DD448AAC3FL,0xC65DEAB2679A2E1L,0xCF1EACBE98B8E48L,0x3C111B0EF445146L,0xA1D8CB5307C0BBEL,0xFFFF9EC7F01C60BL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFL}}}; + + +#endif +
http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_curve_GOLDILOCKS.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_curve_GOLDILOCKS.c b/version3/c/rom_curve_GOLDILOCKS.c new file mode 100644 index 0000000..3b168c8 --- /dev/null +++ b/version3/c/rom_curve_GOLDILOCKS.c @@ -0,0 +1,37 @@ +#include "arch.h" +#include "ecp_GOLDILOCKS.h" + +/* Curve GOLDILOCKS */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 + +const int CURVE_Cof_I_GOLDILOCKS= 4; +const BIG_448_29 CURVE_Cof_GOLDILOCKS= {0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const int CURVE_A_GOLDILOCKS= 1; +const int CURVE_B_I_GOLDILOCKS= -39081; +const BIG_448_29 CURVE_B_GOLDILOCKS= {0x1FFF6756,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FDFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFF}; +const BIG_448_29 CURVE_Order_GOLDILOCKS= {0xB5844F3,0x1BC61495,0x1163D548,0x1984E51B,0x3690216,0xDA4D76B,0xFA7113B,0x1FEF9944,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x7FF}; +const BIG_448_29 CURVE_Gx_GOLDILOCKS= {0x15555555,0xAAAAAAA,0x15555555,0xAAAAAAA,0x15555555,0xAAAAAAA,0x15555555,0x152AAAAA,0xAAAAAAA,0x15555555,0xAAAAAAA,0x15555555,0xAAAAAAA,0x15555555,0xAAAAAAA,0x1555}; +const BIG_448_29 CURVE_Gy_GOLDILOCKS= {0xA9386ED,0x1757DE6F,0x13681AF6,0x19657DA3,0x3098BBB,0x12C19D15,0x12E03595,0xE515B18,0x17B7E36D,0x1AC426E,0xDBB5E8,0x10D8560,0x159D6205,0xB8246D9,0x17A58D2B,0x15C0}; + +#endif + +#if CHUNK==64 + +const int CURVE_Cof_I_GOLDILOCKS= 4; +const BIG_448_58 CURVE_Cof_GOLDILOCKS= {0x4L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}; +const int CURVE_A_GOLDILOCKS= 1; +const int CURVE_B_I_GOLDILOCKS= -39081; +const BIG_448_58 CURVE_B_GOLDILOCKS= {0x3FFFFFFFFFF6756L,0x3FFFFFFFFFFFFFFL,0x3FFFFFFFFFFFFFFL,0x3FBFFFFFFFFFFFFL,0x3FFFFFFFFFFFFFFL,0x3FFFFFFFFFFFFFFL,0x3FFFFFFFFFFFFFFL,0x3FFFFFFFFFFL}; +const BIG_448_58 CURVE_Order_GOLDILOCKS= {0x378C292AB5844F3L,0x3309CA37163D548L,0x1B49AED63690216L,0x3FDF3288FA7113BL,0x3FFFFFFFFFFFFFFL,0x3FFFFFFFFFFFFFFL,0x3FFFFFFFFFFFFFFL,0xFFFFFFFFFFL}; +const BIG_448_58 CURVE_Gx_GOLDILOCKS= {0x155555555555555L,0x155555555555555L,0x155555555555555L,0x2A5555555555555L,0x2AAAAAAAAAAAAAAL,0x2AAAAAAAAAAAAAAL,0x2AAAAAAAAAAAAAAL,0x2AAAAAAAAAAL}; +const BIG_448_58 CURVE_Gy_GOLDILOCKS= {0x2EAFBCDEA9386EDL,0x32CAFB473681AF6L,0x25833A2A3098BBBL,0x1CA2B6312E03595L,0x35884DD7B7E36DL,0x21B0AC00DBB5E8L,0x17048DB359D6205L,0x2B817A58D2BL}; +#endif + + http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_curve_HIFIVE.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_curve_HIFIVE.c b/version3/c/rom_curve_HIFIVE.c new file mode 100644 index 0000000..20a25e5 --- /dev/null +++ b/version3/c/rom_curve_HIFIVE.c @@ -0,0 +1,37 @@ +#include "arch.h" +#include "ecp_HIFIVE.h" + +/* Curve HIFIVE */ + + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 + +const int CURVE_Cof_I_HIFIVE= 8; +const BIG_336_29 CURVE_Cof_HIFIVE= {0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const int CURVE_A_HIFIVE= 1; +const int CURVE_B_I_HIFIVE= 11111; +const BIG_336_29 CURVE_B_HIFIVE= {0x2B67,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const BIG_336_29 CURVE_Order_HIFIVE= {0x1E9FA805,0x197CACB9,0x1E4EEA9E,0x17AD70F,0x1FA9850C,0x38A0A,0x0,0x0,0x0,0x0,0x0,0x4000}; +const BIG_336_29 CURVE_Gx_HIFIVE= {0xC,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const BIG_336_29 CURVE_Gy_HIFIVE= {0x5FE8632,0x15F63428,0xD976C4,0x1AACA194,0x35B6DB5,0x8E3F7A,0x52D1B0E,0xF0A7A36,0x1C161D00,0x8170C70,0x1185AD59,0x181B}; +#endif + +#if CHUNK==64 + +const int CURVE_Cof_I_HIFIVE= 8; +const BIG_336_60 CURVE_Cof_HIFIVE= {0x8L,0x0L,0x0L,0x0L,0x0L,0x0L}; +const int CURVE_A_HIFIVE= 1; +const int CURVE_B_I_HIFIVE= 11111; +const BIG_336_60 CURVE_B_HIFIVE= {0x2B67L,0x0L,0x0L,0x0L,0x0L,0x0L}; +const BIG_336_60 CURVE_Order_HIFIVE= {0xB2F95973E9FA805L,0xC0BD6B87F93BAA7L,0x71415FA9850L,0x0L,0x0L,0x200000000L}; +const BIG_336_60 CURVE_Gx_HIFIVE= {0xCL,0x0L,0x0L,0x0L,0x0L,0x0L}; +const BIG_336_60 CURVE_Gy_HIFIVE= {0x2BEC68505FE8632L,0x5D5650CA0365DB1L,0x3811C7EF435B6DBL,0x7853D1B14B46CL,0x56502E18E1C161DL,0xC0DC616BL}; +#endif + + http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_curve_NIST256.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_curve_NIST256.c b/version3/c/rom_curve_NIST256.c new file mode 100644 index 0000000..2915b4d --- /dev/null +++ b/version3/c/rom_curve_NIST256.c @@ -0,0 +1,37 @@ +#include "arch.h" +#include "ecp_NIST256.h" + +/* Curve NIST256 */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 + +const int CURVE_Cof_I_NIST256= 1; +const BIG_256_28 CURVE_Cof_NIST256= {0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const int CURVE_A_NIST256= -3; +const int CURVE_B_I_NIST256= 0; +const BIG_256_28 CURVE_B_NIST256= {0x7D2604B,0xCE3C3E2,0x3B0F63B,0x6B0CC5,0x6BC651D,0x5576988,0x7B3EBBD,0xAA3A93E,0xAC635D8,0x5}; +const BIG_256_28 CURVE_Order_NIST256= {0xC632551,0xB9CAC2F,0x79E84F3,0xFAADA71,0xFFFBCE6,0xFFFFFFF,0xFFFFFF,0x0,0xFFFFFFF,0xF}; +const BIG_256_28 CURVE_Gx_NIST256= {0x898C296,0xA13945D,0xB33A0F4,0x7D812DE,0xF27703,0xE563A44,0x7F8BCE6,0xE12C424,0xB17D1F2,0x6}; +const BIG_256_28 CURVE_Gy_NIST256= {0x7BF51F5,0xB640683,0x15ECECB,0x33576B3,0xE162BCE,0x4A7C0F9,0xB8EE7EB,0xFE1A7F9,0xFE342E2,0x4}; + + +#endif + +#if CHUNK==64 + +const int CURVE_Cof_I_NIST256= 1; +const BIG_256_56 CURVE_Cof_NIST256= {0x1L,0x0L,0x0L,0x0L,0x0L}; +const int CURVE_A_NIST256= -3; +const int CURVE_B_I_NIST256= 0; +const BIG_256_56 CURVE_B_NIST256= {0xCE3C3E27D2604BL,0x6B0CC53B0F63BL,0x55769886BC651DL,0xAA3A93E7B3EBBDL,0x5AC635D8L}; +const BIG_256_56 CURVE_Order_NIST256= {0xB9CAC2FC632551L,0xFAADA7179E84F3L,0xFFFFFFFFFFBCE6L,0xFFFFFFL,0xFFFFFFFFL}; +const BIG_256_56 CURVE_Gx_NIST256= {0xA13945D898C296L,0x7D812DEB33A0F4L,0xE563A440F27703L,0xE12C4247F8BCE6L,0x6B17D1F2L}; +const BIG_256_56 CURVE_Gy_NIST256= {0xB6406837BF51F5L,0x33576B315ECECBL,0x4A7C0F9E162BCEL,0xFE1A7F9B8EE7EBL,0x4FE342E2L}; +#endif + http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_curve_NIST384.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_curve_NIST384.c b/version3/c/rom_curve_NIST384.c new file mode 100644 index 0000000..d246ec1 --- /dev/null +++ b/version3/c/rom_curve_NIST384.c @@ -0,0 +1,36 @@ +#include "arch.h" +#include "ecp_NIST384.h" + +/* Curve NIST384 */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 + +const int CURVE_Cof_I_NIST384= 1; +const BIG_384_29 CURVE_Cof_NIST384= {0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const int CURVE_A_NIST384= -3; +const int CURVE_B_I_NIST384= 0; +const BIG_384_29 CURVE_B_NIST384= {0x13EC2AEF,0x142E476E,0xBB4674A,0xC731B14,0x1875AC65,0x447A809,0x4480C50,0xDDFD028,0x19181D9C,0x1F1FC168,0x623815A,0x47DCFC9,0x1312FA7E,0x59}; +const BIG_384_29 CURVE_Order_NIST384= {0xCC52973,0x760CB56,0xC29DEBB,0x141B6491,0x12DDF581,0x6C0FA1B,0x1FFF1D8D,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x7F}; +const BIG_384_29 CURVE_Gx_NIST384= {0x12760AB7,0x12A2F1C3,0x154A5B0E,0x5E4BB7E,0x2A38550,0xF0412A,0xE6167DD,0xC5174F3,0x146E1D3B,0x1799056B,0x3AC71C7,0x1D160A6F,0x87CA22B,0x55}; +const BIG_384_29 CURVE_Gy_NIST384= {0x10EA0E5F,0x1218EBE4,0x1FA0675E,0x1639C3A,0xB8C00A6,0x1889DAF8,0x11F3A768,0x17A51342,0x9F8F41D,0x1C9496E1,0x1767A62F,0xC4C58DE,0x17DE4A9,0x1B}; +#endif + +#if CHUNK==64 + +const int CURVE_Cof_I_NIST384= 1; +const BIG_384_56 CURVE_Cof_NIST384= {0x1L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}; +const int CURVE_A_NIST384= -3; +const int CURVE_B_I_NIST384= 0; +const BIG_384_56 CURVE_B_NIST384= {0x85C8EDD3EC2AEFL,0x398D8A2ED19D2AL,0x8F5013875AC656L,0xFE814112031408L,0xF82D19181D9C6EL,0xE7E4988E056BE3L,0xB3312FA7E23EL}; +const BIG_384_56 CURVE_Order_NIST384= {0xEC196ACCC52973L,0xDB248B0A77AECL,0x81F4372DDF581AL,0xFFFFFFFFC7634DL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFL}; +const BIG_384_56 CURVE_Gx_NIST384= {0x545E3872760AB7L,0xF25DBF55296C3AL,0xE082542A385502L,0x8BA79B9859F741L,0x20AD746E1D3B62L,0x5378EB1C71EF3L,0xAA87CA22BE8BL}; +const BIG_384_56 CURVE_Gy_NIST384= {0x431D7C90EA0E5FL,0xB1CE1D7E819D7AL,0x13B5F0B8C00A60L,0x289A147CE9DA31L,0x92DC29F8F41DBDL,0x2C6F5D9E98BF92L,0x3617DE4A9626L}; +#endif + + http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_curve_NIST521.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_curve_NIST521.c b/version3/c/rom_curve_NIST521.c new file mode 100644 index 0000000..0262632 --- /dev/null +++ b/version3/c/rom_curve_NIST521.c @@ -0,0 +1,35 @@ +#include "arch.h" +#include "ecp_NIST521.h" + +/* Curve NIST521 */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 + +const int CURVE_Cof_I_NIST521= 1; +const BIG_528_28 CURVE_Cof_NIST521= {0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const int CURVE_A_NIST521= -3; +const int CURVE_B_I_NIST521= 0; +const BIG_528_28 CURVE_B_NIST521= {0xB503F00,0x451FD46,0xC34F1EF,0xDF883D2,0xF073573,0xBD3BB1B,0xB1652C0,0xEC7E937,0x6193951,0xF109E15,0x489918E,0x15F3B8B,0x25B99B3,0xEEA2DA7,0xB68540,0x929A21A,0xE1C9A1F,0x3EB9618,0x5195}; +const BIG_528_28 CURVE_Order_NIST521= {0x1386409,0x6FB71E9,0xC47AEBB,0xC9B8899,0x5D03BB5,0x48F709A,0xB7FCC01,0xBF2F966,0x1868783,0xFFFFFA5,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0x1FFFF}; +const BIG_528_28 CURVE_Gx_NIST521= {0x2E5BD66,0x7E7E31C,0xA429BF9,0xB3C1856,0x8DE3348,0x27A2FFA,0x8FE1DC1,0xEFE7592,0x14B5E77,0x4D3DBAA,0x8AF606B,0xB521F82,0x139053F,0x429C648,0x62395B4,0x9E3ECB6,0x404E9CD,0x8E06B70,0xC685}; +const BIG_528_28 CURVE_Gy_NIST521= {0xFD16650,0xBE94769,0x2C24088,0x7086A27,0x761353C,0x13FAD0,0xC550B9,0x5EF4264,0x7EE7299,0x3E662C9,0xFBD1727,0x446817A,0x449579B,0xD998F54,0x42C7D1B,0x5C8A5FB,0xA3BC004,0x296A789,0x11839}; +#endif + +#if CHUNK==64 + +const int CURVE_Cof_I_NIST521= 1; +const BIG_528_60 CURVE_Cof_NIST521= {0x1L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}; +const int CURVE_A_NIST521= -3; +const int CURVE_B_I_NIST521= 0; +const BIG_528_60 CURVE_B_NIST521= {0xF451FD46B503F00L,0x73DF883D2C34F1EL,0x2C0BD3BB1BF0735L,0x3951EC7E937B165L,0x9918EF109E15619L,0x5B99B315F3B8B48L,0xB68540EEA2DA72L,0x8E1C9A1F929A21AL,0x51953EB961L}; +const BIG_528_60 CURVE_Order_NIST521= {0xB6FB71E91386409L,0xB5C9B8899C47AEBL,0xC0148F709A5D03BL,0x8783BF2F966B7FCL,0xFFFFFFFFFFA5186L,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0x1FFFFFFFFFFL}; +const BIG_528_60 CURVE_Gx_NIST521= {0x97E7E31C2E5BD66L,0x48B3C1856A429BFL,0xDC127A2FFA8DE33L,0x5E77EFE75928FE1L,0xF606B4D3DBAA14BL,0x39053FB521F828AL,0x62395B4429C6481L,0x404E9CD9E3ECB6L,0xC6858E06B7L}; +const BIG_528_60 CURVE_Gy_NIST521= {0x8BE94769FD16650L,0x3C7086A272C2408L,0xB9013FAD076135L,0x72995EF42640C55L,0xD17273E662C97EEL,0x49579B446817AFBL,0x42C7D1BD998F544L,0x9A3BC0045C8A5FBL,0x11839296A78L}; +#endif + http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_curve_NUMS256E.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_curve_NUMS256E.c b/version3/c/rom_curve_NUMS256E.c new file mode 100644 index 0000000..3f040ac --- /dev/null +++ b/version3/c/rom_curve_NUMS256E.c @@ -0,0 +1,43 @@ +#include "arch.h" +#include "ecp_NUMS256E.h" + +/* NUMS 256-bit Curve - Edwards */ + +#if CHUNK==16 + +const int CURVE_Cof_I_NUMS256E= 4; +const BIG_256_13 CURVE_Cof_NUMS256E= {0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const int CURVE_A_NUMS256E= 1; +const int CURVE_B_I_NUMS256E= -15342; +const BIG_256_13 CURVE_B_NUMS256E= {0x355,0x1FFE,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FF}; +const BIG_256_13 CURVE_Order_NUMS256E= {0xAF5,0x16EA,0x43B,0xF63,0x11A4,0x1CD,0x1D65,0x14A5,0x155A,0x20C,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80}; +const BIG_256_13 CURVE_Gx_NUMS256E= {0x13DA,0x1768,0x40B,0x1D81,0xA0D,0x1AC3,0xC20,0x1DC,0x198A,0x1061,0x6F5,0x1241,0x15F6,0xF1E,0x1734,0x46F,0xAEA,0x7DB,0x1D45,0x114}; +const BIG_256_13 CURVE_Gy_NUMS256E= {0x9E6,0xC54,0x19DE,0xC2D,0x12FA,0x1769,0x215,0x1B02,0x1F61,0x38A,0x4,0xC97,0x1D9A,0xB32,0x1F3A,0x4B8,0x19D9,0x14FE,0x154F,0x89}; + +#endif + +#if CHUNK==32 + +const int CURVE_Cof_I_NUMS256E= 4; +const BIG_256_29 CURVE_Cof_NUMS256E= {0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const int CURVE_A_NUMS256E= 1; +const int CURVE_B_I_NUMS256E= -15342; +const BIG_256_29 CURVE_B_NUMS256E= {0x1FFFC355,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0xFFFFFF}; +const BIG_256_29 CURVE_Order_NUMS256E= {0xEDD4AF5,0x123D8C87,0x1650E6C6,0xAB54A5E,0x419,0x0,0x0,0x0,0x400000}; +const BIG_256_29 CURVE_Gx_NUMS256E= {0xEED13DA,0x6F60481,0x20D61A8,0x13141DC6,0x9BD60C3,0x1EAFB490,0xDF73478,0x1F6D5D44,0x8A7514}; +const BIG_256_29 CURVE_Gy_NUMS256E= {0x198A89E6,0x1D30B73B,0x15BB4CB,0x1EC3B021,0x18010715,0x12ECD325,0x171F3A59,0x13FB3B24,0x44D53E}; + +#endif + +#if CHUNK==64 + +const int CURVE_Cof_I_NUMS256E= 4; +const BIG_256_56 CURVE_Cof_NUMS256E= {0x4L,0x0L,0x0L,0x0L,0x0L}; +const int CURVE_A_NUMS256E= 1; +const int CURVE_B_I_NUMS256E= -15342; +const BIG_256_56 CURVE_B_NUMS256E= {0xFFFFFFFFFFC355L,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFL}; +const BIG_256_56 CURVE_Order_NUMS256E= {0x47B190EEDD4AF5L,0x5AA52F59439B1AL,0x4195L,0x0L,0x40000000L}; +const BIG_256_56 CURVE_Gx_NUMS256E= {0xDEC0902EED13DAL,0x8A0EE3083586A0L,0x5F69209BD60C39L,0x6AEA237DCD1E3DL,0x8A7514FBL}; +const BIG_256_56 CURVE_Gy_NUMS256E= {0xA616E7798A89E6L,0x61D810856ED32FL,0xD9A64B8010715FL,0xD9D925C7CE9665L,0x44D53E9FL}; + +#endif \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_curve_NUMS256W.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_curve_NUMS256W.c b/version3/c/rom_curve_NUMS256W.c new file mode 100644 index 0000000..941d6a5 --- /dev/null +++ b/version3/c/rom_curve_NUMS256W.c @@ -0,0 +1,34 @@ +#include "arch.h" +#include "ecp_NUMS256W.h" + +/* NUMS 256-bit Curve - Weierstrass */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 +const int CURVE_Cof_I_NUMS256W= 1; +const BIG_256_28 CURVE_Cof_NUMS256W= {0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const int CURVE_A_NUMS256W= -3; +const int CURVE_B_I_NUMS256W= 152961; +const BIG_256_28 CURVE_B_NUMS256W= {0x25581,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const BIG_256_28 CURVE_Order_NUMS256W= {0x751A825,0xAB20294,0x65C6020,0x8275EA2,0xFFFE43C,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xF}; +const BIG_256_28 CURVE_Gx_NUMS256W= {0x21AACB1,0x52EE1EB,0x4C73ABC,0x9B0903D,0xB098357,0xA04F42C,0x1297A95,0x5AAADB6,0xC9ED6B6,0xB}; +const BIG_256_28 CURVE_Gy_NUMS256W= {0x184DE9F,0xB5B9CB2,0x10FBB80,0xC3D1153,0x35C955,0xF77E04E,0x673448B,0x3399B6A,0x8FC0F1,0xD}; + +#endif + +#if CHUNK==64 +const int CURVE_Cof_I_NUMS256W= 1; +const BIG_256_56 CURVE_Cof_NUMS256W= {0x1L,0x0L,0x0L,0x0L,0x0L}; +const int CURVE_A_NUMS256W= -3; +const int CURVE_B_I_NUMS256W= 152961; +const BIG_256_56 CURVE_B_NUMS256W= {0x25581L,0x0L,0x0L,0x0L,0x0L}; +const BIG_256_56 CURVE_Order_NUMS256W= {0xAB20294751A825L,0x8275EA265C6020L,0xFFFFFFFFFFE43CL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFL}; +const BIG_256_56 CURVE_Gx_NUMS256W= {0x52EE1EB21AACB1L,0x9B0903D4C73ABCL,0xA04F42CB098357L,0x5AAADB61297A95L,0xBC9ED6B6L}; +const BIG_256_56 CURVE_Gy_NUMS256W= {0xB5B9CB2184DE9FL,0xC3D115310FBB80L,0xF77E04E035C955L,0x3399B6A673448BL,0xD08FC0F1L}; + +#endif \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_curve_NUMS384E.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_curve_NUMS384E.c b/version3/c/rom_curve_NUMS384E.c new file mode 100644 index 0000000..4d9d249 --- /dev/null +++ b/version3/c/rom_curve_NUMS384E.c @@ -0,0 +1,34 @@ +#include "arch.h" +#include "ecp_NUMS384E.h" + +/* NUMS 384-bit Curve - Edwards */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 + +const int CURVE_Cof_I_NUMS384E= 4; +const BIG_384_29 CURVE_Cof_NUMS384E= {0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const int CURVE_A_NUMS384E= 1; +const int CURVE_B_I_NUMS384E= -11556; +const BIG_384_29 CURVE_B_NUMS384E= {0x1FFFD19F,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x7F}; +const BIG_384_29 CURVE_Order_NUMS384E= {0x6A3897D,0x5CEE627,0xD721E48,0x8AAB556,0x1E1CF61E,0xD0E5A35,0x1FFF891C,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1F}; +const BIG_384_29 CURVE_Gx_NUMS384E= {0xC206BDE,0x6AA0723,0x116504D4,0x52562CA,0x163406FF,0x1FD47998,0x10015D8F,0x8DCB7C9,0x15B30BF4,0x14D72AED,0x102DA884,0xB524CD9,0x1B111FB4,0x30}; +const BIG_384_29 CURVE_Gy_NUMS384E= {0x10729392,0xC681F0F,0x1B123727,0x561F28D,0x1964B007,0xC7BFB22,0x1D5A0C3E,0xE9E284B,0x1716AD82,0x11D886E,0x1CE2C69,0x134DDD61,0x983E67B,0x41}; +#endif + +#if CHUNK==64 + +const int CURVE_Cof_I_NUMS384E= 4; +const BIG_384_56 CURVE_Cof_NUMS384E= {0x4L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}; +const int CURVE_A_NUMS384E= 1; +const int CURVE_B_I_NUMS384E= -11556; +const BIG_384_56 CURVE_B_NUMS384E= {0xFFFFFFFFFFD19FL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFL}; +const BIG_384_56 CURVE_Order_NUMS384E= {0xB9DCC4E6A3897DL,0x555AAB35C87920L,0x1CB46BE1CF61E4L,0xFFFFFFFFE2471AL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0x3FFFFFFFFFFFL}; +const BIG_384_56 CURVE_Gx_NUMS384E= {0xD540E46C206BDEL,0x92B16545941350L,0xA8F33163406FF2L,0xE5BE4C005763FFL,0xE55DB5B30BF446L,0x266CC0B6A2129AL,0x61B111FB45A9L}; +const BIG_384_56 CURVE_Gy_NUMS384E= {0x8D03E1F0729392L,0xB0F946EC48DC9DL,0xF7F645964B0072L,0xF1425F56830F98L,0xB10DD716AD8274L,0xEEB08738B1A423L,0x82983E67B9A6L}; +#endif \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_curve_NUMS384W.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_curve_NUMS384W.c b/version3/c/rom_curve_NUMS384W.c new file mode 100644 index 0000000..5d04877 --- /dev/null +++ b/version3/c/rom_curve_NUMS384W.c @@ -0,0 +1,34 @@ +#include "arch.h" +#include "ecp_NUMS384W.h" + +/* NUMS 384-bit Curve - Weierstrass */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 + +const int CURVE_Cof_I_NUMS384W= 1; +const BIG_384_29 CURVE_Cof_NUMS384W= {0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const int CURVE_A_NUMS384W= -3; +const int CURVE_B_I_NUMS384W= -34568; +const BIG_384_29 CURVE_B_NUMS384W= {0x1FFF77BB,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x7F}; +const BIG_384_29 CURVE_Order_NUMS384W= {0x1B0E61B9,0x26C0FB3,0xDF89E98,0x153A7A98,0x16881BED,0x178F75AE,0x1FFF587A,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x7F}; +const BIG_384_29 CURVE_Gx_NUMS384W= {0x98152A,0x1CE5D021,0x18711EFA,0x1DDA201E,0xC742522,0x148D9536,0x7D3CEF4,0x19BF703F,0x60225C1,0x12082F8D,0x12203288,0x2DE3038,0x17956F0B,0x3A}; +const BIG_384_29 CURVE_Gy_NUMS384W= {0x6180716,0x3A5C763,0x1D2B4997,0xD69B77F,0x837EBCD,0x1BE890D,0xE72E482,0xEFF0FEE,0x1EB00469,0x2C267B,0x15F8CF4C,0x3371C71,0xDEE368E,0x56}; +#endif + +#if CHUNK==64 + +const int CURVE_Cof_I_NUMS384W= 1; +const BIG_384_56 CURVE_Cof_NUMS384W= {0x1L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}; +const int CURVE_A_NUMS384W= -3; +const int CURVE_B_I_NUMS384W= -34568; +const BIG_384_56 CURVE_B_NUMS384W= {0xFFFFFFFFFF77BBL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFL}; +const BIG_384_56 CURVE_Order_NUMS384W= {0x4D81F67B0E61B9L,0x9D3D4C37E27A60L,0x1EEB5D6881BEDAL,0xFFFFFFFFD61EAFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFL}; +const BIG_384_56 CURVE_Gx_NUMS384W= {0x9CBA042098152AL,0xED100F61C47BEBL,0x1B2A6CC742522EL,0xFB81F9F4F3BD29L,0x5F1A60225C1CDL,0x181C4880CA2241L,0x757956F0B16FL}; +const BIG_384_56 CURVE_Gy_NUMS384W= {0x74B8EC66180716L,0xB4DBBFF4AD265CL,0x7D121A837EBCD6L,0xF87F739CB92083L,0x84CF7EB0046977L,0x8E38D7E33D3005L,0xACDEE368E19BL}; +#endif \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_curve_NUMS512E.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_curve_NUMS512E.c b/version3/c/rom_curve_NUMS512E.c new file mode 100644 index 0000000..b31b6b5 --- /dev/null +++ b/version3/c/rom_curve_NUMS512E.c @@ -0,0 +1,33 @@ +#include "arch.h" +#include "ecp_NUMS512E.h" + +/* NUMS 512-bit Curve - Edwards */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 +const int CURVE_Cof_I_NUMS512E= 4; +const BIG_512_29 CURVE_Cof_NUMS512E= {0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const int CURVE_A_NUMS512E= 1; +const int CURVE_B_I_NUMS512E= -78296; +const BIG_512_29 CURVE_B_NUMS512E= {0x1FFECBEF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x7FFFF}; +const BIG_512_29 CURVE_Order_NUMS512E= {0x1BEED46D,0x1A3467A8,0x1BFB3FD9,0xC0AF0DB,0x86F52A4,0xC64B85B,0x6EA78FF,0xDA5F9F2,0x1FB4F063,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFF}; +const BIG_512_29 CURVE_Gx_NUMS512E= {0x19EC57FE,0xDCD594C,0x113C0571,0xA4A84F9,0x104AD0FE,0x4C92B44,0xC3DE2F7,0x9DDC8CE,0x74621C1,0x1139DC0A,0x9E85FAF,0x1B894704,0x1D1E79F4,0x9E29997,0x32DE223,0x16D38F43,0x116D128D,0x6FC71}; +const BIG_512_29 CURVE_Gy_NUMS512E= {0x1E2F5E1,0x136EF606,0x1C7407CC,0xDA71537,0xC1FD026,0x3431576,0x15898068,0x1E5D32C6,0x120CA53,0xC84F41A,0xA4ADAE5,0x104B3A45,0x76F726D,0x1512B772,0x3D5DEA0,0x194E3316,0x1FF39D49,0x3684D}; +#endif + +#if CHUNK==64 + +const int CURVE_Cof_I_NUMS512E= 4; +const BIG_512_56 CURVE_Cof_NUMS512E= {0x4L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}; +const int CURVE_A_NUMS512E= 1; +const int CURVE_B_I_NUMS512E= -78296; +const BIG_512_56 CURVE_B_NUMS512E= {0xFFFFFFFFFECBEFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFL}; +const BIG_512_56 CURVE_Order_NUMS512E= {0x468CF51BEED46DL,0x5786DEFECFF67L,0xC970B686F52A46L,0x2FCF91BA9E3FD8L,0xFFFFFFB4F0636DL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0x3FL}; +const BIG_512_56 CURVE_Gx_NUMS512E= {0xB9AB2999EC57FEL,0x25427CC4F015C5L,0x92568904AD0FE5L,0xEE46730F78BDC9L,0x3B81474621C14EL,0xA38227A17EBE27L,0x332FD1E79F4DC4L,0x7A18CB7888D3C5L,0x8E316D128DB69CL,0xDFL}; +const BIG_512_56 CURVE_Gy_NUMS512E= {0x6DDEC0C1E2F5E1L,0xD38A9BF1D01F32L,0x862AECC1FD0266L,0xE9963562601A06L,0x9E834120CA53F2L,0x9D22A92B6B9590L,0x6EE476F726D825L,0x98B0F577A82A25L,0x9BFF39D49CA71L,0x6DL}; +#endif http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_curve_NUMS512W.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_curve_NUMS512W.c b/version3/c/rom_curve_NUMS512W.c new file mode 100644 index 0000000..f222aa7 --- /dev/null +++ b/version3/c/rom_curve_NUMS512W.c @@ -0,0 +1,34 @@ +#include "arch.h" +#include "ecp_NUMS512W.h" + +/* NUMS 512-bit Curve - Weierstrass */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 + +const int CURVE_Cof_I_NUMS512W= 1; +const BIG_512_29 CURVE_Cof_NUMS512W= {0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const int CURVE_A_NUMS512W= -3; +const int CURVE_B_I_NUMS512W= 121243; +const BIG_512_29 CURVE_B_NUMS512W= {0x1D99B,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const BIG_512_29 CURVE_Order_NUMS512W= {0x433555D,0x10A9F9C8,0x1F3490F3,0xD166CC0,0xBDC63B5,0xC76CBE8,0xC6D3F09,0x1F729CF0,0x1F5B3CA4,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x7FFFF}; +const BIG_512_29 CURVE_Gx_NUMS512W= {0xCABAE57,0x4143CAC,0x1BD778B7,0x1AC026FA,0x15831D5,0x14312AB,0x167A4DE5,0xA20ED66,0x195021A1,0x129836CF,0x1141B830,0xA03ED0A,0xCAD83BB,0x1E9DA94C,0xDC00A80,0x1527B45,0x1447141D,0x1D601}; +const BIG_512_29 CURVE_Gy_NUMS512W= {0x183527A6,0x1D043B01,0x1F43FA48,0x16B83C99,0x5602CF2,0x1420592D,0x17A70486,0x1B5161DD,0x14A28415,0x3DE8A78,0x3D2C983,0x17797719,0x197DBDEA,0x15D88025,0x1BBB718F,0xAD679C1,0x14CA29AD,0x4A1D2}; +#endif + +#if CHUNK==64 + +const int CURVE_Cof_I_NUMS512W= 1; +const BIG_512_56 CURVE_Cof_NUMS512W= {0x1L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}; +const int CURVE_A_NUMS512W= -3; +const int CURVE_B_I_NUMS512W= 121243; +const BIG_512_56 CURVE_B_NUMS512W= {0x1D99BL,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}; +const BIG_512_56 CURVE_Order_NUMS512W= {0x153F390433555DL,0x8B36607CD243CEL,0xED97D0BDC63B56L,0x94E7831B4FC258L,0xFFFFFF5B3CA4FBL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFL}; +const BIG_512_56 CURVE_Gx_NUMS512W= {0x8287958CABAE57L,0x60137D6F5DE2DCL,0x86255615831D5DL,0x76B359E937942L,0x6D9F95021A151L,0xF6854506E0C253L,0x5298CAD83BB501L,0xDA2B7002A03D3BL,0xC03447141D0A93L,0x3AL}; +const BIG_512_56 CURVE_Gy_NUMS512W= {0xA08760383527A6L,0x5C1E4CFD0FE923L,0x40B25A5602CF2BL,0x8B0EEDE9C121A8L,0xD14F14A28415DAL,0xBB8C8F4B260C7BL,0x4B97DBDEABBCL,0xCE0EEEDC63EBB1L,0x3A54CA29AD56B3L,0x94L}; +#endif http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_curve_SECP256K1.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_curve_SECP256K1.c b/version3/c/rom_curve_SECP256K1.c new file mode 100644 index 0000000..df6c3f0 --- /dev/null +++ b/version3/c/rom_curve_SECP256K1.c @@ -0,0 +1,39 @@ +#include "arch.h" +#include "ecp_SECP256K1.h" + +/* Curve SECP256K1 */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 + +const int CURVE_Cof_I_SECP256K1= 1; +const BIG_256_28 CURVE_Cof_SECP256K1= {0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const int CURVE_A_SECP256K1= 0; +const int CURVE_B_I_SECP256K1= 7; +const BIG_256_28 CURVE_B_SECP256K1= {0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const BIG_256_28 CURVE_Order_SECP256K1= {0x364141,0xD25E8CD,0x8A03BBF,0xDCE6AF4,0xFFEBAAE,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xF}; +const BIG_256_28 CURVE_Gx_SECP256K1= {0x6F81798,0xF2815B1,0xE28D959,0xFCDB2DC,0xB07029B,0x95CE870,0xC55A062,0xF9DCBBA,0x9BE667E,0x7}; +const BIG_256_28 CURVE_Gy_SECP256K1= {0xB10D4B8,0x47D08FF,0x554199C,0xB448A68,0x8A8FD17,0xFC0E110,0x55DA4FB,0x26A3C46,0x83ADA77,0x4}; + + + +#endif + +#if CHUNK==64 + +const int CURVE_Cof_I_SECP256K1= 1; +const BIG_256_56 CURVE_Cof_SECP256K1= {0x1L,0x0L,0x0L,0x0L,0x0L}; +const int CURVE_A_SECP256K1= 0; +const int CURVE_B_I_SECP256K1= 7; +const BIG_256_56 CURVE_B_SECP256K1= {0x7L,0x0L,0x0L,0x0L,0x0L}; +const BIG_256_56 CURVE_Order_SECP256K1= {0xD25E8CD0364141L,0xDCE6AF48A03BBFL,0xFFFFFFFFFEBAAEL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFL}; +const BIG_256_56 CURVE_Gx_SECP256K1= {0xF2815B16F81798L,0xFCDB2DCE28D959L,0x95CE870B07029BL,0xF9DCBBAC55A062L,0x79BE667EL}; +const BIG_256_56 CURVE_Gy_SECP256K1= {0x47D08FFB10D4B8L,0xB448A68554199CL,0xFC0E1108A8FD17L,0x26A3C4655DA4FBL,0x483ADA77L}; + +#endif + http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_field_25519.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_field_25519.c b/version3/c/rom_field_25519.c new file mode 100644 index 0000000..475a743 --- /dev/null +++ b/version3/c/rom_field_25519.c @@ -0,0 +1,33 @@ +#include "arch.h" +#include "fp_25519.h" + +/* Curve 25519 */ + +#if CHUNK==16 + +// Base Bits= 13 +const BIG_256_13 Modulus_25519= {0x1FED,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0xFF}; +const BIG_256_13 R2modp_25519= {0x400,0x2D,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const chunk MConst_25519= 0x13; + +#endif + +#if CHUNK==32 + +// Base Bits= 29 +const BIG_256_29 Modulus_25519= {0x1FFFFFED,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x7FFFFF}; +const BIG_256_29 R2modp_25519= {0x169000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const chunk MConst_25519= 0x13; + + +#endif + +#if CHUNK==64 +// Base Bits= 56 +const BIG_256_56 Modulus_25519= {0xFFFFFFFFFFFFEDL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0x7FFFFFFFL}; +const BIG_256_56 R2modp_25519= {0xA4000000000000L,0x5L,0x0L,0x0L,0x0L}; +const chunk MConst_25519= 0x13L; + + +#endif + http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_field_256PME.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_field_256PME.c b/version3/c/rom_field_256PME.c new file mode 100644 index 0000000..cf31ee1 --- /dev/null +++ b/version3/c/rom_field_256PME.c @@ -0,0 +1,28 @@ +#include "arch.h" +#include "fp_256PME.h" + +/* NUMS 256-bit modulus */ + + +#if CHUNK==16 +// Base Bits= 13 +const BIG_256_13 Modulus_256PME= {0x1F43,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FFF,0x1FF}; +const BIG_256_13 R2modp_256PME= {0x900,0x45C,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const chunk MConst_256PME= 0xBD; +#endif + +#if CHUNK==32 +// Base Bits= 29 +const BIG_256_29 Modulus_256PME= {0x1FFFFF43,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0xFFFFFF}; +const BIG_256_29 R2modp_256PME= {0x22E2400,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const chunk MConst_256PME= 0xBD; + +#endif + +#if CHUNK==64 +// Base Bits= 56 +const BIG_256_56 Modulus_256PME= {0xFFFFFFFFFFFF43L,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFL}; +const BIG_256_56 R2modp_256PME= {0x89000000000000L,0x8BL,0x0L,0x0L,0x0L}; +const chunk MConst_256PME= 0xBDL; + +#endif \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_field_256PMW.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_field_256PMW.c b/version3/c/rom_field_256PMW.c new file mode 100644 index 0000000..2775033 --- /dev/null +++ b/version3/c/rom_field_256PMW.c @@ -0,0 +1,26 @@ +#include "arch.h" +#include "fp_256PMW.h" + +/* NUMS 256-bit modulus */ + + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 +// Base Bits= 28 +const BIG_256_28 Modulus_256PMW= {0xFFFFF43,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xF}; +const BIG_256_28 R2modp_256PMW= {0x0,0x8900000,0x8B,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const chunk MConst_256PMW= 0xBD; +#endif + +#if CHUNK==64 +// Base Bits= 56 +const BIG_256_56 Modulus_256PMW= {0xFFFFFFFFFFFF43L,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFL}; +const BIG_256_56 R2modp_256PMW= {0x89000000000000L,0x8BL,0x0L,0x0L,0x0L}; +const chunk MConst_256PMW= 0xBDL; + +#endif \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_field_384PM.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_field_384PM.c b/version3/c/rom_field_384PM.c new file mode 100644 index 0000000..e692b56 --- /dev/null +++ b/version3/c/rom_field_384PM.c @@ -0,0 +1,25 @@ +#include "arch.h" +#include "fp_384PM.h" + +/* NUMS 384-bit modulus */ + + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 +// Base Bits= 29 +const BIG_384_29 Modulus_384PM= {0x1FFFFEC3,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x7F}; +const BIG_384_29 R2modp_384PM= {0x0,0x4448000,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const chunk MConst_384PM= 0x13D; +#endif + +#if CHUNK==64 +// Base Bits= 56 +const BIG_384_56 Modulus_384PM= {0xFFFFFFFFFFFEC3L,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFL}; +const BIG_384_56 R2modp_384PM= {0x188890000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}; +const chunk MConst_384PM= 0x13DL; +#endif \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_field_512PM.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_field_512PM.c b/version3/c/rom_field_512PM.c new file mode 100644 index 0000000..d305f50 --- /dev/null +++ b/version3/c/rom_field_512PM.c @@ -0,0 +1,25 @@ +#include "arch.h" +#include "fp_512PM.h" + +/* NUMS 512-bit modulus */ + + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 +// Base Bits= 29 +const BIG_512_29 Modulus_512PM= {0x1FFFFDC7,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x7FFFF}; +const BIG_512_29 R2modp_512PM= {0xB100000,0x278,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const chunk MConst_512PM= 0x239; +#endif + +#if CHUNK==64 +// Base Bits= 56 +const BIG_512_56 Modulus_512PM= {0xFFFFFFFFFFFDC7L,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFL}; +const BIG_512_56 R2modp_512PM= {0x0L,0xF0B10000000000L,0x4L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}; +const chunk MConst_512PM= 0x239L; +#endif \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_field_ANSSI.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_field_ANSSI.c b/version3/c/rom_field_ANSSI.c new file mode 100644 index 0000000..be52634 --- /dev/null +++ b/version3/c/rom_field_ANSSI.c @@ -0,0 +1,25 @@ +#include "arch.h" +#include "fp_ANSSI.h" + +/* ANNSI Curve */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 +// Base Bits= 28 +const BIG_256_28 Modulus_ANSSI= {0x86E9C03,0xFCF353D,0x8CA6DE8,0xADBCABC,0x35B3961,0xE8CE424,0xF10126D,0xB3AD58,0x1FD178C,0xF}; +const BIG_256_28 R2modp_ANSSI= {0x288CC9C,0x18D2374,0x646BD2B,0x4929E67,0xD6F7F2D,0x220E6C1,0xABCE02E,0x751B1FD,0x7401B78,0xE}; +const chunk MConst_ANSSI= 0x64E1155; +#endif + +#if CHUNK==64 +// Base Bits= 56 +const BIG_256_56 Modulus_ANSSI= {0xFCF353D86E9C03L,0xADBCABC8CA6DE8L,0xE8CE42435B3961L,0xB3AD58F10126DL,0xF1FD178CL}; +const BIG_256_56 R2modp_ANSSI= {0x18D2374288CC9CL,0x4929E67646BD2BL,0x220E6C1D6F7F2DL,0x751B1FDABCE02EL,0xE7401B78L}; +const chunk MConst_ANSSI= 0x97483A164E1155L; +#endif + http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_field_BLS24.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_field_BLS24.c b/version3/c/rom_field_BLS24.c new file mode 100644 index 0000000..efc25e9 --- /dev/null +++ b/version3/c/rom_field_BLS24.c @@ -0,0 +1,32 @@ +#include "arch.h" +#include "fp_BLS24.h" + +/* Curve BLS24 - Pairing friendly BLS24 curve */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 +// Base Bits= 29 +// Base Bits= 29 +const BIG_480_29 Modulus_BLS24= {0xA06152B,0x2260B3A,0xB4C36BE,0x5FFC5D0,0xBDB6A64,0x5B78E2E,0x1C1A28CA,0x10E6441B,0x1F244061,0xB4704F0,0x141E5CCD,0x9837504,0x3F2E77E,0xD763740,0x1316EA0E,0xF0079,0x555C}; +const BIG_480_29 R2modp_BLS24= {0x8533EA9,0x6A02789,0x183B24DE,0x1E45ECF8,0xC8F8F37,0x10CAD209,0x4C0C4B8,0x9B1FABD,0xDEBE4C0,0xDC353F9,0x18A18E26,0x10F489BB,0x31206A5,0x19673BBF,0x6BE69F9,0xB091169,0x9CD}; +const chunk MConst_BLS24= 0x95FE7D; +const BIG_480_29 Fra_BLS24= {0x1BF96F1D,0xAE53A55,0x31BFEEB,0x183FF17A,0x6237469,0x12A4F4F1,0x12101FE3,0x16E79D94,0xFF59267,0x5EB4EB4,0x78CC49F,0x274BA33,0x149184F3,0x16C6DCBA,0x1C90B694,0x10F729CE,0x4BBC}; +const BIG_480_29 Frb_BLS24= {0xE0CA60E,0x1740D0E4,0x83037D2,0xDBFD456,0x5B7F5FA,0x1312993D,0xA0A08E6,0x19FEA687,0xF2EADF9,0x55BB63C,0xC91982E,0x70EBAD1,0xF61628B,0x16AF5A85,0x16863379,0xF17D6AA,0x99F}; + +#endif + +#if CHUNK==64 +// Base Bits= 56 +const BIG_480_56 Modulus_BLS24= {0x44C1674A06152BL,0xFFE2E82D30DAF8L,0x6F1C5CBDB6A642L,0x3220DF068A328BL,0xE09E1F24406187L,0xBA825079733568L,0x6E803F2E77E4C1L,0x3CCC5BA839AECL,0x555C0078L}; +const BIG_480_56 R2modp_BLS24= {0x6A4A1FE013DF5BL,0xE8E46D4D1BDE65L,0x1F841391F45C67L,0x9148A4516FB28L,0x4398524EDF4C88L,0x41C0E241B6DCE8L,0xE42C208C19411L,0xA7FE6FD73A7B1CL,0xFCCCA76L}; +const chunk MConst_BLS24= 0xBD5D7D8095FE7DL; +const BIG_480_56 Fra_BLS24= {0x5CA74ABBF96F1DL,0x1FF8BD0C6FFBADL,0x49E9E26237469CL,0x3CECA48407F8E5L,0x69D68FF59267B7L,0x5D199E33127CBDL,0xB97549184F313AL,0x4E77242DA52D8DL,0x4BBC87B9L}; +const BIG_480_56 Frb_BLS24= {0xE81A1C8E0CA60EL,0xDFEA2B20C0DF4AL,0x25327A5B7F5FA6L,0xF5343A828239A6L,0x76C78F2EADF9CFL,0x5D68B24660B8ABL,0xB50AF61628B387L,0xB555A18CDE6D5EL,0x99F78BEL}; + + +#endif \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_field_BLS381.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_field_BLS381.c b/version3/c/rom_field_BLS381.c new file mode 100644 index 0000000..39d22e2 --- /dev/null +++ b/version3/c/rom_field_BLS381.c @@ -0,0 +1,30 @@ +#include "arch.h" +#include "fp_BLS381.h" + +/* Curve BLS381 - Pairing friendly BLS curve */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 +// Base Bits= 29 +const BIG_384_29 Modulus_BLS381= {0x1FFFAAAB,0xFF7FFFF,0x14FFFFEE,0x17FFFD62,0xF6241EA,0x9507B58,0xAFD9CC3,0x109E70A2,0x1764774B,0x121A5D66,0x12C6E9ED,0x12FFCD34,0x111EA3,0xD}; +const BIG_384_29 R2modp_BLS381= {0x15BEF7AE,0x1031CD0E,0x2DD93E8,0x9226323,0xE6E2CD2,0x11684DAA,0x1170E5DB,0x88E25B1,0x1B366399,0x1C536F47,0xD1F9CBC,0x278B67F,0x1EA66A2B,0xC}; +const chunk MConst_BLS381= 0x1FFCFFFD; +const BIG_384_29 Fra_BLS381= {0x12235FB8,0x83BAF6C,0x19E04F63,0x1D4A7AC7,0xB9C4F67,0x1EBC25D,0x1D3DEC91,0x1FA797AB,0x1F0FD603,0x1016068,0x108C6FAD,0x5760CCF,0x104D3BF0,0xC}; +const BIG_384_29 Frb_BLS381= {0xDDC4AF3,0x7BC5093,0x1B1FB08B,0x1AB5829A,0x3C5F282,0x764B8FB,0xDBFB032,0x10F6D8F6,0x1854A147,0x1118FCFD,0x23A7A40,0xD89C065,0xFC3E2B3,0x0}; + +#endif + +#if CHUNK==64 +// Base Bits= 58 +const BIG_384_58 Modulus_BLS381= {0x1FEFFFFFFFFAAABL,0x2FFFFAC54FFFFEEL,0x12A0F6B0F6241EAL,0x213CE144AFD9CC3L,0x2434BACD764774BL,0x25FF9A692C6E9EDL,0x1A0111EA3L}; +const BIG_384_58 R2modp_BLS381= {0x20639A1D5BEF7AEL,0x1244C6462DD93E8L,0x22D09B54E6E2CD2L,0x111C4B63170E5DBL,0x38A6DE8FB366399L,0x4F16CFED1F9CBCL,0x19EA66A2BL}; +const chunk MConst_BLS381= 0x1F3FFFCFFFCFFFDL; +const BIG_384_58 Fra_BLS381= {0x10775ED92235FB8L,0x3A94F58F9E04F63L,0x3D784BAB9C4F67L,0x3F4F2F57D3DEC91L,0x202C0D1F0FD603L,0xAEC199F08C6FADL,0x1904D3BF0L}; +const BIG_384_58 Frb_BLS381= {0xF78A126DDC4AF3L,0x356B0535B1FB08BL,0xEC971F63C5F282L,0x21EDB1ECDBFB032L,0x2231F9FB854A147L,0x1B1380CA23A7A40L,0xFC3E2B3L}; + +#endif http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_field_BLS383.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_field_BLS383.c b/version3/c/rom_field_BLS383.c new file mode 100644 index 0000000..b197120 --- /dev/null +++ b/version3/c/rom_field_BLS383.c @@ -0,0 +1,30 @@ +#include "arch.h" +#include "fp_BLS383.h" + +/* Curve BLS383 - Pairing friendly BLS curve */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 +// Base Bits= 29 +const BIG_384_29 Modulus_BLS383= {0x5AAB0AB,0x11B8EB24,0x19214AF6,0x187E5314,0x124F47A8,0x1C00B4B0,0x1446B0C6,0x59E6CB4,0x4A0AD46,0xFF5494,0x81B6B71,0x956DD6B,0x16556956,0x2A}; +const BIG_384_29 R2modp_BLS383= {0x116907F4,0x405B700,0x1752AC11,0x67A9E7C,0x1941C581,0x1AEA38C4,0xB1E4D22,0xCE841AE,0xA0FC49B,0xB4B1F48,0x13852312,0x1B3FDCED,0x1FECE397,0x26}; +const chunk MConst_BLS383= 0x73435FD; +const BIG_384_29 Fra_BLS383= {0x1311DAC1,0x296B969,0x19DCF806,0x126901FC,0xD8C8A36,0x1A2572A8,0xA1A0959,0x1A47F743,0x110E4C6C,0x1608DA97,0xCE2E7F0,0x4FED178,0xACD5BF0,0x11}; +const BIG_384_29 Frb_BLS383= {0x1298D5EA,0xF2231BA,0x1F4452F0,0x6155117,0x4C2BD72,0x1DB4208,0xA2CA76D,0xB567571,0x139260D9,0xAF679FC,0x1B388380,0x4580BF2,0xB880D66,0x19}; + +#endif + +#if CHUNK==64 +// Base Bits= 58 +const BIG_384_58 Modulus_BLS383= {0x2371D6485AAB0ABL,0x30FCA6299214AF6L,0x3801696124F47A8L,0xB3CD969446B0C6L,0x1FEA9284A0AD46L,0x12ADBAD681B6B71L,0x556556956L}; +const BIG_384_58 R2modp_BLS383= {0x80B6E0116907F4L,0xCF53CF9752AC11L,0x35D47189941C581L,0x19D0835CB1E4D22L,0x16963E90A0FC49BL,0x367FB9DB3852312L,0x4DFECE397L}; +const chunk MConst_BLS383= 0x1BC0571073435FDL; +const BIG_384_58 Fra_BLS383= {0x52D72D3311DAC1L,0x24D203F99DCF806L,0x344AE550D8C8A36L,0x348FEE86A1A0959L,0x2C11B52F10E4C6CL,0x9FDA2F0CE2E7F0L,0x22ACD5BF0L}; +const BIG_384_58 Frb_BLS383= {0x1E446375298D5EAL,0xC2AA22FF4452F0L,0x3B684104C2BD72L,0x16ACEAE2A2CA76DL,0x15ECF3F939260D9L,0x8B017E5B388380L,0x32B880D66L}; + +#endif \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_field_BLS461.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_field_BLS461.c b/version3/c/rom_field_BLS461.c new file mode 100644 index 0000000..c2e561a --- /dev/null +++ b/version3/c/rom_field_BLS461.c @@ -0,0 +1,31 @@ +#include "arch.h" +#include "fp_BLS461.h" + +/* Curve BLS461 - Pairing friendly BLS curve */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 +// Base Bits= 28 +const BIG_464_28 Modulus_BLS461= {0xAAAAAAB,0xAC0000A,0x54AAAAA,0x5555,0x400020,0x91557F0,0xF26AA,0xFA5C1CC,0xB42A8DF,0x7B14848,0x8BACCA4,0x6F1E32D,0x4935FBD,0x55D6941,0xD5A555A,0x5545554,0x1555}; +const BIG_464_28 R2modp_BLS461= {0xC9B6A33,0x2ECD087,0x3CCB2B1,0xCD461FE,0x8CB5AB2,0xC5B9635,0x5312E92,0xB659F64,0x3B596FA,0x8679006,0xA92E2B3,0x3CE05E3,0x363550F,0x7C07A8E,0x382C083,0x6347FEA,0xBD}; +const chunk MConst_BLS461= 0xFFFFFFD; +const BIG_464_28 Fra_BLS461= {0xB812A3A,0x7117BF9,0x99C400F,0xC6308A5,0x5BF8A1,0x510E075,0x45FA5A6,0xCE4858D,0x770B31A,0xBC2CB04,0xE2FC61E,0xD073588,0x4366190,0x4DFEFA8,0x69E55E2,0x504B7F,0x12E4}; +const BIG_464_28 Frb_BLS461= {0xF298071,0x3AE8410,0xBAE6A9B,0x39D4CAF,0xFE4077E,0x404777A,0xBAF8104,0x2C13C3E,0x3D1F5C5,0xBEE7D44,0xA8B0685,0x9EAADA4,0x5CFE2C,0x7D7999,0x6BBFF78,0x50409D5,0x271}; + +#endif + +#if CHUNK==64 +// Base Bits=60 +const BIG_464_60 Modulus_BLS461= {0xAAC0000AAAAAAABL,0x20000555554AAAAL,0x6AA91557F004000L,0xA8DFFA5C1CC00F2L,0xACCA47B14848B42L,0x935FBD6F1E32D8BL,0xD5A555A55D69414L,0x15555545554L}; +const BIG_464_60 R2modp_BLS461= {0x96D08774614DDA8L,0xCD45F539225D5BDL,0xD712EB760C95AB1L,0xB3B687155F30B55L,0xC4E62A05C3F5B81L,0xBA1151676CA3CD0L,0x7EDD8A958F442BEL,0x12B89DD3F91L}; +const chunk MConst_BLS461= 0xC0005FFFFFFFDL; +const BIG_464_60 Fra_BLS461= {0xF7117BF9B812A3AL,0xA1C6308A599C400L,0x5A6510E07505BF8L,0xB31ACE4858D45FAL,0xFC61EBC2CB04770L,0x366190D073588E2L,0x69E55E24DFEFA84L,0x12E40504B7FL}; +const BIG_464_60 Frb_BLS461= {0xB3AE8410F298071L,0x7E39D4CAFBAE6A9L,0x104404777AFE407L,0xF5C52C13C3EBAF8L,0xB0685BEE7D443D1L,0x5CFE2C9EAADA4A8L,0x6BBFF7807D79990L,0x27150409D5L}; + + +#endif \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_field_BLS48.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_field_BLS48.c b/version3/c/rom_field_BLS48.c new file mode 100644 index 0000000..5bf4488 --- /dev/null +++ b/version3/c/rom_field_BLS48.c @@ -0,0 +1,32 @@ +#include "arch.h" +#include "fp_BLS48.h" + +/* Curve BLS48 - Pairing friendly BLS48 curve */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 + +// Base Bits= 29 +const BIG_560_29 Modulus_BLS48= {0x1CF6AC0B,0x17B7307F,0x19877E7B,0x12CE0134,0x14228402,0x1BD4C386,0x1DACBB04,0x40410D0,0x25A415,0x980B53E,0xDE6E250,0x15D9AAD6,0x5DA950,0x1029B7A,0x54AB351,0x14AD90CE,0x3729047,0x1FE7E2D9,0x145F610B,0x1F}; +const BIG_560_29 R2modp_BLS48= {0xD59D0FA,0x12F01FD0,0xDE8FD41,0x35AAEE1,0xB937F48,0x50700E8,0x1F50EFCE,0x1019B13C,0x3470A2F,0x11094115,0xF9FB72D,0x6AD10E2,0x1CFD9F8,0x44F4785,0x2B48793,0x1148ED3,0xF609E61,0x1EE34BC7,0x1735D29E,0x0}; +const chunk MConst_BLS48= 0x9DA805D; +const BIG_560_29 Fra_BLS48= {0x1325BF89,0x1311E7EC,0xCD0A56F,0x1A0FD46E,0xE83BCCA,0xCA97DD0,0x18D1D297,0x5F1E137,0x7AB9F2C,0x13FC255F,0x1C9DECEB,0x9DEF4A2,0x3C0F60B,0x1D9909E4,0x1FF27FF7,0x1DBF8208,0x89BB36C,0x40044E0,0x62E01EE,0x5}; +const BIG_560_29 Frb_BLS48= {0x1325BF89,0x1311E7EC,0xCD0A56F,0x1A0FD46E,0xE83BCCA,0xCA97DD0,0x18D1D297,0x5F1E137,0x7AB9F2C,0x13FC255F,0x1C9DECEB,0x9DEF4A2,0x3C0F60B,0x1D9909E4,0x1FF27FF7,0x1DBF8208,0x89BB36C,0x40044E0,0x62E01EE,0x5}; + +#endif + +#if CHUNK==64 + +// Base Bits= 58 +const BIG_560_58 Modulus_BLS48= {0x2F6E60FFCF6AC0BL,0x259C02699877E7BL,0x37A9870D4228402L,0x80821A1DACBB04L,0x13016A7C025A415L,0x2BB355ACDE6E250L,0x20536F405DA950L,0x295B219C54AB351L,0x3FCFC5B23729047L,0x3F45F610BL}; +const BIG_560_58 R2modp_BLS48= {0x25E03FA0D59D0FAL,0x6B55DC2DE8FD41L,0xA0E01D0B937F48L,0x20336279F50EFCEL,0x2212822A3470A2FL,0xD5A21C4F9FB72DL,0x89E8F0A1CFD9F8L,0x2291DA62B48793L,0x3DC6978EF609E61L,0x1735D29EL}; +const chunk MConst_BLS48= 0x21BFCBCA9DA805DL; +const BIG_560_58 Fra_BLS48= {0x2623CFD9325BF89L,0x341FA8DCCD0A56FL,0x1952FBA0E83BCCAL,0xBE3C26F8D1D297L,0x27F84ABE7AB9F2CL,0x13BDE945C9DECEBL,0x3B3213C83C0F60BL,0x3B7F0411FF27FF7L,0x80089C089BB36CL,0xA62E01EEL}; +const BIG_560_58 Frb_BLS48= {0x2623CFD9325BF89L,0x341FA8DCCD0A56FL,0x1952FBA0E83BCCAL,0xBE3C26F8D1D297L,0x27F84ABE7AB9F2CL,0x13BDE945C9DECEBL,0x3B3213C83C0F60BL,0x3B7F0411FF27FF7L,0x80089C089BB36CL,0xA62E01EEL}; + +#endif \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_field_BN254.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_field_BN254.c b/version3/c/rom_field_BN254.c new file mode 100644 index 0000000..c244a87 --- /dev/null +++ b/version3/c/rom_field_BN254.c @@ -0,0 +1,37 @@ +#include "arch.h" +#include "fp_BN254.h" + +/* Curve BN254 - Pairing friendly BN curve */ + +/* Nogami's fast curve */ + +#if CHUNK==16 + +// Base Bits= 13 +const BIG_256_13 Modulus_BN254= {0x13,0x0,0x0,0x0,0x1A70,0x9,0x0,0x0,0x100,0x309,0x2,0x0,0x1800,0x1A26,0x6E8,0x0,0x0,0x412,0x8D9,0x4A}; +const BIG_256_13 R2modp_BN254= {0xF32,0x239,0x14DC,0xCE8,0x928,0x11B6,0x130F,0x1183,0x56E,0x1AEE,0x124F,0xD2A,0x7F8,0x1CE6,0x1B50,0x77C,0x3A,0x1A9E,0x1EFD,0x1C}; +const chunk MConst_BN254= 0x15E5; +const BIG_256_13 Fra_BN254= {0xDE9,0x1953,0x101B,0x1BCD,0xE17,0x1BE1,0x14FD,0x1249,0x974,0x1C28,0x54F,0x108D,0x150A,0x4CD,0x12D9,0xF91,0x12E,0x10C9,0xDDD,0x36}; +const BIG_256_13 Frb_BN254= {0x122A,0x6AC,0xFE4,0x432,0xC58,0x428,0xB02,0xDB6,0x178B,0x6E0,0x1AB2,0xF72,0x2F5,0x1559,0x140F,0x106E,0x1ED1,0x1348,0x1AFB,0x13}; + +#endif + +#if CHUNK==32 +// Base Bits= 28 +const BIG_256_28 Modulus_BN254= {0x13,0x0,0x13A7,0x0,0x86121,0x8000000,0x1BA344D,0x4000000,0x5236482,0x2}; +const BIG_256_28 R2modp_BN254= {0xF5E7E39,0x2F2A96F,0xB96F13C,0x64E8642,0xC7146,0x9926F7B,0x4DACD24,0x8321E7B,0xD127A2E,0x1}; +const chunk MConst_BN254= 0x79435E5; +const BIG_256_28 Fra_BN254= {0xF2A6DE9,0x7DE6C06,0xF77C2E1,0x74924D3,0x53F8509,0x50A8469,0xCB6499B,0x212E7C8,0xB377619,0x1}; +const BIG_256_28 Frb_BN254= {0xD5922A,0x82193F9,0x8850C5,0x8B6DB2C,0xAC8DC17,0x2F57B96,0x503EAB2,0x1ED1837,0x9EBEE69,0x0}; + +#endif + +#if CHUNK==64 +// Base Bits= 56 +const BIG_256_56 Modulus_BN254= {0x13L,0x13A7L,0x80000000086121L,0x40000001BA344DL,0x25236482L}; +const BIG_256_56 R2modp_BN254= {0x2F2A96FF5E7E39L,0x64E8642B96F13CL,0x9926F7B00C7146L,0x8321E7B4DACD24L,0x1D127A2EL}; +const chunk MConst_BN254= 0x435E50D79435E5L; +const BIG_256_56 Fra_BN254= {0x7DE6C06F2A6DE9L,0x74924D3F77C2E1L,0x50A846953F8509L,0x212E7C8CB6499BL,0x1B377619L}; +const BIG_256_56 Frb_BN254= {0x82193F90D5922AL,0x8B6DB2C08850C5L,0x2F57B96AC8DC17L,0x1ED1837503EAB2L,0x9EBEE69L}; +#endif + http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_field_BN254CX.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_field_BN254CX.c b/version3/c/rom_field_BN254CX.c new file mode 100644 index 0000000..1209f0c --- /dev/null +++ b/version3/c/rom_field_BN254CX.c @@ -0,0 +1,38 @@ +#include "arch.h" +#include "fp_BN254CX.h" + +/* Curve BN254CX - Pairing friendly BN curve */ + +/* CertiVox BN curve/field */ + +#if CHUNK==16 + +// Base Bits= 13 +const BIG_256_13 Modulus_BN254CX= {0x15B3,0xDA,0x1BD7,0xC47,0x1BE6,0x1F70,0x24,0x1DC3,0x1FD6,0x1921,0x19B4,0x14C6,0x1647,0x1EEF,0x16C2,0x541,0x870,0x0,0x0,0x48}; +const BIG_256_13 R2modp_BN254CX= {0x1527,0x146B,0x12A7,0x1A60,0x1E0A,0x1382,0x2BC,0x1D3F,0xB30,0xA8,0xD19,0x11AB,0x1D40,0x1965,0xD6D,0x643,0x10FF,0x1BC7,0x1E61,0x31}; +const chunk MConst_BN254CX= 0x1E85; +const BIG_256_13 Fra_BN254CX= {0xEA3,0xE40,0xCD5,0x1210,0x15BD,0x1C10,0x5CF,0x4DE,0x773,0x343,0x626,0x194E,0x18AA,0x10C5,0x12BF,0x2C,0x63A,0x17D,0x1642,0x26}; +const BIG_256_13 Frb_BN254CX= {0x710,0x129A,0xF01,0x1A37,0x628,0x360,0x1A55,0x18E4,0x1863,0x15DE,0x138E,0x1B78,0x1D9C,0xE29,0x403,0x515,0x236,0x1E83,0x9BD,0x21}; + + +#endif + +#if CHUNK==32 +// Base Bits= 28 +const BIG_256_28 Modulus_BN254CX= {0xC1B55B3,0x6623EF5,0x93EE1BE,0xD6EE180,0x6D3243F,0x647A636,0xDB0BDDF,0x8702A0,0x4000000,0x2}; +const BIG_256_28 R2modp_BN254CX= {0x8A0800A,0x466A061,0x43056A3,0x2B3A225,0x9C6600,0x148515B,0x6BDF50,0xEC9EA56,0xC992E66,0x1}; +const chunk MConst_BN254CX= 0x9789E85; +const BIG_256_28 Fra_BN254CX= {0x5C80EA3,0xD908335,0x3F8215B,0x7326F17,0x8986867,0x8AACA71,0x4AFE18B,0xA63A016,0x359082F,0x1}; +const BIG_256_28 Frb_BN254CX= {0x6534710,0x8D1BBC0,0x546C062,0x63C7269,0xE3ABBD8,0xD9CDBC4,0x900DC53,0x623628A,0xA6F7D0,0x1}; + +#endif + +#if CHUNK==64 +// Base Bits= 56 +const BIG_256_56 Modulus_BN254CX= {0x6623EF5C1B55B3L,0xD6EE18093EE1BEL,0x647A6366D3243FL,0x8702A0DB0BDDFL,0x24000000L}; +const BIG_256_56 R2modp_BN254CX= {0x466A0618A0800AL,0x2B3A22543056A3L,0x148515B09C6600L,0xEC9EA5606BDF50L,0x1C992E66L}; +const chunk MConst_BN254CX= 0x4E205BF9789E85L; +const BIG_256_56 Fra_BN254CX= {0xD9083355C80EA3L,0x7326F173F8215BL,0x8AACA718986867L,0xA63A0164AFE18BL,0x1359082FL}; +const BIG_256_56 Frb_BN254CX= {0x8D1BBC06534710L,0x63C7269546C062L,0xD9CDBC4E3ABBD8L,0x623628A900DC53L,0x10A6F7D0L}; +#endif + http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_field_BRAINPOOL.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_field_BRAINPOOL.c b/version3/c/rom_field_BRAINPOOL.c new file mode 100644 index 0000000..bc73330 --- /dev/null +++ b/version3/c/rom_field_BRAINPOOL.c @@ -0,0 +1,25 @@ +#include "arch.h" +#include "fp_BRAINPOOL.h" + +/* Brainpool Modulus */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 +// Base Bits= 28 +const BIG_256_28 Modulus_BRAINPOOL= {0xF6E5377,0x13481D1,0x6202820,0xF623D52,0xD726E3B,0x909D838,0xC3E660A,0xA1EEA9B,0x9FB57DB,0xA}; +const BIG_256_28 R2modp_BRAINPOOL= {0xB9A3787,0x9E04F49,0x8F3CF49,0x2931721,0xF1DBC89,0x54E8C3C,0xF7559CA,0xBB411A3,0x773E15F,0x9}; +const chunk MConst_BRAINPOOL= 0xEFD89B9; +#endif + +#if CHUNK==64 +// Base Bits= 56 +const BIG_256_56 Modulus_BRAINPOOL= {0x13481D1F6E5377L,0xF623D526202820L,0x909D838D726E3BL,0xA1EEA9BC3E660AL,0xA9FB57DBL}; +const BIG_256_56 R2modp_BRAINPOOL= {0x9E04F49B9A3787L,0x29317218F3CF49L,0x54E8C3CF1DBC89L,0xBB411A3F7559CAL,0x9773E15FL}; +const chunk MConst_BRAINPOOL= 0xA75590CEFD89B9L; +#endif + http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_field_C41417.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_field_C41417.c b/version3/c/rom_field_C41417.c new file mode 100644 index 0000000..e28f42c --- /dev/null +++ b/version3/c/rom_field_C41417.c @@ -0,0 +1,25 @@ +#include "arch.h" +#include "fp_C41417.h" + +/* Curve C41417 */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 +// Base Bits= 29 +const BIG_416_29 Modulus_C41417= {0x1FFFFFEF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0xFF}; +const BIG_416_29 R2modp_C41417= {0x0,0x242000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const chunk MConst_C41417= 0x11; +#endif + +#if CHUNK==64 +// Base Bits= 60 +const BIG_416_60 Modulus_C41417= {0xFFFFFFFFFFFFFEFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0x3FFFFFFFFFFFFFL}; +const BIG_416_60 R2modp_C41417= {0x121000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}; +const chunk MConst_C41417= 0x11L; +#endif + http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_field_FP256BN.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_field_FP256BN.c b/version3/c/rom_field_FP256BN.c new file mode 100644 index 0000000..8174955 --- /dev/null +++ b/version3/c/rom_field_FP256BN.c @@ -0,0 +1,36 @@ +#include "arch.h" +#include "fp_FP256BN.h" + +/* Curve FP256BN - Pairing friendly BN curve */ + +/* ISO fast curve */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 +// Base Bits= 28 + +const BIG_256_28 Modulus_FP256BN= {0xED33013,0x292DDBA,0x80A82D3,0x65FB129,0x49F0CDC,0x5EEE71A,0xD46E5F2,0xFFFCF0C,0xFFFFFFF,0xF}; +const BIG_256_28 R2modp_FP256BN= {0x3B9F8B,0xEDE3363,0xFEC54E8,0x92FFEE9,0x3C55F79,0x13C1C06,0xC0123FA,0xA12F2EA,0xE559B2A,0x8}; +const chunk MConst_FP256BN= 0x537E5E5; +const BIG_256_28 Fra_FP256BN= {0xF943106,0x760328A,0xAB28F74,0x71511E3,0x7CF39A1,0x8DDB086,0x52D1A6E,0xCA786F3,0xD617662,0x3}; +const BIG_256_28 Frb_FP256BN= {0xF3EFF0D,0xB32AB2F,0xD57F35E,0xF4A9F45,0xCCFD33A,0xD113693,0x819CB83,0x3584819,0x29E899D,0xC}; + + +#endif + +#if CHUNK==64 +// Base Bits= 56 +const BIG_256_56 Modulus_FP256BN= {0x292DDBAED33013L,0x65FB12980A82D3L,0x5EEE71A49F0CDCL,0xFFFCF0CD46E5F2L,0xFFFFFFFFL}; +const BIG_256_56 R2modp_FP256BN= {0xEDE336303B9F8BL,0x92FFEE9FEC54E8L,0x13C1C063C55F79L,0xA12F2EAC0123FAL,0x8E559B2AL}; +const chunk MConst_FP256BN= 0x6C964E0537E5E5L; +const BIG_256_56 Fra_FP256BN= {0x760328AF943106L,0x71511E3AB28F74L,0x8DDB0867CF39A1L,0xCA786F352D1A6EL,0x3D617662L}; +const BIG_256_56 Frb_FP256BN= {0xB32AB2FF3EFF0DL,0xF4A9F45D57F35EL,0xD113693CCFD33AL,0x3584819819CB83L,0xC29E899DL}; + + +#endif + http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_field_FP512BN.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_field_FP512BN.c b/version3/c/rom_field_FP512BN.c new file mode 100644 index 0000000..e88f66a --- /dev/null +++ b/version3/c/rom_field_FP512BN.c @@ -0,0 +1,38 @@ +#include "arch.h" +#include "fp_FP512BN.h" + +/* Curve FP512BN - Pairing friendly BN curve */ + +/* ISO fast curve */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 +// Base Bits= 29 + +const BIG_512_29 Modulus_FP512BN= {0x2ADEF33,0x7594049,0x131919ED,0x14AB9CBE,0x16FE1916,0x12EF5591,0x2E39231,0x3D597D3,0x55146CF,0x88D877A,0x102EF8F0,0x1196A60F,0x1C60BA1D,0x1CF63F80,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x7FFFF}; +const BIG_512_29 R2modp_FP512BN= {0xFD68B47,0xFCF5D2C,0x437675A,0x1BBC3FBF,0x1411E413,0x13453559,0x10B5639,0x1C34CE79,0x6D476BF,0xFD05F2B,0x15D17C28,0x6C9F76E,0x1C2375B3,0x78CCE9B,0x15F0AB33,0x1960F32E,0x1A8D44E,0x57A38}; +const chunk MConst_FP512BN= 0x1CCC5C05; +const BIG_512_29 Fra_FP512BN= {0x14B73AB2,0x4B0BD8F,0xABB47D,0x2A29EC4,0x18681E17,0x104069DE,0x12EED67D,0x1553D0A5,0x398E9F8,0x7971034,0xAC9AF23,0x52DEF23,0x14EA18A5,0x1463E345,0x6DE465A,0x17F212B4,0x1AA9CF5B,0xF7B8}; +const BIG_512_29 Frb_FP512BN= {0xDF6B481,0x2A882B9,0x126D6570,0x1208FDFA,0x1E95FAFF,0x2AEEBB2,0xFF4BBB4,0xE81C72D,0x1B85CD6,0xF67746,0x56549CD,0xC68B6EC,0x776A178,0x8925C3B,0x1921B9A5,0x80DED4B,0x55630A4,0x70847}; + + + +#endif + +#if CHUNK==64 +// Base Bits= 60 + +const BIG_512_60 Modulus_FP512BN= {0x4EB280922ADEF33L,0x6A55CE5F4C6467BL,0xC65DEAB236FE191L,0xCF1EACBE98B8E48L,0x3C111B0EF455146L,0xA1D8CB5307C0BBEL,0xFFFF9EC7F01C60BL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFL}; +const BIG_512_60 R2modp_FP512BN= {0x1FA6DCEF99812E9L,0xAB3452895A0B74EL,0xC53EA988C079E1EL,0x1E90E033BA630B9L,0xF1EA41C0714D8B0L,0xE72785387509E28L,0xD86794F834DAB00L,0x9757C2ACCD342A1L,0x44ECB079L}; +const chunk MConst_FP512BN= 0x692A189FCCC5C05L; +const BIG_512_60 Fra_FP512BN= {0x49617B1F4B73AB2L,0x71514F6202AED1FL,0xF6080D3BD8681E1L,0xF8AA9E852CBBB59L,0xC8CF2E2068398E9L,0x8A5296F791AB26BL,0x196A8C7C68B4EA1L,0xCF5BBF9095A1B79L,0x1EF71AA9L}; +const BIG_512_60 Frb_FP512BN= {0x5510572DF6B481L,0xF9047EFD49B595CL,0xD055DD765E95FAFL,0xD6740E396BFD2EEL,0x7341ECEE8C1B85CL,0x1786345B7615952L,0xE695124B876776AL,0x30A4406F6A5E486L,0xE108E556L}; + + +#endif + http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_field_GOLDILOCKS.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_field_GOLDILOCKS.c b/version3/c/rom_field_GOLDILOCKS.c new file mode 100644 index 0000000..2a1785e --- /dev/null +++ b/version3/c/rom_field_GOLDILOCKS.c @@ -0,0 +1,30 @@ +#include "arch.h" +#include "fp_GOLDILOCKS.h" + +/* Curve GOLDILOCKS */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 + +// Base Bits= 29 +const BIG_448_29 Modulus_GOLDILOCKS= {0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FDFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFF}; +const BIG_448_29 R2modp_GOLDILOCKS= {0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x3000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const chunk MConst_GOLDILOCKS= 0x1; + +#endif + +#if CHUNK==64 +// Base Bits= 58 +const BIG_448_58 Modulus_GOLDILOCKS= {0x3FFFFFFFFFFFFFFL,0x3FFFFFFFFFFFFFFL,0x3FFFFFFFFFFFFFFL,0x3FBFFFFFFFFFFFFL,0x3FFFFFFFFFFFFFFL,0x3FFFFFFFFFFFFFFL,0x3FFFFFFFFFFFFFFL,0x3FFFFFFFFFFL}; +const BIG_448_58 R2modp_GOLDILOCKS= {0x200000000L,0x0L,0x0L,0x0L,0x3000000L,0x0L,0x0L,0x0L}; +const chunk MConst_GOLDILOCKS= 0x1L; + + +#endif + + http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_field_HIFIVE.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_field_HIFIVE.c b/version3/c/rom_field_HIFIVE.c new file mode 100644 index 0000000..097dcec --- /dev/null +++ b/version3/c/rom_field_HIFIVE.c @@ -0,0 +1,27 @@ +#include "arch.h" +#include "fp_HIFIVE.h" + +/* Curve HIFIVE */ + + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 +// Base Bits= 29 +const BIG_336_29 Modulus_HIFIVE= {0x1FFFFFFD,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFF}; +const BIG_336_29 R2modp_HIFIVE= {0x9000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const chunk MConst_HIFIVE= 0x3; +#endif + +#if CHUNK==64 +// Base Bits= 60 +const BIG_336_60 Modulus_HIFIVE= {0xFFFFFFFFFFFFFFDL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFL}; +const BIG_336_60 R2modp_HIFIVE= {0x9000000000000L,0x0L,0x0L,0x0L,0x0L,0x0L}; +const chunk MConst_HIFIVE= 0x3L; +#endif + + http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_field_NIST256.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_field_NIST256.c b/version3/c/rom_field_NIST256.c new file mode 100644 index 0000000..b5a7187 --- /dev/null +++ b/version3/c/rom_field_NIST256.c @@ -0,0 +1,27 @@ +#include "arch.h" +#include "fp_NIST256.h" + +/* Curve NIST256 */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 +// Base Bits= 28 +const BIG_256_28 Modulus_NIST256= {0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFF,0x0,0x0,0x1000000,0x0,0xFFFFFFF,0xF}; +const BIG_256_28 R2modp_NIST256= {0x50000,0x300000,0x0,0x0,0xFFFFFFA,0xFFFFFBF,0xFFFFEFF,0xFFFAFFF,0x2FFFF,0x0}; +const chunk MConst_NIST256= 0x1; +#endif + +#if CHUNK==64 + +// Base Bits= 56 +const BIG_256_56 Modulus_NIST256= {0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFL,0x0L,0x1000000L,0xFFFFFFFFL}; +const BIG_256_56 R2modp_NIST256= {0x3000000050000L,0x0L,0xFFFFFBFFFFFFFAL,0xFFFAFFFFFFFEFFL,0x2FFFFL}; +const chunk MConst_NIST256= 0x1L; + +#endif + http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_field_NIST384.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_field_NIST384.c b/version3/c/rom_field_NIST384.c new file mode 100644 index 0000000..a739ae3 --- /dev/null +++ b/version3/c/rom_field_NIST384.c @@ -0,0 +1,27 @@ +#include "arch.h" +#include "fp_NIST384.h" + +/* Curve NIST384 */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 +// Base Bits= 29 +const BIG_384_29 Modulus_NIST384= {0x1FFFFFFF,0x7,0x0,0x1FFFFE00,0x1FFFEFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x7F}; +const BIG_384_29 R2modp_NIST384= {0x0,0x8000,0x1FF80000,0x1FFFFF,0x2000000,0x0,0x0,0x1FFFFFFC,0xF,0x100,0x400,0x0,0x0,0x0}; +const chunk MConst_NIST384= 0x1; +#endif + +#if CHUNK==64 +// Base Bits= 56 +const BIG_384_56 Modulus_NIST384= {0xFFFFFFFFL,0xFFFF0000000000L,0xFFFFFFFFFEFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFL}; +const BIG_384_56 R2modp_NIST384= {0xFE000000010000L,0xFFFFFFL,0x2L,0xFFFFFFFE00L,0x1000000020000L,0x0L,0x0L}; +const chunk MConst_NIST384= 0x100000001L; + +#endif + + http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_field_NIST521.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_field_NIST521.c b/version3/c/rom_field_NIST521.c new file mode 100644 index 0000000..048f9ac --- /dev/null +++ b/version3/c/rom_field_NIST521.c @@ -0,0 +1,25 @@ +#include "arch.h" +#include "fp_NIST521.h" + +/* Curve NIST521 */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 +// Base Bits= 28 +const BIG_528_28 Modulus_NIST521= {0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0x1FFFF}; +const BIG_528_28 R2modp_NIST521= {0x400000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; +const chunk MConst_NIST521= 0x1; +#endif + +#if CHUNK==64 +// Base Bits= 60 +const BIG_528_60 Modulus_NIST521= {0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0x1FFFFFFFFFFL}; +const BIG_528_60 R2modp_NIST521= {0x4000000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}; +const chunk MConst_NIST521= 0x1L; +#endif + http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rom_field_SECP256K1.c ---------------------------------------------------------------------- diff --git a/version3/c/rom_field_SECP256K1.c b/version3/c/rom_field_SECP256K1.c new file mode 100644 index 0000000..4f80178 --- /dev/null +++ b/version3/c/rom_field_SECP256K1.c @@ -0,0 +1,28 @@ +#include "arch.h" +#include "fp_SECP256K1.h" + +/* Curve SECP256K1 */ + +#if CHUNK==16 + +#error Not supported + +#endif + +#if CHUNK==32 +// Base Bits= 28 +const BIG_256_28 Modulus_SECP256K1= {0xFFFFC2F,0xFFFFFEF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xF}; +const BIG_256_28 R2modp_SECP256K1= {0x0,0xA100000,0x2000E90,0x7A,0x1,0x0,0x0,0x0,0x0,0x0}; +const chunk MConst_SECP256K1= 0x2253531; + +#endif + +#if CHUNK==64 + +// Base Bits= 56 +const BIG_256_56 Modulus_SECP256K1= {0xFFFFFEFFFFFC2FL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFL}; +const BIG_256_56 R2modp_SECP256K1= {0xA1000000000000L,0x7A2000E90L,0x1L,0x0L,0x0L}; +const chunk MConst_SECP256K1= 0x38091DD2253531L; + +#endif + http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rsa.c ---------------------------------------------------------------------- diff --git a/version3/c/rsa.c b/version3/c/rsa.c new file mode 100644 index 0000000..bbe41b2 --- /dev/null +++ b/version3/c/rsa.c @@ -0,0 +1,162 @@ +/* +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +*/ + +/* RSA Functions - see main program below */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <time.h> + +#include "rsa_WWW.h" +#include "rsa_support.h" + +/* generate an RSA key pair */ +void RSA_WWW_KEY_PAIR(csprng *RNG,sign32 e,rsa_private_key_WWW *PRIV,rsa_public_key_WWW *PUB,octet *P, octet* Q) +{ + /* IEEE1363 A16.11/A16.12 more or less */ + BIG_XXX t[HFLEN_WWW],p1[HFLEN_WWW],q1[HFLEN_WWW]; + + if (RNG!=NULL) + { + + for (;;) + { + + FF_WWW_random(PRIV->p,RNG,HFLEN_WWW); + while (FF_WWW_lastbits(PRIV->p,2)!=3) FF_WWW_inc(PRIV->p,1,HFLEN_WWW); + while (!FF_WWW_prime(PRIV->p,RNG,HFLEN_WWW)) + FF_WWW_inc(PRIV->p,4,HFLEN_WWW); + + FF_WWW_copy(p1,PRIV->p,HFLEN_WWW); + FF_WWW_dec(p1,1,HFLEN_WWW); + + if (FF_WWW_cfactor(p1,e,HFLEN_WWW)) continue; + break; + } + + for (;;) + { + FF_WWW_random(PRIV->q,RNG,HFLEN_WWW); + while (FF_WWW_lastbits(PRIV->q,2)!=3) FF_WWW_inc(PRIV->q,1,HFLEN_WWW); + while (!FF_WWW_prime(PRIV->q,RNG,HFLEN_WWW)) + FF_WWW_inc(PRIV->q,4,HFLEN_WWW); + + FF_WWW_copy(q1,PRIV->q,HFLEN_WWW); + FF_WWW_dec(q1,1,HFLEN_WWW); + if (FF_WWW_cfactor(q1,e,HFLEN_WWW)) continue; + + break; + } + + } + else + { + FF_WWW_fromOctet(PRIV->p,P,HFLEN_WWW); + FF_WWW_fromOctet(PRIV->q,Q,HFLEN_WWW); + + FF_WWW_copy(p1,PRIV->p,HFLEN_WWW); + FF_WWW_dec(p1,1,HFLEN_WWW); + + FF_WWW_copy(q1,PRIV->q,HFLEN_WWW); + FF_WWW_dec(q1,1,HFLEN_WWW); + } + + FF_WWW_mul(PUB->n,PRIV->p,PRIV->q,HFLEN_WWW); + PUB->e=e; + + FF_WWW_copy(t,p1,HFLEN_WWW); + FF_WWW_shr(t,HFLEN_WWW); + FF_WWW_init(PRIV->dp,e,HFLEN_WWW); + FF_WWW_invmodp(PRIV->dp,PRIV->dp,t,HFLEN_WWW); + if (FF_WWW_parity(PRIV->dp)==0) FF_WWW_add(PRIV->dp,PRIV->dp,t,HFLEN_WWW); + FF_WWW_norm(PRIV->dp,HFLEN_WWW); + + FF_WWW_copy(t,q1,HFLEN_WWW); + FF_WWW_shr(t,HFLEN_WWW); + FF_WWW_init(PRIV->dq,e,HFLEN_WWW); + FF_WWW_invmodp(PRIV->dq,PRIV->dq,t,HFLEN_WWW); + if (FF_WWW_parity(PRIV->dq)==0) FF_WWW_add(PRIV->dq,PRIV->dq,t,HFLEN_WWW); + FF_WWW_norm(PRIV->dq,HFLEN_WWW); + + FF_WWW_invmodp(PRIV->c,PRIV->p,PRIV->q,HFLEN_WWW); + + return; +} + +/* destroy the Private Key structure */ +void RSA_WWW_PRIVATE_KEY_KILL(rsa_private_key_WWW *PRIV) +{ + FF_WWW_zero(PRIV->p,HFLEN_WWW); + FF_WWW_zero(PRIV->q,HFLEN_WWW); + FF_WWW_zero(PRIV->dp,HFLEN_WWW); + FF_WWW_zero(PRIV->dq,HFLEN_WWW); + FF_WWW_zero(PRIV->c,HFLEN_WWW); +} + +void RSA_WWW_fromOctet(BIG_XXX x[],octet *w) +{ + FF_WWW_fromOctet(x,w,FFLEN_WWW); +} + +/* RSA encryption with the public key */ +void RSA_WWW_ENCRYPT(rsa_public_key_WWW *PUB,octet *F,octet *G) +{ + BIG_XXX f[FFLEN_WWW]; + FF_WWW_fromOctet(f,F,FFLEN_WWW); + + FF_WWW_power(f,f,PUB->e,PUB->n,FFLEN_WWW); + + FF_WWW_toOctet(G,f,FFLEN_WWW); +} + +/* RSA decryption with the private key */ +void RSA_WWW_DECRYPT(rsa_private_key_WWW *PRIV,octet *G,octet *F) +{ + BIG_XXX g[FFLEN_WWW],t[FFLEN_WWW],jp[HFLEN_WWW],jq[HFLEN_WWW]; + + FF_WWW_fromOctet(g,G,FFLEN_WWW); + + FF_WWW_dmod(jp,g,PRIV->p,HFLEN_WWW); + FF_WWW_dmod(jq,g,PRIV->q,HFLEN_WWW); + + FF_WWW_skpow(jp,jp,PRIV->dp,PRIV->p,HFLEN_WWW); + FF_WWW_skpow(jq,jq,PRIV->dq,PRIV->q,HFLEN_WWW); + + + FF_WWW_zero(g,FFLEN_WWW); + FF_WWW_copy(g,jp,HFLEN_WWW); + FF_WWW_mod(jp,PRIV->q,HFLEN_WWW); + if (FF_WWW_comp(jp,jq,HFLEN_WWW)>0) + FF_WWW_add(jq,jq,PRIV->q,HFLEN_WWW); + FF_WWW_sub(jq,jq,jp,HFLEN_WWW); + FF_WWW_norm(jq,HFLEN_WWW); + + FF_WWW_mul(t,PRIV->c,jq,HFLEN_WWW); + FF_WWW_dmod(jq,t,PRIV->q,HFLEN_WWW); + + FF_WWW_mul(t,jq,PRIV->p,HFLEN_WWW); + FF_WWW_add(g,t,g,FFLEN_WWW); + FF_WWW_norm(g,FFLEN_WWW); + + FF_WWW_toOctet(F,g,FFLEN_WWW); + + return; +} + http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/c25f9e5c/version3/c/rsa.h ---------------------------------------------------------------------- diff --git a/version3/c/rsa.h b/version3/c/rsa.h new file mode 100644 index 0000000..4d4c3c1 --- /dev/null +++ b/version3/c/rsa.h @@ -0,0 +1,110 @@ +/* +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +*/ + +/** + * @file rsa.h + * @author Mike Scott + * @brief RSA Header file for implementation of RSA protocol + * + * declares functions + * + */ + +#ifndef RSA_WWW_H +#define RSA_WWW_H + +#include "ff_WWW.h" +#include "rsa_support.h" + +/*** START OF USER CONFIGURABLE SECTION - ***/ + +#define HASH_TYPE_RSA_WWW SHA256 /**< Chosen Hash algorithm */ + +/*** END OF USER CONFIGURABLE SECTION ***/ + +#define RFS_WWW MODBYTES_XXX*FFLEN_WWW /**< RSA Public Key Size in bytes */ + + +/** + @brief Integer Factorisation Public Key +*/ + +typedef struct +{ + sign32 e; /**< RSA exponent (typically 65537) */ + BIG_XXX n[FFLEN_WWW]; /**< An array of BIGs to store public key */ +} rsa_public_key_WWW; + +/** + @brief Integer Factorisation Private Key +*/ + +typedef struct +{ + BIG_XXX p[FFLEN_WWW/2]; /**< secret prime p */ + BIG_XXX q[FFLEN_WWW/2]; /**< secret prime q */ + BIG_XXX dp[FFLEN_WWW/2]; /**< decrypting exponent mod (p-1) */ + BIG_XXX dq[FFLEN_WWW/2]; /**< decrypting exponent mod (q-1) */ + BIG_XXX c[FFLEN_WWW/2]; /**< 1/p mod q */ +} rsa_private_key_WWW; + +/* RSA Auxiliary Functions */ + +/** @brief RSA Key Pair Generator + * + @param R is a pointer to a cryptographically secure random number generator + @param e the encryption exponent + @param PRIV the output RSA private key + @param PUB the output RSA public key + @param P Input prime number. Used when R is equal to NULL for testing + @param Q Inpuy prime number. Used when R is equal to NULL for testing + */ +extern void RSA_WWW_KEY_PAIR(csprng *R,sign32 e,rsa_private_key_WWW* PRIV,rsa_public_key_WWW* PUB,octet *P, octet* Q); + +/** @brief RSA encryption of suitably padded plaintext + * + @param PUB the input RSA public key + @param F is input padded message + @param G is the output ciphertext + */ +extern void RSA_WWW_ENCRYPT(rsa_public_key_WWW* PUB,octet *F,octet *G); +/** @brief RSA decryption of ciphertext + * + @param PRIV the input RSA private key + @param G is the input ciphertext + @param F is output plaintext (requires unpadding) + + */ +extern void RSA_WWW_DECRYPT(rsa_private_key_WWW* PRIV,octet *G,octet *F); +/** @brief Destroy an RSA private Key + * + @param PRIV the input RSA private key. Destroyed on output. + */ +extern void RSA_WWW_PRIVATE_KEY_KILL(rsa_private_key_WWW *PRIV); +/** @brief Populates an RSA public key from an octet string + * + Creates RSA public key from big-endian base 256 form. + @param x FF instance to be created from an octet string + @param S input octet string + */ +extern void RSA_WWW_fromOctet(BIG_XXX *x,octet *S); + + + +#endif
