aboutsummaryrefslogtreecommitdiff
path: root/src/api/signature
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2022-05-13 19:18:51 +0200
committerAlex Auvolat <alex@adnab.me>2022-05-13 19:18:51 +0200
commitea325d78d36d19f59a0849ace1f4567e2b095bd7 (patch)
treebfc05dd1f8df3d1fae84a1af433f4ae56dbc2c31 /src/api/signature
parentec16d166f940f59098ae5cc0c0b3d8298f1bcc78 (diff)
downloadgarage-ea325d78d36d19f59a0849ace1f4567e2b095bd7.tar.gz
garage-ea325d78d36d19f59a0849ace1f4567e2b095bd7.zip
More error refactoring
Diffstat (limited to 'src/api/signature')
-rw-r--r--src/api/signature/error.rs22
-rw-r--r--src/api/signature/payload.rs4
2 files changed, 4 insertions, 22 deletions
diff --git a/src/api/signature/error.rs b/src/api/signature/error.rs
index 69f3c6c5..3ef5cdcd 100644
--- a/src/api/signature/error.rs
+++ b/src/api/signature/error.rs
@@ -1,9 +1,7 @@
use err_derive::Error;
-use garage_util::error::Error as GarageError;
-
use crate::common_error::CommonError;
-pub use crate::common_error::{OkOrBadRequest, OkOrInternalError};
+pub use crate::common_error::{CommonErrorDerivative, OkOrBadRequest, OkOrInternalError};
/// Errors of this crate
#[derive(Debug, Error)]
@@ -16,10 +14,6 @@ pub enum Error {
#[error(display = "Authorization header malformed, expected scope: {}", _0)]
AuthorizationHeaderMalformed(String),
- /// No proper api key was used, or the signature was invalid
- #[error(display = "Forbidden: {}", _0)]
- Forbidden(String),
-
// Category: bad request
/// The request contained an invalid UTF-8 sequence in its path or in other parameters
#[error(display = "Invalid UTF-8: {}", _0)]
@@ -39,16 +33,4 @@ where
}
}
-
-impl Error {
- pub fn internal_error<M: ToString>(msg: M) -> Self {
- Self::CommonError(CommonError::InternalError(GarageError::Message(
- msg.to_string(),
- )))
- }
-
- pub fn bad_request<M: ToString>(msg: M) -> Self {
- Self::CommonError(CommonError::BadRequest(msg.to_string()))
- }
-}
-
+impl CommonErrorDerivative for Error {}
diff --git a/src/api/signature/payload.rs b/src/api/signature/payload.rs
index 155a6f94..4c7934e5 100644
--- a/src/api/signature/payload.rs
+++ b/src/api/signature/payload.rs
@@ -303,7 +303,7 @@ pub async fn verify_v4(
.get(&EmptyKey, &key_id)
.await?
.filter(|k| !k.state.is_deleted())
- .ok_or_else(|| Error::Forbidden(format!("No such key: {}", &key_id)))?;
+ .ok_or_else(|| Error::forbidden(format!("No such key: {}", &key_id)))?;
let key_p = key.params().unwrap();
let mut hmac = signing_hmac(
@@ -316,7 +316,7 @@ pub async fn verify_v4(
hmac.update(payload);
let our_signature = hex::encode(hmac.finalize().into_bytes());
if signature != our_signature {
- return Err(Error::Forbidden("Invalid signature".to_string()));
+ return Err(Error::forbidden("Invalid signature".to_string()));
}
Ok(key)