fedimint_core/encoding/
iroh.rs

1use std::io::{Error, Read, Write};
2
3use crate::encoding::{Decodable, DecodeError, Encodable};
4use crate::module::registry::ModuleDecoderRegistry;
5
6impl Encodable for iroh_base::SecretKey {
7    fn consensus_encode<W: Write>(&self, writer: &mut W) -> Result<(), Error> {
8        self.to_bytes().consensus_encode(writer)
9    }
10}
11
12impl Decodable for iroh_base::SecretKey {
13    fn consensus_decode_partial<D: Read>(
14        d: &mut D,
15        modules: &ModuleDecoderRegistry,
16    ) -> Result<Self, DecodeError> {
17        Ok(Self::from_bytes(&<[u8; 32]>::consensus_decode_partial(
18            d, modules,
19        )?))
20    }
21}
22
23impl Encodable for iroh_base::PublicKey {
24    fn consensus_encode<W: Write>(&self, writer: &mut W) -> Result<(), Error> {
25        self.as_bytes().consensus_encode(writer)
26    }
27}
28
29impl Decodable for iroh_base::PublicKey {
30    fn consensus_decode_partial<D: Read>(
31        d: &mut D,
32        modules: &ModuleDecoderRegistry,
33    ) -> Result<Self, DecodeError> {
34        Self::from_bytes(&<[u8; 32]>::consensus_decode_partial(d, modules)?)
35            .map_err(DecodeError::from_err)
36    }
37}