use thiserror::Error;
pub type HttpSigResult<T> = std::result::Result<T, HttpSigError>;
#[derive(Error, Debug)]
pub enum HttpSigError {
#[error("Base64 decode error: {0}")]
Base64DecodeError(#[from] base64::DecodeError),
#[error("Failed to parse private key: {0}")]
ParsePrivateKeyError(String),
#[error("Failed to parse public key: {0}")]
ParsePublicKeyError(String),
#[error("Failed to parse signature: {0}")]
ParseSignatureError(String),
#[error("Invalid Signature: {0}")]
InvalidSignature(String),
#[error("Failed to parse structured field value: {0}")]
ParseSFVError(String),
#[error("Invalid http message component name: {0}")]
InvalidComponentName(String),
#[error("Invalid http message component param: {0}")]
InvalidComponentParam(String),
#[error("Invalid http message component id: {0}")]
InvalidComponentId(String),
#[error("Invalid http message component: {0}")]
InvalidComponent(String),
#[error("Invalid signature params: {0}")]
InvalidSignatureParams(String),
#[error("Failed to build signature header: {0}")]
BuildSignatureHeaderError(String),
#[error("Failed to build signature base: {0}")]
BuildSignatureBaseError(String),
#[error("Expired signature params: {0}")]
ExpiredSignatureParams(String),
#[error("Not yet implemented: {0}")]
NotYetImplemented(String),
}