tendermint/serializers/
apphash_base64.rs1use alloc::borrow::Cow;
4
5use serde::{de, Deserialize, Deserializer, Serializer};
6use subtle_encoding::base64;
7
8use crate::{prelude::*, AppHash};
9
10pub fn deserialize<'de, D>(deserializer: D) -> Result<AppHash, D::Error>
12where
13 D: Deserializer<'de>,
14{
15 let decoded = match Option::<Cow<'_, str>>::deserialize(deserializer)? {
16 Some(s) => base64::decode(s.as_bytes()).map_err(de::Error::custom)?,
17 None => vec![],
18 };
19 decoded.try_into().map_err(de::Error::custom)
20}
21
22pub fn serialize<S>(value: &AppHash, serializer: S) -> Result<S::Ok, S::Error>
24where
25 S: Serializer,
26{
27 let base64_bytes = base64::encode(value.as_bytes());
28 let base64_string = String::from_utf8(base64_bytes).unwrap();
29 serializer.serialize_some(&base64_string)
31}