From a21737e2b7f8d1e426726bdd7536033f299d476a Mon Sep 17 00:00:00 2001 From: Ellie Huxtable Date: Tue, 20 Apr 2021 21:53:07 +0100 Subject: Use cargo workspaces (#37) * Switch to Cargo workspaces Breaking things into "client", "server" and "common" makes managing the codebase much easier! client - anything running on a user's machine for adding history server - handles storing/syncing history and running a HTTP server common - request/response API definitions, common utils, etc * Update dockerfile --- atuin-common/src/utils.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 atuin-common/src/utils.rs (limited to 'atuin-common/src/utils.rs') diff --git a/atuin-common/src/utils.rs b/atuin-common/src/utils.rs new file mode 100644 index 00000000..ac5738b3 --- /dev/null +++ b/atuin-common/src/utils.rs @@ -0,0 +1,29 @@ +use crypto::digest::Digest; +use crypto::sha2::Sha256; +use sodiumoxide::crypto::pwhash::argon2id13; +use uuid::Uuid; + +pub fn hash_secret(secret: &str) -> String { + sodiumoxide::init().unwrap(); + let hash = argon2id13::pwhash( + secret.as_bytes(), + argon2id13::OPSLIMIT_INTERACTIVE, + argon2id13::MEMLIMIT_INTERACTIVE, + ) + .unwrap(); + let texthash = std::str::from_utf8(&hash.0).unwrap().to_string(); + + // postgres hates null chars. don't do that to postgres + texthash.trim_end_matches('\u{0}').to_string() +} + +pub fn hash_str(string: &str) -> String { + let mut hasher = Sha256::new(); + hasher.input_str(string); + + hasher.result_str() +} + +pub fn uuid_v4() -> String { + Uuid::new_v4().to_simple().to_string() +} -- cgit v1.3.1