aranya_daemon_api/service/
quic_sync.rs1#![allow(clippy::disallowed_macros)] use aranya_crypto::{tls::EncryptedPskSeed, Encap, EncryptionPublicKey};
4use serde::{Deserialize, Serialize};
5
6use crate::CS;
7
8pub const SEED_IKM_SIZE: usize = 32;
9
10#[derive(Debug, Serialize, Deserialize)]
11pub struct QuicSyncConfig {
12 pub seed_mode: SeedMode,
13}
14
15#[allow(clippy::large_enum_variant)]
16#[derive(Clone, Debug, Serialize, Deserialize)]
17pub enum SeedMode {
22 Generate,
26
27 IKM([u8; SEED_IKM_SIZE]),
33
34 Wrapped(WrappedSeed),
40}
41
42impl Default for SeedMode {
43 fn default() -> Self {
44 Self::Generate
45 }
46}
47
48#[derive(Debug, Serialize, Deserialize)]
49pub struct WrappedSeed {
50 pub sender_pk: EncryptionPublicKey<CS>,
51 pub encap_key: Encap<CS>,
52 pub encrypted_seed: EncryptedPskSeed<CS>,
53}
54
55impl Clone for WrappedSeed {
56 fn clone(&self) -> Self {
57 Self {
58 sender_pk: self.sender_pk.clone(),
59 encap_key: Encap::from_bytes(self.encap_key.as_bytes()).expect("can round trip"),
60 encrypted_seed: self.encrypted_seed.clone(),
61 }
62 }
63}