blob: 0dc32740ee1a5ae2bc4d354118ca614b1ae3ea1a [file] [log] [blame]
//! Error types.
use core::fmt;
/// This error is returned by the [`StreamCipher`][crate::stream::StreamCipher]
/// trait methods.
///
/// Usually it's used in cases when stream cipher has reached the end
/// of a keystream, but also can be used if lengths of provided input
/// and output buffers are not equal.
#[derive(Copy, Clone, Debug)]
pub struct StreamCipherError;
impl fmt::Display for StreamCipherError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
f.write_str("Loop Error")
}
}
#[cfg(feature = "std")]
#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
impl std::error::Error for StreamCipherError {}
/// The error type returned when a cipher position can not be represented
/// by the requested type.
#[derive(Copy, Clone, Debug)]
pub struct OverflowError;
impl fmt::Display for OverflowError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
f.write_str("Overflow Error")
}
}
impl From<OverflowError> for StreamCipherError {
fn from(_: OverflowError) -> StreamCipherError {
StreamCipherError
}
}
#[cfg(feature = "std")]
#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
impl std::error::Error for OverflowError {}