kesto/babyjubjub-wasm-example/src/lib.rs
babyjubjub-wasm-example/src/lib.rsRaw
1use babyjubjub_ark::{new_key, verify, Fq, Fr, Point, PrivateKey, Signature};
2
3mod utils;
4
5use wasm_bindgen::prelude::*;
6
7// When the `wee_alloc` feature is enabled, use `wee_alloc` as the global
8// allocator.
9#[cfg(feature = "wee_alloc")]
10#[global_allocator]
11static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT;
12
13#[wasm_bindgen]
14extern "C" {
15 fn alert(s: &str);
16}
17
18#[wasm_bindgen]
19pub fn greet() {
20 alert("PROVAAAAA Hello, wasm-bindings!");
21}
22
23#[wasm_bindgen]
24pub fn check_eddsa_bbjj_sig() {
25 let mut rng = ark_std::test_rng();
26 // alert("gen new key");
27 let sk = new_key(&mut rng);
28 // // let sk = PrivateKey::import(
29 // // hex::decode("0001020304050607080900010203040506070809000102030405060708090001").unwrap(),
30 // // )
31 // // .unwrap();
32 //
33 let pk = sk.public();
34 alert(&format!("pk: x={}, y={}", pk.x, pk.y));
35 let msg = Fq::from(5_u32);
36 alert(&format!("msg: {:?}", msg.to_string()));
37 let sig = sk.sign(msg.clone()).unwrap();
38 alert(&format!(
39 "signature:\ns:{}, r.x: {}, r.y: {}",
40 sig.s, sig.r_b8.x, sig.r_b8.x
41 ));
42 let v = verify(pk.clone(), sig.clone(), msg.clone());
43 assert_eq!(v, true);
44 alert(&format!("signature verification: {}", v));
45}
46
47#[test]
48fn test_compat() {
49 let mut rng = ark_std::test_rng();
50 let sk = new_key(&mut rng);
51 // // let sk = PrivateKey::import(
52 // // hex::decode("0001020304050607080900010203040506070809000102030405060708090001").unwrap(),
53 // // )
54 // // .unwrap();
55 //
56 let pk = sk.public();
57 println!("pk: x={}, y={}", pk.x, pk.y);
58 let msg = Fq::from(5_u32);
59 println!("msg: {:?}", msg.to_string());
60 let sig = sk.sign(msg.clone()).unwrap();
61 println!(
62 "signature:\ns:{}, r.x: {}, r.y: {}",
63 sig.s, sig.r_b8.x, sig.r_b8.x
64 );
65 let v = verify(pk.clone(), sig.clone(), msg.clone());
66 assert_eq!(v, true);
67}