Fix eth_sign/parity_postSign (#4432)
* Fix dispatch for signing. * Remove console log * Fix signing & tests.
This commit is contained in:
parent
b4c24d5ab3
commit
4553f517ce
@ -57,8 +57,6 @@ export default class SignerMiddleware {
|
|||||||
const handlePromise = (promise) => {
|
const handlePromise = (promise) => {
|
||||||
promise
|
promise
|
||||||
.then((txHash) => {
|
.then((txHash) => {
|
||||||
console.log('confirmRequest', id, txHash);
|
|
||||||
|
|
||||||
if (!txHash) {
|
if (!txHash) {
|
||||||
store.dispatch(actions.errorConfirmRequest({ id, err: 'Unable to confirm.' }));
|
store.dispatch(actions.errorConfirmRequest({ id, err: 'Unable to confirm.' }));
|
||||||
return;
|
return;
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
use std::ops::Deref;
|
use std::ops::Deref;
|
||||||
use rlp;
|
use rlp;
|
||||||
use util::{Address, H256, U256, Uint, Bytes};
|
use util::{Address, H520, H256, U256, Uint, Bytes};
|
||||||
use util::bytes::ToPretty;
|
use util::bytes::ToPretty;
|
||||||
use util::sha3::Hashable;
|
use util::sha3::Hashable;
|
||||||
|
|
||||||
@ -112,6 +112,14 @@ pub fn execute<C, M>(client: &C, miner: &M, accounts: &AccountProvider, payload:
|
|||||||
ConfirmationPayload::Signature(address, data) => {
|
ConfirmationPayload::Signature(address, data) => {
|
||||||
signature(accounts, address, data.sha3(), pass)
|
signature(accounts, address, data.sha3(), pass)
|
||||||
.map(|result| result
|
.map(|result| result
|
||||||
|
.map(|rsv| {
|
||||||
|
let mut vrs = [0u8; 65];
|
||||||
|
let rsv = rsv.as_ref();
|
||||||
|
vrs[0] = rsv[64] + 27;
|
||||||
|
vrs[1..33].copy_from_slice(&rsv[0..32]);
|
||||||
|
vrs[33..65].copy_from_slice(&rsv[32..64]);
|
||||||
|
H520(vrs)
|
||||||
|
})
|
||||||
.map(RpcH520::from)
|
.map(RpcH520::from)
|
||||||
.map(ConfirmationResponse::Signature)
|
.map(ConfirmationResponse::Signature)
|
||||||
)
|
)
|
||||||
|
@ -22,7 +22,8 @@ use rustc_serialize::hex::{FromHex, ToHex};
|
|||||||
use time::get_time;
|
use time::get_time;
|
||||||
use rlp;
|
use rlp;
|
||||||
|
|
||||||
use util::{Uint, U256, Address, H256, FixedHash, Mutex, Hashable};
|
use util::{Uint, U256, Address, H256, FixedHash, Mutex};
|
||||||
|
use ethkey::Secret;
|
||||||
use ethcore::account_provider::AccountProvider;
|
use ethcore::account_provider::AccountProvider;
|
||||||
use ethcore::client::{TestBlockChainClient, EachBlockWith, Executed, TransactionId};
|
use ethcore::client::{TestBlockChainClient, EachBlockWith, Executed, TransactionId};
|
||||||
use ethcore::log_entry::{LocalizedLogEntry, LogEntry};
|
use ethcore::log_entry::{LocalizedLogEntry, LogEntry};
|
||||||
@ -296,10 +297,9 @@ fn rpc_eth_submit_hashrate() {
|
|||||||
fn rpc_eth_sign() {
|
fn rpc_eth_sign() {
|
||||||
let tester = EthTester::default();
|
let tester = EthTester::default();
|
||||||
|
|
||||||
let account = tester.accounts_provider.new_account("abcd").unwrap();
|
let account = tester.accounts_provider.insert_account(Secret::from_slice(&[69u8; 32]).unwrap(), "abcd").unwrap();
|
||||||
tester.accounts_provider.unlock_account_permanently(account, "abcd".into()).unwrap();
|
tester.accounts_provider.unlock_account_permanently(account, "abcd".into()).unwrap();
|
||||||
let message = "0cc175b9c0f1b6a831c399e26977266192eb5ffee6ae2fec3ad71c777531578f".from_hex().unwrap();
|
let _message = "0cc175b9c0f1b6a831c399e26977266192eb5ffee6ae2fec3ad71c777531578f".from_hex().unwrap();
|
||||||
let signed = tester.accounts_provider.sign(account, None, message.sha3()).unwrap();
|
|
||||||
|
|
||||||
let req = r#"{
|
let req = r#"{
|
||||||
"jsonrpc": "2.0",
|
"jsonrpc": "2.0",
|
||||||
@ -310,9 +310,9 @@ fn rpc_eth_sign() {
|
|||||||
],
|
],
|
||||||
"id": 1
|
"id": 1
|
||||||
}"#;
|
}"#;
|
||||||
let res = r#"{"jsonrpc":"2.0","result":""#.to_owned() + &format!("0x{}", signed) + r#"","id":1}"#;
|
let res = r#"{"jsonrpc":"2.0","result":"0x1b5100b2be0aafd86271c8f49891262920bfbfeaeccb2ef1d0b2053aefc3ddb399483eb3c902ecf4add3156461a61f59e924a65eb5e6cdbab0a158d45db5f87cdf","id":1}"#;
|
||||||
|
|
||||||
assert_eq!(tester.io.handle_request_sync(&req), Some(res));
|
assert_eq!(tester.io.handle_request_sync(&req), Some(res.into()));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -27,7 +27,8 @@ use v1::types::ConfirmationResponse;
|
|||||||
use v1::tests::helpers::TestMinerService;
|
use v1::tests::helpers::TestMinerService;
|
||||||
use v1::tests::mocked::parity;
|
use v1::tests::mocked::parity;
|
||||||
|
|
||||||
use util::{Address, FixedHash, Uint, U256, ToPretty, Hashable};
|
use util::{Address, FixedHash, Uint, U256, ToPretty};
|
||||||
|
use ethkey::Secret;
|
||||||
use ethcore::account_provider::AccountProvider;
|
use ethcore::account_provider::AccountProvider;
|
||||||
use ethcore::client::TestBlockChainClient;
|
use ethcore::client::TestBlockChainClient;
|
||||||
use ethcore::transaction::{Transaction, Action, SignedTransaction};
|
use ethcore::transaction::{Transaction, Action, SignedTransaction};
|
||||||
@ -186,11 +187,9 @@ fn should_sign_if_account_is_unlocked() {
|
|||||||
// given
|
// given
|
||||||
let tester = eth_signing();
|
let tester = eth_signing();
|
||||||
let data = vec![5u8];
|
let data = vec![5u8];
|
||||||
let acc = tester.accounts.new_account("test").unwrap();
|
let acc = tester.accounts.insert_account(Secret::from_slice(&[69u8; 32]).unwrap(), "test").unwrap();
|
||||||
tester.accounts.unlock_account_permanently(acc, "test".into()).unwrap();
|
tester.accounts.unlock_account_permanently(acc, "test".into()).unwrap();
|
||||||
|
|
||||||
let signature = tester.accounts.sign(acc, None, data.sha3()).unwrap();
|
|
||||||
|
|
||||||
// when
|
// when
|
||||||
let request = r#"{
|
let request = r#"{
|
||||||
"jsonrpc": "2.0",
|
"jsonrpc": "2.0",
|
||||||
@ -201,7 +200,7 @@ fn should_sign_if_account_is_unlocked() {
|
|||||||
],
|
],
|
||||||
"id": 1
|
"id": 1
|
||||||
}"#;
|
}"#;
|
||||||
let response = r#"{"jsonrpc":"2.0","result":""#.to_owned() + format!("0x{}", signature).as_ref() + r#"","id":1}"#;
|
let response = r#"{"jsonrpc":"2.0","result":"0x1bb3062482b0687e9c97c7609ea60c1649959dbb334f71b3d5cacd496e0848ba8137bc765756627722389c6c39bc77700ccdc8916916a0eb03bcf5191d4f74dc65","id":1}"#;
|
||||||
assert_eq!(tester.io.handle_request_sync(&request), Some(response.to_owned()));
|
assert_eq!(tester.io.handle_request_sync(&request), Some(response.to_owned()));
|
||||||
assert_eq!(tester.signer.requests().len(), 0);
|
assert_eq!(tester.signer.requests().len(), 0);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user