forked from hush/SilentDragonPaper
Aditya Kulkarni
5 years ago
6 changed files with 65 additions and 10 deletions
@ -0,0 +1 @@ |
|||
target/ |
@ -1,3 +1 @@ |
|||
fn sayhello() { |
|||
println!("Hello, world!"); |
|||
} |
|||
pub mod paper; |
|||
|
@ -0,0 +1,47 @@ |
|||
|
|||
use zip32::{ChildIndex, ExtendedSpendingKey}; |
|||
use bech32::{Bech32, u5, ToBase32}; |
|||
use rand::{OsRng, Rng}; |
|||
|
|||
pub fn get_address() -> (String, String) { |
|||
|
|||
let mut rng = OsRng::new().expect("Error opening random number generator"); |
|||
let mut seed:[u8; 32] = [0; 32];
|
|||
rng.fill_bytes(&mut seed); |
|||
|
|||
let spk: ExtendedSpendingKey = ExtendedSpendingKey::from_path( |
|||
&ExtendedSpendingKey::master(&seed), |
|||
&[ |
|||
ChildIndex::Hardened(32), |
|||
ChildIndex::Hardened(44), |
|||
ChildIndex::Hardened(0), |
|||
], |
|||
); |
|||
|
|||
let (_d, addr) = spk.default_address().expect("Cannot get result"); |
|||
//println!("{:?}", d.0);
|
|||
//println!("{:?}", addr.diversifier.0);
|
|||
|
|||
// Address
|
|||
let mut v = vec![0; 43]; |
|||
v.get_mut(..11).unwrap().copy_from_slice(&addr.diversifier.0); |
|||
addr.pk_d.write(v.get_mut(11..).unwrap()).expect("Cannot write!"); |
|||
|
|||
|
|||
let checked_data: Vec<u5> = v.to_base32(); |
|||
let encoded = Bech32::new("zs".into(), checked_data).expect("bech32 failed").to_string(); |
|||
//println!("{}", encoded);
|
|||
|
|||
// Private Key
|
|||
let mut vp = Vec::new(); |
|||
spk.write(&mut vp).expect("Can't write private key"); |
|||
//println!("Len {:?}", vp.len());
|
|||
|
|||
let c_d: Vec<u5> = vp.to_base32(); |
|||
let encoded_pk = Bech32::new("secret-extended-key-main".into(), c_d).expect("bech32 failed").to_string(); |
|||
//println!("{}", encoded_pk);
|
|||
|
|||
|
|||
//println!("Hello, {}, {}!", encoded, encoded_pk);
|
|||
return (encoded.to_string(), encoded_pk.to_string()); |
|||
} |
Loading…
Reference in new issue