From 55343df9c1f54113b5f2ed04cecfadf0670887c7 Mon Sep 17 00:00:00 2001 From: pennae Date: Sun, 17 Jul 2022 11:43:52 +0200 Subject: add dedicated types for all the tokens using SecretBytes for all of them isn't that great. --- src/serde.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/serde.rs (limited to 'src/serde.rs') diff --git a/src/serde.rs b/src/serde.rs new file mode 100644 index 0000000..76676d7 --- /dev/null +++ b/src/serde.rs @@ -0,0 +1,21 @@ +pub mod as_hex { + use serde::{de, Deserialize, Deserializer, Serializer}; + + pub fn serialize( + b: &[u8; N], + ser: S, + ) -> Result { + ser.serialize_str(&hex::encode(b)) + } + + pub fn deserialize<'de, const N: usize, D: Deserializer<'de>>( + des: D, + ) -> Result<[u8; N], D::Error> { + let raw = ::deserialize(des)?; + let mut result = [0; N]; + hex::decode_to_slice(&raw, &mut result).map_err(|_| { + de::Error::invalid_value(de::Unexpected::Other("non-hex string"), &"a hex string") + })?; + Ok(result) + } +} -- cgit v1.2.3