sare_core/format/
encryption.rs1use serde::{Deserialize, Serialize};
2
3use crate::encryption::EncryptionAlgorithm;
4use crate::hybrid_kem::{DHAlgorithm, KEMAlgorithm};
5use crate::kdf::{HKDFAlgorithm, PKDFAlgorithm};
6
7#[derive(Clone, Debug, Serialize, Deserialize)]
8pub struct KEMMetadataFormat {
9 pub kem_algorithm: KEMAlgorithm,
10 pub dh_algorithm: DHAlgorithm,
11 pub dh_sender_public_key: Vec<u8>,
12 pub hkdf_algorithm: HKDFAlgorithm,
13 pub kem_ciphertext: Vec<u8>,
14 pub kdf_salt: Vec<u8>,
15}
16
17#[derive(Clone, Debug, Serialize, Deserialize)]
18pub struct EncryptionMetadataFormat {
19 pub encryption_algorithm: EncryptionAlgorithm,
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub nonce: Option<Vec<u8>>,
22 #[serde(skip_serializing_if = "Option::is_none", flatten)]
23 pub kem_metadata: Option<KEMMetadataFormat>,
24 #[serde(skip_serializing_if = "Option::is_none", flatten)]
25 pub pkdf_metadata: Option<PKDFMetadataFormat>,
26}
27
28#[derive(Clone, Debug, Serialize, Deserialize)]
29pub struct PKDFMetadataFormat {
30 pub pkdf_salt: Vec<u8>,
31 pub pkdf_algorithm: PKDFAlgorithm,
32}