]> git.lizzy.rs Git - PAKEs.git/commitdiff
spake2: bump `hkdf` to v0.12; `sha2` to v0.10 (#86)
authorTony Arcieri <bascule@gmail.com>
Sat, 22 Jan 2022 21:57:40 +0000 (14:57 -0700)
committerGitHub <noreply@github.com>
Sat, 22 Jan 2022 21:57:40 +0000 (14:57 -0700)
Cargo.lock
spake2/Cargo.toml
spake2/src/lib.rs
spake2/src/tests.rs

index 0e101f7d2dcbf1e14c31c43f5db0c3f4cffd74b0..a4eecc12491019a5d2c6f5eee8e1886d19190bfb 100644 (file)
@@ -26,15 +26,6 @@ version = "1.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 
-[[package]]
-name = "block-buffer"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
-dependencies = [
- "generic-array",
-]
-
 [[package]]
 name = "block-buffer"
 version = "0.10.0"
@@ -83,16 +74,6 @@ dependencies = [
  "generic-array",
 ]
 
-[[package]]
-name = "crypto-mac"
-version = "0.11.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714"
-dependencies = [
- "generic-array",
- "subtle",
-]
-
 [[package]]
 name = "curve25519-dalek"
 version = "3.2.0"
@@ -121,9 +102,10 @@ version = "0.10.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b697d66081d42af4fba142d56918a3cb21dc8eb63372c6b85d14f44fb9c5979b"
 dependencies = [
- "block-buffer 0.10.0",
+ "block-buffer",
  "crypto-common",
  "generic-array",
+ "subtle",
 ]
 
 [[package]]
@@ -167,22 +149,20 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0"
 
 [[package]]
 name = "hkdf"
-version = "0.11.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01706d578d5c281058480e673ae4086a9f4710d8df1ad80a5b03e39ece5f886b"
+checksum = "94f41e9c77b6fc05b57497b960aad55942a9bbc5b20e1e623cf7fb1868f695d1"
 dependencies = [
- "digest 0.9.0",
  "hmac",
 ]
 
 [[package]]
 name = "hmac"
-version = "0.11.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b"
+checksum = "ddca131f3e7f2ce2df364b57949a9d47915cfbd35e46cfee355ccebbf794d6a2"
 dependencies = [
- "crypto-mac",
- "digest 0.9.0",
+ "digest 0.10.1",
 ]
 
 [[package]]
@@ -227,12 +207,6 @@ dependencies = [
  "autocfg 1.0.1",
 ]
 
-[[package]]
-name = "opaque-debug"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
-
 [[package]]
 name = "rand"
 version = "0.6.5"
@@ -368,19 +342,6 @@ dependencies = [
  "digest 0.10.1",
 ]
 
-[[package]]
-name = "sha2"
-version = "0.9.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b69f9a4c9740d74c5baa3fd2e547f9525fa8088a8a958e0ca2409a514e33f5fa"
-dependencies = [
- "block-buffer 0.9.0",
- "cfg-if",
- "cpufeatures",
- "digest 0.9.0",
- "opaque-debug",
-]
-
 [[package]]
 name = "sha2"
 version = "0.10.1"
@@ -402,7 +363,7 @@ dependencies = [
  "hkdf",
  "num-bigint",
  "rand_core 0.5.1",
- "sha2 0.9.8",
+ "sha2",
 ]
 
 [[package]]
@@ -417,7 +378,7 @@ dependencies = [
  "num-traits",
  "rand",
  "sha-1",
- "sha2 0.10.1",
+ "sha2",
  "subtle",
 ]
 
index ce27c5beea666075b21f603ec35a29b154222ba9..febbb6dedf33492d31396e6dc46f571381dc8e1d 100644 (file)
@@ -17,12 +17,12 @@ rust-version = "1.56"
 [dependencies]
 curve25519-dalek = "3"
 rand_core = { version = "0.5", default-features = false, features = ["getrandom"] }
-sha2 = "0.9"
-hkdf = "0.11"
-hex = "0.4"
+sha2 = "0.10"
+hkdf = "0.12"
 
 [dev-dependencies]
 bencher = "0.1"
+hex = "0.4"
 num-bigint = "0.4"
 
 [[bench]]
index 79517a7dd9b15852e1be97bda37a00f44fd8f0e7..1c87a5cdc0230ff5115325bf23a6c8db1239812e 100644 (file)
 //! [6]: http://eprint.iacr.org/2003/038.pdf "Pretty-Simple Password-Authenticated Key-Exchange Under Standard Assumptions"
 //! [7]: https://moderncrypto.org/mail-archive/curves/2015/000419.html "PAKE questions"
 
-use curve25519_dalek::constants::ED25519_BASEPOINT_POINT;
-use curve25519_dalek::edwards::CompressedEdwardsY;
-use curve25519_dalek::edwards::EdwardsPoint as c2_Element;
-use curve25519_dalek::scalar::Scalar as c2_Scalar;
+use core::{fmt, ops::Deref, str};
+use curve25519_dalek::{
+    constants::ED25519_BASEPOINT_POINT,
+    edwards::{CompressedEdwardsY, EdwardsPoint as c2_Element},
+    scalar::Scalar as c2_Scalar,
+};
 use hkdf::Hkdf;
 use rand_core::{CryptoRng, OsRng, RngCore};
 use sha2::{Digest, Sha256};
-use std::fmt;
-use std::ops::Deref;
 
 /* "newtype pattern": it's a Vec<u8>, but only used for a specific argument
  * type, to distinguish between ones that are meant as passwords, and ones
@@ -740,24 +740,35 @@ impl<G: Group> SPAKE2<G> {
     }
 }
 
-fn maybe_utf8(s: &[u8]) -> String {
-    match String::from_utf8(s.to_vec()) {
-        Ok(m) => format!("(s={})", m),
-        Err(_) => format!("(hex={})", hex::encode(s)),
-    }
-}
-
 impl<G: Group> fmt::Debug for SPAKE2<G> {
     fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
         fmt.debug_struct("SPAKE2")
             .field("group", &G::name())
             .field("side", &self.side)
-            .field("idA", &maybe_utf8(&self.id_a))
-            .field("idB", &maybe_utf8(&self.id_b))
-            .field("idS", &maybe_utf8(&self.id_s))
+            .field("idA", &MaybeUtf8(&self.id_a))
+            .field("idB", &MaybeUtf8(&self.id_b))
+            .field("idS", &MaybeUtf8(&self.id_s))
             .finish()
     }
 }
 
+struct MaybeUtf8<'a>(&'a [u8]);
+
+impl fmt::Debug for MaybeUtf8<'_> {
+    fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
+        if let Ok(s) = str::from_utf8(self.0) {
+            write!(fmt, "(s={})", s)
+        } else {
+            write!(fmt, "(hex=")?;
+
+            for byte in self.0 {
+                write!(fmt, "{:x}", byte)?;
+            }
+
+            write!(fmt, ")")
+        }
+    }
+}
+
 #[cfg(test)]
 mod tests;
index e452fce6152bc265c9e8000b0b1fb801bf3aaea7..45999533113038c5cd69c4abe318e5f691d5174a 100644 (file)
@@ -187,7 +187,7 @@ fn test_debug() {
     println!("s1: {:?}", s1);
     assert_eq!(
         format!("{:?}", s1),
-        "SPAKE2 { group: \"Ed25519\", side: A, idA: \"(s=idA)\", idB: \"(s=idB)\", idS: \"(s=)\" }"
+        "SPAKE2 { group: \"Ed25519\", side: A, idA: (s=idA), idB: (s=idB), idS: (s=) }"
     );
 
     let (s2, _msg1) = SPAKE2::<Ed25519Group>::start_symmetric(
@@ -195,6 +195,8 @@ fn test_debug() {
         &Identity::new(b"idS"),
     );
     println!("s2: {:?}", s2);
-    assert_eq!(format!("{:?}", s2),
-               "SPAKE2 { group: \"Ed25519\", side: Symmetric, idA: \"(s=)\", idB: \"(s=)\", idS: \"(s=idS)\" }");
+    assert_eq!(
+        format!("{:?}", s2),
+        "SPAKE2 { group: \"Ed25519\", side: Symmetric, idA: (s=), idB: (s=), idS: (s=idS) }"
+    );
 }