diff --git a/examples/test.rs b/examples/test.rs index cafaeb6..fba0415 100644 --- a/examples/test.rs +++ b/examples/test.rs @@ -4,120 +4,48 @@ // 测试钱包在C侧调用接口存储和重新读出钱包密钥 // -use rustwallet::{ - generate_sec_key, new_wallet, sign, sign_for_tran, wdecrypt, wencrypt, wget_address, -}; -use std::ffi::{CStr, CString}; -use std::os::raw::c_char; - -macro_rules! print_cchar { - ($p1:expr) => { - let s = CStr::from_ptr($p1); - let ps = s.to_str().unwrap(); - println!("{}=> {}", stringify!($p1), ps) - }; - ($p1:expr, $p2:expr) => { - let s = CStr::from_ptr($p2); - let ps = s.to_str().unwrap(); - println!("{}{}", $p1, ps) - }; -} - -macro_rules! cchar_to_str { - ($p1:expr) => {{ - let s = CStr::from_ptr($p1); - let ps = s.to_str().unwrap(); - ps - }}; -} - -macro_rules! str_to_cchar { - ($p1:expr) => {{ - let c_msgkey = $p1.to_string(); - c_msgkey - }}; -} +use rustwallet::{generate_sec_key, sign, sign_for_tran, wdecrypt, wencrypt, wget_address}; fn main() { - unsafe { - let msg = "a0f2022d15fd8072f12c76cc1596c4f1"; - // let wallet: CWallet = new_wallet(str_to_cchar!(msg)); - // println!("---- generated a wallet to be used on C-side ----"); - // print_wallet(&wallet); - // let address = get_address(&wallet); - // print_cchar!(address); - // let address_str = cchar_to_str!(address); - // println!("address: {}", address_str); - // let sign_str = sign_for_tran(&wallet,str_to_cchar!("cc0dac9a2bd7125bbe9130b83053494860f7a444868a45a9c00a865631ba8894")); - // print_cchar!(sign_str); - // let s_key = generate_sec_key(&wallet); - // print_cchar!(s_key); + let msg = "a0f2022d15fd8072f12c76cc1596c4f1"; - let key0 = "3f26e586111b5c4cab6a5dd5e0d13c3b13184ba74410ba064a3b485be4f9a2cd"; - let key1 = ""; - let key2 = "cd00eb0126aeed39762579ce94c90a04695ad17fbd5e79aa4e9fc4a34ba32a5"; - let private_key = generate_sec_key( - msg.to_string(), - key0.to_string(), - str_to_cchar!(key1), - str_to_cchar!(key2), - ); - println!("private_key=> {}", private_key); + let key0 = "3f26e586111b5c4cab6a5dd5e0d13c3b13184ba74410ba064a3b485be4f9a2cd"; + let key1 = ""; + let key2 = "cd00eb0126aeed39762579ce94c90a04695ad17fbd5e79aa4e9fc4a34ba32a5"; + let private_key = generate_sec_key( + msg.to_string(), + key0.to_string(), + None, + Some(key2.to_string()), + ); + println!("private_key=> {}", private_key); - let address2 = wget_address( - str_to_cchar!(msg), - str_to_cchar!(key0), - Option(key1), - str_to_cchar!(key2), - ); + let address2 = wget_address( + msg.to_string(), + key0.to_string(), + None, + Some(key2.to_string()), + ); - println!("address=> {}", address2); - let message = "helloword"; - let msg_encrypt = wencrypt( - str_to_cchar!(msg), - str_to_cchar!(key0), - str_to_cchar!(key1), - str_to_cchar!(key2), - str_to_cchar!(message), - ); + println!("address=> {}", address2); + let message = "helloword"; + let msg_encrypt = wencrypt( + msg.to_string(), + key0.to_string(), + None, + Some(key2.to_string()), + message.to_string(), + ); - println!("msg_encrypt=> {}", msg_encrypt); + println!("msg_encrypt=> {}", msg_encrypt); - let msg_decrypt = wdecrypt( - str_to_cchar!(msg), - str_to_cchar!(key0), - str_to_cchar!(key1), - str_to_cchar!(key2), - msg_encrypt, - ); + let msg_decrypt = wdecrypt( + msg.to_string(), + key0.to_string(), + None, + Some(key2.to_string()), + msg_encrypt, + ); - println!("msg_decrypt=> {}", msg_decrypt); - - // let tmp_cwallet2 = restore_wallet(&tmp_cwallet); - // let address3 = get_address(&tmp_cwallet2); - // print_cchar!(address3); - - // let sign_str = sign(&tmp_cwallet2,str_to_cchar!("111")); - // print_cchar!(sign_str); - - // let cwallet3 = reset_wallet(&tmp_cwallet2); - // print_wallet(&cwallet3); - // let sign_str2 = sign(&cwallet3, str_to_cchar!("111")); - // print_cchar!(sign_str2); - // print_wallet(&tmp_cwallet2); - // println!("---- saving the wallet to wallet.json ----"); - // save_wallet(&wallet); - // println!("---- saved! ----"); - - // println!("---- fetching the saved wallet to be exposed to C-side ----"); - // let fetched = fetch_cwallet(); - // print_wallet(&fetched); - // sign(); - // let sign_str = "111"; - // let cstr = std::ffi::CString::new(sign_str).unwrap(); - // sss_sign(cstr.into_raw()); - - // // free_cwallet(wallet); // 对应 generate_cwallet() - // free_cwallet(fetched); // 对应 fetch_wallet() - } + println!("msg_decrypt=> {}", msg_decrypt); } diff --git a/src/lib.rs b/src/lib.rs index d4415b3..b5a6607 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -6,6 +6,7 @@ // use qr::qr_code::QR; + use utils::str_utils::{base64_to_hex, hex_to_base64}; use wasm_bindgen::prelude::*; @@ -41,12 +42,6 @@ macro_rules! console_log { ($($t:tt)*) => (log(&format_args!($($t)*).to_string())) } -#[wasm_bindgen] -pub fn new_wallet(msg_key: String) -> String { - let rust_wallet = wallet_impl::Wallet::new(&msg_key); - rust_wallet.get_public_key().to_string() -} - #[wasm_bindgen] pub fn get_public_key( msg_key: String, diff --git a/src/wallet/wallet_impl.rs b/src/wallet/wallet_impl.rs index 802f960..b09f993 100644 --- a/src/wallet/wallet_impl.rs +++ b/src/wallet/wallet_impl.rs @@ -178,7 +178,7 @@ impl Wallet { { let secp = Secp256k1::new(); let secret_key = self.get_secret_key(); - let hex_str = match hex::decode(msg){ + let hex_str = match hex::decode(msg) { Ok(v) => v, Err(e) => panic!("error decode hex str: {}", e), }; @@ -211,7 +211,7 @@ impl Wallet { let mut msg: String = msg1.clone().to_string(); if msg.len() % 2 == 1 { msg = "0".to_owned() + &msg; - } + } println!("msg to decrypt: {:?}", &msg); let msg = match hex::decode(&msg) { Ok(v) => v,