Transaction signing payload is hashed first (#1624)

* Transaction signing payload is hashed first

* Fix tests

* Rebuild wasm

* Fix tests

* Only take payload hash when payload.len > 256 bytes.

* Fix tests
This commit is contained in:
Gav Wood
2019-01-31 18:39:20 +01:00
committed by GitHub
parent 4bcc8eda41
commit a58de5d0ff
6 changed files with 76 additions and 43 deletions
+5 -1
View File
@@ -72,7 +72,11 @@ mod tests {
let era = Era::mortal(256, 0);
let payload = (index.into(), xt.function, era, GENESIS_HASH);
let pair = Pair::from(Keyring::from_public(Public::from_raw(signed.clone().into())).unwrap());
let signature = pair.sign(&payload.encode()).into();
let signature = payload.using_encoded(|b| if b.len() > 256 {
pair.sign(&runtime_io::blake2_256(b))
} else {
pair.sign(b)
}).into();
UncheckedExtrinsic {
signature: Some((indices::address::Address::Id(signed), signature, payload.0, era)),
function: payload.1,