Skip to main content

bc_xid/
error.rs

1use dcbor::prelude::CBORError;
2use thiserror::Error;
3
4#[derive(Debug, Error)]
5pub enum Error {
6    #[error("duplicate item: {item}")]
7    Duplicate { item: String },
8
9    #[error("item not found: {item}")]
10    NotFound { item: String },
11
12    #[error("item is still referenced: {item}")]
13    StillReferenced { item: String },
14
15    #[error("invalid or empty value: {field}")]
16    EmptyValue { field: String },
17
18    #[error("unknown privilege")]
19    UnknownPrivilege,
20
21    #[error("invalid XID")]
22    InvalidXid,
23
24    #[error("missing inception key")]
25    MissingInceptionKey,
26
27    #[error("invalid resolution method")]
28    InvalidResolutionMethod,
29
30    #[error("multiple provenance marks")]
31    MultipleProvenanceMarks,
32
33    #[error("unexpected predicate: {predicate}")]
34    UnexpectedPredicate { predicate: String },
35
36    #[error("unexpected nested assertions")]
37    UnexpectedNestedAssertions,
38
39    #[error("no permissions in service '{uri}'")]
40    NoPermissions { uri: String },
41
42    #[error("no key or delegate references in service '{uri}'")]
43    NoReferences { uri: String },
44
45    #[error("unknown key reference {reference} in service '{uri}'")]
46    UnknownKeyReference { reference: String, uri: String },
47
48    #[error("unknown delegate reference {reference} in service '{uri}'")]
49    UnknownDelegateReference { reference: String, uri: String },
50
51    #[error("key not found in XID document: {key}")]
52    KeyNotFoundInDocument { key: String },
53
54    #[error("delegate not found in XID document: {delegate}")]
55    DelegateNotFoundInDocument { delegate: String },
56
57    #[error("invalid password")]
58    InvalidPassword,
59
60    #[error("envelope is not signed")]
61    EnvelopeNotSigned,
62
63    #[error("signature verification failed")]
64    SignatureVerificationFailed,
65
66    #[error("no provenance mark to advance")]
67    NoProvenanceMark,
68
69    #[error(
70        "document already has generator, cannot provide external generator"
71    )]
72    GeneratorConflict,
73
74    #[error(
75        "document does not have generator, must provide external generator"
76    )]
77    NoGenerator,
78
79    #[error("generator chain ID mismatch: expected {}, got {}", hex::encode(.expected), hex::encode(.actual))]
80    ChainIdMismatch { expected: Vec<u8>, actual: Vec<u8> },
81
82    #[error("generator sequence mismatch: expected {expected}, got {actual}")]
83    SequenceMismatch { expected: u32, actual: u32 },
84
85    #[error("envelope parsing error")]
86    EnvelopeParsing(#[from] bc_envelope::Error),
87
88    #[error("component error")]
89    Component(#[from] bc_components::Error),
90
91    #[error("CBOR error")]
92    Cbor(#[from] CBORError),
93
94    #[error("provenance mark error")]
95    ProvenanceMark(#[from] provenance_mark::Error),
96}
97
98pub type Result<T> = std::result::Result<T, Error>;