update secp256k1 version
This commit is contained in:
parent
2bf87b9863
commit
a960fb2e8f
1452
Cargo.lock
generated
1452
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -7,7 +7,7 @@ edition = "2021"
|
||||
[lib]
|
||||
name = "rustwallet"
|
||||
# this is needed to build for iOS and Android.
|
||||
crate-type = ["staticlib", "lib"]
|
||||
crate-type = ["staticlib", "lib", "cdylib"]
|
||||
|
||||
# this dependency is only needed for Android.
|
||||
# [target.'cfg(target_os = "android")'.dependencies]
|
||||
@ -17,11 +17,11 @@ crate-type = ["staticlib", "lib"]
|
||||
anyhow = "1.0.65"
|
||||
bitcoin_hashes = "0.11.0"
|
||||
hex = "0.4.3"
|
||||
openssl = { version = "0.10.41", features = ["vendored"] }
|
||||
secp256k1 = { version = "0.21.3", features = ["rand-std", "bitcoin_hashes", "recovery"] }
|
||||
secp256k1 = { version = "0.25.0", features = ["rand-std", "bitcoin_hashes", "recovery"] }
|
||||
serde = { version = "1.0.145", features = ["derive"]}
|
||||
serde_json = "1.0.85"
|
||||
shamir_secret_sharing = "0.1.1"
|
||||
tiny-keccak = "1.5"
|
||||
web3 = { version = "0.18.0"}
|
||||
primitive-types = "0.12.1"
|
||||
getrandom = { version = "0.2.7", features = ["js"]}
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
use std::ffi::{CStr, CString};
|
||||
use std::os::raw::c_char;
|
||||
use rustwallet::{new_wallet, get_address, free_cwallet, sign, sign_for_tran, CWallet, generate_sec_key};
|
||||
use rustwallet::{new_wallet, get_address, sign, sign_for_tran, CWallet, generate_sec_key};
|
||||
|
||||
macro_rules! print_cchar{
|
||||
($p1:expr) => (
|
||||
@ -64,12 +64,14 @@ fn main() {
|
||||
let key0 = "3f26e586111b5c4cab6a5dd5e0d13c3b13184ba74410ba064a3b485be4f9a2cd";
|
||||
let key1 = "";
|
||||
let key2 = "cd00eb0126aeed39762579ce94c90a04695ad17fbd5e79aa4e9fc4a34ba32a5";
|
||||
let tmp_cwallet = CWallet{
|
||||
msg_key: str_to_cchar!(msg),
|
||||
master_key: str_to_cchar!(key0),
|
||||
second_key: str_to_cchar!(key1),
|
||||
backup_key: str_to_cchar!(key2)
|
||||
};
|
||||
let private_key = generate_sec_key(
|
||||
str_to_cchar!(msg),
|
||||
str_to_cchar!(key0),
|
||||
str_to_cchar!(key1),
|
||||
str_to_cchar!(key2)
|
||||
);
|
||||
print_cchar!(private_key);
|
||||
|
||||
let address2 = get_address(
|
||||
str_to_cchar!(msg),
|
||||
str_to_cchar!(key0),
|
||||
@ -77,8 +79,6 @@ fn main() {
|
||||
str_to_cchar!(key2)
|
||||
);
|
||||
print_cchar!(address2);
|
||||
// let s_key2 = generate_sec_key(&tmp_cwallet);
|
||||
// print_cchar!(s_key2);
|
||||
// let tmp_cwallet2 = restore_wallet(&tmp_cwallet);
|
||||
// let address3 = get_address(&tmp_cwallet2);
|
||||
// print_cchar!(address3);
|
||||
|
@ -10,20 +10,20 @@ use shamir_secret_sharing::ShamirSecretSharing as SSS;
|
||||
use std::str;
|
||||
use std::str::FromStr;
|
||||
use tiny_keccak::keccak256;
|
||||
use web3::types::{Address, H256};
|
||||
use primitive_types::{H160, H256};
|
||||
|
||||
pub fn generate_keypair() -> (SecretKey, PublicKey) {
|
||||
let secp = Secp256k1::new();
|
||||
let mut rng = OsRng::new().expect("OsRng");
|
||||
secp.generate_keypair(&mut rng)
|
||||
// let mut rng = OsRng::new().expect("OsRng");
|
||||
secp.generate_keypair(&mut OsRng)
|
||||
}
|
||||
|
||||
pub fn public_key_address(public_key: &PublicKey) -> Address {
|
||||
pub fn public_key_address(public_key: &PublicKey) -> H160 {
|
||||
let public_key = public_key.serialize_uncompressed();
|
||||
debug_assert_eq!(public_key[0], 0x04);
|
||||
let hash = keccak256(&public_key[1..]);
|
||||
|
||||
Address::from_slice(&hash[12..])
|
||||
H160::from_slice(&hash[12..])
|
||||
}
|
||||
|
||||
pub fn get_public_key(secret_key: &SecretKey) -> PublicKey {
|
||||
@ -81,7 +81,7 @@ pub struct Wallet {
|
||||
impl Wallet {
|
||||
pub fn new(msg: &str) -> Self{
|
||||
let (secret_key, _pub_key) = generate_keypair();
|
||||
let s = hex::encode(&secret_key.serialize_secret());
|
||||
let s = hex::encode(&secret_key.secret_bytes());
|
||||
let shares_str = generate_sss_keypair(msg, &s);
|
||||
// println!("secret key: {:?}", secret_key);
|
||||
// println!("{:?}", s);
|
||||
@ -97,7 +97,7 @@ impl Wallet {
|
||||
|
||||
pub fn reset_wallet(&self) -> Self{
|
||||
let secret_key = self.get_secret_key();
|
||||
let s = hex::encode(&secret_key.serialize_secret());
|
||||
let s = hex::encode(&secret_key.secret_bytes());
|
||||
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);
|
||||
@ -143,7 +143,6 @@ impl Wallet {
|
||||
if s_key_str.len() < 64 {
|
||||
s_key_str += "0";
|
||||
}
|
||||
println!("{}", &s_key_str);
|
||||
SecretKey::from_str(&s_key_str).expect("32 bytes, within curve order")
|
||||
}
|
||||
|
||||
@ -152,13 +151,14 @@ impl Wallet {
|
||||
get_public_key(&s_key)
|
||||
}
|
||||
|
||||
|
||||
pub fn generate_sec_key(&self) -> String {
|
||||
let secret_key = self.get_secret_key();
|
||||
let s = hex::encode(&secret_key.serialize_secret());
|
||||
let s = hex::encode(&secret_key.secret_bytes());
|
||||
s
|
||||
}
|
||||
|
||||
pub fn get_address(&self) -> Address {
|
||||
pub fn get_address(&self) -> H160 {
|
||||
let public_key = self.get_public_key();
|
||||
public_key_address(&public_key)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user