update Signature and ipc usage

This commit is contained in:
keorn
2016-08-26 13:16:56 +02:00
parent e7a9bf4df8
commit a4ba7262ad
7 changed files with 32 additions and 41 deletions

View File

@@ -42,7 +42,7 @@ pub trait ChainNotify : Send + Sync {
}
/// fires when chain broadcasts a message
fn broadcast(&self, _data: &[u8]) {
fn broadcast(&self, _data: Vec<u8>) {
}
}

View File

@@ -25,12 +25,12 @@ use time::precise_time_ns;
use util::{journaldb, rlp, Bytes, View, PerfTimer, Itertools, Mutex, RwLock};
use util::journaldb::JournalDB;
use util::rlp::{UntrustedRlp};
use util::ec::recover;
use util::{U256, H256, Address, H2048, Uint};
use util::{U256, H256, H520, Address, H2048, Uint};
use util::sha3::*;
use util::kvdb::*;
// other
use ethkey::recover;
use io::*;
use views::{BlockView, HeaderView, BodyView};
use error::{ImportError, ExecutionError, CallError, BlockError, ImportResult};
@@ -1031,12 +1031,11 @@ impl BlockChainClient for Client {
// TODO: Make it an actual queue, return errors.
fn queue_infinity_message(&self, message: Bytes) {
let full_rlp = UntrustedRlp::new(&message);
if let Ok(signature) = full_rlp.val_at(0) {
if let Ok(message) = full_rlp.val_at::<Vec<_>>(1) {
let message_rlp = UntrustedRlp::new(&message);
if let Ok(pub_key) = recover(&signature, &message.sha3()) {
if let Ok(new_message) = self.engine.handle_message(pub_key.sha3().into(), message_rlp) {
self.notify(|notify| notify.broadcast(&new_message));
if let Ok(signature) = full_rlp.val_at::<H520>(0) {
if let Ok(message) = full_rlp.at(1) {
if let Ok(pub_key) = recover(&signature.into(), &message.as_raw().sha3()) {
if let Ok(new_message) = self.engine.handle_message(pub_key.sha3().into(), message) {
self.notify(|notify| notify.broadcast(new_message.clone()));
}
}
}