From f8bf9ca21884a2120fdda3b97bf15c904d6e6346 Mon Sep 17 00:00:00 2001 From: Greg Fitzgerald Date: Thu, 14 Mar 2019 15:55:28 -0600 Subject: [PATCH] Make safe transaction signing the default --- sdk/src/transaction.rs | 10 +++++----- sdk/src/transaction_builder.rs | 2 +- wallet/src/wallet.rs | 8 +++----- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/sdk/src/transaction.rs b/sdk/src/transaction.rs index 2fd4fe453e..b2caaa576e 100644 --- a/sdk/src/transaction.rs +++ b/sdk/src/transaction.rs @@ -180,7 +180,7 @@ impl Transaction { Hash::default(), fee, ); - transaction.sign_checked(&[from_keypair], recent_blockhash); + transaction.sign(&[from_keypair], recent_blockhash); transaction } pub fn new_unsigned( @@ -229,7 +229,7 @@ impl Transaction { program_ids, instructions, }; - tx.sign_checked(from_keypairs, recent_blockhash); + tx.sign(from_keypairs, recent_blockhash); tx } pub fn data(&self, instruction_index: usize) -> &[u8] { @@ -280,7 +280,7 @@ impl Transaction { } /// Sign this transaction. - pub fn sign(&mut self, keypairs: &[&T], recent_blockhash: Hash) { + pub fn sign_unchecked(&mut self, keypairs: &[&T], recent_blockhash: Hash) { self.recent_blockhash = recent_blockhash; let message = self.message(); self.signatures = keypairs @@ -291,14 +291,14 @@ impl Transaction { /// Check keys and keypair lengths, then sign this transaction. /// Note: this presumes signatures.capacity() was set to the number of required signatures. - pub fn sign_checked(&mut self, keypairs: &[&T], recent_blockhash: Hash) { + pub fn sign(&mut self, keypairs: &[&T], recent_blockhash: Hash) { let signed_keys = &self.account_keys[0..self.signatures.capacity()]; for (i, keypair) in keypairs.iter().enumerate() { assert_eq!(keypair.pubkey(), signed_keys[i], "keypair-pubkey mismatch"); } assert_eq!(keypairs.len(), signed_keys.len(), "not enough keypairs"); - self.sign(keypairs, recent_blockhash); + self.sign_unchecked(keypairs, recent_blockhash); } /// Verify only the transaction signature. diff --git a/sdk/src/transaction_builder.rs b/sdk/src/transaction_builder.rs index 65b9870e61..95222d7c2e 100644 --- a/sdk/src/transaction_builder.rs +++ b/sdk/src/transaction_builder.rs @@ -108,7 +108,7 @@ impl TransactionBuilder { /// Return a signed transaction. pub fn sign(&self, keypairs: &[&T], recent_blockhash: Hash) -> Transaction { let mut tx = self.compile(); - tx.sign_checked(keypairs, recent_blockhash); + tx.sign(keypairs, recent_blockhash); tx } } diff --git a/wallet/src/wallet.rs b/wallet/src/wallet.rs index 2158e69ede..92ddb2d9b2 100644 --- a/wallet/src/wallet.rs +++ b/wallet/src/wallet.rs @@ -1726,17 +1726,15 @@ mod tests { let blockhash = Hash::default(); let mut tx = SystemTransaction::new_account(&key, &to, 50, blockhash, 0); - let signer = Keypair::new(); - - let result = send_and_confirm_transaction(&rpc_client, &mut tx, &signer); + let result = send_and_confirm_transaction(&rpc_client, &mut tx, &key); result.unwrap(); let rpc_client = RpcClient::new("account_in_use".to_string()); - let result = send_and_confirm_transaction(&rpc_client, &mut tx, &signer); + let result = send_and_confirm_transaction(&rpc_client, &mut tx, &key); assert!(result.is_err()); let rpc_client = RpcClient::new("fails".to_string()); - let result = send_and_confirm_transaction(&rpc_client, &mut tx, &signer); + let result = send_and_confirm_transaction(&rpc_client, &mut tx, &key); assert!(result.is_err()); }