From d2c23e6b4e7f3290af37f1fe31e4e67b77752144 Mon Sep 17 00:00:00 2001 From: Trevor Gross Date: Wed, 15 Nov 2023 02:34:22 -0500 Subject: [PATCH] Add from_json_bytes method to KeyMeta --- src/jose.rs | 6 ++++++ tests/backend.rs | 3 +++ 2 files changed, 9 insertions(+) diff --git a/src/jose.rs b/src/jose.rs index 7037d42..4feea22 100644 --- a/src/jose.rs +++ b/src/jose.rs @@ -496,6 +496,12 @@ impl KeyMeta { serde_json::from_str(val).map_err(Into::into) } + /// Deserialize this data from a JSON blob (this does the same as [`from_json`] but does not + /// require a UTF-8 `&str`). + pub fn from_json_bytes(val: &[u8]) -> Result { + serde_json::from_slice(val).map_err(Into::into) + } + /// Create a [`TangClient`] from the URL used to generate this key pub fn client(&self, timeout: Option) -> TangClient { TangClient::new(&self.clevis.tang.url, timeout) diff --git a/tests/backend.rs b/tests/backend.rs index c4da72b..4659d3c 100644 --- a/tests/backend.rs +++ b/tests/backend.rs @@ -35,4 +35,7 @@ fn test_roundtrip() { let newkey = client.recover_secure_key::<10>(&new_meta).unwrap(); assert_eq!(encryption_key.as_bytes(), newkey.as_bytes()); + + // sanity check the bytes implementation + let new_meta = KeyMeta::from_json_bytes(&meta_str.as_bytes()).unwrap(); }