| /* |
| 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. |
| */ |
| |
| use bls24::big::NLEN; |
| use super::super::arch::Chunk; |
| use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX}; |
| |
| // Base Bits= 56 |
| // bls24 Modulus |
| |
| pub const MODULUS: [Chunk; NLEN] = [ |
| 0x44C1674A06152B, |
| 0xFFE2E82D30DAF8, |
| 0x6F1C5CBDB6A642, |
| 0x3220DF068A328B, |
| 0xE09E1F24406187, |
| 0xBA825079733568, |
| 0x6E803F2E77E4C1, |
| 0x3CCC5BA839AEC, |
| 0x555C0078, |
| ]; |
| pub const R2MODP: [Chunk; NLEN] = [ |
| 0x6A4A1FE013DF5B, |
| 0xE8E46D4D1BDE65, |
| 0x1F841391F45C67, |
| 0x9148A4516FB28, |
| 0x4398524EDF4C88, |
| 0x41C0E241B6DCE8, |
| 0xE42C208C19411, |
| 0xA7FE6FD73A7B1C, |
| 0xFCCCA76, |
| ]; |
| pub const MCONST: Chunk = 0xBD5D7D8095FE7D; |
| pub const FRA: [Chunk; NLEN] = [ |
| 0x5CA74ABBF96F1D, |
| 0x1FF8BD0C6FFBAD, |
| 0x49E9E26237469C, |
| 0x3CECA48407F8E5, |
| 0x69D68FF59267B7, |
| 0x5D199E33127CBD, |
| 0xB97549184F313A, |
| 0x4E77242DA52D8D, |
| 0x4BBC87B9, |
| ]; |
| pub const FRB: [Chunk; NLEN] = [ |
| 0xE81A1C8E0CA60E, |
| 0xDFEA2B20C0DF4A, |
| 0x25327A5B7F5FA6, |
| 0xF5343A828239A6, |
| 0x76C78F2EADF9CF, |
| 0x5D68B24660B8AB, |
| 0xB50AF61628B387, |
| 0xB555A18CDE6D5E, |
| 0x99F78BE, |
| ]; |
| |
| pub const CURVE_COF_I: isize = 0; |
| pub const CURVE_A: isize = 0; |
| pub const CURVE_B_I: isize = 19; |
| pub const CURVE_B: [Chunk; NLEN] = [0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]; |
| pub const CURVE_ORDER: [Chunk; NLEN] = [ |
| 0x1A08FFF0000001, |
| 0x1E7033FF551190, |
| 0x6ADE7EE322DDAF, |
| 0x848FC9D0CED13A, |
| 0x50D81729CC224, |
| 0x1F0F05B98BB44A, |
| 0x10010010005A0, |
| 0x0, |
| 0x0, |
| ]; |
| pub const CURVE_GX: [Chunk; NLEN] = [ |
| 0x6760F5EBE3CCD4, |
| 0xEFE2DAED9F4564, |
| 0x783F08EBA1FCC1, |
| 0xC6F8D95AF88134, |
| 0xDCA8D1AE2D8477, |
| 0x9077586CEFE4BF, |
| 0x8B7FEA5D99BC1D, |
| 0x17CAF9486DE9E1, |
| 0x1AB2BE34, |
| ]; |
| pub const CURVE_GY: [Chunk; NLEN] = [ |
| 0xCBA5CAD21E5245, |
| 0x6D6608C55DF6C4, |
| 0xB3ED294F39746B, |
| 0x145824920FF3C8, |
| 0x63AA4FD63E5A64, |
| 0x492A2BF79CE00F, |
| 0x66A7A4529FF79A, |
| 0x6C53E477B861CA, |
| 0x47FCB70C, |
| ]; |
| |
| pub const CURVE_BNX: [Chunk; NLEN] = [0x100020011FF80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]; |
| pub const CURVE_COF: [Chunk; NLEN] = [ |
| 0xC1FFBFF9F415AB, |
| 0x5556AAB7FF, |
| 0x0, |
| 0x0, |
| 0x0, |
| 0x0, |
| 0x0, |
| 0x0, |
| 0x0, |
| ]; |
| pub const CURVE_CRU: [Chunk; NLEN] = [ |
| 0xBC27146DD794A9, |
| 0x3A30938AF33A43, |
| 0xB112175223DDC6, |
| 0x125CFBB4236DFB, |
| 0x2358E379CE607, |
| 0xD680C6EB20806E, |
| 0x314C200860FF77, |
| 0x3CBC5A88268E4, |
| 0x555C0078, |
| ]; |
| pub const CURVE_PXAA: [Chunk; NLEN] = [ |
| 0xE2935374E24678, |
| 0xC34342582408B, |
| 0xF765CCDEFC69E, |
| 0xC33AAD2888D7F9, |
| 0x7FD2458967473A, |
| 0x52908ED55CBAB3, |
| 0x786671EB14AB88, |
| 0xA3EC96077958C8, |
| 0x959DE53, |
| ]; |
| pub const CURVE_PXAB: [Chunk; NLEN] = [ |
| 0x7F9EBAFFB099B8, |
| 0x3775A012A47038, |
| 0x6B5D1B1FC23856, |
| 0x7F0A26A730F9E3, |
| 0x1C38F85DB2A5CA, |
| 0x76A753E17E6926, |
| 0x2D39D1BE5AD0F9, |
| 0x31733DFC651E4C, |
| 0x3B0DED08, |
| ]; |
| pub const CURVE_PXBA: [Chunk; NLEN] = [ |
| 0xA1CDE711AD15D3, |
| 0x853178DF6E16ED, |
| 0x64BF43EA3E09A1, |
| 0x2D8CD6DE566B2F, |
| 0xF21C26C74FDB8B, |
| 0x47BCC89E3F6B1E, |
| 0x3FE2103F329F00, |
| 0x4E507AF2AA28C3, |
| 0x3EC27FAD, |
| ]; |
| pub const CURVE_PXBB: [Chunk; NLEN] = [ |
| 0x7AB2875EE0F480, |
| 0x4556E43D6C4B8C, |
| 0xFB22DF80E1CB99, |
| 0xF70FD0122F1FFD, |
| 0xD5DB25698EF5EA, |
| 0x4805CE1AF1BA3A, |
| 0x1DA7CE2E465CB7, |
| 0xCA0799F7E65855, |
| 0xA5B38DB, |
| ]; |
| pub const CURVE_PYAA: [Chunk; NLEN] = [ |
| 0x86499314781AA0, |
| 0x609DA303B70AB1, |
| 0xA52A6145FC44BB, |
| 0x462E04C42A3124, |
| 0xC383AE19AE68BB, |
| 0xA1B34F6BE4FCAD, |
| 0x198F901AD0BF4, |
| 0x736C094362CED0, |
| 0x5057F35D, |
| ]; |
| pub const CURVE_PYAB: [Chunk; NLEN] = [ |
| 0xBBEC57EEAE08FA, |
| 0x78774BAA5F96AD, |
| 0x64CAF099A42CA0, |
| 0xC89FBBCCF70478, |
| 0x6B720FEF855245, |
| 0x97F916376F7B3E, |
| 0x60F5587B5DF7E1, |
| 0x61EE89637816BD, |
| 0x2CE2B496, |
| ]; |
| pub const CURVE_PYBA: [Chunk; NLEN] = [ |
| 0x730276A5F0CC41, |
| 0xF89325530AA1F5, |
| 0xD9CD879AF8A147, |
| 0xEE53E8A9FE2880, |
| 0x420F07D3715390, |
| 0x4C15D519B71F3A, |
| 0x1A39DD3CB5B9B1, |
| 0x3EE631A6BE39F8, |
| 0x18070466, |
| ]; |
| pub const CURVE_PYBB: [Chunk; NLEN] = [ |
| 0xF1B2E6515C1CAE, |
| 0xD40D355B0988DC, |
| 0xC243FDC38A7772, |
| 0x5D338136B675CA, |
| 0x164E8A1D72FCDF, |
| 0xBBAE5CD0961AC, |
| 0xD6D04691771EB1, |
| 0xD9BDEC8B792840, |
| 0x499D14EA, |
| ]; |
| pub const CURVE_W: [[Chunk; NLEN]; 2] = [ |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| ]; |
| pub const CURVE_SB: [[[Chunk; NLEN]; 2]; 2] = [ |
| [ |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| ], |
| [ |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| ], |
| ]; |
| pub const CURVE_WB: [[Chunk; NLEN]; 4] = [ |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| ]; |
| pub const CURVE_BB: [[[Chunk; NLEN]; 4]; 4] = [ |
| [ |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| ], |
| [ |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| ], |
| [ |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| ], |
| [ |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0], |
| ], |
| ]; |
| |
| pub const USE_GLV: bool = true; |
| pub const USE_GS_G2: bool = true; |
| pub const USE_GS_GT: bool = true; |
| pub const GT_STRONG: bool = true; |
| |
| pub const MODBYTES: usize = 60; |
| pub const BASEBITS: usize = 56; |
| |
| pub const MODBITS: usize = 479; |
| pub const MOD8: usize = 3; |
| pub const MODTYPE: ModType = ModType::NOT_SPECIAL; |
| pub const SH: usize = 25; |
| |
| pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS; |
| pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::BLS; |
| pub const SEXTIC_TWIST: SexticTwist = SexticTwist::M_TYPE; |
| pub const SIGN_OF_X: SignOfX = SignOfX::POSITIVEX; |
| pub const HASH_TYPE: usize = 48; |
| pub const AESKEY: usize = 24; |