1use thiserror::Error;
2
3pub type Result<T> = std::result::Result<T, MaError>;
4
5#[derive(Debug, Error)]
6pub enum MaError {
7 #[error("empty DID")]
8 EmptyDid,
9 #[error("invalid DID prefix, expected did:ma:")]
10 InvalidDidPrefix,
11 #[error("missing DID identifier")]
12 MissingIdentifier,
13 #[error("missing DID fragment")]
14 MissingFragment,
15 #[error("unexpected DID fragment")]
16 UnexpectedFragment,
17 #[error("invalid DID format")]
18 InvalidDidFormat,
19 #[error("invalid DID fragment: {0}")]
20 InvalidFragment(String),
21 #[error("invalid DID identifier")]
22 InvalidIdentifier,
23 #[error("invalid message id")]
24 InvalidMessageId,
25 #[error("empty message id")]
26 EmptyMessageId,
27 #[error("invalid message type")]
28 InvalidMessageType,
29 #[error("invalid key type")]
30 InvalidKeyType,
31 #[error("invalid identity secret")]
32 InvalidIdentitySecret,
33 #[error("invalid recipient")]
34 InvalidRecipient,
35 #[error("missing message content")]
36 MissingContent,
37 #[error("missing message content type")]
38 MissingContentType,
39 #[error("missing sender")]
40 MissingSender,
41 #[error("missing signature")]
42 MissingSignature,
43 #[error("message timestamp is invalid")]
44 InvalidMessageTimestamp,
45 #[error("message is too old")]
46 MessageTooOld,
47 #[error("message timestamp is too far in the future")]
48 MessageFromFuture,
49 #[error("replay detected")]
50 ReplayDetected,
51 #[error("sender and recipient must differ")]
52 SameActor,
53 #[error("broadcast messages must not have a recipient")]
54 BroadcastMustNotHaveRecipient,
55 #[error("encrypted messages require a recipient")]
56 MessageRequiresRecipient,
57 #[error("context missing")]
58 EmptyContext,
59 #[error("controller missing")]
60 EmptyController,
61 #[error("verification method missing type")]
62 VerificationMethodMissingType,
63 #[error("unknown verification method: {0}")]
64 UnknownVerificationMethod(String),
65 #[error("public key multibase is empty")]
66 EmptyPublicKeyMultibase,
67 #[error("invalid public key multibase")]
68 InvalidPublicKeyMultibase,
69 #[error("invalid multicodec, expected {expected}, got {actual}")]
70 InvalidMulticodec { expected: u64, actual: u64 },
71 #[error("invalid key length, expected {expected}, got {actual}")]
72 InvalidKeyLength { expected: usize, actual: usize },
73 #[error("proof is missing")]
74 MissingProof,
75 #[error("document signature is invalid")]
76 InvalidDocumentSignature,
77 #[error("message signature is invalid")]
78 InvalidMessageSignature,
79 #[error("invalid createdAt timestamp: {0}")]
80 InvalidCreatedAt(String),
81 #[error("invalid updatedAt timestamp: {0}")]
82 InvalidUpdatedAt(String),
83 #[error("identity CID is invalid")]
84 InvalidIdentity,
85 #[error("missing envelope field: {0}")]
86 MissingEnvelopeField(&'static str),
87 #[error("invalid ephemeral key length")]
88 InvalidEphemeralKeyLength,
89 #[error("ciphertext too short")]
90 CiphertextTooShort,
91 #[error("cryptographic operation failed")]
92 Crypto,
93 #[error("CBOR encode failed: {0}")]
94 CborEncode(String),
95 #[error("CBOR decode failed: {0}")]
96 CborDecode(String),
97 #[error("JSON encode failed: {0}")]
98 JsonEncode(String),
99 #[error("JSON decode failed: {0}")]
100 JsonDecode(String),
101}