29 lines
1.1 KiB
Rust
29 lines
1.1 KiB
Rust
use core::fmt;
|
|
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
|
pub enum NetError {
|
|
InvalidMsgType(u8),
|
|
UnsupportedVersion(u8),
|
|
TruncatedHeader,
|
|
TruncatedPayload,
|
|
PayloadLengthMismatch,
|
|
PayloadTooLarge,
|
|
InvalidPayloadField,
|
|
EntropyUnavailable,
|
|
}
|
|
|
|
impl fmt::Display for NetError {
|
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
|
match self {
|
|
NetError::InvalidMsgType(b) => write!(f, "invalid msg_type byte: 0x{:02X}", b),
|
|
NetError::UnsupportedVersion(v) => write!(f, "unsupported msg_version: {}", v),
|
|
NetError::TruncatedHeader => write!(f, "envelope header truncated (need 14 bytes)"),
|
|
NetError::TruncatedPayload => write!(f, "envelope payload truncated"),
|
|
NetError::PayloadLengthMismatch => write!(f, "payload size != payload_length field"),
|
|
NetError::PayloadTooLarge => write!(f, "payload exceeds protocol max"),
|
|
NetError::InvalidPayloadField => write!(f, "payload structural invariant violated"),
|
|
NetError::EntropyUnavailable => write!(f, "OS CSPRNG (getrandom) unavailable"),
|
|
}
|
|
}
|
|
}
|