aboutsummaryrefslogtreecommitdiff
path: root/spake2/src/error.rs
diff options
context:
space:
mode:
Diffstat (limited to 'spake2/src/error.rs')
-rw-r--r--spake2/src/error.rs32
1 files changed, 32 insertions, 0 deletions
diff --git a/spake2/src/error.rs b/spake2/src/error.rs
new file mode 100644
index 0000000..fca3d64
--- /dev/null
+++ b/spake2/src/error.rs
@@ -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 {}