pub(super) mod base85 {
use serde::Deserialize;
pub fn serialize<S>(bytes: &[u8], serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
serializer.serialize_str(&base85::encode(bytes))
}
pub fn deserialize<'de, D>(deserializer: D) -> Result<Vec<u8>, D::Error>
where
D: serde::Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
base85::decode(&s).map_err(serde::de::Error::custom)
}
}
pub(super) mod key_header_mp_base85 {
use crate::zerokms::KeyHeader;
use serde::Deserialize;
pub fn serialize<S>(header: &KeyHeader, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
let s = header.to_mp_base85().map_err(serde::ser::Error::custom)?;
serializer.serialize_str(&s)
}
pub fn deserialize<'de, D>(deserializer: D) -> Result<KeyHeader, D::Error>
where
D: serde::Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
KeyHeader::from_mp_base85(&s).map_err(serde::de::Error::custom)
}
}
pub(super) mod mp_base85 {
use super::super::*;
use serde::Deserialize;
pub fn serialize<S>(ciphertext: &EncryptedRecord, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
let s = ciphertext
.to_mp_base85()
.map_err(serde::ser::Error::custom)?;
serializer.serialize_str(&s)
}
pub fn deserialize<'de, D>(deserializer: D) -> Result<EncryptedRecord, D::Error>
where
D: serde::Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
EncryptedRecord::from_mp_base85(&s).map_err(serde::de::Error::custom)
}
}