use cfg_if::cfg_if;
use crate::{HandleToSecret, SecretBufferHandle};
use ockam_core::compat::vec::Vec;
pub const SHA256_LENGTH: usize = 32;
pub struct Sha256Output(pub [u8; SHA256_LENGTH]);
cfg_if! {
if #[cfg(any(not(feature = "disable_default_noise_protocol"), feature = "OCKAM_XX_25519_AES256_GCM_SHA256"))] {
pub struct HashOutput(pub Sha256Output);
pub struct Sha256HkdfOutput(pub Vec<SecretBufferHandle>);
pub struct HkdfOutput(pub Sha256HkdfOutput);
#[derive(Debug, Clone, Ord, PartialOrd, Eq, PartialEq)]
pub struct Aes256GcmSecretKeyHandle(pub HandleToSecret);
#[derive(Debug, Clone, Ord, PartialOrd, Eq, PartialEq)]
pub struct AeadSecretKeyHandle(pub Aes256GcmSecretKeyHandle);
} else if #[cfg(feature = "OCKAM_XX_25519_AES128_GCM_SHA256")] {
pub struct HashOutput(pub Sha256Output);
pub struct Sha256HkdfOutput(pub Vec<SecretBufferHandle>);
pub struct HkdfOutput(pub Sha256HkdfOutput);
#[derive(Debug, Clone, Ord, PartialOrd, Eq, PartialEq)]
pub struct Aes128GcmSecretKeyHandle(pub HandleToSecret);
#[derive(Debug, Clone, Ord, PartialOrd, Eq, PartialEq)]
pub struct AeadSecretKeyHandle(pub Aes128GcmSecretKeyHandle);
} else if #[cfg(feature = "OCKAM_XX_25519_ChaChaPolyBLAKE2s")] {
pub const BLAKE2S_LENGTH: usize = 32;
pub struct Blake2sOutput(pub [u8; BLAKE2S_LENGTH]);
pub struct HashOutput(pub Blake2sOutput);
pub struct Blake2sHkdfOutput(Vec<SecretBufferHandle>);
pub struct HkdfOutput(pub Blake2sHkdfOutput);
#[derive(Debug, Clone, Ord, PartialOrd, Eq, PartialEq)]
pub struct Chacha20Poly1305SecretKeyHandle(pub HandleToSecret);
#[derive(Debug, Clone, Ord, PartialOrd, Eq, PartialEq)]
pub struct AeadSecretKeyHandle(pub Chacha20Poly1305SecretKeyHandle);
}
}