Skip to main content

solid_pod_rs_didkey/
error.rs

1//! Error type for the `did:key` crate.
2
3use thiserror::Error;
4
5/// Errors surfaced by every public API in this crate.
6#[derive(Debug, Error)]
7pub enum DidKeyError {
8    /// Input was not a `did:key:z…` string.
9    #[error("not a did:key identifier: {0}")]
10    NotDidKey(String),
11
12    /// Multibase header or body rejected (only base58btc 'z' accepted).
13    #[error("invalid multibase encoding: {0}")]
14    InvalidMultibase(String),
15
16    /// Multicodec varint prefix did not match any supported algorithm.
17    #[error("unknown multicodec codec 0x{0:04x}")]
18    UnknownCodec(u64),
19
20    /// Key bytes were the wrong length for the declared codec.
21    #[error("invalid key length for {codec}: expected {expected}, got {actual}")]
22    InvalidKeyLength {
23        codec: &'static str,
24        expected: usize,
25        actual: usize,
26    },
27
28    /// JWT compact serialisation is malformed (segment count / base64).
29    #[error("malformed JWT: {0}")]
30    MalformedJwt(String),
31
32    /// JWT header rejected — wrong `alg`, missing key binding, `alg`
33    /// does not match the bound `did:key`, etc.
34    #[error("invalid JWT header: {0}")]
35    InvalidHeader(String),
36
37    /// JWT claims rejected — `htm`/`htu`/`iat` mismatch.
38    #[error("invalid JWT claims: {0}")]
39    InvalidClaims(String),
40
41    /// Cryptographic signature verification failed.
42    #[error("signature verification failed: {0}")]
43    BadSignature(String),
44
45    /// Failure parsing an underlying elliptic-curve key or signature.
46    #[error("key material parse error: {0}")]
47    KeyParse(String),
48
49    /// Serde / JSON decode failures.
50    #[error("json: {0}")]
51    Json(#[from] serde_json::Error),
52
53    /// Base64 decode failures.
54    #[error("base64: {0}")]
55    Base64(#[from] base64::DecodeError),
56}