Store key instead of byte array of the key in filename decoder
This commit is contained in:
parent
c748297aa2
commit
c4a60e7a46
|
@ -1,12 +1,14 @@
|
|||
use aes::Aes256;
|
||||
use cipher::{block_padding::Pkcs7, KeyIvInit};
|
||||
use eme_mode::DynamicEme;
|
||||
use cipher::{block_padding::Pkcs7, Iv, Key, KeyIvInit};
|
||||
use eme_mode::{DynamicEme};
|
||||
use hkdf::Hkdf;
|
||||
|
||||
use crate::error::FilenameDecryptError;
|
||||
|
||||
type EmeCipher = DynamicEme<Aes256>;
|
||||
|
||||
pub struct FilenameDecoder {
|
||||
filename_key: [u8; 32],
|
||||
filename_key: Key<Aes256>,
|
||||
}
|
||||
|
||||
impl FilenameDecoder {
|
||||
|
@ -15,10 +17,13 @@ impl FilenameDecoder {
|
|||
let hdkf = Hkdf::<sha2::Sha256>::new(None, &master_key);
|
||||
hdkf.expand(b"EME filename encryption", &mut key)?;
|
||||
|
||||
Ok(Self { filename_key: key })
|
||||
Ok(Self {
|
||||
filename_key: Key::<EmeCipher>::from(key),
|
||||
})
|
||||
}
|
||||
|
||||
pub fn get_decoder_for_dir<'a, 'b>(&'a self, iv: &'b [u8]) -> DirFilenameDecoder<'a, 'b> {
|
||||
let iv = Iv::<EmeCipher>::from_slice(iv);
|
||||
DirFilenameDecoder {
|
||||
filename_key: &self.filename_key,
|
||||
iv,
|
||||
|
@ -27,14 +32,13 @@ impl FilenameDecoder {
|
|||
}
|
||||
|
||||
pub struct DirFilenameDecoder<'a, 'b> {
|
||||
filename_key: &'a [u8],
|
||||
iv: &'b [u8],
|
||||
filename_key: &'a Key<EmeCipher>,
|
||||
iv: &'b Iv<EmeCipher>,
|
||||
}
|
||||
|
||||
impl<'a, 'b> DirFilenameDecoder<'a, 'b> {
|
||||
pub fn decode_filename(&self, name: &str) -> Result<String, FilenameDecryptError> {
|
||||
let cipher = DynamicEme::<Aes256>::new_from_slices(self.filename_key, self.iv)
|
||||
.expect("failed to get filename cipher");
|
||||
let cipher = EmeCipher::new(self.filename_key, self.iv);
|
||||
|
||||
let mut filename = base64::decode_config(name, base64::URL_SAFE)?;
|
||||
let filename_decoded = cipher
|
||||
|
|
Loading…
Reference in New Issue