use pubky_common::crypto::PublicKey;
#[derive(Debug)]
pub(crate) struct Z32Pubkey(pub PublicKey);
impl<'de> serde::Deserialize<'de> for Z32Pubkey {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let s: String = serde::Deserialize::deserialize(deserializer)?;
if PublicKey::is_pubky_prefixed(&s) {
return Err(serde::de::Error::custom(
"unexpected `pubky` prefix; expected raw z32",
));
}
let pubkey = PublicKey::try_from_z32(s.as_str()).map_err(serde::de::Error::custom)?;
Ok(Z32Pubkey(pubkey))
}
}