diff --git a/Cargo.toml b/Cargo.toml index 01c862f..2e67df4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "script-sign" -version = "0.1.0" +version = "0.1.1" edition = "2021" authors = ["Hatter Jiang "] description = "Script Sign" diff --git a/src/keymap.rs b/src/keymap.rs index f5a3139..5571bed 100644 --- a/src/keymap.rs +++ b/src/keymap.rs @@ -1,25 +1,35 @@ -use rust_util::XResult; use serde::{Deserialize, Serialize}; use std::collections::HashMap; +#[derive(Debug, Serialize, Deserialize)] +pub struct KeyMeta { + pub public_key_point_hex: String, +} + #[derive(Debug, Serialize, Deserialize)] pub struct KeyMap { - key_map: HashMap, + pub key_map: HashMap, } impl KeyMap { - pub fn system() -> XResult { + pub fn system() -> Self { let signing_keys = r##" { - "yk-r1": "04dd3eebd906c9cf00b08ec29f7ed61804d1cc1d1352d9257b628191e08fc3717c4fae3298cd5c4829cec8bf3a946e7db60b7857e1287f6a0bae6b3f2342f007d0" + "yk-r1": { + "public_key_point_hex": "04dd3eebd906c9cf00b08ec29f7ed61804d1cc1d1352d9257b628191e08fc3717c4fae3298cd5c4829cec8bf3a946e7db60b7857e1287f6a0bae6b3f2342f007d0" + } } "##; // unwrap should not happen - let key_map: HashMap = serde_json::from_str(signing_keys).unwrap(); - Ok(KeyMap { key_map }) + let key_map: HashMap = serde_json::from_str(signing_keys).unwrap(); + KeyMap { key_map } } - pub fn find(&self, key_id: &str) -> Option<&String> { + pub fn from(key_map: HashMap) -> Self { + Self { key_map } + } + + pub fn find(&self, key_id: &str) -> Option<&KeyMeta> { self.key_map.get(key_id) } } diff --git a/src/lib.rs b/src/lib.rs index 1ea323d..2004d84 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -22,7 +22,7 @@ pub struct Script { impl Script { pub fn verify_script_file_with_system_key_map(script_file: &str) -> XResult { - Self::verify_script_file(script_file, &KeyMap::system()?) + Self::verify_script_file(script_file, &KeyMap::system()) } pub fn verify_script_file(script_file: &str, key_map: &KeyMap) -> XResult { @@ -42,28 +42,59 @@ impl Script { pub fn parse(script: &str) -> XResult