1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
use bitcoin::{Network, PrivateKey, PublicKey}; use serde::{Deserialize, Serialize}; use address; #[derive(Clone, PartialEq, Eq, Debug, Deserialize, Serialize)] pub struct KeyInfo { pub raw_private_key: ::HexBytes, pub wif_private_key: PrivateKey, pub public_key: PublicKey, pub uncompressed_public_key: PublicKey, pub addresses: address::Addresses, } #[derive(Clone, PartialEq, Eq, Debug, Deserialize, Serialize)] pub struct PublicKeyInfo { pub public_key: PublicKey, pub uncompressed_public_key: PublicKey, pub addresses: address::Addresses, } impl ::GetInfo<PublicKeyInfo> for PublicKey { fn get_info(&self, network: Network) -> PublicKeyInfo { PublicKeyInfo { public_key: { let mut key = self.clone(); key.compressed = true; key }, uncompressed_public_key: { let mut key = self.clone(); key.compressed = false; key }, addresses: address::Addresses::from_pubkey(&self, network), } } }