1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use log::trace;
use openssl::rsa::Rsa;
use crate::{types::ByteMessage, util::modes::Modes};
pub struct PubkeyMsg {
pub pubkey: String
}
impl ByteMessage for PubkeyMsg {
fn serialize(&self) -> Vec<u8> {
return Modes::SetPubkey.get_send(&self.pubkey.as_bytes().to_vec());
}
fn deserialize(data: &Vec<u8>) -> anyhow::Result<Self> {
let data = data.clone();
trace!("Parsing public key of length {}...", data.len());
Rsa::public_key_from_pem(&data)?;
let pubkey = String::from_utf8(data)?;
return Ok(PubkeyMsg {
pubkey
});
}
}