Fixing CLI signer
This commit is contained in:
		
							parent
							
								
									05dcf951d1
								
							
						
					
					
						commit
						5affefc763
					
				| @ -18,6 +18,8 @@ | |||||||
| 
 | 
 | ||||||
| use std::fmt; | use std::fmt; | ||||||
| use serde::{Serialize, Serializer}; | use serde::{Serialize, Serializer}; | ||||||
|  | use util::log::Colour; | ||||||
|  | 
 | ||||||
| use v1::types::{U256, TransactionRequest, RichRawTransaction, H160, H256, H520, Bytes}; | use v1::types::{U256, TransactionRequest, RichRawTransaction, H160, H256, H520, Bytes}; | ||||||
| use v1::helpers; | use v1::helpers; | ||||||
| 
 | 
 | ||||||
| @ -48,11 +50,10 @@ impl fmt::Display for ConfirmationRequest { | |||||||
| impl fmt::Display for ConfirmationPayload { | impl fmt::Display for ConfirmationPayload { | ||||||
|     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { |     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { | ||||||
| 		match *self { | 		match *self { | ||||||
| 			ConfirmationPayload::SendTransaction(ref transaction) | 			ConfirmationPayload::SendTransaction(ref transaction) => write!(f, "{}", transaction), | ||||||
| 				=> write!(f, "{}", transaction), | 			ConfirmationPayload::SignTransaction(ref transaction) => write!(f, "(Sign only) {}", transaction), | ||||||
| 			ConfirmationPayload::SignTransaction(_) => write!(f, "TODO: data"), | 			ConfirmationPayload::Signature(ref sign) => write!(f, "{}", sign), | ||||||
| 			ConfirmationPayload::Decrypt(_) => write!(f, "TODO: decrypt"), | 			ConfirmationPayload::Decrypt(ref decrypt) => write!(f, "{}", decrypt), | ||||||
| 			ConfirmationPayload::Signature(_) => write!(f, "TODO: signature"), |  | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| @ -75,6 +76,17 @@ impl From<(H160, H256)> for SignRequest { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | impl fmt::Display for SignRequest { | ||||||
|  |     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { | ||||||
|  | 		write!( | ||||||
|  | 			f, | ||||||
|  | 			"sign 0x{:?} with {}", | ||||||
|  | 			self.hash, | ||||||
|  | 			Colour::White.bold().paint(format!("0x{:?}", self.address)), | ||||||
|  | 		) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
| /// Decrypt request
 | /// Decrypt request
 | ||||||
| #[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)] | #[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)] | ||||||
| pub struct DecryptRequest { | pub struct DecryptRequest { | ||||||
| @ -93,6 +105,16 @@ impl From<(H160, Bytes)> for DecryptRequest { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | impl fmt::Display for DecryptRequest { | ||||||
|  |     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { | ||||||
|  | 		write!( | ||||||
|  | 			f, | ||||||
|  | 			"decrypt data with {}", | ||||||
|  | 			Colour::White.bold().paint(format!("0x{:?}", self.address)), | ||||||
|  | 		) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
| /// Confirmation response for particular payload
 | /// Confirmation response for particular payload
 | ||||||
| #[derive(Debug, Clone, PartialEq)] | #[derive(Debug, Clone, PartialEq)] | ||||||
| pub enum ConfirmationResponse { | pub enum ConfirmationResponse { | ||||||
|  | |||||||
| @ -18,6 +18,7 @@ | |||||||
| 
 | 
 | ||||||
| use v1::types::{Bytes, H160, U256}; | use v1::types::{Bytes, H160, U256}; | ||||||
| use v1::helpers; | use v1::helpers; | ||||||
|  | use util::log::Colour; | ||||||
| 
 | 
 | ||||||
| use std::fmt; | use std::fmt; | ||||||
| 
 | 
 | ||||||
| @ -62,13 +63,19 @@ impl fmt::Display for TransactionRequest { | |||||||
|     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { |     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { | ||||||
| 		let eth = self.value.unwrap_or(U256::from(0)); | 		let eth = self.value.unwrap_or(U256::from(0)); | ||||||
| 		match self.to { | 		match self.to { | ||||||
| 			Some(ref to) => write!(f, "{} Ether from {:?} to {:?}", | 			Some(ref to) => write!( | ||||||
| 								   format_ether(eth), | 				f, | ||||||
| 								   self.from, | 				"{} ETH from {} to 0x{:?}", | ||||||
| 								   to), | 				Colour::White.bold().paint(format_ether(eth)), | ||||||
| 			None => write!(f, "{} Ether from {:?}", | 				Colour::White.bold().paint(format!("0x{:?}", self.from)), | ||||||
| 						   format_ether(eth), | 				to | ||||||
| 						   self.from), | 			), | ||||||
|  | 			None => write!( | ||||||
|  | 				f, | ||||||
|  | 				"{} ETH from {} for contract creation", | ||||||
|  | 				Colour::White.bold().paint(format_ether(eth)), | ||||||
|  | 				Colour::White.bold().paint(format!("0x{:?}", self.from)), | ||||||
|  | 			), | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | |||||||
| @ -22,13 +22,15 @@ use ws::{ | |||||||
| 	Error as WsError, | 	Error as WsError, | ||||||
| 	ErrorKind as WsErrorKind, | 	ErrorKind as WsErrorKind, | ||||||
| 	Message, | 	Message, | ||||||
| 	Result as WsResult | 	Result as WsResult, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| use serde::Deserialize; | use serde::Deserialize; | ||||||
| use serde_json::{self as json, | use serde_json::{ | ||||||
|  | 	self as json, | ||||||
| 	Value as JsonValue, | 	Value as JsonValue, | ||||||
| 				 Error as JsonError}; | 	Error as JsonError, | ||||||
|  | }; | ||||||
| 
 | 
 | ||||||
| use futures::{BoxFuture, Canceled, Complete, Future, oneshot, done}; | use futures::{BoxFuture, Canceled, Complete, Future, oneshot, done}; | ||||||
| 
 | 
 | ||||||
| @ -170,14 +172,18 @@ impl Pending { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn get_authcode(path: &PathBuf) -> Result<String, RpcError> { | fn get_authcode(path: &PathBuf) -> Result<String, RpcError> { | ||||||
| 	match File::open(path) { | 	if let Ok(fd) = File::open(path) { | ||||||
| 		Ok(fd) => match BufReader::new(fd).lines().next() { | 		if let Some(Ok(line)) = BufReader::new(fd).lines().next() { | ||||||
| 			Some(Ok(code)) => Ok(code), | 			let mut parts = line.split(';'); | ||||||
| 			_ => Err(RpcError::NoAuthCode), | 			let token = parts.next(); | ||||||
| 		}, | 
 | ||||||
| 		Err(_) => Err(RpcError::NoAuthCode) | 			if let Some(code) = token { | ||||||
|  | 				return Ok(code.into()); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  | 	} | ||||||
|  | 	Err(RpcError::NoAuthCode) | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| /// The handle to the connection
 | /// The handle to the connection
 | ||||||
| pub struct Rpc { | pub struct Rpc { | ||||||
|  | |||||||
| @ -17,7 +17,7 @@ impl SignerRpc { | |||||||
| 	pub fn requests_to_confirm(&mut self) -> | 	pub fn requests_to_confirm(&mut self) -> | ||||||
| 		BoxFuture<Result<Vec<ConfirmationRequest>, RpcError>, Canceled> | 		BoxFuture<Result<Vec<ConfirmationRequest>, RpcError>, Canceled> | ||||||
| 	{ | 	{ | ||||||
| 		self.rpc.request("personal_requestsToConfirm", vec![]) | 		self.rpc.request("signer_requestsToConfirm", vec![]) | ||||||
| 	} | 	} | ||||||
| 	pub fn confirm_request( | 	pub fn confirm_request( | ||||||
| 		&mut self, | 		&mut self, | ||||||
| @ -27,7 +27,7 @@ impl SignerRpc { | |||||||
| 		pwd: &str | 		pwd: &str | ||||||
| 	) -> BoxFuture<Result<U256, RpcError>, Canceled> | 	) -> BoxFuture<Result<U256, RpcError>, Canceled> | ||||||
| 	{ | 	{ | ||||||
| 		self.rpc.request("personal_confirmRequest", vec![ | 		self.rpc.request("signer_confirmRequest", vec![ | ||||||
| 			to_value(&format!("{:#x}", id)), | 			to_value(&format!("{:#x}", id)), | ||||||
| 			to_value(&TransactionModification { gas_price: new_gas_price, gas: new_gas }), | 			to_value(&TransactionModification { gas_price: new_gas_price, gas: new_gas }), | ||||||
| 			to_value(&pwd), | 			to_value(&pwd), | ||||||
| @ -36,7 +36,7 @@ impl SignerRpc { | |||||||
| 	pub fn reject_request(&mut self, id: U256) -> | 	pub fn reject_request(&mut self, id: U256) -> | ||||||
| 		BoxFuture<Result<bool, RpcError>, Canceled> | 		BoxFuture<Result<bool, RpcError>, Canceled> | ||||||
| 	{ | 	{ | ||||||
| 		self.rpc.request("personal_rejectRequest", vec![ | 		self.rpc.request("signer_rejectRequest", vec![ | ||||||
| 			JsonValue::String(format!("{:#x}", id)) | 			JsonValue::String(format!("{:#x}", id)) | ||||||
| 		]) | 		]) | ||||||
| 	} | 	} | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user