rsa_msg_packets/communication/
key_reply.rs1use openssl::{rsa::Rsa, pkey::{Private, Public}};
2use uuid::Uuid;
3
4use crate::{util::{converter::uuid_to_vec, modes::Modes, tools::uuid_from_vec}, other::key_iv::KeyIVPair};
5
6pub struct SymmKeyReplyMsg {
7 pub key: KeyIVPair,
8 pub user: Uuid,
9}
10
11impl SymmKeyReplyMsg {
12 pub fn serialize(&self, rec_key: Rsa<Public>) -> anyhow::Result<Vec<u8>> {
13 let mut merged: Vec<u8> = Vec::new();
14
15 let mut b_encrypted_key = self.key.serialize(&rec_key)?;
16 let mut b_user = uuid_to_vec(&self.user);
17
18 merged.append(&mut b_user);
19 merged.append(&mut b_encrypted_key);
20
21 return Ok(Modes::SymmKey.get_send(&merged));
22 }
23
24 pub fn deserialize(data: &Vec<u8>, key: Rsa<Private>) -> anyhow::Result<Self> {
25 let mut data = data.clone();
26
27 let user = uuid_from_vec(&mut data)?;
28
29 let decrypted_key = KeyIVPair::deserialize_mut(&mut data, &key)?;
30 return Ok(SymmKeyReplyMsg {
31 key: decrypted_key,
32 user
33 });
34 }
35}