From 13e8b827ecb3a810db5afcce76184a0232b0fe59 Mon Sep 17 00:00:00 2001 From: Sosthene Date: Sat, 30 Nov 2024 20:05:47 +0100 Subject: [PATCH] Add is_hexstring to Pcd trait --- src/pcd.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/pcd.rs b/src/pcd.rs index 748f7e7..9300157 100644 --- a/src/pcd.rs +++ b/src/pcd.rs @@ -276,6 +276,27 @@ pub trait Pcd<'a>: Serialize + Deserialize<'a> { Err(Error::msg("No \"roles\" key in this pcd")) } } + + fn is_hex_string(&self) -> bool { + let value = match serde_json::to_value(self) { + Ok(v) => v, + Err(_) => return false + }; + + match value { + Value::String(s) => { + let vec = Vec::from_hex(&s); + if vec.is_err() { + return false; + } else if vec.unwrap().len() != 32 { + return false; + } else { + return true; + } + } + _ => false + } + } } impl Pcd<'_> for Value {}