1use serde::{Deserialize, Serialize};
2use zeroize::{Zeroize, ZeroizeOnDrop};
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct E2EEnvelope {
7 pub _e2e: u8,
9 pub ct: String,
11 pub iv: String,
13 pub v: u8,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
19#[serde(rename_all = "camelCase")]
20pub struct KeyData {
21 pub key: serde_json::Value,
23 pub stored_at: u64,
25}
26
27#[derive(Debug, Clone, Serialize, Deserialize)]
29#[serde(rename_all = "camelCase")]
30pub struct TofuRecord {
31 pub fingerprint: String,
33 pub first_seen: u64,
35}
36
37#[derive(Zeroize, ZeroizeOnDrop)]
41pub struct ECDHKeyPair {
42 pub public_key: Vec<u8>,
43 pub private_key: Vec<u8>,
44}
45
46#[derive(Zeroize, ZeroizeOnDrop)]
50pub struct SigningKeyPair {
51 pub public_key: Vec<u8>,
52 pub private_key: Vec<u8>,
53}
54
55#[derive(Debug, Clone, Serialize, Deserialize)]
57#[serde(rename_all = "camelCase")]
58pub struct KeyExchangeMessage {
59 pub from_id: String,
60 pub encrypted_key: String,
61 pub iv: String,
62 pub sender_public_key: serde_json::Value,
64}
65
66#[derive(Debug, Clone, Serialize, Deserialize)]
68#[serde(rename_all = "camelCase")]
69pub struct PublicKeyAnnouncement {
70 pub public_key: serde_json::Value,
72 pub timestamp: u64,
73}