#![allow(clippy::disallowed_macros)]
use aranya_crypto::{tls::EncryptedPskSeed, Encap, EncryptionPublicKey};
use serde::{Deserialize, Serialize};
use crate::{Ikm, CS};
pub const SEED_IKM_SIZE: usize = 32;
#[derive(Debug, Serialize, Deserialize)]
pub struct CreateTeamQuicSyncConfig {
pub seed_mode: CreateSeedMode,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AddTeamQuicSyncConfig {
pub seed_mode: AddSeedMode,
}
#[allow(clippy::large_enum_variant)]
#[derive(Clone, Debug, Serialize, Deserialize)]
pub enum CreateSeedMode {
Generate,
IKM(Ikm),
}
impl Default for CreateSeedMode {
fn default() -> Self {
Self::Generate
}
}
#[allow(clippy::large_enum_variant)]
#[derive(Clone, Debug, Serialize, Deserialize)]
pub enum AddSeedMode {
IKM(Ikm),
Wrapped(WrappedSeed),
}
#[derive(Debug, Serialize, Deserialize)]
pub struct WrappedSeed {
pub sender_pk: EncryptionPublicKey<CS>,
pub encap_key: Encap<CS>,
pub encrypted_seed: EncryptedPskSeed<CS>,
}
impl Clone for WrappedSeed {
fn clone(&self) -> Self {
Self {
sender_pk: self.sender_pk.clone(),
encap_key: Encap::from_bytes(self.encap_key.as_bytes()).expect("can round trip"),
encrypted_seed: self.encrypted_seed.clone(),
}
}
}