lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README | LICENSE

error.rs (2928B)


      1 #[cfg(not(feature = "std"))]
      2 use alloc::string::String;
      3 use core::fmt;
      4 
      5 #[derive(Debug, Clone, PartialEq, Eq)]
      6 pub enum RadrootsSimplexSmpProtoError {
      7     UnexpectedEof,
      8 
      9     InvalidTag(String),
     10 
     11     UnsupportedTag(String),
     12 
     13     InvalidUtf8(String),
     14 
     15     InvalidBase64Url { field: &'static str, value: String },
     16 
     17     InvalidVersionRange(String),
     18 
     19     InvalidUri(String),
     20 
     21     InvalidHostList(String),
     22 
     23     InvalidPort(String),
     24 
     25     InvalidShortFieldLength(usize),
     26 
     27     InvalidLargeFieldLength(usize),
     28 
     29     InvalidListLength(usize),
     30 
     31     InvalidCorrelationIdLength(usize),
     32 
     33     InvalidNonceLength(usize),
     34 
     35     InvalidMaybeTag(u8),
     36 
     37     InvalidBoolEncoding(u8),
     38 
     39     MissingField(&'static str),
     40 
     41     TrailingBytes,
     42 
     43     UnsupportedTransportVersion(u16),
     44 }
     45 
     46 impl fmt::Display for RadrootsSimplexSmpProtoError {
     47     fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
     48         match self {
     49             Self::UnexpectedEof => write!(f, "unexpected end of SMP input"),
     50             Self::InvalidTag(tag) => write!(f, "invalid SMP ASCII tag `{tag}`"),
     51             Self::UnsupportedTag(tag) => write!(f, "unsupported SMP tag `{tag}`"),
     52             Self::InvalidUtf8(error) => write!(f, "invalid UTF-8 in SMP field: {error}"),
     53             Self::InvalidBase64Url { field, value } => {
     54                 write!(f, "invalid base64url value for `{field}`: `{value}`")
     55             }
     56             Self::InvalidVersionRange(range) => write!(f, "invalid SMP version range `{range}`"),
     57             Self::InvalidUri(uri) => write!(f, "invalid SMP URI: {uri}"),
     58             Self::InvalidHostList(hosts) => write!(f, "invalid SMP host list `{hosts}`"),
     59             Self::InvalidPort(port) => write!(f, "invalid SMP port `{port}`"),
     60             Self::InvalidShortFieldLength(length) => {
     61                 write!(f, "invalid SMP short field length {length}")
     62             }
     63             Self::InvalidLargeFieldLength(length) => {
     64                 write!(f, "invalid SMP large field length {length}")
     65             }
     66             Self::InvalidListLength(length) => write!(f, "invalid SMP list length {length}"),
     67             Self::InvalidCorrelationIdLength(length) => {
     68                 write!(f, "invalid SMP correlation id length {length}")
     69             }
     70             Self::InvalidNonceLength(length) => write!(f, "invalid SMP nonce length {length}"),
     71             Self::InvalidMaybeTag(tag) => write!(f, "invalid SMP maybe tag `{tag}`"),
     72             Self::InvalidBoolEncoding(value) => write!(f, "invalid SMP bool encoding `{value}`"),
     73             Self::MissingField(field) => write!(f, "missing required SMP field `{field}`"),
     74             Self::TrailingBytes => write!(f, "trailing SMP bytes after parse"),
     75             Self::UnsupportedTransportVersion(version) => {
     76                 write!(f, "unsupported SMP transport version {version}")
     77             }
     78         }
     79     }
     80 }
     81 
     82 #[cfg(feature = "std")]
     83 impl std::error::Error for RadrootsSimplexSmpProtoError {}