[server] Remove old code, fix double deletion
This commit is contained in:
parent
83999d7680
commit
83d2b0a5a1
3 changed files with 5 additions and 57 deletions
|
@ -53,9 +53,9 @@ pub struct Keyring {
|
|||
}
|
||||
|
||||
impl Keyring {
|
||||
pub fn new_from_path(path: &PathBuf, keep: bool) -> Result<Keyring, KeyringError> {
|
||||
pub fn new_from_path(path: &PathBuf) -> Result<Keyring, KeyringError> {
|
||||
let keyring = Keyring {
|
||||
master: key_from_path(path, keep)?,
|
||||
master: key_from_path(path)?,
|
||||
clients: HashMap::new(),
|
||||
};
|
||||
|
||||
|
@ -63,21 +63,19 @@ impl Keyring {
|
|||
}
|
||||
|
||||
pub fn add_key_from_path(&mut self, path: &PathBuf, keep: bool) -> Result<(), KeyringError> {
|
||||
let client_key: ClientKey = key_from_path(path, keep)?;
|
||||
let client_key: ClientKey = key_from_path(path)?;
|
||||
self.clients.insert(client_key.id.clone(), client_key);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
fn key_from_path<T>(path: &PathBuf, keep: bool) -> Result<T, KeyringError>
|
||||
fn key_from_path<T>(path: &PathBuf) -> Result<T, KeyringError>
|
||||
where T: serde::de::DeserializeOwned
|
||||
{
|
||||
|
||||
let mk_file = File::open(path)?;
|
||||
let key = serde_cbor::from_reader(mk_file)?;
|
||||
|
||||
if !keep { std::fs::remove_file(path)? };
|
||||
|
||||
Ok(key)
|
||||
}
|
||||
|
|
|
@ -44,7 +44,7 @@ impl Coffer {
|
|||
/// public key
|
||||
pub fn new_from_path_encrypted(masterkey: &PathBuf, secrets: &PathBuf, keep: bool) -> Result<Coffer> {
|
||||
debug!{"Initializing keyring"}
|
||||
let keyring = Keyring::new_from_path(masterkey, keep)?;
|
||||
let keyring = Keyring::new_from_path(masterkey)?;
|
||||
|
||||
debug!{"Loading secrets"}
|
||||
let mut sec_data = Vec::new();
|
||||
|
|
|
@ -1,50 +0,0 @@
|
|||
use std::collections::HashMap;
|
||||
use sodiumoxide::crypto::box_;
|
||||
|
||||
use serde::{Serialize, Deserialize};
|
||||
|
||||
#[derive(Debug,Serialize,Deserialize)]
|
||||
pub struct MasterKey (String, box_::SecretKey, box_::PublicKey);
|
||||
|
||||
#[derive(Debug,Serialize,Deserialize)]
|
||||
pub struct ClientKey (String, box_::PublicKey);
|
||||
|
||||
#[derive(Default)]
|
||||
struct KeyStore {
|
||||
keys: HashMap<String, ClientKey>
|
||||
}
|
||||
|
||||
impl KeyStore {
|
||||
fn get(&self, key: &str) -> Option<&ClientKey> {
|
||||
self.keys.get(key)
|
||||
}
|
||||
}
|
||||
|
||||
pub struct KeyRing {
|
||||
master: MasterKey,
|
||||
keystore: KeyStore
|
||||
}
|
||||
|
||||
impl KeyRing {
|
||||
pub fn new(master: MasterKey) -> KeyRing {
|
||||
KeyRing {master, keystore: KeyStore::default()}
|
||||
}
|
||||
|
||||
pub fn seal(&self, data: &[u8], nonce: &[u8], id: String) -> Vec<u8> {
|
||||
let nonce = box_::Nonce::from_slice(nonce).unwrap();
|
||||
let sender_sk = &self.master.1;
|
||||
let receiver_pk = &self.keystore.get(&id).unwrap().1;
|
||||
box_::seal(&data, &nonce, &receiver_pk, &sender_sk)
|
||||
}
|
||||
|
||||
pub fn unseal(&self, data: &[u8], nonce: &[u8], id: String) -> Vec<u8> {
|
||||
let nonce = box_::Nonce::from_slice(nonce).unwrap();
|
||||
let receiver_sk = &self.master.1;
|
||||
let sender_pk = &self.keystore.get(&id).unwrap().1;
|
||||
box_::open(&data, &nonce, &sender_pk, &receiver_sk).unwrap()
|
||||
}
|
||||
|
||||
pub fn add_key(&mut self, id: String, pubkey: [u8;32]) {
|
||||
self.keystore.keys.insert(id.clone(), ClientKey(id, box_::PublicKey::from_slice(&pubkey).unwrap()));
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue