diff options
Diffstat (limited to 'lockchain-core/src/users')
-rw-r--r-- | lockchain-core/src/users/userstore.rs | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/lockchain-core/src/users/userstore.rs b/lockchain-core/src/users/userstore.rs index 5355cdb..51d78a8 100644 --- a/lockchain-core/src/users/userstore.rs +++ b/lockchain-core/src/users/userstore.rs @@ -1,7 +1,6 @@ //! Merging `KeyStore` and `Userstore` into the same concept use super::rights::Access; -use crypto::Key; use std::collections::HashMap; use traits::AutoEncoder; @@ -18,7 +17,7 @@ pub struct UserStore { #[derive(Serialize, Deserialize)] pub struct StoreUser { name: String, - keys: HashMap<Access, Key>, + keys: HashMap<Access, Vec<u8>>, } impl AutoEncoder for UserStore {} @@ -34,7 +33,7 @@ impl UserStore { } } /// Adds a new user to the store, with a root-key - pub fn add_user(&mut self, name: String, key: Key) { + pub fn add_user(&mut self, name: String, key: Vec<u8>) { let mut user = StoreUser { name: name.clone(), keys: HashMap::new(), @@ -47,7 +46,7 @@ impl UserStore { self.store.remove(name); } /// Add a key to an existing user - pub fn add_key(&mut self, user: String, k: Key, access: Access) { + pub fn add_key(&mut self, user: String, k: Vec<u8>, access: Access) { if !self.store.contains_key(&user) { return; } @@ -55,7 +54,13 @@ impl UserStore { self.store.get_mut(&user).unwrap().keys.insert(access, k); } - pub fn get_key(&self, user: String, access: Access) -> Option<&Key> { - self.store.get(&user).map_or(None, |u| u.keys.get(&access)) + pub fn get_root_key(&self, user: &str) -> Option<&Vec<u8>> { + self.store + .get(user) + .map_or(None, |u| u.keys.get(&Access::Root)) + } + + pub fn get_key(&self, user: &str, access: Access) -> Option<&Vec<u8>> { + self.store.get(user).map_or(None, |u| u.keys.get(&access)) } } |