#[repr(C)]pub struct Fr { /* private fields */ }
Implementations§
Source§impl Fr
impl Fr
Sourcepub fn zero() -> Fr
pub fn zero() -> Fr
Examples found in repository?
examples/main.rs (line 11)
5fn main() {
6 println!("mcl version={:04x}", get_version());
7 let b = init(CurveType::BN254);
8 if !b {
9 println!("init err");
10 }
11 let mut x = Fr::zero();
12 println!("x={}", x.get_str(10));
13 x.set_int(123456);
14 println!("x={}", x.get_str(10));
15 x.set_int(0xfff);
16 println!("x={}", x.get_str(16));
17 x.clear();
18 println!("x={}", x.get_str(10));
19 x.set_str("0x123", 0);
20 println!("x={}", x.get_str(16));
21 let buf = x.serialize();
22 println!("serialize={:x?}", buf); // put hex byte
23 let mut y = Fr::zero();
24 if y.deserialize(&buf) {
25 println!("y={}", y.get_str(16));
26 } else {
27 println!("err deserialize");
28 }
29 if x != y {
30 println!("ng");
31 }
32 x.set_int(1);
33 if x == y {
34 println!("ng");
35 }
36 if !x.is_one() {
37 println!("ng");
38 }
39 x.set_int(123);
40 y.set_int(567);
41 let mut z = unsafe { Fr::uninit() };
42 Fr::add(&mut z, &x, &y);
43
44 let x1 = Fr::from_str("1234", 10).unwrap();
45 println!("x1={}", x1.get_str(10));
46
47 println!("z={}", z.get_str(10));
48 println!("x={}", x.get_str(10));
49 println!("y={}", y.get_str(10));
50
51 let mut P1 = unsafe { G1::uninit() };
52 let mut P2 = unsafe { G1::uninit() };
53 let mut Q1 = unsafe { G2::uninit() };
54 let mut Q2 = unsafe { G2::uninit() };
55 let mut e1 = unsafe { GT::uninit() };
56 let mut e2 = unsafe { GT::uninit() };
57 let mut e3 = unsafe { GT::uninit() };
58 P1.set_hash_of("abc".as_bytes());
59 Q1.set_hash_of("abc".as_bytes());
60 pairing(&mut e1, &P1, &Q1);
61 x.set_by_csprng();
62 y.set_by_csprng();
63 G1::mul(&mut P2, &P1, &x);
64 G2::mul(&mut Q2, &Q1, &y);
65 pairing(&mut e2, &P2, &Q2);
66 GT::pow(&mut e3, &e1, &x);
67 GT::pow(&mut e1, &e3, &y);
68 if e1 == e2 {
69 println!("ok");
70 } else {
71 println!("ng");
72 }
73}
Sourcepub unsafe fn uninit() -> Fr
pub unsafe fn uninit() -> Fr
Examples found in repository?
examples/main.rs (line 41)
5fn main() {
6 println!("mcl version={:04x}", get_version());
7 let b = init(CurveType::BN254);
8 if !b {
9 println!("init err");
10 }
11 let mut x = Fr::zero();
12 println!("x={}", x.get_str(10));
13 x.set_int(123456);
14 println!("x={}", x.get_str(10));
15 x.set_int(0xfff);
16 println!("x={}", x.get_str(16));
17 x.clear();
18 println!("x={}", x.get_str(10));
19 x.set_str("0x123", 0);
20 println!("x={}", x.get_str(16));
21 let buf = x.serialize();
22 println!("serialize={:x?}", buf); // put hex byte
23 let mut y = Fr::zero();
24 if y.deserialize(&buf) {
25 println!("y={}", y.get_str(16));
26 } else {
27 println!("err deserialize");
28 }
29 if x != y {
30 println!("ng");
31 }
32 x.set_int(1);
33 if x == y {
34 println!("ng");
35 }
36 if !x.is_one() {
37 println!("ng");
38 }
39 x.set_int(123);
40 y.set_int(567);
41 let mut z = unsafe { Fr::uninit() };
42 Fr::add(&mut z, &x, &y);
43
44 let x1 = Fr::from_str("1234", 10).unwrap();
45 println!("x1={}", x1.get_str(10));
46
47 println!("z={}", z.get_str(10));
48 println!("x={}", x.get_str(10));
49 println!("y={}", y.get_str(10));
50
51 let mut P1 = unsafe { G1::uninit() };
52 let mut P2 = unsafe { G1::uninit() };
53 let mut Q1 = unsafe { G2::uninit() };
54 let mut Q2 = unsafe { G2::uninit() };
55 let mut e1 = unsafe { GT::uninit() };
56 let mut e2 = unsafe { GT::uninit() };
57 let mut e3 = unsafe { GT::uninit() };
58 P1.set_hash_of("abc".as_bytes());
59 Q1.set_hash_of("abc".as_bytes());
60 pairing(&mut e1, &P1, &Q1);
61 x.set_by_csprng();
62 y.set_by_csprng();
63 G1::mul(&mut P2, &P1, &x);
64 G2::mul(&mut Q2, &Q1, &y);
65 pairing(&mut e2, &P2, &Q2);
66 GT::pow(&mut e3, &e1, &x);
67 GT::pow(&mut e1, &e3, &y);
68 if e1 == e2 {
69 println!("ok");
70 } else {
71 println!("ng");
72 }
73}
Sourcepub fn clear(&mut self)
pub fn clear(&mut self)
Examples found in repository?
examples/main.rs (line 17)
5fn main() {
6 println!("mcl version={:04x}", get_version());
7 let b = init(CurveType::BN254);
8 if !b {
9 println!("init err");
10 }
11 let mut x = Fr::zero();
12 println!("x={}", x.get_str(10));
13 x.set_int(123456);
14 println!("x={}", x.get_str(10));
15 x.set_int(0xfff);
16 println!("x={}", x.get_str(16));
17 x.clear();
18 println!("x={}", x.get_str(10));
19 x.set_str("0x123", 0);
20 println!("x={}", x.get_str(16));
21 let buf = x.serialize();
22 println!("serialize={:x?}", buf); // put hex byte
23 let mut y = Fr::zero();
24 if y.deserialize(&buf) {
25 println!("y={}", y.get_str(16));
26 } else {
27 println!("err deserialize");
28 }
29 if x != y {
30 println!("ng");
31 }
32 x.set_int(1);
33 if x == y {
34 println!("ng");
35 }
36 if !x.is_one() {
37 println!("ng");
38 }
39 x.set_int(123);
40 y.set_int(567);
41 let mut z = unsafe { Fr::uninit() };
42 Fr::add(&mut z, &x, &y);
43
44 let x1 = Fr::from_str("1234", 10).unwrap();
45 println!("x1={}", x1.get_str(10));
46
47 println!("z={}", z.get_str(10));
48 println!("x={}", x.get_str(10));
49 println!("y={}", y.get_str(10));
50
51 let mut P1 = unsafe { G1::uninit() };
52 let mut P2 = unsafe { G1::uninit() };
53 let mut Q1 = unsafe { G2::uninit() };
54 let mut Q2 = unsafe { G2::uninit() };
55 let mut e1 = unsafe { GT::uninit() };
56 let mut e2 = unsafe { GT::uninit() };
57 let mut e3 = unsafe { GT::uninit() };
58 P1.set_hash_of("abc".as_bytes());
59 Q1.set_hash_of("abc".as_bytes());
60 pairing(&mut e1, &P1, &Q1);
61 x.set_by_csprng();
62 y.set_by_csprng();
63 G1::mul(&mut P2, &P1, &x);
64 G2::mul(&mut Q2, &Q1, &y);
65 pairing(&mut e2, &P2, &Q2);
66 GT::pow(&mut e3, &e1, &x);
67 GT::pow(&mut e1, &e3, &y);
68 if e1 == e2 {
69 println!("ok");
70 } else {
71 println!("ng");
72 }
73}
pub fn is_zero(&self) -> bool
Source§impl Fr
impl Fr
Sourcepub fn deserialize(&mut self, buf: &[u8]) -> bool
pub fn deserialize(&mut self, buf: &[u8]) -> bool
Examples found in repository?
examples/main.rs (line 24)
5fn main() {
6 println!("mcl version={:04x}", get_version());
7 let b = init(CurveType::BN254);
8 if !b {
9 println!("init err");
10 }
11 let mut x = Fr::zero();
12 println!("x={}", x.get_str(10));
13 x.set_int(123456);
14 println!("x={}", x.get_str(10));
15 x.set_int(0xfff);
16 println!("x={}", x.get_str(16));
17 x.clear();
18 println!("x={}", x.get_str(10));
19 x.set_str("0x123", 0);
20 println!("x={}", x.get_str(16));
21 let buf = x.serialize();
22 println!("serialize={:x?}", buf); // put hex byte
23 let mut y = Fr::zero();
24 if y.deserialize(&buf) {
25 println!("y={}", y.get_str(16));
26 } else {
27 println!("err deserialize");
28 }
29 if x != y {
30 println!("ng");
31 }
32 x.set_int(1);
33 if x == y {
34 println!("ng");
35 }
36 if !x.is_one() {
37 println!("ng");
38 }
39 x.set_int(123);
40 y.set_int(567);
41 let mut z = unsafe { Fr::uninit() };
42 Fr::add(&mut z, &x, &y);
43
44 let x1 = Fr::from_str("1234", 10).unwrap();
45 println!("x1={}", x1.get_str(10));
46
47 println!("z={}", z.get_str(10));
48 println!("x={}", x.get_str(10));
49 println!("y={}", y.get_str(10));
50
51 let mut P1 = unsafe { G1::uninit() };
52 let mut P2 = unsafe { G1::uninit() };
53 let mut Q1 = unsafe { G2::uninit() };
54 let mut Q2 = unsafe { G2::uninit() };
55 let mut e1 = unsafe { GT::uninit() };
56 let mut e2 = unsafe { GT::uninit() };
57 let mut e3 = unsafe { GT::uninit() };
58 P1.set_hash_of("abc".as_bytes());
59 Q1.set_hash_of("abc".as_bytes());
60 pairing(&mut e1, &P1, &Q1);
61 x.set_by_csprng();
62 y.set_by_csprng();
63 G1::mul(&mut P2, &P1, &x);
64 G2::mul(&mut Q2, &Q1, &y);
65 pairing(&mut e2, &P2, &Q2);
66 GT::pow(&mut e3, &e1, &x);
67 GT::pow(&mut e1, &e3, &y);
68 if e1 == e2 {
69 println!("ok");
70 } else {
71 println!("ng");
72 }
73}
Sourcepub fn serialize(&self) -> Vec<u8>
pub fn serialize(&self) -> Vec<u8>
Examples found in repository?
examples/main.rs (line 21)
5fn main() {
6 println!("mcl version={:04x}", get_version());
7 let b = init(CurveType::BN254);
8 if !b {
9 println!("init err");
10 }
11 let mut x = Fr::zero();
12 println!("x={}", x.get_str(10));
13 x.set_int(123456);
14 println!("x={}", x.get_str(10));
15 x.set_int(0xfff);
16 println!("x={}", x.get_str(16));
17 x.clear();
18 println!("x={}", x.get_str(10));
19 x.set_str("0x123", 0);
20 println!("x={}", x.get_str(16));
21 let buf = x.serialize();
22 println!("serialize={:x?}", buf); // put hex byte
23 let mut y = Fr::zero();
24 if y.deserialize(&buf) {
25 println!("y={}", y.get_str(16));
26 } else {
27 println!("err deserialize");
28 }
29 if x != y {
30 println!("ng");
31 }
32 x.set_int(1);
33 if x == y {
34 println!("ng");
35 }
36 if !x.is_one() {
37 println!("ng");
38 }
39 x.set_int(123);
40 y.set_int(567);
41 let mut z = unsafe { Fr::uninit() };
42 Fr::add(&mut z, &x, &y);
43
44 let x1 = Fr::from_str("1234", 10).unwrap();
45 println!("x1={}", x1.get_str(10));
46
47 println!("z={}", z.get_str(10));
48 println!("x={}", x.get_str(10));
49 println!("y={}", y.get_str(10));
50
51 let mut P1 = unsafe { G1::uninit() };
52 let mut P2 = unsafe { G1::uninit() };
53 let mut Q1 = unsafe { G2::uninit() };
54 let mut Q2 = unsafe { G2::uninit() };
55 let mut e1 = unsafe { GT::uninit() };
56 let mut e2 = unsafe { GT::uninit() };
57 let mut e3 = unsafe { GT::uninit() };
58 P1.set_hash_of("abc".as_bytes());
59 Q1.set_hash_of("abc".as_bytes());
60 pairing(&mut e1, &P1, &Q1);
61 x.set_by_csprng();
62 y.set_by_csprng();
63 G1::mul(&mut P2, &P1, &x);
64 G2::mul(&mut Q2, &Q1, &y);
65 pairing(&mut e2, &P2, &Q2);
66 GT::pow(&mut e3, &e1, &x);
67 GT::pow(&mut e1, &e3, &y);
68 if e1 == e2 {
69 println!("ok");
70 } else {
71 println!("ng");
72 }
73}
Source§impl Fr
impl Fr
Sourcepub fn from_str(s: &str, base: i32) -> Option<Fr>
pub fn from_str(s: &str, base: i32) -> Option<Fr>
Examples found in repository?
examples/main.rs (line 44)
5fn main() {
6 println!("mcl version={:04x}", get_version());
7 let b = init(CurveType::BN254);
8 if !b {
9 println!("init err");
10 }
11 let mut x = Fr::zero();
12 println!("x={}", x.get_str(10));
13 x.set_int(123456);
14 println!("x={}", x.get_str(10));
15 x.set_int(0xfff);
16 println!("x={}", x.get_str(16));
17 x.clear();
18 println!("x={}", x.get_str(10));
19 x.set_str("0x123", 0);
20 println!("x={}", x.get_str(16));
21 let buf = x.serialize();
22 println!("serialize={:x?}", buf); // put hex byte
23 let mut y = Fr::zero();
24 if y.deserialize(&buf) {
25 println!("y={}", y.get_str(16));
26 } else {
27 println!("err deserialize");
28 }
29 if x != y {
30 println!("ng");
31 }
32 x.set_int(1);
33 if x == y {
34 println!("ng");
35 }
36 if !x.is_one() {
37 println!("ng");
38 }
39 x.set_int(123);
40 y.set_int(567);
41 let mut z = unsafe { Fr::uninit() };
42 Fr::add(&mut z, &x, &y);
43
44 let x1 = Fr::from_str("1234", 10).unwrap();
45 println!("x1={}", x1.get_str(10));
46
47 println!("z={}", z.get_str(10));
48 println!("x={}", x.get_str(10));
49 println!("y={}", y.get_str(10));
50
51 let mut P1 = unsafe { G1::uninit() };
52 let mut P2 = unsafe { G1::uninit() };
53 let mut Q1 = unsafe { G2::uninit() };
54 let mut Q2 = unsafe { G2::uninit() };
55 let mut e1 = unsafe { GT::uninit() };
56 let mut e2 = unsafe { GT::uninit() };
57 let mut e3 = unsafe { GT::uninit() };
58 P1.set_hash_of("abc".as_bytes());
59 Q1.set_hash_of("abc".as_bytes());
60 pairing(&mut e1, &P1, &Q1);
61 x.set_by_csprng();
62 y.set_by_csprng();
63 G1::mul(&mut P2, &P1, &x);
64 G2::mul(&mut Q2, &Q1, &y);
65 pairing(&mut e2, &P2, &Q2);
66 GT::pow(&mut e3, &e1, &x);
67 GT::pow(&mut e1, &e3, &y);
68 if e1 == e2 {
69 println!("ok");
70 } else {
71 println!("ng");
72 }
73}
Sourcepub fn set_str(&mut self, s: &str, base: i32) -> bool
pub fn set_str(&mut self, s: &str, base: i32) -> bool
Examples found in repository?
examples/main.rs (line 19)
5fn main() {
6 println!("mcl version={:04x}", get_version());
7 let b = init(CurveType::BN254);
8 if !b {
9 println!("init err");
10 }
11 let mut x = Fr::zero();
12 println!("x={}", x.get_str(10));
13 x.set_int(123456);
14 println!("x={}", x.get_str(10));
15 x.set_int(0xfff);
16 println!("x={}", x.get_str(16));
17 x.clear();
18 println!("x={}", x.get_str(10));
19 x.set_str("0x123", 0);
20 println!("x={}", x.get_str(16));
21 let buf = x.serialize();
22 println!("serialize={:x?}", buf); // put hex byte
23 let mut y = Fr::zero();
24 if y.deserialize(&buf) {
25 println!("y={}", y.get_str(16));
26 } else {
27 println!("err deserialize");
28 }
29 if x != y {
30 println!("ng");
31 }
32 x.set_int(1);
33 if x == y {
34 println!("ng");
35 }
36 if !x.is_one() {
37 println!("ng");
38 }
39 x.set_int(123);
40 y.set_int(567);
41 let mut z = unsafe { Fr::uninit() };
42 Fr::add(&mut z, &x, &y);
43
44 let x1 = Fr::from_str("1234", 10).unwrap();
45 println!("x1={}", x1.get_str(10));
46
47 println!("z={}", z.get_str(10));
48 println!("x={}", x.get_str(10));
49 println!("y={}", y.get_str(10));
50
51 let mut P1 = unsafe { G1::uninit() };
52 let mut P2 = unsafe { G1::uninit() };
53 let mut Q1 = unsafe { G2::uninit() };
54 let mut Q2 = unsafe { G2::uninit() };
55 let mut e1 = unsafe { GT::uninit() };
56 let mut e2 = unsafe { GT::uninit() };
57 let mut e3 = unsafe { GT::uninit() };
58 P1.set_hash_of("abc".as_bytes());
59 Q1.set_hash_of("abc".as_bytes());
60 pairing(&mut e1, &P1, &Q1);
61 x.set_by_csprng();
62 y.set_by_csprng();
63 G1::mul(&mut P2, &P1, &x);
64 G2::mul(&mut Q2, &Q1, &y);
65 pairing(&mut e2, &P2, &Q2);
66 GT::pow(&mut e3, &e1, &x);
67 GT::pow(&mut e1, &e3, &y);
68 if e1 == e2 {
69 println!("ok");
70 } else {
71 println!("ng");
72 }
73}
Sourcepub fn get_str(&self, io_mode: i32) -> String
pub fn get_str(&self, io_mode: i32) -> String
Examples found in repository?
examples/main.rs (line 12)
5fn main() {
6 println!("mcl version={:04x}", get_version());
7 let b = init(CurveType::BN254);
8 if !b {
9 println!("init err");
10 }
11 let mut x = Fr::zero();
12 println!("x={}", x.get_str(10));
13 x.set_int(123456);
14 println!("x={}", x.get_str(10));
15 x.set_int(0xfff);
16 println!("x={}", x.get_str(16));
17 x.clear();
18 println!("x={}", x.get_str(10));
19 x.set_str("0x123", 0);
20 println!("x={}", x.get_str(16));
21 let buf = x.serialize();
22 println!("serialize={:x?}", buf); // put hex byte
23 let mut y = Fr::zero();
24 if y.deserialize(&buf) {
25 println!("y={}", y.get_str(16));
26 } else {
27 println!("err deserialize");
28 }
29 if x != y {
30 println!("ng");
31 }
32 x.set_int(1);
33 if x == y {
34 println!("ng");
35 }
36 if !x.is_one() {
37 println!("ng");
38 }
39 x.set_int(123);
40 y.set_int(567);
41 let mut z = unsafe { Fr::uninit() };
42 Fr::add(&mut z, &x, &y);
43
44 let x1 = Fr::from_str("1234", 10).unwrap();
45 println!("x1={}", x1.get_str(10));
46
47 println!("z={}", z.get_str(10));
48 println!("x={}", x.get_str(10));
49 println!("y={}", y.get_str(10));
50
51 let mut P1 = unsafe { G1::uninit() };
52 let mut P2 = unsafe { G1::uninit() };
53 let mut Q1 = unsafe { G2::uninit() };
54 let mut Q2 = unsafe { G2::uninit() };
55 let mut e1 = unsafe { GT::uninit() };
56 let mut e2 = unsafe { GT::uninit() };
57 let mut e3 = unsafe { GT::uninit() };
58 P1.set_hash_of("abc".as_bytes());
59 Q1.set_hash_of("abc".as_bytes());
60 pairing(&mut e1, &P1, &Q1);
61 x.set_by_csprng();
62 y.set_by_csprng();
63 G1::mul(&mut P2, &P1, &x);
64 G2::mul(&mut Q2, &Q1, &y);
65 pairing(&mut e2, &P2, &Q2);
66 GT::pow(&mut e3, &e1, &x);
67 GT::pow(&mut e1, &e3, &y);
68 if e1 == e2 {
69 println!("ok");
70 } else {
71 println!("ng");
72 }
73}
Source§impl Fr
impl Fr
pub fn from_int(x: i32) -> Fr
Sourcepub fn set_int(&mut self, x: i32)
pub fn set_int(&mut self, x: i32)
Examples found in repository?
examples/main.rs (line 13)
5fn main() {
6 println!("mcl version={:04x}", get_version());
7 let b = init(CurveType::BN254);
8 if !b {
9 println!("init err");
10 }
11 let mut x = Fr::zero();
12 println!("x={}", x.get_str(10));
13 x.set_int(123456);
14 println!("x={}", x.get_str(10));
15 x.set_int(0xfff);
16 println!("x={}", x.get_str(16));
17 x.clear();
18 println!("x={}", x.get_str(10));
19 x.set_str("0x123", 0);
20 println!("x={}", x.get_str(16));
21 let buf = x.serialize();
22 println!("serialize={:x?}", buf); // put hex byte
23 let mut y = Fr::zero();
24 if y.deserialize(&buf) {
25 println!("y={}", y.get_str(16));
26 } else {
27 println!("err deserialize");
28 }
29 if x != y {
30 println!("ng");
31 }
32 x.set_int(1);
33 if x == y {
34 println!("ng");
35 }
36 if !x.is_one() {
37 println!("ng");
38 }
39 x.set_int(123);
40 y.set_int(567);
41 let mut z = unsafe { Fr::uninit() };
42 Fr::add(&mut z, &x, &y);
43
44 let x1 = Fr::from_str("1234", 10).unwrap();
45 println!("x1={}", x1.get_str(10));
46
47 println!("z={}", z.get_str(10));
48 println!("x={}", x.get_str(10));
49 println!("y={}", y.get_str(10));
50
51 let mut P1 = unsafe { G1::uninit() };
52 let mut P2 = unsafe { G1::uninit() };
53 let mut Q1 = unsafe { G2::uninit() };
54 let mut Q2 = unsafe { G2::uninit() };
55 let mut e1 = unsafe { GT::uninit() };
56 let mut e2 = unsafe { GT::uninit() };
57 let mut e3 = unsafe { GT::uninit() };
58 P1.set_hash_of("abc".as_bytes());
59 Q1.set_hash_of("abc".as_bytes());
60 pairing(&mut e1, &P1, &Q1);
61 x.set_by_csprng();
62 y.set_by_csprng();
63 G1::mul(&mut P2, &P1, &x);
64 G2::mul(&mut Q2, &Q1, &y);
65 pairing(&mut e2, &P2, &Q2);
66 GT::pow(&mut e3, &e1, &x);
67 GT::pow(&mut e1, &e3, &y);
68 if e1 == e2 {
69 println!("ok");
70 } else {
71 println!("ng");
72 }
73}
Sourcepub fn is_one(&self) -> bool
pub fn is_one(&self) -> bool
Examples found in repository?
examples/main.rs (line 36)
5fn main() {
6 println!("mcl version={:04x}", get_version());
7 let b = init(CurveType::BN254);
8 if !b {
9 println!("init err");
10 }
11 let mut x = Fr::zero();
12 println!("x={}", x.get_str(10));
13 x.set_int(123456);
14 println!("x={}", x.get_str(10));
15 x.set_int(0xfff);
16 println!("x={}", x.get_str(16));
17 x.clear();
18 println!("x={}", x.get_str(10));
19 x.set_str("0x123", 0);
20 println!("x={}", x.get_str(16));
21 let buf = x.serialize();
22 println!("serialize={:x?}", buf); // put hex byte
23 let mut y = Fr::zero();
24 if y.deserialize(&buf) {
25 println!("y={}", y.get_str(16));
26 } else {
27 println!("err deserialize");
28 }
29 if x != y {
30 println!("ng");
31 }
32 x.set_int(1);
33 if x == y {
34 println!("ng");
35 }
36 if !x.is_one() {
37 println!("ng");
38 }
39 x.set_int(123);
40 y.set_int(567);
41 let mut z = unsafe { Fr::uninit() };
42 Fr::add(&mut z, &x, &y);
43
44 let x1 = Fr::from_str("1234", 10).unwrap();
45 println!("x1={}", x1.get_str(10));
46
47 println!("z={}", z.get_str(10));
48 println!("x={}", x.get_str(10));
49 println!("y={}", y.get_str(10));
50
51 let mut P1 = unsafe { G1::uninit() };
52 let mut P2 = unsafe { G1::uninit() };
53 let mut Q1 = unsafe { G2::uninit() };
54 let mut Q2 = unsafe { G2::uninit() };
55 let mut e1 = unsafe { GT::uninit() };
56 let mut e2 = unsafe { GT::uninit() };
57 let mut e3 = unsafe { GT::uninit() };
58 P1.set_hash_of("abc".as_bytes());
59 Q1.set_hash_of("abc".as_bytes());
60 pairing(&mut e1, &P1, &Q1);
61 x.set_by_csprng();
62 y.set_by_csprng();
63 G1::mul(&mut P2, &P1, &x);
64 G2::mul(&mut Q2, &Q1, &y);
65 pairing(&mut e2, &P2, &Q2);
66 GT::pow(&mut e3, &e1, &x);
67 GT::pow(&mut e1, &e3, &y);
68 if e1 == e2 {
69 println!("ok");
70 } else {
71 println!("ng");
72 }
73}
Source§impl Fr
impl Fr
pub fn set_little_endian(&mut self, buf: &[u8]) -> bool
pub fn set_little_endian_mod(&mut self, buf: &[u8]) -> bool
pub fn set_hash_of(&mut self, buf: &[u8]) -> bool
Sourcepub fn set_by_csprng(&mut self)
pub fn set_by_csprng(&mut self)
Examples found in repository?
examples/main.rs (line 61)
5fn main() {
6 println!("mcl version={:04x}", get_version());
7 let b = init(CurveType::BN254);
8 if !b {
9 println!("init err");
10 }
11 let mut x = Fr::zero();
12 println!("x={}", x.get_str(10));
13 x.set_int(123456);
14 println!("x={}", x.get_str(10));
15 x.set_int(0xfff);
16 println!("x={}", x.get_str(16));
17 x.clear();
18 println!("x={}", x.get_str(10));
19 x.set_str("0x123", 0);
20 println!("x={}", x.get_str(16));
21 let buf = x.serialize();
22 println!("serialize={:x?}", buf); // put hex byte
23 let mut y = Fr::zero();
24 if y.deserialize(&buf) {
25 println!("y={}", y.get_str(16));
26 } else {
27 println!("err deserialize");
28 }
29 if x != y {
30 println!("ng");
31 }
32 x.set_int(1);
33 if x == y {
34 println!("ng");
35 }
36 if !x.is_one() {
37 println!("ng");
38 }
39 x.set_int(123);
40 y.set_int(567);
41 let mut z = unsafe { Fr::uninit() };
42 Fr::add(&mut z, &x, &y);
43
44 let x1 = Fr::from_str("1234", 10).unwrap();
45 println!("x1={}", x1.get_str(10));
46
47 println!("z={}", z.get_str(10));
48 println!("x={}", x.get_str(10));
49 println!("y={}", y.get_str(10));
50
51 let mut P1 = unsafe { G1::uninit() };
52 let mut P2 = unsafe { G1::uninit() };
53 let mut Q1 = unsafe { G2::uninit() };
54 let mut Q2 = unsafe { G2::uninit() };
55 let mut e1 = unsafe { GT::uninit() };
56 let mut e2 = unsafe { GT::uninit() };
57 let mut e3 = unsafe { GT::uninit() };
58 P1.set_hash_of("abc".as_bytes());
59 Q1.set_hash_of("abc".as_bytes());
60 pairing(&mut e1, &P1, &Q1);
61 x.set_by_csprng();
62 y.set_by_csprng();
63 G1::mul(&mut P2, &P1, &x);
64 G2::mul(&mut Q2, &Q1, &y);
65 pairing(&mut e2, &P2, &Q2);
66 GT::pow(&mut e3, &e1, &x);
67 GT::pow(&mut e1, &e3, &y);
68 if e1 == e2 {
69 println!("ok");
70 } else {
71 println!("ng");
72 }
73}
pub fn is_odd(&self) -> bool
pub fn is_negative(&self) -> bool
pub fn cmp(&self, rhs: &Fr) -> i32
pub fn square_root(y: &mut Fr, x: &Fr) -> bool
Source§impl Fr
impl Fr
Sourcepub fn add(z: &mut Fr, x: &Fr, y: &Fr)
pub fn add(z: &mut Fr, x: &Fr, y: &Fr)
Examples found in repository?
examples/main.rs (line 42)
5fn main() {
6 println!("mcl version={:04x}", get_version());
7 let b = init(CurveType::BN254);
8 if !b {
9 println!("init err");
10 }
11 let mut x = Fr::zero();
12 println!("x={}", x.get_str(10));
13 x.set_int(123456);
14 println!("x={}", x.get_str(10));
15 x.set_int(0xfff);
16 println!("x={}", x.get_str(16));
17 x.clear();
18 println!("x={}", x.get_str(10));
19 x.set_str("0x123", 0);
20 println!("x={}", x.get_str(16));
21 let buf = x.serialize();
22 println!("serialize={:x?}", buf); // put hex byte
23 let mut y = Fr::zero();
24 if y.deserialize(&buf) {
25 println!("y={}", y.get_str(16));
26 } else {
27 println!("err deserialize");
28 }
29 if x != y {
30 println!("ng");
31 }
32 x.set_int(1);
33 if x == y {
34 println!("ng");
35 }
36 if !x.is_one() {
37 println!("ng");
38 }
39 x.set_int(123);
40 y.set_int(567);
41 let mut z = unsafe { Fr::uninit() };
42 Fr::add(&mut z, &x, &y);
43
44 let x1 = Fr::from_str("1234", 10).unwrap();
45 println!("x1={}", x1.get_str(10));
46
47 println!("z={}", z.get_str(10));
48 println!("x={}", x.get_str(10));
49 println!("y={}", y.get_str(10));
50
51 let mut P1 = unsafe { G1::uninit() };
52 let mut P2 = unsafe { G1::uninit() };
53 let mut Q1 = unsafe { G2::uninit() };
54 let mut Q2 = unsafe { G2::uninit() };
55 let mut e1 = unsafe { GT::uninit() };
56 let mut e2 = unsafe { GT::uninit() };
57 let mut e3 = unsafe { GT::uninit() };
58 P1.set_hash_of("abc".as_bytes());
59 Q1.set_hash_of("abc".as_bytes());
60 pairing(&mut e1, &P1, &Q1);
61 x.set_by_csprng();
62 y.set_by_csprng();
63 G1::mul(&mut P2, &P1, &x);
64 G2::mul(&mut Q2, &Q1, &y);
65 pairing(&mut e2, &P2, &Q2);
66 GT::pow(&mut e3, &e1, &x);
67 GT::pow(&mut e1, &e3, &y);
68 if e1 == e2 {
69 println!("ok");
70 } else {
71 println!("ng");
72 }
73}
pub fn sub(z: &mut Fr, x: &Fr, y: &Fr)
pub fn neg(y: &mut Fr, x: &Fr)
Trait Implementations§
Source§impl<'a> AddAssign<&'a Fr> for Fr
impl<'a> AddAssign<&'a Fr> for Fr
Source§fn add_assign(&mut self, other: &Fr)
fn add_assign(&mut self, other: &Fr)
Performs the
+=
operation. Read moreSource§impl<'a> DivAssign<&'a Fr> for Fr
impl<'a> DivAssign<&'a Fr> for Fr
Source§fn div_assign(&mut self, other: &Fr)
fn div_assign(&mut self, other: &Fr)
Performs the
/=
operation. Read moreSource§impl<'a> MulAssign<&'a Fr> for Fr
impl<'a> MulAssign<&'a Fr> for Fr
Source§fn mul_assign(&mut self, other: &Fr)
fn mul_assign(&mut self, other: &Fr)
Performs the
*=
operation. Read moreAuto Trait Implementations§
impl Freeze for Fr
impl RefUnwindSafe for Fr
impl Send for Fr
impl Sync for Fr
impl Unpin for Fr
impl UnwindSafe for Fr
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