diff options
author | metamuffin <metamuffin@disroot.org> | 2023-10-29 16:52:30 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-10-29 16:52:30 +0100 |
commit | e28eedd42b9d289238d87b0858a6cfa879fc772e (patch) | |
tree | d46cc40f63331fae926b3821b5b5ba1934708a3d /client-native-lib/src/crypto.rs | |
parent | 695e497e86d47b14622299d5f2d47d14e0118d4f (diff) | |
download | keks-meet-0.2.3.tar keks-meet-0.2.3.tar.bz2 keks-meet-0.2.3.tar.zst |
use pbkdf2 for room hash roo0.2.3
Diffstat (limited to 'client-native-lib/src/crypto.rs')
-rw-r--r-- | client-native-lib/src/crypto.rs | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/client-native-lib/src/crypto.rs b/client-native-lib/src/crypto.rs index b477859..ad36e02 100644 --- a/client-native-lib/src/crypto.rs +++ b/client-native-lib/src/crypto.rs @@ -12,16 +12,19 @@ use log::info; pub struct Key(Aes256Gcm); +const CRYPTO_SALT: &'static str = "keksmeet/cryptosaltAAA=="; +const HASH_SALT: &'static str = "keksmeet/roomhashsaltA=="; + impl Key { pub fn derive(secret: &str) -> Self { info!("running key generation..."); let salt = base64::engine::general_purpose::STANDARD - .decode("thisisagoodsaltAAAAAAA==") + .decode(CRYPTO_SALT) .unwrap(); - let mut key = [0u8; 32]; - fastpbkdf2::pbkdf2_hmac_sha256(secret.as_bytes(), salt.as_slice(), 250000, &mut key); + let mut key = [0u8; 64]; + fastpbkdf2::pbkdf2_hmac_sha512(secret.as_bytes(), salt.as_slice(), 250000, &mut key); - let key = Aes256Gcm::new_from_slice(key.as_slice()).unwrap(); + let key = Aes256Gcm::new_from_slice(&key[0..32]).unwrap(); info!("done"); Self(key) @@ -43,5 +46,10 @@ impl Key { } pub fn hash(secret: &str) -> String { - sha256::digest(format!("also-a-very-good-salt{}", secret)) + let salt = base64::engine::general_purpose::STANDARD + .decode(HASH_SALT) + .unwrap(); + let mut key = [0u8; 64]; + fastpbkdf2::pbkdf2_hmac_sha512(secret.as_bytes(), salt.as_slice(), 250000, &mut key); + hex::encode(&key[0..32]) } |