mod base64;
mod binary;
mod hex;
mod string;
use std::str::Utf8Error;
use snafu::Snafu;
use crate::platform::MaybeSendSync;
pub use base64::Base64Encoding;
pub use binary::BinaryEncoding;
pub use hex::HexEncoding;
pub use string::StringEncoding;
pub trait SecretDecoder: Clone + MaybeSendSync {
type Output: Clone + MaybeSendSync;
fn decode(&self, bytes: &[u8]) -> Result<Self::Output, DecodingError>;
}
#[derive(Debug, Snafu)]
pub enum DecodingError {
#[snafu(display("Invalid UTF-8"))]
InvalidUtf8 {
source: Utf8Error,
},
#[snafu(display("Invalid hex"))]
InvalidHex {
source: ::hex::FromHexError,
},
#[snafu(display("Invalid base64"))]
InvalidBase64 {
source: ::base64::DecodeError,
},
}