use serde::{Deserialize, Serialize};
use zeroize::{Zeroize, ZeroizeOnDrop};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct E2EEnvelope {
pub _e2e: u8,
pub ct: String,
pub iv: String,
pub v: u8,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct KeyData {
pub key: serde_json::Value,
pub stored_at: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TofuRecord {
pub fingerprint: String,
pub first_seen: u64,
}
#[derive(Zeroize, ZeroizeOnDrop)]
pub struct ECDHKeyPair {
pub public_key: Vec<u8>,
pub private_key: Vec<u8>,
}
#[derive(Zeroize, ZeroizeOnDrop)]
pub struct SigningKeyPair {
pub public_key: Vec<u8>,
pub private_key: Vec<u8>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct KeyExchangeMessage {
pub from_id: String,
pub encrypted_key: String,
pub iv: String,
pub sender_public_key: serde_json::Value,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PublicKeyAnnouncement {
pub public_key: serde_json::Value,
pub timestamp: u64,
}