diff options
author | Brian Warner <warner@lothar.com> | 2017-05-24 18:21:06 -0700 |
---|---|---|
committer | Brian Warner <warner@lothar.com> | 2017-05-24 18:21:06 -0700 |
commit | f490a799829247aa0026f73d70178773b43adec7 (patch) | |
tree | 0033587045b89bddf3dbc60d3e5dd506308daa91 | |
parent | 2c0792059c573cf12870f2aa24c9df993deef983 (diff) | |
download | PAKEs-f490a799829247aa0026f73d70178773b43adec7.tar.xz |
change the nature of the failure. still wrong, but better wrong!
-rw-r--r-- | src/spake2.rs | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/spake2.rs b/src/spake2.rs index e3efa2a..d46c92e 100644 --- a/src/spake2.rs +++ b/src/spake2.rs @@ -7,7 +7,7 @@ use rand::{Rng, OsRng}; use sha2::{Sha256, Sha512, Digest}; #[derive(Debug)] -pub struct SPAKEErr; +pub struct SPAKEErr ( String ); pub trait Group { type Scalar; @@ -222,11 +222,15 @@ impl<G: Group> SPAKE2<G> { pub fn finish(self, msg2: &[u8]) -> Result<Vec<u8>, SPAKEErr> { if msg2.len() != 1 + G::element_length() { - return Err(SPAKEErr); //("inbound message is the wrong length")); + return Err(SPAKEErr(String::from("inbound message is the wrong length"))) } let msg_side = msg2[0]; - let msg2_element = G::bytes_to_element(&msg2[1..]).unwrap(); + let msg2_element = match G::bytes_to_element(&msg2[1..]) { + Some(x) => x, + None => {return Err(SPAKEErr(String::from("message corrupted")))}, + }; + // a: K = (Y+N*(-pw))*x // b: K = (X+M*(-pw))*y let unblinding = match self.side { |