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 {}