diff --git a/src/wallet/wallet_impl.rs b/src/wallet/wallet_impl.rs index 0f74478..2cc6a73 100644 --- a/src/wallet/wallet_impl.rs +++ b/src/wallet/wallet_impl.rs @@ -28,6 +28,12 @@ pub fn public_key_address(public_key: &PublicKey) -> Address { Address::from_slice(&hash[12..]) } +pub fn get_public_key(secret_key: &str) -> PublicKey { + let secp = Secp256k1::new(); + let secret = SecretKey::from_str(secret_key).unwrap(); + PublicKey::from_secret_key(&secp, &secret) +} + pub fn hash_message(message: S) -> H256 where S: AsRef<[u8]>, @@ -75,8 +81,9 @@ impl Wallet { pub fn retrieve_keys(file_path: &str) -> Result { let file = OpenOptions::new().read(true).open(file_path)?; let buf_reader = BufReader::new(file); - let wallet: Wallet = serde_json::from_reader(buf_reader)?; - + let wallet: Wallet = serde_json::from_reader(buf_reader)?;; + let public_key = get_public_key(&wallet.secret_key); + println!("public key from secret: {:?}", public_key.to_string()); Ok(wallet) } @@ -92,9 +99,9 @@ impl Wallet { share_amount: 3, prime: pb, }; - + let skey = "64a6f7baa58d7381f4068fc729568009ef8f36e9c7d9c33d2cf06afc25c01e87"; let secret = BigInt::parse_bytes( - b"64a6f7baa58d7381f4068fc729568009ef8f36e9c7d9c33d2cf06afc25c01e87", + &skey.as_bytes(), 16, ) .unwrap(); @@ -104,6 +111,18 @@ impl Wallet { let key1 = shares[2].clone().1; println!("key0: {:?}", key0.to_str_radix(16)); println!("key1: {:?}", key1.to_str_radix(16)); + let key_str_0 = "539e52f2ffc060329010ae551e8684124bad26d93b0c9333154a5a5e116f5e0"; + let key_str_1 = "44c523387a58ee8628e81d5e36014e78a05838f51205d765b7e729da33727ae2"; + let key0 = BigInt::parse_bytes( + &key_str_0.as_bytes(), + 16, + ) + .unwrap(); + let key1 = BigInt::parse_bytes( + &key_str_1.as_bytes(), + 16, + ) + .unwrap(); let kp0: (usize, BigInt) = (2, key0); let kp1 = (3, key1); let tmp = vec![kp0, kp1];