1use crate::CryptoAlgorithm;
2
3#[non_exhaustive]
5#[derive(Debug, thiserror::Error, PartialEq, Eq)]
6pub enum CryptoError {
7 #[error("no default crypto provider is enabled")]
9 NoDefaultProvider,
10 #[error("unsupported algorithm: {0:?}")]
12 UnsupportedAlgorithm(CryptoAlgorithm),
13 #[error("invalid key length: expected {expected}, got {actual}")]
15 InvalidKeyLength {
16 expected: usize,
18 actual: usize,
20 },
21 #[error("invalid nonce length: expected {expected}, got {actual}")]
23 InvalidNonceLength {
24 expected: usize,
26 actual: usize,
28 },
29 #[error("invalid tag length: expected {expected}, got {actual}")]
31 InvalidTagLength {
32 expected: usize,
34 actual: usize,
36 },
37 #[error("invalid public key")]
39 InvalidPublicKey,
40 #[error("invalid private key")]
42 InvalidPrivateKey,
43 #[error("authentication failed")]
45 AuthenticationFailed,
46 #[error("signature verification failed")]
48 InvalidSignature,
49 #[error("randomness source failed")]
51 RandomnessFailed,
52 #[error("output buffer is too small: required {required}, got {actual}")]
54 OutputTooSmall {
55 required: usize,
57 actual: usize,
59 },
60 #[error("provider failure: {0}")]
62 Provider(String),
63}