use babyjubjub_ark::{new_key, verify, Fq, Fr, Point, PrivateKey, Signature};
|
|
|
|
mod utils;
|
|
|
|
use wasm_bindgen::prelude::*;
|
|
|
|
// When the `wee_alloc` feature is enabled, use `wee_alloc` as the global
|
|
// allocator.
|
|
#[cfg(feature = "wee_alloc")]
|
|
#[global_allocator]
|
|
static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT;
|
|
|
|
#[wasm_bindgen]
|
|
extern "C" {
|
|
fn alert(s: &str);
|
|
}
|
|
|
|
#[wasm_bindgen]
|
|
pub fn greet() {
|
|
alert("PROVAAAAA Hello, wasm-bindings!");
|
|
}
|
|
|
|
#[wasm_bindgen]
|
|
pub fn check_eddsa_bbjj_sig() {
|
|
let mut rng = ark_std::test_rng();
|
|
// alert("gen new key");
|
|
let sk = new_key(&mut rng);
|
|
// // let sk = PrivateKey::import(
|
|
// // hex::decode("0001020304050607080900010203040506070809000102030405060708090001").unwrap(),
|
|
// // )
|
|
// // .unwrap();
|
|
//
|
|
let pk = sk.public();
|
|
alert(&format!("pk: x={}, y={}", pk.x, pk.y));
|
|
let msg = Fq::from(5_u32);
|
|
alert(&format!("msg: {:?}", msg.to_string()));
|
|
let sig = sk.sign(msg.clone()).unwrap();
|
|
alert(&format!(
|
|
"signature:\ns:{}, r.x: {}, r.y: {}",
|
|
sig.s, sig.r_b8.x, sig.r_b8.x
|
|
));
|
|
let v = verify(pk.clone(), sig.clone(), msg.clone());
|
|
assert_eq!(v, true);
|
|
alert(&format!("signature verification: {}", v));
|
|
}
|
|
|
|
#[test]
|
|
fn test_compat() {
|
|
let mut rng = ark_std::test_rng();
|
|
let sk = new_key(&mut rng);
|
|
// // let sk = PrivateKey::import(
|
|
// // hex::decode("0001020304050607080900010203040506070809000102030405060708090001").unwrap(),
|
|
// // )
|
|
// // .unwrap();
|
|
//
|
|
let pk = sk.public();
|
|
println!("pk: x={}, y={}", pk.x, pk.y);
|
|
let msg = Fq::from(5_u32);
|
|
println!("msg: {:?}", msg.to_string());
|
|
let sig = sk.sign(msg.clone()).unwrap();
|
|
println!(
|
|
"signature:\ns:{}, r.x: {}, r.y: {}",
|
|
sig.s, sig.r_b8.x, sig.r_b8.x
|
|
);
|
|
let v = verify(pk.clone(), sig.clone(), msg.clone());
|
|
assert_eq!(v, true);
|
|
}
|