1pub mod decrypt;
2pub mod encrypt;
3pub use decrypt::DecryptError;
4pub use encrypt::EncryptError;
5use thiserror::Error;
6#[derive(Debug, Error)]
7pub enum Error {
8 #[error("Encrypt error: {0}")]
9 Encrypt(#[from] EncryptError),
10 #[error("Decrypt error: {0}")]
11 Decrypt(#[from] DecryptError),
12}
13pub type Result<T> = std::result::Result<T, Error>;
14#[cfg(test)]
15mod tests {
16 use super::*;
17 #[test]
18 fn test_error_display_encrypt() {
19 let err = Error::from(EncryptError::Failed("test".into()));
20 assert_eq!(format!("{}", err), "Encrypt error: Encryption failed: test");
21 }
22 #[test]
23 fn test_error_display_decrypt() {
24 let err = Error::from(DecryptError::Failed("test".into()));
25 assert_eq!(format!("{}", err), "Decrypt error: Decryption failed: test");
26 }
27 #[test]
28 fn test_error_from_encrypt_error() {
29 let encrypt_err = EncryptError::InvalidRecipient {
30 recipient: "key".into(),
31 reason: "invalid format".into(),
32 };
33 let err: Error = encrypt_err.into();
34 assert!(matches!(
35 err,
36 Error::Encrypt(EncryptError::InvalidRecipient { .. })
37 ));
38 }
39 #[test]
40 fn test_error_from_decrypt_error() {
41 let decrypt_err = DecryptError::InvalidIdentity("id".into());
42 let err: Error = decrypt_err.into();
43 assert!(matches!(
44 err,
45 Error::Decrypt(DecryptError::InvalidIdentity(_))
46 ));
47 }
48}