summaryrefslogtreecommitdiffstats
path: root/vendor/pasetors/src/errors.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/pasetors/src/errors.rs')
-rw-r--r--vendor/pasetors/src/errors.rs76
1 files changed, 76 insertions, 0 deletions
diff --git a/vendor/pasetors/src/errors.rs b/vendor/pasetors/src/errors.rs
new file mode 100644
index 000000000..f970ff334
--- /dev/null
+++ b/vendor/pasetors/src/errors.rs
@@ -0,0 +1,76 @@
+#[derive(Debug, PartialEq, Eq)]
+/// Errors for token operations.
+pub enum Error {
+ /// Error for a token with an invalid format.
+ TokenFormat,
+ /// Error for a failed Base64 (URL-safe without padding) encoding/decoding.
+ Base64,
+ /// Error for a failed token validation.
+ TokenValidation,
+ /// Error for an invalid key.
+ Key,
+ /// Error for a failed encryption operation.
+ Encryption,
+ /// Error for a failed attempt to generate bytes using a CSPRNG.
+ Csprng,
+ /// Error for a conversion that would be lossy.
+ LossyConversion,
+ /// Error for attempting to create a token with an empty payload.
+ EmptyPayload,
+ /// Error for attempting to create an invalid claim.
+ InvalidClaim,
+ /// Claim validation error. See [`crate::claims::ClaimsValidationRules::validate_claims`].
+ ClaimValidation,
+ /// Error for attempting to parse a Claim but found invalid UTF-8 sequence.
+ ClaimInvalidUtf8,
+ /// Error for attempting to parse a Claim but found invalid JSON sequence.
+ ClaimInvalidJson,
+ /// Error during (de)serialization of PASERK types.
+ PaserkParsing,
+ /// Error during signing of a message.
+ Signing,
+ /// Error during conversion between uncompressed<->compressed public keys.
+ PublicKeyConversion,
+ /// Error during key generation.
+ KeyGeneration,
+ /// The payload was not valid UTF-8.
+ PayloadInvalidUtf8,
+ /// Error during parsing of a `Footer`.
+ FooterParsing,
+}
+
+#[cfg(feature = "std")]
+impl std::error::Error for Error {}
+
+#[cfg(feature = "std")]
+impl std::fmt::Display for Error {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ f.write_fmt(format_args!("{:?}", self))
+ }
+}
+
+impl From<ct_codecs::Error> for Error {
+ fn from(_: ct_codecs::Error) -> Self {
+ Error::Base64
+ }
+}
+
+impl From<getrandom::Error> for Error {
+ fn from(_: getrandom::Error) -> Self {
+ Error::Csprng
+ }
+}
+
+impl From<core::num::TryFromIntError> for Error {
+ fn from(_: core::num::TryFromIntError) -> Self {
+ Error::LossyConversion
+ }
+}
+
+#[test]
+fn test_error_from_impls() {
+ let _ = format!("{:?}", Error::TokenFormat);
+ let _ = format!("{}", Error::TokenFormat);
+ assert_eq!(Error::from(ct_codecs::Error::InvalidInput), Error::Base64);
+ assert_eq!(Error::from(getrandom::Error::FAILED_RDRAND), Error::Csprng);
+}