暴露解密方法

This commit is contained in:
CounterFire2023 2023-08-17 13:22:40 +08:00
parent 3e412511fc
commit 0ef0068ffb
2 changed files with 28 additions and 4 deletions

View File

@ -6,8 +6,8 @@
use rustwallet::{
aes_decrypt, aes_encrypt, generate_sec_key, get_address, get_public_key, hash_pass_svr,
hex_deflate, hex_inflate, keccak256_hash, local_pass_hasher, sign, sign_for_tran,
wallet_decrypt, wallet_encrypt,
hex_deflate, hex_inflate, keccak256_hash, local_pass_hasher, rdecrypt, rencrypt, sign,
sign_for_tran, wallet_decrypt, wallet_encrypt,
};
use std::ffi::{CStr, CString};
use std::os::raw::c_char;
@ -56,8 +56,8 @@ fn main() {
// let s_key = generate_sec_key(&wallet);
// print_cchar!(s_key);
let key0 = "3f26e586111b5c4cab6a5dd5e0d13c3b13184ba74410ba064a3b485be4f9a2cd";
let key1 = "cd00eb0126aeed39762579ce94c90a04695ad17fbd5e79aa4e9fc4a34ba32a5";
let key0 = "3f26e586111b5c4cab6a5dd5e0d13c3b13184ba74410ba064a3b485be4f9a2ed";
let key1 = "cd00eb0126aeed39762579ce94c90a04695ad17fbd5e79aa4e9fc4a34ba32c5";
let address2 = get_address(
str_to_cchar!(msg_key),
str_to_cchar!(key0),
@ -131,5 +131,13 @@ fn main() {
let local_pass_hass = local_pass_hasher(str_to_cchar!(pass));
print_cchar!(local_pass_hass);
let msg_to_encrypt = "hello world";
let msg_encrypted = rencrypt(key_public, str_to_cchar!(msg_to_encrypt));
print_cchar!(msg_encrypted);
let msg_d = hex_deflate(msg_encrypted);
print_cchar!(msg_d);
let msg_decrypted = rdecrypt(key_private, msg_encrypted);
print_cchar!(msg_decrypted);
}
}

View File

@ -11,6 +11,7 @@ use std::str::FromStr;
mod wallet;
use secp256k1::PublicKey;
use secp256k1::SecretKey;
use wallet_impl::Wallet;
use crate::wallet::*;
@ -132,6 +133,21 @@ pub unsafe extern "C" fn rencrypt(pk: *const c_char, msg: *const c_char) -> *mut
str_to_cchar!(msg_encrypt)
}
#[no_mangle]
pub unsafe extern "C" fn rdecrypt(sk: *const c_char, msg: *const c_char) -> *mut c_char {
let msg_str = cchar_to_str!(msg);
let sk_str = cchar_to_str!(sk);
let private_key = match SecretKey::from_str(sk_str) {
Ok(v) => v,
Err(e) => panic!("error parse publickey: {}", e),
};
let msg_encrypt = match zdecrypt(private_key, msg_str) {
Ok(v) => v,
Err(err) => panic!("error encrypt: {:?}", err),
};
str_to_cchar!(msg_encrypt)
}
#[no_mangle]
pub unsafe extern "C" fn wallet_encrypt(
msg_key: *const c_char,