feat: schnorr check in wasm

This commit is contained in:
2023-12-12 22:46:36 +00:00
parent 9431b294c6
commit 8d6cdb3868
10 changed files with 97 additions and 4 deletions

View File

@ -1,6 +1,7 @@
extern crate console_error_panic_hook;
use argon2::{Argon2};
use secp256k1::{Message, Secp256k1, XOnlyPublicKey};
use serde::{Deserialize, Serialize};
use crate::filter::{FlatReqFilter, ReqFilter};
use wasm_bindgen::prelude::*;
@ -98,6 +99,20 @@ pub fn argon2(password: JsValue, salt: JsValue) -> Result<JsValue, JsValue> {
Ok(serde_wasm_bindgen::to_value(&hex::encode(key))?)
}
#[wasm_bindgen]
pub fn schnorr_verify(hash: JsValue, sig: JsValue, pub_key: JsValue) -> Result<bool, JsValue> {
console_error_panic_hook::set_once();
let msg_hex: String = serde_wasm_bindgen::from_value(hash)?;
let sig_hex: String = serde_wasm_bindgen::from_value(sig)?;
let pub_key_hex: String = serde_wasm_bindgen::from_value(pub_key)?;
let secp = Secp256k1::new();
let msg = Message::from_digest_slice(&hex::decode(msg_hex).unwrap()).unwrap();
let key = XOnlyPublicKey::from_slice(&hex::decode(pub_key_hex).unwrap()).unwrap();
let sig = secp256k1::schnorr::Signature::from_slice(&hex::decode(sig_hex).unwrap()).unwrap();
Ok(secp.verify_schnorr(&sig, &msg, &key).is_ok())
}
#[cfg(test)]
mod tests {
use super::*;