aboutsummaryrefslogtreecommitdiff
path: root/src/lib.rs
diff options
context:
space:
mode:
authorBrian Warner <warner@lothar.com>2017-08-02 12:55:35 -0700
committerBrian Warner <warner@lothar.com>2017-09-21 13:02:12 -0700
commit861ece4475b823005c310d42725fe59e7b4876ea (patch)
tree947dfa1d4a849d0eab86f9432c7254a09940ee5f /src/lib.rs
parent332e28b02bcad93144614400c5624ea75ed653b3 (diff)
downloadPAKEs-861ece4475b823005c310d42725fe59e7b4876ea.tar.xz
move from (unmaintained) rust-crypto to RustCrypto ('sha2' crate)
Also upgrade to curve25519-dalek 0.11, hkdf-0.2, refine error types, add more tests.
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs35
1 files changed, 32 insertions, 3 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 9083473..beffd19 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,8 +1,8 @@
extern crate rand;
extern crate curve25519_dalek;
-//extern crate sha2;
-extern crate crypto;
+extern crate sha2;
+extern crate hkdf;
extern crate num_bigint;
extern crate hex;
@@ -15,7 +15,7 @@ pub use spake2::*;
#[cfg(test)]
mod tests {
- use spake2::{SPAKE2, Ed25519Group};
+ use spake2::{SPAKE2, SPAKEErr, Ed25519Group, ErrorType};
#[test]
fn test_basic() {
@@ -29,6 +29,35 @@ mod tests {
}
#[test]
+ fn test_mismatch() {
+ let (s1, msg1) = SPAKE2::<Ed25519Group>::start_a(b"password",
+ b"idA", b"idB");
+ let (s2, msg2) = SPAKE2::<Ed25519Group>::start_b(b"password2",
+ b"idA", b"idB");
+ let key1 = s1.finish(msg2.as_slice()).unwrap();
+ let key2 = s2.finish(msg1.as_slice()).unwrap();
+ assert_ne!(key1, key2);
+ }
+
+ #[test]
+ fn test_reflected_message() {
+ let (s1, msg1) = SPAKE2::<Ed25519Group>::start_a(b"password",
+ b"idA", b"idB");
+ let r = s1.finish(msg1.as_slice());
+ assert_eq!(r.unwrap_err(), SPAKEErr{kind: ErrorType::BadSide});
+ }
+
+ #[test]
+ fn test_bad_length() {
+ let (s1, msg1) = SPAKE2::<Ed25519Group>::start_a(b"password",
+ b"idA", b"idB");
+ let mut msg2 = Vec::<u8>::with_capacity(msg1.len()+1);
+ msg2.resize(msg1.len()+1, 0u8);
+ let r = s1.finish(&msg2);
+ assert_eq!(r.unwrap_err(), SPAKEErr{kind: ErrorType::WrongLength});
+ }
+
+ #[test]
fn test_basic_symmetric() {
let (s1, msg1) = SPAKE2::<Ed25519Group>::start_symmetric(b"password",
b"idS");