修改android打包脚本, 修改test
This commit is contained in:
parent
3fa7726102
commit
8414b9307a
@ -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);
|
||||
}
|
||||
}
|
||||
|
31
rustwallet.h
31
rustwallet.h
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
29
src/lib.rs
29
src/lib.rs
@ -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)
|
||||
|
@ -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),
|
||||
};
|
||||
|
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user