From 450833713b5ed6e9d434f1eafc374648aa39b0a2 Mon Sep 17 00:00:00 2001 From: Xiliang Chen Date: Wed, 2 Nov 2022 11:41:03 +1300 Subject: [PATCH] able to disable signature verification (#36) --- executor/src/task.rs | 27 +++++++++++++++++++++++++++ vendor/smoldot | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/executor/src/task.rs b/executor/src/task.rs index 480b6479..54abb1bb 100644 --- a/executor/src/task.rs +++ b/executor/src/task.rs @@ -41,6 +41,11 @@ pub enum TaskResponse { Error(String), } + +fn is_magic_signature(signature: &[u8]) -> bool { + signature.starts_with(&[0xde, 0xad, 0xbe, 0xef]) && signature[4..].iter().all(|&b| b == 0xcd) +} + impl Task { pub async fn run(&self, task_id: u32, client: &Client) -> Result { let resp = match self.kind { @@ -122,6 +127,14 @@ impl Task { .await?; req.inject_key(next_key.map(|k| k.0)) } + RuntimeHostVm::SignatureVerification(req) => { + let bypass = is_magic_signature(req.signature().as_ref()); + if bypass { + req.resume_success() + } else { + req.verify_and_resume() + } + } } }; @@ -178,3 +191,17 @@ impl Task { ))) } } + +#[test] +fn is_magic_signature_works() { + assert!(is_magic_signature(&[0xde, 0xad, 0xbe, 0xef, 0xcd, 0xcd])); + assert!(is_magic_signature(&[ + 0xde, 0xad, 0xbe, 0xef, 0xcd, 0xcd, 0xcd, 0xcd + ])); + assert!(!is_magic_signature(&[ + 0xde, 0xad, 0xbe, 0xef, 0xcd, 0xcd, 0xcd, 0x00 + ])); + assert!(!is_magic_signature(&[ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + ])); +} diff --git a/vendor/smoldot b/vendor/smoldot index 6df249ea..784982d4 160000 --- a/vendor/smoldot +++ b/vendor/smoldot @@ -1 +1 @@ -Subproject commit 6df249ea1835b6118df364c5fc7f39991acf778f +Subproject commit 784982d4b13a670627e1fe33571fe9f202f3e74e