]> git.lizzy.rs Git - PAKEs.git/blobdiff - spake2/src/error.rs
spake2: refactor internals (#91)
[PAKEs.git] / spake2 / src / error.rs
diff --git a/spake2/src/error.rs b/spake2/src/error.rs
new file mode 100644 (file)
index 0000000..fca3d64
--- /dev/null
@@ -0,0 +1,32 @@
+//! 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 {}