Skip to content

Commit

Permalink
Refactor make_user_key to call SymmetricCryptoKey::generate_random
Browse files Browse the repository at this point in the history
  • Loading branch information
Hinton committed Jan 11, 2024
1 parent 339f45e commit 22d0253
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 5 deletions.
6 changes: 1 addition & 5 deletions crates/bitwarden/src/crypto/master_key.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
use aes::cipher::{generic_array::GenericArray, typenum::U32};
use base64::{engine::general_purpose::STANDARD, Engine};
use rand::Rng;
use schemars::JsonSchema;
use sha2::Digest;

Expand Down Expand Up @@ -69,10 +68,7 @@ fn make_user_key(
mut rng: impl rand::RngCore,
master_key: &MasterKey,
) -> Result<(UserKey, EncString)> {
let mut user_key = [0u8; 64];
rng.fill(&mut user_key);

let user_key = SymmetricCryptoKey::try_from(user_key.as_slice())?;
let user_key = SymmetricCryptoKey::generate_random(&mut rng)?;
let protected = master_key.encrypt_user_key(&user_key)?;
Ok((UserKey::new(user_key), protected))
}
Expand Down
9 changes: 9 additions & 0 deletions crates/bitwarden/src/crypto/symmetric_crypto_key.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ use std::str::FromStr;

use aes::cipher::{generic_array::GenericArray, typenum::U32};
use base64::{engine::general_purpose::STANDARD, Engine};
use rand::Rng;

use crate::{
crypto::{derive_shareable_key, generate_random_bytes},
Expand All @@ -18,6 +19,14 @@ impl SymmetricCryptoKey {
const KEY_LEN: usize = 32;
const MAC_LEN: usize = 32;

/// Generate a new random [SymmetricCryptoKey]
pub fn generate_random(mut rng: impl rand::RngCore) -> Result<Self, Error> {
let mut key: [u8; 64] = [0u8; 64];
rng.fill(&mut key);

SymmetricCryptoKey::try_from(key.as_slice())
}

pub fn generate(name: &str) -> Self {
let secret: [u8; 16] = generate_random_bytes();
derive_shareable_key(secret, name, None)
Expand Down

0 comments on commit 22d0253

Please sign in to comment.