use crate::Aes256;
use crate::KeyInit;
use crate::BlockEncrypt;
use crate::get_generic_array;
use crate::OMFE;
pub struct Encryptor {
text: String,
raw_bytes: Vec<u8>
}
impl From<&String> for Encryptor {
fn from(value: &String) -> Self {
Self { text: value.to_owned(), raw_bytes: vec![] }
}
}
impl Encryptor {
fn convert_into_bytes(&mut self) {
self.raw_bytes = self.text.as_bytes().to_owned();
}
pub fn encrypt_with(&mut self, key: &String) -> Vec<u8> {
self.convert_into_bytes();
let (key, mut deref_generic_block) = *get_generic_array(self, key);
let aes_object = Aes256::new(&key);
aes_object.encrypt_blocks(deref_generic_block.as_mut_slice());
deref_generic_block.concat().into_iter().collect::<Vec<u8>>()
}
}
impl OMFE for Encryptor {
fn get_raw_bytes(&self) -> Vec<u8> {
self.raw_bytes.to_owned()
}
}