1#![forbid(unsafe_code)]
2
3use buggy::Bug;
4pub use spideroak_crypto::{
5 aead::{OpenError, SealError},
6 hpke::HpkeError,
7 import::{ExportError, ImportError},
8 kdf::KdfError,
9 kem::{EcdhError, KemError},
10 mac::MacError,
11 signer::{PkError, SignerError},
12};
13
14use crate::{
15 engine::{UnwrapError, WrapError},
16 id::IdError,
17};
18
19#[derive(Debug, Eq, PartialEq, thiserror::Error)]
22#[non_exhaustive]
23pub enum Error {
24 #[error("invalid argument: {0}")]
28 InvalidArgument(&'static str),
29 #[error(transparent)]
31 Bug(#[from] Bug),
32
33 #[error(transparent)]
35 Seal(#[from] SealError),
36 #[error(transparent)]
38 Open(#[from] OpenError),
39 #[error(transparent)]
41 Ecdh(#[from] EcdhError),
42 #[error(transparent)]
44 Hpke(#[from] HpkeError),
45 #[error(transparent)]
47 Kdf(#[from] KdfError),
48 #[error(transparent)]
50 Kem(#[from] KemError),
51 #[error(transparent)]
53 Mac(#[from] MacError),
54 #[error(transparent)]
56 Signer(#[from] SignerError),
57 #[error(transparent)]
59 Import(#[from] ImportError),
60 #[error(transparent)]
62 Export(#[from] ExportError),
63 #[error(transparent)]
65 Wrap(#[from] WrapError),
66 #[error(transparent)]
68 Unwrap(#[from] UnwrapError),
69 #[error(transparent)]
71 Id(#[from] IdError),
72 #[error(transparent)]
74 Pk(#[from] PkError),
75}
76
77#[cfg(feature = "afc")]
78impl Error {
79 pub(crate) const fn same_device_id() -> Self {
80 Self::InvalidArgument("same `DeviceId`")
81 }
82}