aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Warner <warner@lothar.com>2017-05-24 18:21:06 -0700
committerBrian Warner <warner@lothar.com>2017-05-24 18:21:06 -0700
commitf490a799829247aa0026f73d70178773b43adec7 (patch)
tree0033587045b89bddf3dbc60d3e5dd506308daa91
parent2c0792059c573cf12870f2aa24c9df993deef983 (diff)
downloadPAKEs-f490a799829247aa0026f73d70178773b43adec7.tar.xz
change the nature of the failure. still wrong, but better wrong!
-rw-r--r--src/spake2.rs10
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 {