From a9e2a3472b622546aa8ce076e1dd4554cb26ebef Mon Sep 17 00:00:00 2001 From: MedzikUser Date: Tue, 19 Apr 2022 23:12:48 +0200 Subject: [PATCH] feat: zeroize the user's unencrypted password, and other unencrypted values from memory --- Cargo.lock | 34 ++++++++++++++++++++++++++++++++++ types/Cargo.toml | 4 ++++ types/src/auth/login.rs | 6 ++++-- 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 90c69e4..ca23d1f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -535,6 +535,7 @@ dependencies = [ "thiserror", "toml", "uuid", + "zeroize", ] [[package]] @@ -1371,6 +1372,18 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20518fe4a4c9acf048008599e464deb21beeae3d3578418951a189c235a7a9a8" +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "unicode-xid", +] + [[package]] name = "termcolor" version = "1.1.3" @@ -1874,3 +1887,24 @@ name = "windows_x86_64_msvc" version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9" + +[[package]] +name = "zeroize" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eb5728b8afd3f280a869ce1d4c554ffaed35f45c231fc41bfbd0381bef50317" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] diff --git a/types/Cargo.toml b/types/Cargo.toml index 181c29b..139c1fd 100644 --- a/types/Cargo.toml +++ b/types/Cargo.toml @@ -16,6 +16,10 @@ anyhow = "1.0.56" version = "1.0.136" features = ["derive"] +[dependencies.zeroize] +version = "1.5.4" +features = ["derive"] + [dependencies.axum] version = "0.5.3" optional = true diff --git a/types/src/auth/login.rs b/types/src/auth/login.rs index 301d515..bc9ab56 100644 --- a/types/src/auth/login.rs +++ b/types/src/auth/login.rs @@ -1,12 +1,14 @@ use serde::{Deserialize, Serialize}; +use zeroize::{Zeroize, ZeroizeOnDrop}; -#[derive(Debug, Serialize, Deserialize, Clone)] +#[derive(Debug, Serialize, Deserialize, Clone, Zeroize, ZeroizeOnDrop)] pub struct Request { + #[zeroize(skip)] pub username: String, pub password: String, } -#[derive(Debug, Serialize, Deserialize, Clone)] +#[derive(Debug, Serialize, Deserialize, Clone, Zeroize, ZeroizeOnDrop)] pub enum Response { LoggedIn { access_token: String }, }