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}