#[repr(C)]pub struct G2 {
pub x: Fp2,
pub y: Fp2,
pub z: Fp2,
}
Fields§
§x: Fp2
§y: Fp2
§z: Fp2
Implementations§
source§impl G2
impl G2
pub fn zero() -> G2
sourcepub unsafe fn uninit() -> G2
pub unsafe fn uninit() -> G2
Examples found in repository?
examples/main.rs (line 53)
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
fn main() {
println!("mcl version={:04x}", get_version());
let b = init(CurveType::BN254);
if !b {
println!("init err");
}
let mut x = Fr::zero();
println!("x={}", x.get_str(10));
x.set_int(123456);
println!("x={}", x.get_str(10));
x.set_int(0xfff);
println!("x={}", x.get_str(16));
x.clear();
println!("x={}", x.get_str(10));
x.set_str("0x123", 0);
println!("x={}", x.get_str(16));
let buf = x.serialize();
println!("serialize={:x?}", buf); // put hex byte
let mut y = Fr::zero();
if y.deserialize(&buf) {
println!("y={}", y.get_str(16));
} else {
println!("err deserialize");
}
if x != y {
println!("ng");
}
x.set_int(1);
if x == y {
println!("ng");
}
if !x.is_one() {
println!("ng");
}
x.set_int(123);
y.set_int(567);
let mut z = unsafe { Fr::uninit() };
Fr::add(&mut z, &x, &y);
let x1 = Fr::from_str("1234", 10).unwrap();
println!("x1={}", x1.get_str(10));
println!("z={}", z.get_str(10));
println!("x={}", x.get_str(10));
println!("y={}", y.get_str(10));
let mut P1 = unsafe { G1::uninit() };
let mut P2 = unsafe { G1::uninit() };
let mut Q1 = unsafe { G2::uninit() };
let mut Q2 = unsafe { G2::uninit() };
let mut e1 = unsafe { GT::uninit() };
let mut e2 = unsafe { GT::uninit() };
let mut e3 = unsafe { GT::uninit() };
P1.set_hash_of("abc".as_bytes());
Q1.set_hash_of("abc".as_bytes());
pairing(&mut e1, &P1, &Q1);
x.set_by_csprng();
y.set_by_csprng();
G1::mul(&mut P2, &P1, &x);
G2::mul(&mut Q2, &Q1, &y);
pairing(&mut e2, &P2, &Q2);
GT::pow(&mut e3, &e1, &x);
GT::pow(&mut e1, &e3, &y);
if e1 == e2 {
println!("ok");
} else {
println!("ng");
}
}
pub fn clear(&mut self)
pub fn is_zero(&self) -> bool
source§impl G2
impl G2
pub fn dbl(y: &mut G2, x: &G2)
sourcepub fn mul(z: &mut G2, x: &G2, y: &Fr)
pub fn mul(z: &mut G2, x: &G2, y: &Fr)
Examples found in repository?
examples/main.rs (line 64)
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
fn main() {
println!("mcl version={:04x}", get_version());
let b = init(CurveType::BN254);
if !b {
println!("init err");
}
let mut x = Fr::zero();
println!("x={}", x.get_str(10));
x.set_int(123456);
println!("x={}", x.get_str(10));
x.set_int(0xfff);
println!("x={}", x.get_str(16));
x.clear();
println!("x={}", x.get_str(10));
x.set_str("0x123", 0);
println!("x={}", x.get_str(16));
let buf = x.serialize();
println!("serialize={:x?}", buf); // put hex byte
let mut y = Fr::zero();
if y.deserialize(&buf) {
println!("y={}", y.get_str(16));
} else {
println!("err deserialize");
}
if x != y {
println!("ng");
}
x.set_int(1);
if x == y {
println!("ng");
}
if !x.is_one() {
println!("ng");
}
x.set_int(123);
y.set_int(567);
let mut z = unsafe { Fr::uninit() };
Fr::add(&mut z, &x, &y);
let x1 = Fr::from_str("1234", 10).unwrap();
println!("x1={}", x1.get_str(10));
println!("z={}", z.get_str(10));
println!("x={}", x.get_str(10));
println!("y={}", y.get_str(10));
let mut P1 = unsafe { G1::uninit() };
let mut P2 = unsafe { G1::uninit() };
let mut Q1 = unsafe { G2::uninit() };
let mut Q2 = unsafe { G2::uninit() };
let mut e1 = unsafe { GT::uninit() };
let mut e2 = unsafe { GT::uninit() };
let mut e3 = unsafe { GT::uninit() };
P1.set_hash_of("abc".as_bytes());
Q1.set_hash_of("abc".as_bytes());
pairing(&mut e1, &P1, &Q1);
x.set_by_csprng();
y.set_by_csprng();
G1::mul(&mut P2, &P1, &x);
G2::mul(&mut Q2, &Q1, &y);
pairing(&mut e2, &P2, &Q2);
GT::pow(&mut e3, &e1, &x);
GT::pow(&mut e1, &e3, &y);
if e1 == e2 {
println!("ok");
} else {
println!("ng");
}
}
pub fn normalize(y: &mut G2, x: &G2)
sourcepub fn set_hash_of(&mut self, buf: &[u8]) -> bool
pub fn set_hash_of(&mut self, buf: &[u8]) -> bool
Examples found in repository?
examples/main.rs (line 59)
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
fn main() {
println!("mcl version={:04x}", get_version());
let b = init(CurveType::BN254);
if !b {
println!("init err");
}
let mut x = Fr::zero();
println!("x={}", x.get_str(10));
x.set_int(123456);
println!("x={}", x.get_str(10));
x.set_int(0xfff);
println!("x={}", x.get_str(16));
x.clear();
println!("x={}", x.get_str(10));
x.set_str("0x123", 0);
println!("x={}", x.get_str(16));
let buf = x.serialize();
println!("serialize={:x?}", buf); // put hex byte
let mut y = Fr::zero();
if y.deserialize(&buf) {
println!("y={}", y.get_str(16));
} else {
println!("err deserialize");
}
if x != y {
println!("ng");
}
x.set_int(1);
if x == y {
println!("ng");
}
if !x.is_one() {
println!("ng");
}
x.set_int(123);
y.set_int(567);
let mut z = unsafe { Fr::uninit() };
Fr::add(&mut z, &x, &y);
let x1 = Fr::from_str("1234", 10).unwrap();
println!("x1={}", x1.get_str(10));
println!("z={}", z.get_str(10));
println!("x={}", x.get_str(10));
println!("y={}", y.get_str(10));
let mut P1 = unsafe { G1::uninit() };
let mut P2 = unsafe { G1::uninit() };
let mut Q1 = unsafe { G2::uninit() };
let mut Q2 = unsafe { G2::uninit() };
let mut e1 = unsafe { GT::uninit() };
let mut e2 = unsafe { GT::uninit() };
let mut e3 = unsafe { GT::uninit() };
P1.set_hash_of("abc".as_bytes());
Q1.set_hash_of("abc".as_bytes());
pairing(&mut e1, &P1, &Q1);
x.set_by_csprng();
y.set_by_csprng();
G1::mul(&mut P2, &P1, &x);
G2::mul(&mut Q2, &Q1, &y);
pairing(&mut e2, &P2, &Q2);
GT::pow(&mut e3, &e1, &x);
GT::pow(&mut e1, &e3, &y);
if e1 == e2 {
println!("ok");
} else {
println!("ng");
}
}
pub fn mul_vec(z: &mut G2, x: &[G2], y: &[Fr])
Trait Implementations§
source§impl<'a> AddAssign<&'a G2> for G2
impl<'a> AddAssign<&'a G2> for G2
source§fn add_assign(&mut self, other: &G2)
fn add_assign(&mut self, other: &G2)
Performs the
+=
operation. Read moreAuto Trait Implementations§
impl RefUnwindSafe for G2
impl Send for G2
impl Sync for G2
impl Unpin for G2
impl UnwindSafe for G2
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more