use nums512w::big::NLEN;
use super::super::arch::Chunk;
use types::{ModType, CurveType, CurvePairingType, SexticTwist, SignOfX};
pub const MODULUS: [Chunk; NLEN] = [
0xFFFFFFFFFFFFDC7,
0xFFFFFFFFFFFFFFF,
0xFFFFFFFFFFFFFFF,
0xFFFFFFFFFFFFFFF,
0xFFFFFFFFFFFFFFF,
0xFFFFFFFFFFFFFFF,
0xFFFFFFFFFFFFFFF,
0xFFFFFFFFFFFFFFF,
0xFFFFFFFF,
];
pub const R2MODP: [Chunk; NLEN] = [0x100000000000000, 0x4F0B, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0];
pub const MCONST: Chunk = 0x239;
pub const CURVE_COF_I: isize = 1;
pub const CURVE_A: isize = -3;
pub const CURVE_B_I: isize = 121243;
pub const CURVE_COF: [Chunk; NLEN] = [0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0];
pub const CURVE_B: [Chunk; NLEN] = [0x1D99B, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0];
pub const CURVE_ORDER: [Chunk; NLEN] = [
0xE153F390433555D,
0x568B36607CD243C,
0x258ED97D0BDC63B,
0xA4FB94E7831B4FC,
0xFFFFFFFFFFF5B3C,
0xFFFFFFFFFFFFFFF,
0xFFFFFFFFFFFFFFF,
0xFFFFFFFFFFFFFFF,
0xFFFFFFFF,
];
pub const CURVE_GX: [Chunk; NLEN] = [
0xC8287958CABAE57,
0x5D60137D6F5DE2D,
0x94286255615831D,
0xA151076B359E937,
0xC25306D9F95021,
0x3BB501F6854506E,
0x2A03D3B5298CAD8,
0x141D0A93DA2B700,
0x3AC03447,
];
pub const CURVE_GY: [Chunk; NLEN] = [
0x3A08760383527A6,
0x2B5C1E4CFD0FE92,
0x1A840B25A5602CF,
0x15DA8B0EEDE9C12,
0x60C7BD14F14A284,
0xDEABBCBB8C8F4B2,
0xC63EBB1004B97DB,
0x29AD56B3CE0EEED,
0x943A54CA,
];
pub const MODBYTES: usize = 64;
pub const BASEBITS: usize = 60;
pub const MODBITS: usize = 512;
pub const MOD8: usize = 3;
pub const MODTYPE: ModType = ModType::PSEUDO_MERSENNE;
pub const SH: usize = 28;
pub const CURVETYPE: CurveType = CurveType::WEIERSTRASS;
pub const CURVE_PAIRING_TYPE: CurvePairingType = CurvePairingType::NOT;
pub const SEXTIC_TWIST: SexticTwist = SexticTwist::NOT;
pub const ATE_BITS: usize = 0;
pub const SIGN_OF_X: SignOfX = SignOfX::NOT;
pub const HASH_TYPE: usize = 64;
pub const AESKEY: usize = 32;