redact_crypto/
nonce.rs

1//! Classifies nonces used by different key types.
2
3pub mod sodiumoxide;
4
5use self::sodiumoxide::{SodiumOxideAsymmetricNonce, SodiumOxideSymmetricNonce};
6use serde::{Deserialize, Serialize};
7
8/// Trait indicating a type has a nonce
9pub trait HasNonce {
10    fn nonce(&self) -> Nonce;
11}
12
13/// Highest-level nonce enum splits nonces into symmetric and asymmetric categories
14#[derive(Serialize, Deserialize, Debug, Clone)]
15pub enum Nonce {
16    Symmetric(SymmetricNonce),
17    Asymmetric(AsymmetricNonce),
18}
19
20/// Supported nonces used for symmetric encryption
21#[derive(Serialize, Deserialize, Debug, Clone)]
22pub enum SymmetricNonce {
23    SodiumOxide(SodiumOxideSymmetricNonce),
24}
25
26/// Supported nonces used for asymmetric encryption
27#[derive(Serialize, Deserialize, Debug, Clone)]
28pub enum AsymmetricNonce {
29    SodiumOxide(SodiumOxideAsymmetricNonce),
30}