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:
126
cp6_782/src/curves/g1.rs
Normal file
126
cp6_782/src/curves/g1.rs
Normal file
@@ -0,0 +1,126 @@
|
||||
use ark_ec::{
|
||||
models::{ModelParameters, SWModelParameters},
|
||||
short_weierstrass_jacobian::{GroupAffine, GroupProjective},
|
||||
};
|
||||
use ark_ff::{
|
||||
biginteger::{BigInteger384, BigInteger832},
|
||||
field_new,
|
||||
};
|
||||
|
||||
use crate::{Fq, Fr};
|
||||
|
||||
pub type G1Affine = GroupAffine<Parameters>;
|
||||
pub type G1Projective = GroupProjective<Parameters>;
|
||||
|
||||
#[derive(Clone, Default, PartialEq, Eq)]
|
||||
pub struct Parameters;
|
||||
|
||||
impl ModelParameters for Parameters {
|
||||
type BaseField = Fq;
|
||||
type ScalarField = Fr;
|
||||
}
|
||||
|
||||
impl SWModelParameters for Parameters {
|
||||
/// COEFF_A = 5
|
||||
#[rustfmt::skip]
|
||||
const COEFF_A: Fq = field_new!(Fq, BigInteger832([
|
||||
0x781c76643018bd7a,
|
||||
0x64f3a5a4f1d1ad48,
|
||||
0xd2f8a1eb4f72692d,
|
||||
0xc35eb123c6ed72ca,
|
||||
0xb58d6bcfd32de058,
|
||||
0x841eab13b02a492c,
|
||||
0x4b70dc5a54c487e7,
|
||||
0x2f231a8808a74c59,
|
||||
0x5e2915154d70b050,
|
||||
0x8a40fa16f37a6b37,
|
||||
0xd01980093a72c54b,
|
||||
0xef6845c25398004c,
|
||||
0x48,
|
||||
]));
|
||||
|
||||
/// COEFF_B = 17764315118651679038286329069295091506801468118146712649886336045535808055361274148466772191243305528312843236347777260247138934336850548243151534538734724191505953341403463040067571652261229308333392040104884438208594329793895206056414
|
||||
#[rustfmt::skip]
|
||||
const COEFF_B: Fq = field_new!(Fq, BigInteger832([
|
||||
0xec5bd271ad37429,
|
||||
0x9db8ac843ecca28a,
|
||||
0x94f29bcb7e01bc74,
|
||||
0x1b0bebb77bb5af0,
|
||||
0x75b8cef4aa27ee17,
|
||||
0xb5767ae80812cf6b,
|
||||
0x592fa41e377a0d8c,
|
||||
0xb6c6deedbb52df3e,
|
||||
0xcb1343e488737fd4,
|
||||
0x878020734d05b5a9,
|
||||
0x2f51354eddfa069a,
|
||||
0x498e2ecdc545243e,
|
||||
0x2c2,
|
||||
]));
|
||||
|
||||
/// COFACTOR =
|
||||
/// 86482221941698704497288378992285180119495364068003923046442785886272123124361700722982503222189455144364945735564951561028
|
||||
#[rustfmt::skip]
|
||||
const COFACTOR: &'static [u64] = &[
|
||||
0x5657b9b57b942344,
|
||||
0x84f9a65f3bd54eaf,
|
||||
0x5ea4214e35cd127,
|
||||
0xe3cbcbc14ec1501d,
|
||||
0xf196cb845a3092ab,
|
||||
0x7e14627ad0e19017,
|
||||
0x217db4,
|
||||
];
|
||||
|
||||
/// COFACTOR^(-1) mod r =
|
||||
/// 163276846538158998893990986356139314746223949404500031940624325017036397274793417940375498603127780919653358641788
|
||||
#[rustfmt::skip]
|
||||
const COFACTOR_INV: Fr = field_new!(Fr, BigInteger384([
|
||||
4179837108212676264,
|
||||
15545810469293120493,
|
||||
13202863094424182470,
|
||||
9506285060796071546,
|
||||
9248558385029790142,
|
||||
87030208545296111,
|
||||
]));
|
||||
|
||||
/// AFFINE_GENERATOR_COEFFS = (G1_GENERATOR_X, G1_GENERATOR_Y)
|
||||
const AFFINE_GENERATOR_COEFFS: (Self::BaseField, Self::BaseField) =
|
||||
(G1_GENERATOR_X, G1_GENERATOR_Y);
|
||||
}
|
||||
|
||||
/// G1_GENERATOR_X =
|
||||
/// 5511163824921585887915590525772884263960974614921003940645351443740084257508990841338974915037175497689287870585840954231884082785026301437744745393958283053278991955159266640440849940136976927372133743626748847559939620888818486853646
|
||||
#[rustfmt::skip]
|
||||
pub const G1_GENERATOR_X: Fq = field_new!(Fq, BigInteger832([
|
||||
0x5901480e5bc22290,
|
||||
0x20024afcdb9bd3a9,
|
||||
0x12dc18ff416e8138,
|
||||
0x28c69aa0ea223e18,
|
||||
0xafb1524a1eb7efe6,
|
||||
0x3d5c34edc3764ca2,
|
||||
0x736c2230c8466ce9,
|
||||
0xacfaa04e051014f1,
|
||||
0x5d5ff82f00ff2964,
|
||||
0x64c13ba270a26eaf,
|
||||
0x50e9864b56ab172e,
|
||||
0xd8370826a322499e,
|
||||
0x00000000000006f1,
|
||||
]));
|
||||
|
||||
/// G1_GENERATOR_Y =
|
||||
/// 7913123550914612057135582061699117755797758113868200992327595317370485234417808273674357776714522052694559358668442301647906991623400754234679697332299689255516547752391831738454121261248793568285885897998257357202903170202349380518443
|
||||
#[rustfmt::skip]
|
||||
pub const G1_GENERATOR_Y: Fq = field_new!(Fq, BigInteger832([
|
||||
0x8af8b64b402e1953,
|
||||
0xd1bbceb3a258ea51,
|
||||
0xdca9efa3140aaa0d,
|
||||
0x807a610058ddedb2,
|
||||
0xeb898562fe88076c,
|
||||
0x0e4342ca56dd8ce2,
|
||||
0x4f5528d29f1bde9a,
|
||||
0xf18b0c6c19feb372,
|
||||
0x94503ac2fac9199c,
|
||||
0xffc86a8aff08ea34,
|
||||
0xf7b1295214735d8c,
|
||||
0x44eda9e0f55edd10,
|
||||
0x0000000000000ef3,
|
||||
]));
|
||||
Reference in New Issue
Block a user