feat: zeroize the user's unencrypted password, and other unencrypted values from memory

This commit is contained in:
MedzikUser 2022-04-19 23:12:48 +02:00
parent 99f0623f1f
commit a9e2a3472b
No known key found for this signature in database
GPG Key ID: A5FAC1E185C112DB
3 changed files with 42 additions and 2 deletions

34
Cargo.lock generated
View File

@ -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",
]

View File

@ -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

View File

@ -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 },
}