1use ndn_tlv::TlvError;
2use thiserror::Error;
3
4pub type Result<T> = std::result::Result<T, NdnError>;
5
6#[derive(Error, Debug)]
7pub enum NdnError {
8 #[error("Parse error")]
9 ParseError,
10 #[error("Failed to verify")]
11 VerifyError(VerifyError),
12 #[error("TLV Error: {0}")]
13 TlvError(TlvError),
14 #[error("{0}")]
15 GenericError(String),
16 #[error("IO Error: {0}")]
17 IOError(std::io::Error),
18}
19
20impl From<url::ParseError> for NdnError {
21 fn from(_value: url::ParseError) -> Self {
22 NdnError::ParseError
23 }
24}
25
26impl From<TlvError> for NdnError {
27 fn from(value: TlvError) -> Self {
28 NdnError::TlvError(value)
29 }
30}
31
32impl From<std::io::Error> for NdnError {
33 fn from(value: std::io::Error) -> Self {
34 NdnError::IOError(value)
35 }
36}
37
38#[derive(Error, Debug)]
39pub enum SignError {
40 #[error("No application parameters present")]
41 MissingApplicationParameters,
42}
43
44#[derive(Error, Debug)]
45pub enum VerifyError {
46 #[error("The parameter digest is invalid")]
47 InvalidParameterDigest,
48 #[error("The signature is invalid")]
49 InvalidSignature,
50 #[error("The interest has no signature info")]
51 MissingSignatureInfo,
52 #[error("The signed interest has no application parameters")]
53 MissingApplicationParameters,
54 #[error("Signed with an unknown sign method")]
55 UnknownSignMethod,
56}