From 7ff721e5634a7a7e4c1e98a7ce93202d4938739c Mon Sep 17 00:00:00 2001 From: Tyera Eulberg Date: Tue, 31 Jul 2018 15:50:09 -0600 Subject: [PATCH] Replace pub field with AsRef impl --- src/bin/wallet.rs | 3 +-- src/crdt.rs | 2 +- src/ncp.rs | 2 +- src/signature.rs | 14 +++++++++++++- src/transaction.rs | 4 ++-- tests/data_replicator.rs | 10 +++++++--- 6 files changed, 25 insertions(+), 10 deletions(-) diff --git a/src/bin/wallet.rs b/src/bin/wallet.rs index 447bfeded7..04e5c427ae 100644 --- a/src/bin/wallet.rs +++ b/src/bin/wallet.rs @@ -8,7 +8,6 @@ extern crate serde_json; extern crate solana; use clap::{App, Arg, SubCommand}; -use generic_array::GenericArray; use solana::client::mk_client; use solana::crdt::NodeInfo; use solana::drone::DRONE_PORT; @@ -182,7 +181,7 @@ fn parse_args() -> Result> { display_actions(); Err(WalletError::BadParameter("Invalid public key".to_string()))?; } - PublicKey(GenericArray::clone_from_slice(&pubkey_vec)) + PublicKey::new(&pubkey_vec) } else { id.pubkey() }; diff --git a/src/crdt.rs b/src/crdt.rs index 4d5db5ab50..7b2e918bc4 100644 --- a/src/crdt.rs +++ b/src/crdt.rs @@ -136,7 +136,7 @@ pub struct NodeInfo { } fn make_debug_id(key: &PublicKey) -> u64 { - let buf: &[u8] = &key.0; + let buf: &[u8] = &key.as_ref(); let mut rdr = Cursor::new(&buf[..8]); rdr.read_u64::() .expect("rdr.read_u64 in fn debug_id") diff --git a/src/ncp.rs b/src/ncp.rs index f5b6ec6017..a31ed00d44 100644 --- a/src/ncp.rs +++ b/src/ncp.rs @@ -28,7 +28,7 @@ impl Ncp { let (request_sender, request_receiver) = channel(); trace!( "Ncp: id: {:?}, listening on: {:?}", - &crdt.read().unwrap().me.0[..4], + &crdt.read().unwrap().me.as_ref()[..4], gossip_listen_socket.local_addr().unwrap() ); let t_receiver = streamer::blob_receiver( diff --git a/src/signature.rs b/src/signature.rs index 45ec93c52e..3aaaa18c5e 100644 --- a/src/signature.rs +++ b/src/signature.rs @@ -18,7 +18,19 @@ use untrusted::Input; pub type KeyPair = Ed25519KeyPair; #[derive(Serialize, Deserialize, Clone, Copy, Default, Eq, PartialEq, Ord, PartialOrd, Hash)] -pub struct PublicKey(pub GenericArray); +pub struct PublicKey(GenericArray); + +impl PublicKey { + pub fn new(pubkey_vec: &[u8]) -> Self { + PublicKey(GenericArray::clone_from_slice(&pubkey_vec)) + } +} + +impl AsRef> for PublicKey { + fn as_ref(&self) -> &GenericArray { + &self.0 + } +} impl fmt::Debug for PublicKey { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { diff --git a/src/transaction.rs b/src/transaction.rs index e4513f63fb..5781a4b4d1 100644 --- a/src/transaction.rs +++ b/src/transaction.rs @@ -192,7 +192,7 @@ impl Transaction { /// Verify only the transaction signature. pub fn verify_sig(&self) -> bool { warn!("transaction signature verification called"); - self.sig.verify(&self.from.0, &self.get_sign_data()) + self.sig.verify(&self.from.as_ref(), &self.get_sign_data()) } /// Verify only the payment plan. @@ -319,7 +319,7 @@ mod tests { let tx_bytes = serialize(&tx).unwrap(); assert_matches!(memfind(&tx_bytes, &sign_data), Some(SIGNED_DATA_OFFSET)); assert_matches!(memfind(&tx_bytes, &tx.sig), Some(SIG_OFFSET)); - assert_matches!(memfind(&tx_bytes, &tx.from.0), Some(PUB_KEY_OFFSET)); + assert_matches!(memfind(&tx_bytes, &tx.from.as_ref()), Some(PUB_KEY_OFFSET)); } #[test] diff --git a/tests/data_replicator.rs b/tests/data_replicator.rs index 70b70671cd..85c1c8931a 100644 --- a/tests/data_replicator.rs +++ b/tests/data_replicator.rs @@ -101,7 +101,7 @@ fn gossip_star() { let mut yd = yv.table[&yv.me].clone(); yd.version = 0; xv.insert(&yd); - trace!("star leader {:?}", &xv.me.0[..4]); + trace!("star leader {:?}", &xv.me.as_ref()[..4]); } }); } @@ -116,12 +116,16 @@ fn gossip_rstar() { let xv = listen[0].0.read().unwrap(); xv.table[&xv.me].clone() }; - trace!("rstar leader {:?}", &xd.id.0[..4]); + trace!("rstar leader {:?}", &xd.id.as_ref()[..4]); for n in 0..(num - 1) { let y = (n + 1) % listen.len(); let mut yv = listen[y].0.write().unwrap(); yv.insert(&xd); - trace!("rstar insert {:?} into {:?}", &xd.id.0[..4], &yv.me.0[..4]); + trace!( + "rstar insert {:?} into {:?}", + &xd.id.as_ref()[..4], + &yv.me.as_ref()[..4] + ); } }); }