arnaucube
arnaucube/kestoPublic Self-hosted repository
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}