bitwarden_core/key_management/
mod.rs1use bitwarden_crypto::{KeyStore, SymmetricCryptoKey, key_ids};
14
15#[cfg(feature = "internal")]
16pub mod crypto;
17#[cfg(feature = "internal")]
18mod crypto_client;
19#[cfg(feature = "internal")]
20pub use crypto_client::CryptoClient;
21
22#[cfg(feature = "internal")]
23mod master_password;
24#[cfg(feature = "internal")]
25pub use master_password::MasterPasswordError;
26#[cfg(feature = "internal")]
27pub(crate) use master_password::{MasterPasswordAuthenticationData, MasterPasswordUnlockData};
28#[cfg(feature = "internal")]
29mod security_state;
30#[cfg(feature = "internal")]
31pub use security_state::{SecurityState, SignedSecurityState};
32#[cfg(feature = "internal")]
33mod user_decryption;
34#[cfg(feature = "internal")]
35pub use user_decryption::UserDecryptionData;
36
37use crate::OrganizationId;
38
39key_ids! {
40 #[symmetric]
41 pub enum SymmetricKeyId {
42 Master,
43 User,
44 Organization(OrganizationId),
45 #[local]
46 Local(LocalId),
47 }
48
49 #[asymmetric]
50 pub enum AsymmetricKeyId {
51 UserPrivateKey,
52 #[local]
53 Local(LocalId),
54 }
55
56 #[signing]
57 pub enum SigningKeyId {
58 UserSigningKey,
59 #[local]
60 Local(LocalId),
61 }
62
63 pub KeyIds => SymmetricKeyId, AsymmetricKeyId, SigningKeyId;
64}
65
66pub fn create_test_crypto_with_user_key(key: SymmetricCryptoKey) -> KeyStore<KeyIds> {
70 let store = KeyStore::default();
71
72 #[allow(deprecated)]
73 store
74 .context_mut()
75 .set_symmetric_key(SymmetricKeyId::User, key.clone())
76 .expect("Mutable context");
77
78 store
79}
80
81pub fn create_test_crypto_with_user_and_org_key(
86 key: SymmetricCryptoKey,
87 org_id: OrganizationId,
88 org_key: SymmetricCryptoKey,
89) -> KeyStore<KeyIds> {
90 let store = KeyStore::default();
91
92 #[allow(deprecated)]
93 store
94 .context_mut()
95 .set_symmetric_key(SymmetricKeyId::User, key.clone())
96 .expect("Mutable context");
97
98 #[allow(deprecated)]
99 store
100 .context_mut()
101 .set_symmetric_key(SymmetricKeyId::Organization(org_id), org_key.clone())
102 .expect("Mutable context");
103
104 store
105}