use std::io::Error as IoError;
use std::str::Utf8Error;
#[derive(Debug)]
pub enum Error {
IO(IoError),
Verification(VerificationError),
Creation(CreationError),
Unknown,
}
impl From<IoError> for Error {
fn from(e: IoError) -> Self {
Error::IO(e)
}
}
impl From<VerificationError> for Error {
fn from(e: VerificationError) -> Self {
Error::Verification(e)
}
}
impl From<DecodeError> for Error {
fn from(e: DecodeError) -> Self {
VerificationError::Decode(e).into()
}
}
impl From<CreationError> for Error {
fn from(e: CreationError) -> Self {
Error::Creation(e)
}
}
#[derive(Debug)]
pub enum CreationError {
IO(IoError),
NoHeaders,
SigningError,
BadPrivateKey,
}
impl From<IoError> for CreationError {
fn from(e: IoError) -> Self {
CreationError::IO(e)
}
}
#[derive(Debug)]
pub enum DecodeError {
MissingKey(&'static str),
InvalidAlgorithm(String),
NotBase64,
}
#[derive(Debug)]
pub enum VerificationError {
Decode(DecodeError),
MissingHeaders(String),
Utf8(Utf8Error),
GetKey,
ReadKey,
BadSignature,
HeaderNotPresent,
Unknown,
}
impl From<Utf8Error> for VerificationError {
fn from(e: Utf8Error) -> Self {
VerificationError::Utf8(e)
}
}
impl From<DecodeError> for VerificationError {
fn from(d: DecodeError) -> Self {
VerificationError::Decode(d)
}
}