Add tsify fix generate_sp_wallet

This commit is contained in:
Sosthene00 2024-03-21 17:09:52 +01:00
parent 92c77c91e0
commit 62bee10166
2 changed files with 18 additions and 21 deletions

View File

@ -17,6 +17,7 @@ getrandom = { version="0.2.12", features = ["js"] }
wasm-logger = "0.2.0"
rand = "0.8.5"
log = "0.4.6"
tsify = { git = "https://github.com/Sosthene00/tsify", branch = "next" }
[dev-dependencies]
wasm-bindgen-test = "0.3"

View File

@ -1,17 +1,21 @@
use rand::Rng;
use serde::{Deserialize, Serialize};
use sp_backend::silentpayments::sending::SilentPaymentAddress;
use wasm_bindgen::prelude::*;
use tsify::Tsify;
use sp_backend::spclient::SpendKey;
use sp_backend::spclient::{derive_keys_from_seed, SpClient, OutputList};
const IS_TESTNET: bool = true;
#[wasm_bindgen]
pub struct GenerateSpWalletReturn {
sp_client_json: String,
sp_outputs_json: String,
#[derive(Tsify, Serialize, Deserialize)]
#[tsify(into_wasm_abi)]
#[allow(non_camel_case_types)]
pub struct generate_sp_wallet_return {
pub sp_client_json: String,
pub sp_outputs_json: String,
}
#[wasm_bindgen]
@ -19,19 +23,13 @@ pub fn setup() {
wasm_logger::init(wasm_logger::Config::default());
}
fn new_key() -> Vec<u8> {
#[wasm_bindgen]
pub fn generate_sp_wallet(label: Option<String>, birthday: u32, is_testnet: bool) -> Option<generate_sp_wallet_return> {
let mut seed = [0u8; 64];
rand::thread_rng().fill(&mut seed);
seed.to_vec()
}
#[wasm_bindgen]
pub fn generate_sp_wallet(birthday: u32, is_testnet: bool) -> Option<GenerateSpWalletReturn> {
let mut seed = [0u8; 64];
seed.copy_from_slice(&new_key());
let (scan_sk, spend_sk) = derive_keys_from_seed(&seed, is_testnet).ok()?;
let sp_client = SpClient::new(
"".to_owned(),
label.unwrap_or("default".into()),
scan_sk,
SpendKey::Secret(spend_sk),
None,
@ -43,21 +41,19 @@ pub fn generate_sp_wallet(birthday: u32, is_testnet: bool) -> Option<GenerateSpW
"Created client for sp with address: {}",
our_address.to_string()
);
// zero out the seed
for mut b in seed.into_iter() {
b = 0;
assert!(b == 0); // this guarantee that the compiler won't optimize it away
}
let sp_client_json = serde_json::to_string(&sp_client).ok()?;
// Generate an empty outputs
let sp_outputs = OutputList::new(our_address.get_scan_key(), our_address.get_spend_key(), birthday);
let sp_outputs_json = serde_json::to_string(&sp_outputs).ok()?;
Some(GenerateSpWalletReturn {
let res = generate_sp_wallet_return {
sp_client_json,
sp_outputs_json,
})
sp_outputs_json
};
Some(res)
}
#[wasm_bindgen]