sare_lib/
lib.rs

1pub mod certificate;
2pub mod encryption;
3pub mod keys;
4pub mod signing;
5
6pub use sare_core::CoreErrorKind;
7pub use sare_core::format;
8
9use sare_core::format::error::*;
10use std::fmt::{self};
11use std::io::Error as IoError;
12
13use sare_core::{
14    encryption::error::EncryptionError, hybrid_kem::error::HybridKEMError,
15    hybrid_sign::error::HybridSignError, kdf::error::KDFError,
16};
17
18pub const SARE_VERSION: u32 = 1;
19
20#[derive(Debug)]
21pub enum SareError {
22    IoError(String),
23    CoreError(CoreErrorKind),
24    Unexpected(String),
25}
26
27impl From<IoError> for SareError {
28    fn from(err: IoError) -> Self {
29        SareError::IoError(err.to_string())
30    }
31}
32
33impl From<FormatError> for SareError {
34    fn from(err: FormatError) -> Self {
35        SareError::CoreError(CoreErrorKind::Format(err))
36    }
37}
38
39impl From<EncryptionError> for SareError {
40    fn from(err: EncryptionError) -> Self {
41        SareError::CoreError(CoreErrorKind::Encryption(err))
42    }
43}
44
45impl From<KDFError> for SareError {
46    fn from(err: KDFError) -> Self {
47        SareError::CoreError(CoreErrorKind::KDF(err))
48    }
49}
50
51impl From<HybridKEMError> for SareError {
52    fn from(err: HybridKEMError) -> Self {
53        SareError::CoreError(CoreErrorKind::HybridKEM(err))
54    }
55}
56
57impl From<HybridSignError> for SareError {
58    fn from(err: HybridSignError) -> Self {
59        SareError::CoreError(CoreErrorKind::HybridSign(err))
60    }
61}
62
63impl fmt::Display for SareError {
64    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
65        match self {
66            SareError::IoError(err) => write!(f, "IO Error: {}", err),
67            SareError::CoreError(err) => write!(f, "Core Error: {}", err),
68            SareError::Unexpected(err) => write!(f, "Unexpected Error: {}", err),
69        }
70    }
71}