summaryrefslogtreecommitdiff
path: root/src/metadata/error.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/metadata/error.rs')
-rw-r--r--src/metadata/error.rs40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/metadata/error.rs b/src/metadata/error.rs
new file mode 100644
index 0000000..66173f9
--- /dev/null
+++ b/src/metadata/error.rs
@@ -0,0 +1,40 @@
+// Copyright © 2022 Kim Altintop <kim@eagain.io>
+// SPDX-License-Identifier: GPL-2.0-only WITH openvpn-openssl-exception
+
+use std::io;
+
+use thiserror::Error;
+
+use super::KeyId;
+use crate::json::canonical::error::Canonicalise;
+
+#[derive(Debug, Error)]
+pub enum SigId {
+ #[error("payload not at root revision")]
+ NotRoot,
+
+ #[error("invalid payload: canonicalisation failed")]
+ Canonical(#[from] Canonicalise),
+}
+
+#[derive(Debug, Error)]
+#[non_exhaustive]
+pub enum Verification {
+ #[error("incompatible spec version")]
+ IncompatibleSpecVersion,
+
+ #[error("canonicalisation failed")]
+ Canonicalise(#[from] Canonicalise),
+
+ #[error("required signature threshold not met")]
+ SignatureThreshold,
+
+ #[error("metadata past its expiry date")]
+ Expired,
+
+ #[error("duplicate key: key {0} appears in more than one identity")]
+ DuplicateKey(KeyId),
+
+ #[error(transparent)]
+ Io(#[from] io::Error),
+}