增加重置钱包的方法
This commit is contained in:
parent
880d19ce33
commit
cdfec2b61a
@ -6,7 +6,7 @@
|
||||
|
||||
use std::ffi::{CStr, CString};
|
||||
use std::os::raw::c_char;
|
||||
use rustwallet::{new_wallet, get_address, restore_wallet, free_cwallet, sign, CWallet};
|
||||
use rustwallet::{new_wallet, get_address, restore_wallet, reset_wallet, free_cwallet, sign, CWallet};
|
||||
|
||||
macro_rules! print_cchar{
|
||||
($p1:expr) => (
|
||||
@ -70,8 +70,13 @@ fn main() {
|
||||
let address3 = get_address(&tmp_cwallet2);
|
||||
print_cchar!(address3);
|
||||
|
||||
let sign = sign(&tmp_cwallet2,str_to_cchar!("111"));
|
||||
print_cchar!(sign);
|
||||
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);
|
||||
|
@ -102,6 +102,15 @@ pub unsafe extern "C" fn restore_wallet(cw: &CWallet) -> CWallet {
|
||||
convert_to_cwallet(rust_wallet)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn reset_wallet(cw: &CWallet) -> CWallet {
|
||||
println!("restore wallet");
|
||||
let rust_wallet = convert_to_rwallet(cw);
|
||||
let rust_wallet2 = rust_wallet.reset_wallet();
|
||||
println!("new rust_wallet: {:?}", &rust_wallet2);
|
||||
convert_to_cwallet(rust_wallet2)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn free_cwallet(cw: CWallet) {
|
||||
drop(CString::from_raw(cw.msg_key));
|
||||
|
@ -98,32 +98,32 @@ impl Wallet {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn restore_wallet(msg: &str, _key_master: &str, _key_second: Option<&str>, _key_backup: Option<&str>) -> Self {
|
||||
let key_second: Option<String> = match _key_second {
|
||||
None => None,
|
||||
Some(val) => Some(val.to_string())
|
||||
};
|
||||
let key_backup: Option<String> = match _key_backup {
|
||||
None => None,
|
||||
Some(val) => Some(val.to_string())
|
||||
};
|
||||
Wallet {
|
||||
msg_key: msg.to_string(),
|
||||
master_key: _key_master.to_string(),
|
||||
second_key: key_second,
|
||||
backup_key: key_backup
|
||||
}
|
||||
}
|
||||
// pub fn restore_wallet(msg: &str, _key_master: &str, _key_second: Option<&str>, _key_backup: Option<&str>) -> Self {
|
||||
// let key_second: Option<String> = match _key_second {
|
||||
// None => None,
|
||||
// Some(val) => Some(val.to_string())
|
||||
// };
|
||||
// let key_backup: Option<String> = match _key_backup {
|
||||
// None => None,
|
||||
// Some(val) => Some(val.to_string())
|
||||
// };
|
||||
// Wallet {
|
||||
// msg_key: msg.to_string(),
|
||||
// master_key: _key_master.to_string(),
|
||||
// second_key: key_second,
|
||||
// backup_key: key_backup
|
||||
// }
|
||||
// }
|
||||
|
||||
pub fn reset_eallet(msg: &str, _key_master: &str, _key_second: Option<&str>, _key_backup: Option<&str>) -> Self{
|
||||
let tmp_wallet = Wallet::restore_wallet(msg, _key_master, _key_second, _key_backup);
|
||||
let secret_key = tmp_wallet.get_secret_key();
|
||||
pub fn reset_wallet(&self) -> Self{
|
||||
let secret_key = self.get_secret_key();
|
||||
let s = hex::encode(&secret_key.serialize_secret());
|
||||
let shares_str = generate_sss_keypair(msg, &s);
|
||||
let shares_str = generate_sss_keypair(&self.msg_key, &s);
|
||||
let second_key = shares_str.get(1).map(String::clone);
|
||||
let backup_key = shares_str.get(2).map(String::clone);
|
||||
|
||||
Wallet {
|
||||
msg_key: msg.to_string(),
|
||||
msg_key: self.msg_key.clone(),
|
||||
master_key: shares_str.get(0).unwrap().to_string(),
|
||||
second_key: second_key,
|
||||
backup_key: backup_key
|
||||
|
Loading…
x
Reference in New Issue
Block a user