aboutsummaryrefslogtreecommitdiff
path: root/lockchain-crypto/src/engine.rs
diff options
context:
space:
mode:
Diffstat (limited to 'lockchain-crypto/src/engine.rs')
-rw-r--r--lockchain-crypto/src/engine.rs68
1 files changed, 43 insertions, 25 deletions
diff --git a/lockchain-crypto/src/engine.rs b/lockchain-crypto/src/engine.rs
index 45470c1..e80c846 100644
--- a/lockchain-crypto/src/engine.rs
+++ b/lockchain-crypto/src/engine.rs
@@ -17,53 +17,71 @@ impl Encryptable for DataBody {}
pub struct AesEngine {
ctx: Aes256Siv,
- _key: Key,
+ _key: Option<Key>,
iv: Vec<u8>,
}
impl AesEngine {
- /// Generate new key and encryption engine
- #[deprecated]
- pub fn generate() -> Self {
- let key = Key::new(KeyType::Aes256);
- let len = key.len();
+ /// Initialise an AesEngine and take ownership of a raw key
+ pub fn new(key: Key) -> Self {
+ assert!(key.len() == 64);
+
Self {
ctx: Aes256Siv::new(&key.as_slice()),
- _key: key,
- iv: random::bytes(len),
+ _key: Some(key),
+ iv: random::bytes(64),
}
}
+ /// Generate new key and encryption engine
+ #[deprecated]
+ pub fn generate() -> Self {
+ // let key = Key::new(KeyType::Aes256);
+ // let len = key.len();
+ // Self {
+ // ctx: Aes256Siv::new(&key.as_slice()),
+ // _key: key,
+ // new_key: None,
+ // iv: random::bytes(len),
+ // }
+ unimplemented!()
+ }
+
/// Generate an Aes context from password
#[deprecated]
pub fn from_pw(pw: &str, salt: &str) -> Self {
- let key = Key::from_pw(KeyType::Aes256, pw, salt);
- let len = key.len();
- Self {
- ctx: Aes256Siv::new(&key.as_slice()),
- _key: key,
- iv: random::bytes(len),
- }
+ // let key = Key::from_pw(KeyType::Aes256, pw, salt);
+ // let len = key.len();
+ // Self {
+ // ctx: Aes256Siv::new(&key.as_slice()),
+ // _key: key,
+ // new_key: None,
+ // iv: random::bytes(len),
+ // }
+ unimplemented!()
}
/// Load a packed data object which contains an Aes context
#[deprecated]
pub fn load(packed: PackedData, pw: &str, salt: &str) -> Option<Self> {
- let mut temp = Self::from_pw(pw, salt);
- let k: Key = Key::decode(&String::from_utf8(temp.decrypt_primitive(&packed)?).ok()?).ok()?;
-
- Some(Self {
- ctx: Aes256Siv::new(&k.as_slice()),
- _key: k,
- iv: packed.iv,
- })
+ // let mut temp = Self::from_pw(pw, salt);
+ // let k: Key = Key::decode(&String::from_utf8(temp.decrypt_primitive(&packed)?).ok()?).ok()?;
+
+ // Some(Self {
+ // ctx: Aes256Siv::new(&k.as_slice()),
+ // _key: k,
+ // new_key: None,
+ // iv: packed.iv,
+ // })
+ unimplemented!()
}
/// Serialise the current context to save it somewhere
#[deprecated]
pub fn save(&mut self) -> PackedData {
- let k = self._key.as_slice().into();
- self.encrypt_primitive(&k)
+ // let k = self._key.as_slice().into();
+ // self.encrypt_primitive(&k)
+ unimplemented!()
}
fn encrypt_primitive(&mut self, data: &Vec<u8>) -> PackedData {