| /* |
| 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. |
| */ |
| |
| /* Fixed Data in ROM - Field and Curve parameters */ |
| |
| package amcl |
| |
| const NOT_SPECIAL int = 0 |
| const PSEUDO_MERSENNE int = 1 |
| const MONTGOMERY_FRIENDLY int = 2 |
| const WEIERSTRASS int = 0 |
| const EDWARDS int = 1 |
| const MONTGOMERY int = 2 |
| |
| const NLEN int = 5 |
| const DNLEN int = 2 * NLEN |
| const CHUNK int = 64 |
| const MODBYTES uint = 32 |
| |
| /*** Enter Some Field details here ***/ |
| // Curve 25519 |
| //const MODBITS uint=255 |
| //const MOD8 uint=5 |
| // NIST256 or Brainpool |
| //const MODBITS uint=256 |
| //const MOD8 uint=7 |
| // MF254 |
| //const MODBITS uint=254 |
| //const MOD8 uint=7 |
| // MS255 |
| //const MODBITS uint= 255 |
| //const MOD8 uint= 3 |
| // MF256 |
| //const MODBITS uint=256 |
| //const MOD8 uint=7 |
| // MS256 |
| //const MODBITS uint= 256 |
| //const MOD8 uint= 3 |
| // ANSSI |
| //const MODBITS uint= 256 |
| //const MOD8 uint= 3 |
| // BN Curve |
| const MODBITS uint = 254 /* Number of bits in Modulus */ |
| const MOD8 uint = 3 /* Modulus mod 8 */ |
| |
| /* Don't Modify from here... */ |
| const MASK int64 = ((int64(1) << BASEBITS) - 1) |
| const BASEBITS uint = 56 |
| const OMASK int64 = ((int64(-1)) << (MODBITS % BASEBITS)) |
| const HBITS uint = (BASEBITS / 2) |
| const HMASK int64 = ((int64(1) << HBITS) - 1) |
| const TBITS uint = MODBITS % BASEBITS // Number of active bits in top word |
| const TMASK int64 = (int64(1) << TBITS) - 1 |
| const FF_BITS int = 2048 /* Finite Field Size in bits - must be 256.2^n */ |
| const FFLEN int = (FF_BITS / 256) |
| const HFLEN int = (FFLEN / 2) /* Useful for half-size RSA private key operations */ |
| |
| const NEXCESS int = (1 << (uint(CHUNK) - BASEBITS - 1)) |
| const FEXCESS int64 = (int64(1) << (BASEBITS*uint(NLEN) - MODBITS)) |
| |
| // START SPECIFY FIELD DETAILS HERE |
| //********************************************************************************* |
| // Curve25519 Modulus |
| //const MODTYPE int=PSEUDO_MERSENNE |
| //var Modulus = [...]int64 {0xFFFFFFFFFFFFED,0xFFFFFFFFFFFFFF,0xFFFFFFFFFFFFFF,0xFFFFFFFFFFFFFF,0x7FFFFFFF} |
| //const MConst int64=0x13 |
| // NIST-256 Curve |
| //const MODTYPE int=NOT_SPECIAL |
| //var Modulus = [...]int64 {0xFFFFFFFFFFFFFF,0xFFFFFFFFFF,0x0,0x1000000,0xFFFFFFFF} |
| //const MConst int64=0x1 |
| // MF254 Modulus |
| //const MODTYPE int=MONTGOMERY_FRIENDLY |
| //var Modulus= [...]int64 {0xFFFFFFFFFFFFFF,0xFFFFFFFFFFFFFF,0xFFFFFFFFFFFFFF,0xFFFFFFFFFFFFFF,0x3F80FFFF} |
| //const MConst int64=0x3F810000 |
| // MS255 Modulus |
| //const MODTYPE int= 1 |
| //var Modulus= [...]int64 {0xFFFFFFFFFFFD03,0xFFFFFFFFFFFFFF,0xFFFFFFFFFFFFFF,0xFFFFFFFFFFFFFF,0x7FFFFFFF} |
| //const MConst int64=0x2FD |
| // MF256 Modulus |
| //const MODTYPE int= 2 |
| //var Modulus= [...]int64 {0xFFFFFFFFFFFFFF,0xFFFFFFFFFFFFFF,0xFFFFFFFFFFFFFF,0xFFFFFFFFFFFFFF,0xFFA7FFFF} |
| //const MConst int64=0xFFA80000 |
| // MS256 Modulus |
| //const MODTYPE int= 1 |
| //var Modulus= [...]int64 {0xFFFFFFFFFFFF43,0xFFFFFFFFFFFFFF,0xFFFFFFFFFFFFFF,0xFFFFFFFFFFFFFF,0xFFFFFFFF} |
| //const MConst int64=0xBD |
| // Brainpool |
| //const MODTYPE int= NOT_SPECIAL |
| //var Modulus= [...]int64 {0x13481D1F6E5377,0xF623D526202820,0x909D838D726E3B,0xA1EEA9BC3E660A,0xA9FB57DB} |
| //const MConst int64 =0xA75590CEFD89B9 |
| // ANSSI |
| //const MODTYPE int= 0 |
| //var Modulus= [...]int64{0xFCF353D86E9C03,0xADBCABC8CA6DE8,0xE8CE42435B3961,0xB3AD58F10126D,0xF1FD178C} |
| //const MConst int64=0x97483A164E1155 |
| // BNCX Curve Modulus |
| const MODTYPE int = NOT_SPECIAL |
| |
| var Modulus = [...]int64{0x6623EF5C1B55B3, 0xD6EE18093EE1BE, 0x647A6366D3243F, 0x8702A0DB0BDDF, 0x24000000} |
| |
| const MConst int64 = 0x4E205BF9789E85 |
| |
| // BN Curve |
| //const MODTYPE int=NOT_SPECIAL |
| //var Modulus= [...]int64 {0x13,0x13A7,0x80000000086121,0x40000001BA344D,0x25236482} |
| //const MConst int64=0x435E50D79435E5 |
| // BNT Curve |
| //const MODTYPE int=NOT_SPECIAL |
| //var Modulus= [...]int64 {0x9DBBFEEEB4A713,0x555614F464BABE,0x3696F8D5F06E8A,0x6517014EFA0BAB,0x240120DB} |
| //const MConst int64=0xC5A872D914C4E5 |
| // BNT2 Curve |
| //const MODTYPE int=NOT_SPECIAL |
| //var Modulus= [...]int64 {0xB2DC2BB460A48B,0x93E428F0D651E8,0xF3B89D00081CF,0x410F5AADB74E20,0x24000482} |
| //const MConst int64=0xFE6A47A6505CDD |
| |
| // START SPECIFY CURVE DETAILS HERE |
| //********************************************************************************* |
| |
| // Ed25519 Curve |
| //const CURVETYPE int=EDWARDS |
| //const CURVE_A int = -1 |
| //var CURVE_B = [...]int64 {0xEB4DCA135978A3,0xA4D4141D8AB75,0x797779E8980070,0x2B6FFE738CC740,0x52036CEE} |
| //var CURVE_Order = [...]int64 {0x12631A5CF5D3ED,0xF9DEA2F79CD658,0x14DE,0x0,0x10000000} |
| //var CURVE_Gx = [...]int64 {0x562D608F25D51A,0xC7609525A7B2C9,0x31FDD6DC5C692C,0xCD6E53FEC0A4E2,0x216936D3} |
| //var CURVE_Gy = [...]int64 {0x66666666666658,0x66666666666666,0x66666666666666,0x66666666666666,0x66666666} |
| |
| // NIST-256 Curve |
| //const CURVETYPE int=WEIERSTRASS |
| //const CURVE_A int = -3 |
| //var CURVE_B = [...]int64 {0xCE3C3E27D2604B,0x6B0CC53B0F63B,0x55769886BC651D,0xAA3A93E7B3EBBD,0x5AC635D8} |
| //var CURVE_Order = [...]int64 {0xB9CAC2FC632551,0xFAADA7179E84F3,0xFFFFFFFFFFBCE6,0xFFFFFF,0xFFFFFFFF} |
| //var CURVE_Gx =[...]int64 {0xA13945D898C296,0x7D812DEB33A0F4,0xE563A440F27703,0xE12C4247F8BCE6,0x6B17D1F2} |
| //var CURVE_Gy =[...]int64 {0xB6406837BF51F5,0x33576B315ECECB,0x4A7C0F9E162BCE,0xFE1A7F9B8EE7EB,0x4FE342E2} |
| |
| // MF254 Modulus, Weierstrass Curve w-254-mont |
| //const CURVETYPE int= 0 |
| //const CURVE_A int = -3 |
| //var CURVE_B = [...]int64 {0xFFFFFFFFFFD08D,0xFFFFFFFFFFFFFF,0xFFFFFFFFFFFFFF,0xFFFFFFFFFFFFFF,0x3F80FFFF} |
| //var CURVE_Order=[...]int64 {0xA419C4AF8DF83F,0x8BEA0DA375C06F,0xFFFFFFFFFFEB81,0xFFFFFFFFFFFFFF,0x3F80FFFF} |
| //var CURVE_Gx =[...]int64 {0x2,0x0,0x0,0x0,0x0} |
| //var CURVE_Gy =[...]int64 {0x65DF37F90D4EBC,0x38E3F8511931AD,0x75BD778AEBDFB7,0x3B2E56014AE15A,0x140E3FD3} |
| |
| // MF254 Modulus, Edwards Curve ed-254-mont |
| //const CURVETYPE int= 1 |
| //const CURVE_A int= -1 |
| //var CURVE_B = [...]int64 {0x367B,0x0,0x0,0x0,0x0} |
| //var CURVE_Order=[...]int64 {0xF3D3FEC46E98C7,0x306C8BD62FB0EA,0xFFFFFFFFFFEB95,0xFFFFFFFFFFFFFF,0xFE03FFF} |
| //var CURVE_Gx =[...]int64 {0x1,0x0,0x0,0x0,0x0} |
| //var CURVE_Gy =[...]int64 {0x52D0FDAF2701E5,0x9A840E3212187C,0xD502363F4E3632,0xD6A4C335951D00,0x19F0E690} |
| |
| // MF254 Modulus, Montgomery Curve |
| //const CURVETYPE int=MONTGOMERY |
| //const CURVE_A int= -55790 |
| //var CURVE_B = [...]int64 {0x0,0x0,0x0,0x0,0x0} // not used |
| //var CURVE_Order=[...]int64 {0xF3D3FEC46E98C7,0x306C8BD62FB0EA,0xFFFFFFFFFFEB95,0xFFFFFFFFFFFFFF,0xFE03FFF} |
| //var CURVE_Gx =[...]int64 {0x3,0x0,0x0,0x0,0x0} |
| //var CURVE_Gy =[...]int64 {0x0,0x0,0x0,0x0,0x0} // not used |
| |
| // MS255 Modulus, Weierstrass Curve |
| //const CURVETYPE int= 0 |
| //const CURVE_A int= -3 |
| //var CURVE_B = [...]int64 {0xFFFFFFFFFFAB46,0xFFFFFFFFFFFFFF,0xFFFFFFFFFFFFFF,0xFFFFFFFFFFFFFF,0x7FFFFFFF} |
| //var CURVE_Order=[...]int64 {0x8FAC983C594AEB,0x38283AD2B3DFAB,0xFFFFFFFFFF864A,0xFFFFFFFFFFFFFF,0x7FFFFFFF} |
| //var CURVE_Gx =[...]int64 {0x1,0x0,0x0,0x0,0x0}; |
| //var CURVE_Gy =[...]int64 {0x33FF6769CB44BA,0xC78CDDFDA60D17,0xF9B2FF7D177DB6,0xEDBA7833921EBF,0x6F7A6AC0} |
| |
| // MS255 Modulus, Edwards Curve |
| //const CURVETYPE int= 1 |
| //const CURVE_A int= -1 |
| //var CURVE_B = [...]int64{0xEA97,0x0,0x0,0x0,0x0} |
| //var CURVE_Order=[...]int64{0x49D1ED0436EB75,0xA785EDA6832EAC,0xFFFFFFFFFFDCF1,0xFFFFFFFFFFFFFF,0x1FFFFFFF} |
| //var CURVE_Gx =[...]int64{0x4,0x0,0x0,0x0,0x0} |
| //var CURVE_Gy =[...]int64{0x2A255BD08736A0,0x4B8AED445A45BA,0xDD8E0C47E55291,0x4A7BB545EC254C,0x26CB7853} |
| |
| // MS255 Modulus, Montgomery Curve |
| //const CURVETYPE int=MONTGOMERY |
| //const CURVE_A int=-240222 |
| //var CURVE_B = [...]int64 {0x0,0x0,0x0,0x0,0x0} |
| //var CURVE_Order=[...]int64 {0x49D1ED0436EB75,0xA785EDA6832EAC,0xFFFFFFFFFFDCF1,0xFFFFFFFFFFFFFF,0x1FFFFFFF} |
| //var CURVE_Gx =[...]int64 {0x4,0x0,0x0,0x0,0x0} |
| //var CURVE_Gy =[...]int64 {0x0,0x0,0x0,0x0,0x0}; |
| |
| // MF256 Modulus, Weierstrass Curve |
| //const CURVETYPE int= 0 |
| //const CURVE_A int= -3 |
| //var CURVE_B = [...]int64 {0x14E6A,0x0,0x0,0x0,0x0} |
| //var CURVE_Order=[...]int64 {0x10C5E1A79857EB,0x7513E6E5074B9D,0xFFFFFFFFFFFC51,0xFFFFFFFFFFFFFF,0xFFA7FFFF} |
| //var CURVE_Gx =[...]int64 {0x1,0x0,0x0,0x0,0x0} |
| //var CURVE_Gy =[...]int64 {0x7954C2B724D2A,0x47EB8D94DC6610,0x26123DAE289569,0xBE1808CE7BABBA,0x20887C87} |
| |
| // MF256, Edwards Curve |
| //const CURVETYPE int= 1 |
| //const CURVE_A int= -1 |
| //var CURVE_B = [...]int64 {0x350A,0x0,0x0,0x0,0x0} |
| //var CURVE_Order=[...]int64 {0xD92EDED8EC7BAB,0xBBAFB86733C966,0xFFFFFFFFFFB154,0xFFFFFFFFFFFFFF,0x3FE9FFFF} |
| //var CURVE_Gx =[...]int64 {0x1,0x0,0x0,0x0,0x0} |
| //var CURVE_Gy =[...]int64 {0xEAA722F2F3C908,0x5E648DFEA68D7D,0xF3DB2C1AACA0C0,0xF8CC4D5AEAEBEE,0xDAD8D4F8} |
| |
| // MF256 Modulus, Montgomery Curve |
| //const CURVETYPE int=MONTGOMERY |
| //const CURVE_A int= -54314 |
| //var CURVE_B = [...]int64 {0x0,0x0,0x0,0x0,0x0} // not used |
| //var CURVE_Order=[...]int64 {0xD92EDED8EC7BAB,0xBBAFB86733C966,0xFFFFFFFFFFB154,0xFFFFFFFFFFFFFF,0x3FE9FFFF} |
| //var CURVE_Gx =[...]int64 {0x8,0x0,0x0,0x0,0x0} |
| //var CURVE_Gy =[...]int64 {0x0,0x0,0x0,0x0,0x0} // not used |
| |
| // MS256, Weierstrass Curve |
| //const CURVETYPE int= 0 |
| //const CURVE_A int= -3 |
| //var CURVE_B = [...]int64 {0x25581,0x0,0x0,0x0,0x0} |
| //var CURVE_Order=[...]int64 {0xAB20294751A825,0x8275EA265C6020,0xFFFFFFFFFFE43C,0xFFFFFFFFFFFFFF,0xFFFFFFFF} |
| //var CURVE_Gx =[...]int64 {0x1,0x0,0x0,0x0,0x0} |
| //var CURVE_Gy =[...]int64 {0xF46306C2B56C77,0x2F9375894EC10B,0x6CCEEEDD6BD02C,0xC1E466D7FC82C9,0x696F1853} |
| |
| // MS256, Edwards Curve |
| //const CURVETYPE int= 1 |
| //const CURVE_A int= -1 |
| //var CURVE_B = [...]int64 {0x3BEE,0x0,0x0,0x0,0x0} |
| //var CURVE_Order=[...]int64 {0xB84E6F1122B4AD,0xA55AD0A6BC64E5,0xFFFFFFFFFFBE6A,0xFFFFFFFFFFFFFF,0x3FFFFFFF} |
| //var CURVE_Gx =[...]int64 {0xD,0x0,0x0,0x0,0x0} |
| //var CURVE_Gy =[...]int64 {0x7F6FB5331CADBA,0x6D63824D303F70,0xB39FA046BFBE2A,0x2A1276DBA3D330,0x7D0AB41E} |
| |
| // MS256 Modulus, Montgomery Curve |
| //const CURVETYPE int=MONTGOMERY |
| //const CURVE_A int=-61370 |
| //var CURVE_B = [...]int64 {0x0,0x0,0x0,0x0,0x0} // not used |
| //var CURVE_Order= [...]int64 {0xB84E6F1122B4AD,0xA55AD0A6BC64E5,0xFFFFFFFFFFBE6A,0xFFFFFFFFFFFFFF,0x3FFFFFFF} |
| //var CURVE_Gx = [...]int64 {0xb,0x0,0x0,0x0,0x0} |
| //var CURVE_Gy = [...]int64 {0x0,0x0,0x0,0x0,0x0} // not used |
| |
| // Brainpool |
| //const CURVETYPE int= 0 |
| //const CURVE_A int= -3 |
| //var CURVE_B = [...]int64 {0xE58101FEE92B04,0xEBC4AF2F49256A,0x733D0B76B7BF93,0x30D84EA4FE66A7,0x662C61C4} |
| //var CURVE_Order= [...]int64 {0x1E0E82974856A7,0x7AA3B561A6F790,0x909D838D718C39,0xA1EEA9BC3E660A,0xA9FB57DB} |
| //var CURVE_Gx = [...]int64 {0xA191562E1305F4,0x42C47AAFBC2B79,0xB23A656149AFA1,0xC1CFE7B7732213,0xA3E8EB3C} |
| //var CURVE_Gy = [...]int64 {0xABE8F35B25C9BE,0xB6DE39D027001D,0xE14644417E69BC,0x3439C56D7F7B22,0x2D996C82} |
| |
| // ANSSI |
| //const CURVETYPE int= 0 |
| //const CURVE_A int= -3 |
| //var CURVE_B = [...]int64 {0x75ED967B7BB73F,0xC9AE4B1A18030,0x754A44C00FDFEC,0x5428A9300D4ABA,0xEE353FCA} |
| //var CURVE_Order=[...]int64 {0xFDD459C6D655E1,0x67E140D2BF941F,0xE8CE42435B53DC,0xB3AD58F10126D,0xF1FD178C} |
| //var CURVE_Gx =[...]int64 {0xC97A2DD98F5CFF,0xD2DCAF98B70164,0x4749D423958C27,0x56C139EB31183D,0xB6B3D4C3} |
| //var CURVE_Gy =[...]int64 {0x115A1554062CFB,0xC307E8E4C9E183,0xF0F3ECEF8C2701,0xC8B204911F9271,0x6142E0F7} |
| |
| // BNCX Curve |
| |
| const CURVETYPE int = WEIERSTRASS |
| const CURVE_A int = 0 |
| |
| var CURVE_B = [...]int64{0x2, 0x0, 0x0, 0x0, 0x0} |
| var CURVE_Order = [...]int64{0x11C0A636EB1F6D, 0xD6EE0CC906CEBE, 0x647A6366D2C43F, 0x8702A0DB0BDDF, 0x24000000} |
| var CURVE_Bnx = [...]int64{0x3C012B1, 0x40, 0x0, 0x0, 0x0} |
| var CURVE_Cru = [...]int64{0xE0931794235C97, 0xDF6471EF875631, 0xCA83F1440BD, 0x480000, 0x0} |
| var CURVE_Fra = [...]int64{0xD9083355C80EA3, 0x7326F173F8215B, 0x8AACA718986867, 0xA63A0164AFE18B, 0x1359082F} |
| var CURVE_Frb = [...]int64{0x8D1BBC06534710, 0x63C7269546C062, 0xD9CDBC4E3ABBD8, 0x623628A900DC53, 0x10A6F7D0} |
| var CURVE_Pxa = [...]int64{0x851CEEE4D2EC74, 0x85BFA03E2726C0, 0xF5C34BBB907C, 0x7053B256358B25, 0x19682D2C} |
| var CURVE_Pxb = [...]int64{0xA58E8B2E29CFE1, 0x97B0C209C30F47, 0x37A8E99743F81B, 0x3E19F64AA011C9, 0x1466B9EC} |
| var CURVE_Pya = [...]int64{0xFBFCEBCF0BE09F, 0xB33D847EC1B30C, 0x157DAEE2096361, 0x72332B8DD81E22, 0xA79EDD9} |
| var CURVE_Pyb = [...]int64{0x904B228898EE9D, 0x4EA569D2EDEBED, 0x512D8D3461C286, 0xECC4C09035C6E4, 0x6160C39} |
| var CURVE_Gx = [...]int64{0x6623EF5C1B55B2, 0xD6EE18093EE1BE, 0x647A6366D3243F, 0x8702A0DB0BDDF, 0x24000000} |
| var CURVE_Gy = [...]int64{0x1, 0x0, 0x0, 0x0, 0x0} |
| var CURVE_W = [2][5]int64{{0x546349162FEB83, 0xB40381200, 0x6000, 0x0, 0x0}, {0x7802561, 0x80, 0x0, 0x0, 0x0}} |
| var CURVE_SB = [2][2][5]int64{{{0x5463491DB010E4, 0xB40381280, 0x6000, 0x0, 0x0}, {0x7802561, 0x80, 0x0, 0x0, 0x0}}, {{0x7802561, 0x80, 0x0, 0x0, 0x0}, {0xBD5D5D20BB33EA, 0xD6EE0188CEBCBD, 0x647A6366D2643F, 0x8702A0DB0BDDF, 0x24000000}}} |
| var CURVE_WB = [4][5]int64{{0x1C2118567A84B0, 0x3C012B040, 0x2000, 0x0, 0x0}, {0xCDF995BE220475, 0x94EDA8CA7F9A36, 0x8702A0DC07E, 0x300000, 0x0}, {0x66FCCAE0F10B93, 0x4A76D4653FCD3B, 0x4381506E03F, 0x180000, 0x0}, {0x1C21185DFAAA11, 0x3C012B0C0, 0x2000, 0x0, 0x0}} |
| var CURVE_BB = [4][4][5]int64{{{0x11C0A6332B0CBD, 0xD6EE0CC906CE7E, 0x647A6366D2C43F, 0x8702A0DB0BDDF, 0x24000000}, {0x11C0A6332B0CBC, 0xD6EE0CC906CE7E, 0x647A6366D2C43F, 0x8702A0DB0BDDF, 0x24000000}, {0x11C0A6332B0CBC, 0xD6EE0CC906CE7E, 0x647A6366D2C43F, 0x8702A0DB0BDDF, 0x24000000}, {0x7802562, 0x80, 0x0, 0x0, 0x0}}, {{0x7802561, 0x80, 0x0, 0x0, 0x0}, {0x11C0A6332B0CBC, 0xD6EE0CC906CE7E, 0x647A6366D2C43F, 0x8702A0DB0BDDF, 0x24000000}, {0x11C0A6332B0CBD, 0xD6EE0CC906CE7E, 0x647A6366D2C43F, 0x8702A0DB0BDDF, 0x24000000}, {0x11C0A6332B0CBC, 0xD6EE0CC906CE7E, 0x647A6366D2C43F, 0x8702A0DB0BDDF, 0x24000000}}, {{0x7802562, 0x80, 0x0, 0x0, 0x0}, {0x7802561, 0x80, 0x0, 0x0, 0x0}, {0x7802561, 0x80, 0x0, 0x0, 0x0}, {0x7802561, 0x80, 0x0, 0x0, 0x0}}, {{0x3C012B2, 0x40, 0x0, 0x0, 0x0}, {0xF004AC2, 0x100, 0x0, 0x0, 0x0}, {0x11C0A62F6AFA0A, 0xD6EE0CC906CE3E, 0x647A6366D2C43F, 0x8702A0DB0BDDF, 0x24000000}, {0x3C012B2, 0x40, 0x0, 0x0, 0x0}}} |
| |
| // BN Curve |
| /* |
| const CURVETYPE int=WEIERSTRASS |
| const CURVE_A int= 0 |
| var CURVE_B = [...]int64 {0x2,0x0,0x0,0x0,0x0} |
| var CURVE_Order=[...]int64 {0xD,0x800000000010A1,0x8000000007FF9F,0x40000001BA344D,0x25236482} |
| var CURVE_Bnx=[...]int64 {0x80000000000001,0x40,0x0,0x0,0x0} |
| var CURVE_Cru=[...]int64 {0x80000000000007,0x6CD,0x40000000024909,0x49B362,0x0} |
| var CURVE_Fra=[...]int64 {0x7DE6C06F2A6DE9,0x74924D3F77C2E1,0x50A846953F8509,0x212E7C8CB6499B,0x1B377619} |
| var CURVE_Frb=[...]int64 {0x82193F90D5922A,0x8B6DB2C08850C5,0x2F57B96AC8DC17,0x1ED1837503EAB2,0x9EBEE69} |
| var CURVE_Pxa=[...]int64 {0xAB2C7935FD0CB4,0xE319E4FCC57C2B,0x24F6DF763B05A5,0xF55EA7EA335FB7,0x95B04D4} |
| var CURVE_Pxb=[...]int64 {0xA07D0790962455,0x86BE3D27AA5E38,0x89E05747F39D6D,0xC08347B49D42BF,0x5D4D8A7} |
| var CURVE_Pya=[...]int64 {0xADCE687A08A46C,0x2B30E98A4191F9,0x4C3784B1F16908,0x25E5313FA16D1C,0xABF2ABF} |
| var CURVE_Pyb=[...]int64 {0xDF88D405F306EC,0x82076ADD13A0E6,0x1E47819D6A5C04,0xE679DABDB38627,0x18769A87} |
| var CURVE_Gx =[...]int64 {0x12,0x13A7,0x80000000086121,0x40000001BA344D,0x25236482} |
| var CURVE_Gy =[...]int64 {0x1,0x0,0x0,0x0,0x0} |
| var CURVE_W=[2][5]int64{{0x3,0x80000000000204,0x6181,0x0,0x0},{0x1,0x81,0x0,0x0,0x0}} |
| var CURVE_SB=[2][2][5]int64 {{{0x4,0x80000000000285,0x6181,0x0,0x0},{0x1,0x81,0x0,0x0,0x0}},{{0x1,0x81,0x0,0x0,0x0},{0xA,0xE9D,0x80000000079E1E,0x40000001BA344D,0x25236482}}} |
| var CURVE_WB=[4][5]int64 {{0x80000000000000,0x80000000000040,0x2080,0x0,0x0},{0x80000000000005,0x54A,0x8000000001C707,0x312241,0x0},{0x80000000000003,0x800000000002C5,0xC000000000E383,0x189120,0x0},{0x80000000000001,0x800000000000C1,0x2080,0x0,0x0}} |
| var CURVE_BB=[4][4][5]int64 {{{0x8000000000000D,0x80000000001060,0x8000000007FF9F,0x40000001BA344D,0x25236482},{0x8000000000000C,0x80000000001060,0x8000000007FF9F,0x40000001BA344D,0x25236482},{0x8000000000000C,0x80000000001060,0x8000000007FF9F,0x40000001BA344D,0x25236482},{0x2,0x81,0x0,0x0,0x0}},{{0x1,0x81,0x0,0x0,0x0},{0x8000000000000C,0x80000000001060,0x8000000007FF9F,0x40000001BA344D,0x25236482},{0x8000000000000D,0x80000000001060,0x8000000007FF9F,0x40000001BA344D,0x25236482},{0x8000000000000C,0x80000000001060,0x8000000007FF9F,0x40000001BA344D,0x25236482}},{{0x2,0x81,0x0,0x0,0x0},{0x1,0x81,0x0,0x0,0x0},{0x1,0x81,0x0,0x0,0x0},{0x1,0x81,0x0,0x0,0x0}},{{0x80000000000002,0x40,0x0,0x0,0x0},{0x2,0x102,0x0,0x0,0x0},{0xA,0x80000000001020,0x8000000007FF9F,0x40000001BA344D,0x25236482},{0x80000000000002,0x40,0x0,0x0,0x0}}} |
| */ |
| |
| // BNT Curve |
| /* |
| const CURVETYPE int=WEIERSTRASS |
| const CURVE_A int= 0 |
| var CURVE_B = [...]int64 {0x2,0x0,0x0,0x0,0x0} |
| var CURVE_Order=[...]int64 {0x75777E8D30210D,0xD43492B2CB363A,0x3696F8D5F00E88,0x6517014EFA0BAB,0x240120DB} |
| var CURVE_Bnx=[...]int64 {0x806000004081,0x40,0x0,0x0,0x0} |
| var CURVE_Cru=[...]int64 {0xEB53D5AB4FCD87,0x82A5F2BAB11FAD,0x47651504C9764C,0x4801B1,0x0} |
| var CURVE_Fra=[...]int64 {0xF5D14EADC80022,0x4904D6FACCE359,0xF190A13211BE6C,0xC9BBC4394F6509,0x1328A292} |
| var CURVE_Frb=[...]int64 {0xA7EAB040ECA6F1,0xC513DF997D764,0x450657A3DEB01E,0x9B5B3D15AAA6A1,0x10D87E48} |
| var CURVE_Pxa=[...]int64 {0x8987E2288E65BB,0xAD1CAA6313BE,0x325041548B7CCC,0x4C1339EBCC055,0x14483FCD} |
| var CURVE_Pxb=[...]int64 {0x67888808DBE2C0,0x7FE1F81E34853A,0xA631A51B57B95,0x384EC302DA3FC5,0x87F46B3} |
| var CURVE_Pya=[...]int64 {0x202C47E020CA1D,0xB4167E8399F36C,0xC6E5439F72C94C,0x102B0BD74A2C69,0x14E8C29C} |
| var CURVE_Pyb=[...]int64 {0xD8437C716628F2,0x27E167BCB7DC6B,0xA82C7572681D0A,0x62454BD1EDEC18,0x17AFE2A4} |
| var CURVE_Gx =[...]int64 {0x9DBBFEEEB4A712,0x555614F464BABE,0x3696F8D5F06E8A,0x6517014EFA0BAB,0x240120DB} |
| var CURVE_Gy =[...]int64 {0x1,0x0,0x0,0x0,0x0} |
| var CURVE_W=[2][5]int64{{0x26430061838403,0x81218241998384,0x6001,0x0,0x0},{0x100C000008101,0x80,0x0,0x0,0x0}} |
| var CURVE_SB=[2][2][5]int64 {{{0x2743C061840504,0x81218241998404,0x6001,0x0,0x0},{0x100C000008101,0x80,0x0,0x0,0x0}},{{0x100C000008101,0x80,0x0,0x0,0x0},{0x4F347E2BAC9D0A,0x5313107131B2B6,0x3696F8D5EFAE87,0x6517014EFA0BAB,0x240120DB}}} |
| var CURVE_WB=[4][5]int64 {{0x6140602080C080,0x806080C08880C1,0x2000,0x0,0x0},{0xB53904088C4A85,0xAD2FA352DC6C36,0xDA436358868EDE,0x300120,0x0},{0x5ADCB204464583,0x5697D1A96E363B,0x6D21B1AC43476F,0x180090,0x0},{0x62412020814181,0x806080C0888141,0x2000,0x0,0x0}} |
| var CURVE_BB=[4][4][5]int64 {{{0x74F71E8D2FE08D,0xD43492B2CB35FA,0x3696F8D5F00E88,0x6517014EFA0BAB,0x240120DB},{0x74F71E8D2FE08C,0xD43492B2CB35FA,0x3696F8D5F00E88,0x6517014EFA0BAB,0x240120DB},{0x74F71E8D2FE08C,0xD43492B2CB35FA,0x3696F8D5F00E88,0x6517014EFA0BAB,0x240120DB},{0x100C000008102,0x80,0x0,0x0,0x0}},{{0x100C000008101,0x80,0x0,0x0,0x0},{0x74F71E8D2FE08C,0xD43492B2CB35FA,0x3696F8D5F00E88,0x6517014EFA0BAB,0x240120DB},{0x74F71E8D2FE08D,0xD43492B2CB35FA,0x3696F8D5F00E88,0x6517014EFA0BAB,0x240120DB},{0x74F71E8D2FE08C,0xD43492B2CB35FA,0x3696F8D5F00E88,0x6517014EFA0BAB,0x240120DB}},{{0x100C000008102,0x80,0x0,0x0,0x0},{0x100C000008101,0x80,0x0,0x0,0x0},{0x100C000008101,0x80,0x0,0x0,0x0},{0x100C000008101,0x80,0x0,0x0,0x0}},{{0x806000004082,0x40,0x0,0x0,0x0},{0x2018000010202,0x100,0x0,0x0,0x0},{0x7476BE8D2FA00A,0xD43492B2CB35BA,0x3696F8D5F00E88,0x6517014EFA0BAB,0x240120DB},{0x806000004082,0x40,0x0,0x0,0x0}}} |
| */ |
| |
| // BNT2 Curve |
| /* |
| const CURVETYPE int=WEIERSTRASS |
| const CURVE_A int= 0 |
| var CURVE_B = [...]int64 {0x2,0x0,0x0,0x0,0x0} |
| var CURVE_Order=[...]int64 {0xFB71A511AA2BF5,0x8DE127B73833D7,0xF3B89D00021CF,0x410F5AADB74E20,0x24000482} |
| var CURVE_Bnx=[...]int64 {0x20100608205,0x40,0x0,0x0,0x0} |
| var CURVE_Cru=[...]int64 {0x5027444866BD33,0x5B773016470EFB,0xC3617BECF23675,0x480006,0x0} |
| var CURVE_Fra=[...]int64 {0xB268C973AEF062,0xC69B33C3BCE492,0xF67FA37F195BBC,0x29E8CAB6BD0A41,0x124E0B8D} |
| var CURVE_Frb=[...]int64 {0x736240B1B429,0xCD48F52D196D56,0x18BBE650E72612,0x17268FF6FA43DE,0x11B1F8F5} |
| var CURVE_Pxa=[...]int64 {0xCC92399F40A3C8,0xCDA4E96611784A,0x7B056961706B35,0x9693C6318279D7,0x16FC17CF} |
| var CURVE_Pxb=[...]int64 {0x557A8AD8549540,0x6F7BE6F6510610,0x565907A95D17DB,0xBD5975909C8188,0x1EB5B500} |
| var CURVE_Pya=[...]int64 {0x7BECC514220513,0x4A78860E737B14,0x51B83935F12684,0x761422AA9D4DFA,0x1E8EE498} |
| var CURVE_Pyb=[...]int64 {0xB9328F577CE78E,0xB746E26FA5781F,0xA93DBC1FB8E27E,0xBAE33BDBA29D76,0x23CEF4CD} |
| var CURVE_Gx =[...]int64 {0xB2DC2BB460A48A,0x93E428F0D651E8,0xF3B89D00081CF,0x410F5AADB74E20,0x24000482} |
| var CURVE_Gy =[...]int64 {0x1,0x0,0x0,0x0,0x0} |
| var CURVE_W=[2][5]int64 {{0xB76282A1347083,0x60301399E1D10,0x6000,0x0,0x0},{0x40200C10409,0x80,0x0,0x0,0x0}} |
| var CURVE_SB=[2][2][5]int64 {{{0xB76684A1F5748C,0x60301399E1D90,0x6000,0x0,0x0},{0x40200C10409,0x80,0x0,0x0,0x0}},{{0x40200C10409,0x80,0x0,0x0,0x0},{0x440F227075BB72,0x87DE267D9A16C7,0xF3B89CFFFC1CF,0x410F5AADB74E20,0x24000482}}} |
| var CURVE_WB=[4][5]int64 {{0x9272D48A70A224,0x20100688A0945,0x2000,0x0,0x0},{0x5A572CF030EF19,0x9651763543721D,0x8240FD48A1B9A3,0x300004,0x0},{0xAD2C96F848B88F,0xCB28BB1AA1B92E,0x41207EA450DCD1,0x180002,0x0},{0x9276D68B31A62D,0x20100688A09C5,0x2000,0x0,0x0}} |
| var CURVE_BB=[4][4][5]int64 {{{0xFB6FA41149A9F1,0x8DE127B7383397,0xF3B89D00021CF,0x410F5AADB74E20,0x24000482},{0xFB6FA41149A9F0,0x8DE127B7383397,0xF3B89D00021CF,0x410F5AADB74E20,0x24000482},{0xFB6FA41149A9F0,0x8DE127B7383397,0xF3B89D00021CF,0x410F5AADB74E20,0x24000482},{0x40200C1040A,0x80,0x0,0x0,0x0}},{{0x40200C10409,0x80,0x0,0x0,0x0},{0xFB6FA41149A9F0,0x8DE127B7383397,0xF3B89D00021CF,0x410F5AADB74E20,0x24000482},{0xFB6FA41149A9F1,0x8DE127B7383397,0xF3B89D00021CF,0x410F5AADB74E20,0x24000482},{0xFB6FA41149A9F0,0x8DE127B7383397,0xF3B89D00021CF,0x410F5AADB74E20,0x24000482}},{{0x40200C1040A,0x80,0x0,0x0,0x0},{0x40200C10409,0x80,0x0,0x0,0x0},{0x40200C10409,0x80,0x0,0x0,0x0},{0x40200C10409,0x80,0x0,0x0,0x0}},{{0x20100608206,0x40,0x0,0x0,0x0},{0x80401820812,0x100,0x0,0x0,0x0},{0xFB6DA310E927EA,0x8DE127B7383357,0xF3B89D00021CF,0x410F5AADB74E20,0x24000482},{0x20100608206,0x40,0x0,0x0,0x0}}} |
| */ |
| |
| const USE_GLV bool = true |
| const USE_GS_G2 bool = true |
| const USE_GS_GT bool = true |
| const GT_STRONG bool = true |