Decrypting for external accounts. (#5581)
This commit is contained in:
@@ -201,8 +201,10 @@ impl<D: Dispatcher + 'static> Signer for SignerClient<D> {
|
||||
Err(err) => Err(errors::invalid_params("Invalid signature received.", err)),
|
||||
}
|
||||
},
|
||||
// TODO [ToDr]: Decrypt - pass through?
|
||||
_ => Err(errors::unimplemented(Some("Non-transaction requests does not support RAW signing yet.".into()))),
|
||||
ConfirmationPayload::Decrypt(_address, _data) => {
|
||||
// TODO [ToDr]: Decrypt can we verify if the answer is correct?
|
||||
Ok(ConfirmationResponse::Decrypt(bytes))
|
||||
},
|
||||
};
|
||||
if let Ok(ref response) = result {
|
||||
signer.request_confirmed(id, Ok(response.clone()));
|
||||
|
||||
@@ -28,7 +28,7 @@ use jsonrpc_core::IoHandler;
|
||||
use v1::{SignerClient, Signer, Origin};
|
||||
use v1::metadata::Metadata;
|
||||
use v1::tests::helpers::TestMinerService;
|
||||
use v1::types::H520;
|
||||
use v1::types::{Bytes as RpcBytes, H520};
|
||||
use v1::helpers::{SigningQueue, SignerService, FilledTransactionRequest, ConfirmationPayload};
|
||||
use v1::helpers::dispatch::{FullDispatcher, eth_data_hash};
|
||||
|
||||
@@ -479,7 +479,6 @@ fn should_confirm_sign_transaction_with_rlp() {
|
||||
assert_eq!(tester.miner.imported_transactions.lock().len(), 0);
|
||||
}
|
||||
|
||||
|
||||
#[test]
|
||||
fn should_confirm_data_sign_with_signature() {
|
||||
// given
|
||||
@@ -510,6 +509,34 @@ fn should_confirm_data_sign_with_signature() {
|
||||
assert_eq!(tester.miner.imported_transactions.lock().len(), 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn should_confirm_decrypt_with_phrase() {
|
||||
// given
|
||||
let tester = signer_tester();
|
||||
let address = tester.accounts.new_account("test").unwrap();
|
||||
tester.signer.add_request(ConfirmationPayload::Decrypt(
|
||||
address,
|
||||
vec![1, 2, 3, 4].into(),
|
||||
), Origin::Unknown).unwrap();
|
||||
assert_eq!(tester.signer.requests().len(), 1);
|
||||
|
||||
let decrypted = serde_json::to_string(&RpcBytes::new(b"phrase".to_vec())).unwrap();
|
||||
|
||||
// when
|
||||
let request = r#"{
|
||||
"jsonrpc":"2.0",
|
||||
"method":"signer_confirmRequestRaw",
|
||||
"params":["0x1", "#.to_owned() + &decrypted + r#"],
|
||||
"id":1
|
||||
}"#;
|
||||
let response = r#"{"jsonrpc":"2.0","result":"#.to_owned() + &decrypted + r#","id":1}"#;
|
||||
|
||||
// then
|
||||
assert_eq!(tester.io.handle_request_sync(&request), Some(response.to_owned()));
|
||||
assert_eq!(tester.signer.requests().len(), 0);
|
||||
assert_eq!(tester.miner.imported_transactions.lock().len(), 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn should_generate_new_token() {
|
||||
// given
|
||||
|
||||
Reference in New Issue
Block a user