#![forbid(unsafe_code)]
use buggy::Bug;
pub use spideroak_crypto::{
aead::{OpenError, SealError},
hpke::HpkeError,
import::{ExportError, ImportError},
kdf::KdfError,
kem::{EcdhError, KemError},
mac::MacError,
signer::{PkError, SignerError},
};
use crate::{
engine::{UnwrapError, WrapError},
id::IdError,
};
#[derive(Debug, Eq, PartialEq, thiserror::Error)]
#[non_exhaustive]
pub enum Error {
#[error("invalid argument: {0}")]
InvalidArgument(&'static str),
#[error(transparent)]
Bug(#[from] Bug),
#[error(transparent)]
Seal(#[from] SealError),
#[error(transparent)]
Open(#[from] OpenError),
#[error(transparent)]
Ecdh(#[from] EcdhError),
#[error(transparent)]
Hpke(#[from] HpkeError),
#[error(transparent)]
Kdf(#[from] KdfError),
#[error(transparent)]
Kem(#[from] KemError),
#[error(transparent)]
Mac(#[from] MacError),
#[error(transparent)]
Signer(#[from] SignerError),
#[error(transparent)]
Import(#[from] ImportError),
#[error(transparent)]
Export(#[from] ExportError),
#[error(transparent)]
Wrap(#[from] WrapError),
#[error(transparent)]
Unwrap(#[from] UnwrapError),
#[error(transparent)]
Id(#[from] IdError),
#[error(transparent)]
Pk(#[from] PkError),
}
#[cfg(feature = "afc")]
impl Error {
pub(crate) const fn same_device_id() -> Self {
Self::InvalidArgument("same `DeviceId`")
}
}