--- /dev/null
+//! Error types.
+
+use core::fmt;
+
+/// [`Result`][`core::result::Result`] type with `spake2`'s [`Error`] type.
+pub type Result<T> = core::result::Result<T, Error>;
+
+/// SPAKE2 errors.
+#[derive(Copy, Clone, Debug, Eq, PartialEq)]
+pub enum Error {
+ /// Bad side
+ BadSide,
+
+ /// Corrupt message
+ CorruptMessage,
+
+ /// Wrong length
+ WrongLength,
+}
+
+impl fmt::Display for Error {
+ fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
+ match self {
+ Error::BadSide => fmt.write_str("bad side"),
+ Error::CorruptMessage => fmt.write_str("corrupt message"),
+ Error::WrongLength => fmt.write_str("invalid length"),
+ }
+ }
+}
+
+#[cfg(feature = "std")]
+impl std::error::Error for Error {}