diff --git a/substrate/core/sr-primitives/src/generic/unchecked_extrinsic.rs b/substrate/core/sr-primitives/src/generic/unchecked_extrinsic.rs index af3749c3f9..25661031e6 100644 --- a/substrate/core/sr-primitives/src/generic/unchecked_extrinsic.rs +++ b/substrate/core/sr-primitives/src/generic/unchecked_extrinsic.rs @@ -94,7 +94,7 @@ where let payload = (index, self.function); let signed = context.lookup(signed)?; if !crate::verify_encoded_lazy(&signature, &payload, &signed) { - return Err("bad signature in extrinsic") + return Err(crate::BAD_SIGNATURE) } CheckedExtrinsic { signed: Some((signed, payload.0)), diff --git a/substrate/core/sr-primitives/src/generic/unchecked_mortal_compact_extrinsic.rs b/substrate/core/sr-primitives/src/generic/unchecked_mortal_compact_extrinsic.rs index 4e5d5e5309..3ffe7fae40 100644 --- a/substrate/core/sr-primitives/src/generic/unchecked_mortal_compact_extrinsic.rs +++ b/substrate/core/sr-primitives/src/generic/unchecked_mortal_compact_extrinsic.rs @@ -95,7 +95,7 @@ where signature.verify(payload, &signed) } }) { - return Err("bad signature in extrinsic") + return Err(crate::BAD_SIGNATURE) } CheckedExtrinsic { signed: Some((signed, (raw_payload.0).0)), @@ -255,7 +255,7 @@ mod tests { fn badly_signed_check_should_fail() { let ux = Ex::new_signed(0, vec![0u8;0], DUMMY_ACCOUNTID, TestSig(DUMMY_ACCOUNTID, vec![0u8]), Era::immortal()); assert!(ux.is_signed().unwrap_or(false)); - assert_eq!(>::check(ux, &TestContext), Err("bad signature in extrinsic")); + assert_eq!(>::check(ux, &TestContext), Err(crate::BAD_SIGNATURE)); } #[test] @@ -283,14 +283,14 @@ mod tests { fn too_late_mortal_signed_check_should_fail() { let ux = Ex::new_signed(0, vec![0u8;0], DUMMY_ACCOUNTID, TestSig(DUMMY_ACCOUNTID, (DUMMY_ACCOUNTID, vec![0u8;0], Era::mortal(32, 10), 10u64).encode()), Era::mortal(32, 10)); assert!(ux.is_signed().unwrap_or(false)); - assert_eq!(>::check(ux, &TestContext), Err("bad signature in extrinsic")); + assert_eq!(>::check(ux, &TestContext), Err(crate::BAD_SIGNATURE)); } #[test] fn too_early_mortal_signed_check_should_fail() { let ux = Ex::new_signed(0, vec![0u8;0], DUMMY_ACCOUNTID, TestSig(DUMMY_ACCOUNTID, (DUMMY_ACCOUNTID, vec![0u8;0], Era::mortal(32, 43), 43u64).encode()), Era::mortal(32, 43)); assert!(ux.is_signed().unwrap_or(false)); - assert_eq!(>::check(ux, &TestContext), Err("bad signature in extrinsic")); + assert_eq!(>::check(ux, &TestContext), Err(crate::BAD_SIGNATURE)); } #[test] diff --git a/substrate/core/sr-primitives/src/generic/unchecked_mortal_extrinsic.rs b/substrate/core/sr-primitives/src/generic/unchecked_mortal_extrinsic.rs index 8ae6cc88b9..06c9003e33 100644 --- a/substrate/core/sr-primitives/src/generic/unchecked_mortal_extrinsic.rs +++ b/substrate/core/sr-primitives/src/generic/unchecked_mortal_extrinsic.rs @@ -95,7 +95,7 @@ where signature.verify(payload, &signed) } }) { - return Err("bad signature in extrinsic") + return Err(crate::BAD_SIGNATURE) } CheckedExtrinsic { signed: Some((signed, raw_payload.0)), @@ -254,7 +254,7 @@ mod tests { fn badly_signed_check_should_fail() { let ux = Ex::new_signed(0, vec![0u8;0], DUMMY_ACCOUNTID, TestSig(DUMMY_ACCOUNTID, vec![0u8]), Era::immortal()); assert!(ux.is_signed().unwrap_or(false)); - assert_eq!(>::check(ux, &TestContext), Err("bad signature in extrinsic")); + assert_eq!(>::check(ux, &TestContext), Err(crate::BAD_SIGNATURE)); } #[test] @@ -282,14 +282,14 @@ mod tests { fn too_late_mortal_signed_check_should_fail() { let ux = Ex::new_signed(0, vec![0u8;0], DUMMY_ACCOUNTID, TestSig(DUMMY_ACCOUNTID, (DUMMY_ACCOUNTID, vec![0u8;0], Era::mortal(32, 10), 10u64).encode()), Era::mortal(32, 10)); assert!(ux.is_signed().unwrap_or(false)); - assert_eq!(>::check(ux, &TestContext), Err("bad signature in extrinsic")); + assert_eq!(>::check(ux, &TestContext), Err(crate::BAD_SIGNATURE)); } #[test] fn too_early_mortal_signed_check_should_fail() { let ux = Ex::new_signed(0, vec![0u8;0], DUMMY_ACCOUNTID, TestSig(DUMMY_ACCOUNTID, (DUMMY_ACCOUNTID, vec![0u8;0], Era::mortal(32, 43), 43u64).encode()), Era::mortal(32, 43)); assert!(ux.is_signed().unwrap_or(false)); - assert_eq!(>::check(ux, &TestContext), Err("bad signature in extrinsic")); + assert_eq!(>::check(ux, &TestContext), Err(crate::BAD_SIGNATURE)); } #[test] diff --git a/substrate/core/sr-primitives/src/lib.rs b/substrate/core/sr-primitives/src/lib.rs index d63f743fa2..93162a6ea8 100644 --- a/substrate/core/sr-primitives/src/lib.rs +++ b/substrate/core/sr-primitives/src/lib.rs @@ -43,6 +43,9 @@ pub mod traits; pub mod generic; pub mod transaction_validity; +/// A message indicating an invalid signature in extrinsic. +pub const BAD_SIGNATURE: &str = "bad signature in extrinsic"; + /// Full block error message. /// /// This allows modules to indicate that given transaction is potentially valid diff --git a/substrate/core/test-runtime/src/lib.rs b/substrate/core/test-runtime/src/lib.rs index 024532fbfb..f833c8318f 100644 --- a/substrate/core/test-runtime/src/lib.rs +++ b/substrate/core/test-runtime/src/lib.rs @@ -104,10 +104,10 @@ impl BlindCheckable for Extrinsic { match self { Extrinsic::AuthoritiesChange(new_auth) => Ok(Extrinsic::AuthoritiesChange(new_auth)), Extrinsic::Transfer(transfer, signature) => { - if ::runtime_primitives::verify_encoded_lazy(&signature, &transfer, &transfer.from) { + if runtime_primitives::verify_encoded_lazy(&signature, &transfer, &transfer.from) { Ok(Extrinsic::Transfer(transfer, signature)) } else { - Err("bad signature") + Err(runtime_primitives::BAD_SIGNATURE) } }, } diff --git a/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index 5a4170542a..8e2be26970 100644 Binary files a/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm and b/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm differ diff --git a/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm b/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm index 3892ca679a..0e77e95a5a 100644 Binary files a/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm and b/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm differ diff --git a/substrate/srml/executive/src/lib.rs b/substrate/srml/executive/src/lib.rs index 725d5149a6..70318a65f4 100644 --- a/substrate/srml/executive/src/lib.rs +++ b/substrate/srml/executive/src/lib.rs @@ -254,7 +254,7 @@ impl< Err("invalid account index") => return TransactionValidity::Unknown(INVALID_INDEX), // Technically a bad signature could also imply an out-of-date account index, but // that's more of an edge case. - Err("bad signature") => return TransactionValidity::Invalid(ApplyError::BadSignature as i8), + Err(primitives::BAD_SIGNATURE) => return TransactionValidity::Invalid(ApplyError::BadSignature as i8), Err(_) => return TransactionValidity::Invalid(UNKNOWN_ERROR), };