修改android打包脚本, 修改test

This commit is contained in:
zhl 2023-03-10 11:54:21 +08:00
parent 3fa7726102
commit 8414b9307a
7 changed files with 101 additions and 61 deletions

View File

@ -5,8 +5,8 @@
//
use rustwallet::{
free_cwallet, generate_sec_key, get_address, get_public_key, new_wallet, rdecrypt, rencrypt,
sign, sign_for_tran, str_deflate, str_inflate, CWallet,
free_cwallet, generate_sec_key, get_address, get_public_key, hex_deflate, hex_inflate,
new_wallet, rencrypt, sign, sign_for_tran, wallet_decrypt, wallet_encrypt, CWallet,
};
use std::ffi::{CStr, CString};
use std::os::raw::c_char;
@ -98,7 +98,7 @@ fn main() {
);
print_cchar!(str_signed2);
let str_encrypt = rencrypt(
let str_encrypt = wallet_encrypt(
str_to_cchar!(msg_key),
str_to_cchar!(key0),
str_to_cchar!(key1),
@ -106,8 +106,7 @@ fn main() {
str_to_cchar!(msg),
);
print_cchar!(str_encrypt);
let str_decrypt = rdecrypt(
let str_decrypt = wallet_decrypt(
str_to_cchar!(msg_key),
str_to_cchar!(key0),
str_to_cchar!(key1),
@ -116,10 +115,22 @@ fn main() {
);
print_cchar!(str_decrypt);
let str_encode = str_deflate(key_public);
let pk = "031a8338368250f544b6cc8f5d72d77ab13bd067f51d4e84b8148edcc6595327e2";
let str_encrypt2 = rencrypt(str_to_cchar!(pk), str_to_cchar!(msg));
print_cchar!(str_encrypt2);
let str_decrypt2 = wallet_decrypt(
str_to_cchar!(msg_key),
str_to_cchar!(key0),
str_to_cchar!(key1),
str_to_cchar!(key2),
str_encrypt2,
);
print_cchar!(str_decrypt2);
let str_encode = hex_deflate(key_public);
print_cchar!(str_encode);
let str_decode = str_inflate(str_encode);
let str_decode = hex_inflate(str_encode);
print_cchar!(str_decode);
}
}

View File

@ -24,6 +24,11 @@ char *get_address(const char *msg_key,
const char *second_key,
const char *backup_key);
char *get_public_key(const char *msg_key,
const char *master_key,
const char *second_key,
const char *backup_key);
char *generate_sec_key(const char *msg_key,
const char *master_key,
const char *second_key,
@ -41,18 +46,20 @@ char *sign_for_tran(const char *msg_key,
const char *backup_key,
const char *msg);
char *rencrypt(const char *msg_key,
const char *master_key,
const char *second_key,
const char *backup_key,
const char *msg);
char *rencrypt(const char *pk, const char *msg);
char *rdecrypt(const char *msg_key,
const char *master_key,
const char *second_key,
const char *backup_key,
const char *msg);
char *wallet_encrypt(const char *msg_key,
const char *master_key,
const char *second_key,
const char *backup_key,
const char *msg);
char *str_deflate(const char *content);
char *wallet_decrypt(const char *msg_key,
const char *master_key,
const char *second_key,
const char *backup_key,
const char *msg);
char *str_inflate(const char *content);
char *hex_deflate(const char *content);
char *hex_inflate(const char *content);

View File

@ -8,26 +8,26 @@ cargo ndk -t armeabi-v7a -t arm64-v8a -t x86_64 -t x86 -p ${min_ver} build --rel
jniLibs=./android/rusty-android-lib/src/main/jniLibs
libName=librustwallet.a
rm -rf ${jniLibs}
#rm -rf ${jniLibs}
mkdir ${jniLibs}
mkdir ${jniLibs}/arm64-v8a
mkdir ${jniLibs}/armeabi-v7a
mkdir ${jniLibs}/x86_64
mkdir ${jniLibs}/x86
#mkdir ${jniLibs}
#mkdir ${jniLibs}/arm64-v8a
#mkdir ${jniLibs}/armeabi-v7a
#mkdir ${jniLibs}/x86_64
#mkdir ${jniLibs}/x86
targetBase=~/Documents/workspace/cocos/cocos2d-x/external/android
cp target/aarch64-linux-android/release/${libName} ${jniLibs}/arm64-v8a/${libName}
cp target/armv7-linux-androideabi/release/${libName} ${jniLibs}/armeabi-v7a/${libName}
cp target/x86_64-linux-android/release/${libName} ${jniLibs}/x86_64/${libName}
cp target/i686-linux-android/release/${libName} ${jniLibs}/x86/${libName}
targetBase=~/Documents/workspace/crypto/cocos_js/external/android
#cp target/aarch64-linux-android/release/${libName} ${jniLibs}/arm64-v8a/${libName}
#cp target/armv7-linux-androideabi/release/${libName} ${jniLibs}/armeabi-v7a/${libName}
#cp target/x86_64-linux-android/release/${libName} ${jniLibs}/x86_64/${libName}
#cp target/i686-linux-android/release/${libName} ${jniLibs}/x86/${libName}
cp target/aarch64-linux-android/release/${libName} ${targetBase}/arm64-v8a/${libName}
cp target/armv7-linux-androideabi/release/${libName} ${targetBase}/armeabi-v7a/${libName}
cp target/x86_64-linux-android/release/${libName} ${targetBase}/x86_64/${libName}
cp target/i686-linux-android/release/${libName} ${targetBase}/x86/${libName}
cp ./target/aarch64-linux-android/release/${libName} ${targetBase}/arm64-v8a/${libName}
cp ./target/armv7-linux-androideabi/release/${libName} ${targetBase}/armeabi-v7a/${libName}
cp ./target/x86_64-linux-android/release/${libName} ${targetBase}/x86_64/${libName}
cp ./target/i686-linux-android/release/${libName} ${targetBase}/x86/${libName}
cbindgen src/lib.rs -l c > rustwallet.h
cp rustwallet.h ${targetBase}/arm64-v8a/include/rustwallet/rustwallet.h
cp rustwallet.h ${targetBase}/armeabi-v7a/include/rustwallet/rustwallet.h
cp rustwallet.h ${targetBase}/x86_64/include/rustwallet/rustwallet.h
cp rustwallet.h ${targetBase}/x86/include/rustwallet/rustwallet.h
cp rustwallet.h ${targetBase}/x86/include/rustwallet/rustwallet.h

View File

@ -8,12 +8,12 @@ proj=ios
inc=./${proj}/include
libs=./${proj}/libs
rm -rf ${inc} ${libs}
#rm -rf ${inc} ${libs}
mkdir ${inc}
mkdir ${libs}
#mkdir ${inc}
#mkdir ${libs}
targetBase=~/Documents/workspace/cocos/cocos2d-x/external/ios
targetBase=~/Documents/workspace/crypto/cocos_js/external/ios
cp rustwallet.h ${targetBase}/include/rustwallet/rustwallet.h
cp target/universal/release/librustwallet.a ${targetBase}/libs/librustwallet.a

View File

@ -7,8 +7,11 @@
use std::ffi::{CStr, CString};
use std::os::raw::c_char;
use std::str::FromStr;
mod wallet;
use secp256k1::PublicKey;
use wallet::wallet_impl::zencrypt;
use wallet_impl::Wallet;
use crate::wallet::*;
@ -179,7 +182,22 @@ pub unsafe extern "C" fn sign_for_tran(
}
#[no_mangle]
pub unsafe extern "C" fn rencrypt(
pub unsafe extern "C" fn rencrypt(pk: *const c_char, msg: *const c_char) -> *mut c_char {
let msg_str = cchar_to_str!(msg);
let pk_str = cchar_to_str!(pk);
let public_key = match PublicKey::from_str(pk_str) {
Ok(v) => v,
Err(e) => panic!("error parse publickey: {}", e),
};
let msg_encrypt = match zencrypt(public_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,
master_key: *const c_char,
second_key: *const c_char,
@ -188,7 +206,8 @@ pub unsafe extern "C" fn rencrypt(
) -> *mut c_char {
let rwallet = generate_rwallet(msg_key, master_key, second_key, backup_key);
let msg_str = cchar_to_str!(msg);
let msg_encrypt = match rwallet.zencrypt(msg_str) {
let pk = rwallet.get_public_key();
let msg_encrypt = match zencrypt(pk, msg_str) {
Ok(v) => v,
Err(err) => panic!("error encrypt: {:?}", err),
};
@ -196,7 +215,7 @@ pub unsafe extern "C" fn rencrypt(
}
#[no_mangle]
pub unsafe extern "C" fn rdecrypt(
pub unsafe extern "C" fn wallet_decrypt(
msg_key: *const c_char,
master_key: *const c_char,
second_key: *const c_char,
@ -213,14 +232,14 @@ pub unsafe extern "C" fn rdecrypt(
}
#[no_mangle]
pub unsafe extern "C" fn str_deflate(content: *const c_char) -> *mut c_char {
pub unsafe extern "C" fn hex_deflate(content: *const c_char) -> *mut c_char {
let content_str = cchar_to_str!(content);
let msg_base64 = hex_to_base64(&content_str);
str_to_cchar!(msg_base64)
}
#[no_mangle]
pub unsafe extern "C" fn str_inflate(content: *const c_char) -> *mut c_char {
pub unsafe extern "C" fn hex_inflate(content: *const c_char) -> *mut c_char {
let content_str = cchar_to_str!(content);
let msg_hex = base64_to_hex(&content_str);
str_to_cchar!(msg_hex)

View File

@ -1,7 +1,11 @@
use base64::{engine::general_purpose, Engine as _};
pub fn hex_to_base64(content: &str) -> String {
let str_tmp = match hex::decode(content) {
let mut msg: String = content.clone().to_string();
if msg.len() % 2 == 1 {
msg = "0".to_owned() + &msg;
}
let str_tmp = match hex::decode(msg) {
Ok(v) => v,
Err(e) => panic!("error decode hex str: {}", e),
};

View File

@ -19,6 +19,19 @@ pub fn generate_keypair() -> (SecretKey, PublicKey) {
secp.generate_keypair(&mut OsRng)
}
pub fn zencrypt(pk: PublicKey, msg: &str) -> Result<String> {
let pk = &pk.serialize();
let msg = msg.as_bytes();
// println!("msg before encrypt: {:?}", msg);
let msg_encrypt = match encrypt(pk, &msg) {
Ok(v) => v,
Err(e) => panic!("error encrypt content: {}", e),
};
// println!("msg after encrypt: {:?}", &msg_encrypt);
let str_encrypt = hex::encode(&msg_encrypt);
Ok(str_encrypt)
}
pub fn public_key_address(public_key: &PublicKey) -> H160 {
let public_key = public_key.serialize_uncompressed();
debug_assert_eq!(public_key[0], 0x04);
@ -178,7 +191,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),
};
@ -191,27 +204,13 @@ impl Wallet {
Ok((s, recid))
}
pub fn zencrypt(&self, msg: &str) -> Result<String> {
let pk = self.get_public_key();
let pk = &pk.serialize();
let msg = msg.as_bytes();
// println!("msg before encrypt: {:?}", msg);
let msg_encrypt = match encrypt(pk, &msg) {
Ok(v) => v,
Err(e) => panic!("error encrypt content: {}", e),
};
// println!("msg after encrypt: {:?}", &msg_encrypt);
let str_encrypt = hex::encode(&msg_encrypt);
Ok(str_encrypt)
}
pub fn zdecrypt(&self, msg1: &str) -> Result<String> {
let sk = self.get_secret_key();
let sk = sk.secret_bytes();
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,