zebra_chain/transparent/
keys.rs
1use std::io;
7
8use secp256k1::PublicKey;
9
10use crate::serialization::{SerializationError, ZcashDeserialize, ZcashSerialize};
11
12impl ZcashSerialize for PublicKey {
13 fn zcash_serialize<W: io::Write>(&self, mut writer: W) -> Result<(), io::Error> {
14 writer.write_all(&self.serialize())?;
15 Ok(())
16 }
17}
18
19impl ZcashDeserialize for PublicKey {
20 fn zcash_deserialize<R: io::Read>(mut reader: R) -> Result<Self, SerializationError> {
21 let mut bytes = [0; 33];
22 reader.read_exact(&mut bytes[..])?;
23 Self::from_slice(&bytes[..])
24 .map_err(|_| SerializationError::Parse("invalid secp256k1 compressed public key"))
25 }
26}