From abb462ef8540b170d518fea968a3adb13d809ddc Mon Sep 17 00:00:00 2001 From: linkmauve Date: Fri, 10 Jan 2020 18:34:31 +0100 Subject: [PATCH 1/2] Replace sha1 dependency with sha-1 (#1258) * Replace sha1 dependency with sha-1 This other crate is being maintained, and it offers better performances when using the `asm` feature (especially [on AArch64](https://github.com/RustCrypto/hashes/pull/97)). * Update CHANGES.md with the sha-1 migration * Add a test for hash_key() --- CHANGES.md | 6 ++++++ actix-http/Cargo.toml | 2 +- actix-http/src/ws/proto.rs | 13 ++++++++++--- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 2f96dce5d..29f78e0b1 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,11 @@ # Changes +## [2.0.NEXT] - 2020-01-xx + +### Changed + +* Use `sha-1` crate instead of unmaintained `sha1` crate + ## [2.0.0] - 2019-12-25 ### Changed diff --git a/actix-http/Cargo.toml b/actix-http/Cargo.toml index 367dbafec..93aaa756e 100644 --- a/actix-http/Cargo.toml +++ b/actix-http/Cargo.toml @@ -74,7 +74,7 @@ rand = "0.7" regex = "1.3" serde = "1.0" serde_json = "1.0" -sha1 = "0.6" +sha-1 = "0.8" slab = "0.4" serde_urlencoded = "0.6.1" time = "0.1.42" diff --git a/actix-http/src/ws/proto.rs b/actix-http/src/ws/proto.rs index ad42b7a6b..60af6f08b 100644 --- a/actix-http/src/ws/proto.rs +++ b/actix-http/src/ws/proto.rs @@ -207,12 +207,13 @@ static WS_GUID: &str = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; // TODO: hash is always same size, we dont need String pub fn hash_key(key: &[u8]) -> String { + use sha1::Digest; let mut hasher = sha1::Sha1::new(); - hasher.update(key); - hasher.update(WS_GUID.as_bytes()); + hasher.input(key); + hasher.input(WS_GUID.as_bytes()); - base64::encode(&hasher.digest().bytes()) + base64::encode(hasher.result().as_ref()) } #[cfg(test)] @@ -277,6 +278,12 @@ mod test { assert_eq!(format!("{}", OpCode::Bad), "BAD"); } + #[test] + fn test_hash_key() { + let hash = hash_key(b"hello actix-web"); + assert_eq!(&hash, "cR1dlyUUJKp0s/Bel25u5TgvC3E="); + } + #[test] fn closecode_from_u16() { assert_eq!(CloseCode::from(1000u16), CloseCode::Normal); From 7c974ee6687229a61760331baf3f749843c23d6c Mon Sep 17 00:00:00 2001 From: Jacob Brown Date: Fri, 10 Jan 2020 12:55:20 -0600 Subject: [PATCH 2/2] Update doc comment for `HttpRequest::app_data` (#1265) * update doc comment for `HttpRequest::app_data` * add `no_run` to doc comment * add `ignore` to doc comment * Update src/request.rs Co-Authored-By: Yuki Okushi Co-authored-by: Yuki Okushi --- src/request.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/request.rs b/src/request.rs index b51438950..cd9c72313 100644 --- a/src/request.rs +++ b/src/request.rs @@ -206,8 +206,14 @@ impl HttpRequest { &self.0.config } - /// Get an application data stored with `App::extension()` method during - /// application configuration. + /// Get an application data object stored with `App::data` or `App::app_data` + /// methods during application configuration. + /// + /// If `App::data` was used to store object, use `Data`: + /// + /// ```rust,ignore + /// let opt_t = req.app_data::>(); + /// ``` pub fn app_data(&self) -> Option<&T> { if let Some(st) = self.0.app_data.get::() { Some(&st)