use std;
use crate::kms::KmsError;
use crate::tag::Tag;
#[derive(Debug)]
pub enum Error {
TagNotStrictlyIncreasing(Tag),
InvalidTag(Box<[u8]>),
InvalidNumTags(u32),
InvalidValueLength(Tag, u32),
EncodingFailure(std::io::Error),
RequestTooShort,
InvalidAlignment(u32),
InvalidOffsetValue(u32),
MessageTooShort,
InvalidRequest,
InvalidConfiguration(String),
}
impl From<std::io::Error> for Error {
fn from(err: std::io::Error) -> Self {
Error::EncodingFailure(err)
}
}
impl From<KmsError> for Error {
fn from(err: KmsError) -> Self {
match err {
KmsError::OperationFailed(m) => {
Error::InvalidConfiguration(format!("KMS operation failed: {}", m))
}
KmsError::InvalidConfiguration(m) => {
Error::InvalidConfiguration(format!("invalid KMS config: {}", m))
}
KmsError::InvalidData(m) => {
Error::InvalidConfiguration(format!("invalid KMS data: {}", m))
}
KmsError::InvalidKey(m) => {
Error::InvalidConfiguration(format!("invalid KMS key: {}", m))
}
}
}
}