ffsend_api/pipe/crypto/
mod.rs

1//! Provides pipes specific to cryptography.
2
3#[cfg(feature = "crypto-openssl")]
4use openssl::symm::Mode as OpenSslMode;
5
6#[cfg(feature = "send3")]
7pub mod ece;
8#[cfg(feature = "send2")]
9pub mod gcm;
10mod traits;
11
12// Re-export modules
13#[cfg(feature = "send3")]
14pub use self::ece::{EceCrypt, EceReader, EceWriter};
15#[cfg(feature = "send2")]
16pub use gcm::{GcmCrypt, GcmReader, GcmWriter};
17pub use traits::Crypt;
18
19/// Prelude for common crypto pipe traits.
20pub mod prelude {
21    pub use super::Crypt;
22}
23
24/// The cryptographic mode for a crypter: encrypt or decrypt.
25#[derive(Debug, Clone, Copy)]
26pub enum CryptMode {
27    /// Encrypt data while transforming.
28    Encrypt,
29
30    /// Decrypt data while transforming.
31    Decrypt,
32}
33
34#[cfg(feature = "crypto-openssl")]
35impl Into<OpenSslMode> for CryptMode {
36    fn into(self) -> OpenSslMode {
37        match self {
38            CryptMode::Encrypt => OpenSslMode::Encrypt,
39            CryptMode::Decrypt => OpenSslMode::Decrypt,
40        }
41    }
42}