diff --git a/src/cmd_decrypt.rs b/src/cmd_decrypt.rs index e145511..a69a997 100644 --- a/src/cmd_decrypt.rs +++ b/src/cmd_decrypt.rs @@ -138,10 +138,10 @@ pub fn decrypt_single(config: &Option, let key = SecVec(try_decrypt_key(config, selected_envelop, pin, slot)?); let nonce = SecVec(opt_result!(util::decode_base64(&meta.nonce), "Decode nonce failed: {}")); - let key_nonce = KeyNonce { k: &key.0, n: &nonce.0 }; + let key_nonce = KeyNonce { k: key.as_ref(), n: nonce.as_ref() }; // debugging!("Decrypt key: {}", hex::encode(&key.0)); - util_msg::when_debug(|| debugging!("Decrypt nonce: {}", hex::encode(&nonce.0))); + util_msg::when_debug(|| debugging!("Decrypt nonce: {}", hex::encode(nonce.as_ref()))); let enc_meta = parse_encrypted_meta(&meta, cryptor, &key_nonce)?; parse_encrypted_comment(&meta, cryptor, &key_nonce)?; diff --git a/src/cmd_encrypt.rs b/src/cmd_encrypt.rs index 3c80df0..ce33976 100644 --- a/src/cmd_encrypt.rs +++ b/src/cmd_encrypt.rs @@ -132,9 +132,9 @@ pub fn encrypt_single_file_out(path: &PathBuf, path_out: &str, envelops: &[&Tiny util::require_file_not_exists(path_out)?; let (key, nonce) = util::make_key256_and_nonce(); - let key_nonce = KeyNonce { k: &key.0, n: &nonce.0 }; + let key_nonce = KeyNonce { k: key.as_ref(), n: nonce.as_ref() }; // Encrypt session key to envelops - let envelops = encrypt_envelops(cryptor, &key.0, envelops)?; + let envelops = encrypt_envelops(cryptor, key.as_ref(), envelops)?; let encrypted_comment = match &cmd_encrypt.encrypted_comment { None => None, @@ -162,7 +162,7 @@ pub fn encrypt_single_file_out(path: &PathBuf, path_out: &str, envelops: &[&Tiny }; let encrypt_meta = TinyEncryptMeta::new( - &file_metadata, &enc_metadata, cryptor, &nonce.0, envelops); + &file_metadata, &enc_metadata, cryptor, nonce.as_ref(), envelops); debugging!("Encrypted meta: {:?}", encrypt_meta); let mut file_out = File::create(path_out)?; @@ -305,7 +305,7 @@ fn encrypt_envelop_shared_secret(cryptor: Cryptor, envelop: &TinyEncryptConfigEnvelop) -> XResult { let shared_key = util::simple_kdf(shared_secret); let nonce = util::make_nonce(); - let key_nonce = KeyNonce { k: &shared_key, n: &nonce.0 }; + let key_nonce = KeyNonce { k: &shared_key, n: nonce.as_ref() }; let encrypted_key = crypto_simple::encrypt( cryptor, &key_nonce, key)?; diff --git a/src/util.rs b/src/util.rs index 00669ea..eaff6cb 100644 --- a/src/util.rs +++ b/src/util.rs @@ -19,6 +19,12 @@ impl Drop for SecVec { } } +impl AsRef<[u8]> for SecVec { + fn as_ref(&self) -> &[u8] { + &self.0 + } +} + pub fn read_pin(pin: &Option) -> String { match pin { Some(pin) => pin.to_string(),