mirror of
https://github.com/arnaucube/ark-curves-cherry-picked.git
synced 2026-01-27 14:13:46 +01:00
Initial commit
This commit is contained in:
161
bls12_377/src/fields/fq12.rs
Normal file
161
bls12_377/src/fields/fq12.rs
Normal file
@@ -0,0 +1,161 @@
|
||||
use super::*;
|
||||
use ark_ff::{biginteger::BigInteger384, field_new, fields::*};
|
||||
|
||||
pub type Fq12 = Fp12<Fq12Parameters>;
|
||||
|
||||
#[derive(Clone, Copy)]
|
||||
pub struct Fq12Parameters;
|
||||
|
||||
impl Fp12Parameters for Fq12Parameters {
|
||||
type Fp6Params = Fq6Parameters;
|
||||
|
||||
const NONRESIDUE: Fq6 = field_new!(Fq6, FQ2_ZERO, FQ2_ONE, FQ2_ZERO);
|
||||
|
||||
#[rustfmt::skip]
|
||||
const FROBENIUS_COEFF_FP12_C1: &'static [Fq2] = &[
|
||||
// Fp2::NONRESIDUE^(((q^0) - 1) / 6)
|
||||
field_new!(Fq2,
|
||||
field_new!(Fq, BigInteger384([
|
||||
0x2cdffffffffff68,
|
||||
0x51409f837fffffb1,
|
||||
0x9f7db3a98a7d3ff2,
|
||||
0x7b4e97b76e7c6305,
|
||||
0x4cf495bf803c84e8,
|
||||
0x8d6661e2fdf49a,
|
||||
])),
|
||||
FQ_ZERO,
|
||||
),
|
||||
// Fp2::NONRESIDUE^(((q^1) - 1) / 6)
|
||||
field_new!(Fq2,
|
||||
field_new!(Fq, BigInteger384([
|
||||
0x6ec47a04a3f7ca9e,
|
||||
0xa42e0cb968c1fa44,
|
||||
0x578d5187fbd2bd23,
|
||||
0x930eeb0ac79dd4bd,
|
||||
0xa24883de1e09a9ee,
|
||||
0xdaa7058067d46f,
|
||||
])),
|
||||
FQ_ZERO,
|
||||
),
|
||||
// Fp2::NONRESIDUE^(((q^2) - 1) / 6)
|
||||
field_new!(Fq2,
|
||||
field_new!(Fq, BigInteger384([
|
||||
0x5892506da58478da,
|
||||
0x133366940ac2a74b,
|
||||
0x9b64a150cdf726cf,
|
||||
0x5cc426090a9c587e,
|
||||
0x5cf848adfdcd640c,
|
||||
0x4702bf3ac02380,
|
||||
])),
|
||||
FQ_ZERO,
|
||||
),
|
||||
// Fp2::NONRESIDUE^(((q^3) - 1) / 6)
|
||||
field_new!(Fq2,
|
||||
field_new!(Fq, BigInteger384([
|
||||
0x982c13d9d084771f,
|
||||
0xfd49de0c6da34a32,
|
||||
0x61a530d183ab0e53,
|
||||
0xdf8fe44106dd9879,
|
||||
0x40f29b58d88472bc,
|
||||
0x158723199046d5d,
|
||||
])),
|
||||
FQ_ZERO,
|
||||
),
|
||||
// Fp2::NONRESIDUE^(((q^4) - 1) / 6)
|
||||
field_new!(Fq2,
|
||||
field_new!(Fq, BigInteger384([
|
||||
0xdacd106da5847973,
|
||||
0xd8fe2454bac2a79a,
|
||||
0x1ada4fd6fd832edc,
|
||||
0xfb9868449d150908,
|
||||
0xd63eb8aeea32285e,
|
||||
0x167d6a36f873fd0,
|
||||
])),
|
||||
FQ_ZERO,
|
||||
),
|
||||
// Fp2::NONRESIDUE^(((q^5) - 1) / 6)
|
||||
field_new!(Fq2,
|
||||
field_new!(Fq, BigInteger384([
|
||||
0x296799d52c8cac81,
|
||||
0x591bd15304e14fee,
|
||||
0xa17df4987d85130,
|
||||
0x4c80f9363f3fc3bc,
|
||||
0x9eaa177aba7ac8ce,
|
||||
0x7dcb2c189c98ed,
|
||||
])),
|
||||
FQ_ZERO,
|
||||
),
|
||||
// Fp2::NONRESIDUE^(((q^6) - 1) / 6)
|
||||
field_new!(Fq2,
|
||||
field_new!(Fq, BigInteger384([
|
||||
0x823ac00000000099,
|
||||
0xc5cabdc0b000004f,
|
||||
0x7f75ae862f8c080d,
|
||||
0x9ed4423b9278b089,
|
||||
0x79467000ec64c452,
|
||||
0x120d3e434c71c50,
|
||||
])),
|
||||
field_new!(Fq, BigInteger384([0x0, 0x0, 0x0, 0x0, 0x0, 0x0])),
|
||||
),
|
||||
// Fp2::NONRESIDUE^(((q^7) - 1) / 6)
|
||||
field_new!(Fq2,
|
||||
field_new!(Fq, BigInteger384([
|
||||
0x164445fb5c083563,
|
||||
0x72dd508ac73e05bc,
|
||||
0xc76610a7be368adc,
|
||||
0x8713eee839573ed1,
|
||||
0x23f281e24e979f4c,
|
||||
0xd39340975d3c7b,
|
||||
])),
|
||||
FQ_ZERO,
|
||||
),
|
||||
// Fp2::NONRESIDUE^(((q^8) - 1) / 6)
|
||||
field_new!(Fq2,
|
||||
field_new!(Fq, BigInteger384([
|
||||
0x2c766f925a7b8727,
|
||||
0x3d7f6b0253d58b5,
|
||||
0x838ec0deec122131,
|
||||
0xbd5eb3e9f658bb10,
|
||||
0x6942bd126ed3e52e,
|
||||
0x1673786dd04ed6a,
|
||||
])),
|
||||
FQ_ZERO,
|
||||
),
|
||||
// Fp2::NONRESIDUE^(((q^9) - 1) / 6)
|
||||
field_new!(Fq2,
|
||||
field_new!(Fq, BigInteger384([
|
||||
0xecdcac262f7b88e2,
|
||||
0x19c17f37c25cb5cd,
|
||||
0xbd4e315e365e39ac,
|
||||
0x3a92f5b1fa177b15,
|
||||
0x85486a67941cd67e,
|
||||
0x55c8147ec0a38d,
|
||||
])),
|
||||
FQ_ZERO,
|
||||
),
|
||||
// Fp2::NONRESIDUE^(((q^10) - 1) / 6)
|
||||
field_new!(Fq2,
|
||||
field_new!(Fq, BigInteger384([
|
||||
0xaa3baf925a7b868e,
|
||||
0x3e0d38ef753d5865,
|
||||
0x4191258bc861923,
|
||||
0x1e8a71ae63e00a87,
|
||||
0xeffc4d11826f20dc,
|
||||
0x4663a2a83dd119,
|
||||
])),
|
||||
FQ_ZERO,
|
||||
),
|
||||
// Fp2::NONRESIDUE^(((q^11) - 1) / 6)
|
||||
field_new!(Fq2,
|
||||
field_new!(Fq, BigInteger384([
|
||||
0x5ba1262ad3735380,
|
||||
0xbdef8bf12b1eb012,
|
||||
0x14db82e63230f6cf,
|
||||
0xcda1e0bcc1b54fd3,
|
||||
0x2790ee45b226806c,
|
||||
0x1306f19ff2877fd,
|
||||
])),
|
||||
FQ_ZERO,
|
||||
),
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user