shadow_crypt_shell/encryption/
nonce.rs

1use rand::rand_core::{OsRng, TryRngCore};
2
3use crate::errors::{WorkflowError, WorkflowResult};
4
5pub fn generate_nonce() -> WorkflowResult<[u8; 24]> {
6    let mut buffer = [0u8; 24];
7    OsRng
8        .try_fill_bytes(&mut buffer)
9        .map_err(|e| WorkflowError::NonceGeneration(format!("Failed to generate nonce: {}", e)))?;
10
11    Ok(buffer)
12}
13
14#[cfg(test)]
15mod tests {
16    use super::generate_nonce;
17
18    #[test]
19    fn test_generate_nonce_length() {
20        let nonce = generate_nonce().expect("Failed to generate nonce");
21        assert_eq!(nonce.len(), 24);
22    }
23}