enigma_identity/
types.rs

1use serde::{Deserialize, Serialize};
2use serde_big_array::BigArray;
3use uuid::Uuid;
4use zeroize::Zeroize;
5
6#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
7pub struct LocalUser {
8    pub uuid: Uuid,
9    pub username: String,
10}
11
12#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
13pub struct X3dhBundle {
14    pub username: String,
15    pub identity_public_key: [u8; 32],
16    pub signed_prekey_public_key: [u8; 32],
17    #[serde(with = "BigArray")]
18    pub signed_prekey_signature: [u8; 64],
19}
20
21#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
22pub struct X3dhInitiation {
23    pub initiator_ephemeral_public_key: [u8; 32],
24}
25
26#[derive(Clone)]
27pub struct X3dhResponderKeys {
28    pub identity_public_key: [u8; 32],
29    pub identity_secret_key: [u8; 32],
30    pub signed_prekey_public_key: [u8; 32],
31    pub signed_prekey_secret_key: [u8; 32],
32    pub signed_prekey_signature: [u8; 64],
33}
34
35#[derive(Clone, Debug, PartialEq, Eq, Zeroize)]
36#[zeroize(drop)]
37pub struct SharedSecret([u8; 32]);
38
39impl SharedSecret {
40    pub fn new(bytes: [u8; 32]) -> Self {
41        Self(bytes)
42    }
43
44    pub fn as_bytes(&self) -> &[u8; 32] {
45        &self.0
46    }
47}