You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
1.9 KiB

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