squaredb_fm 1.0.0-beta

Squaredb - Enhance your DB with extendability and performance.
Documentation
use magic_crypt::MagicCryptTrait;
use magic_crypt::new_magic_crypt;
use magic_crypt::MagicCrypt256;
use std::error::Error;

#[derive(Clone)]
pub struct Encryptor {
  pub instance: MagicCrypt256
}

pub trait EncryptorTrait {
  fn new(key: &str) -> Self;
  fn encrypt(&self, mcrypt: MagicCrypt256, txt: &str) -> Result<String,Box<dyn
  Error>>;
  fn decrypt(&self, mcrypt: MagicCrypt256, encrypted_string: &String) -> Result<String,
  String>;
}

impl EncryptorTrait for Encryptor {
  fn new(key: &str) -> Self {
    Encryptor {
      instance: {
        let mcrypt_init: MagicCrypt256 = new_magic_crypt!(key, 256);
        mcrypt_init
      }
    }
  }

  fn encrypt(&self, mcrypt: MagicCrypt256, txt: &str) -> Result<String,
  Box<dyn
  Error>> {
    let encrypted_txt: String = mcrypt.encrypt_str_to_base64(txt);
    Ok(encrypted_txt)
  }

  fn decrypt(&self, mcrypt: MagicCrypt256, encrypted_string: &String) -> Result<String,
  String> {
    let decrypted_result = mcrypt.decrypt_base64_to_string(&encrypted_string);

    match decrypted_result {
      Ok(decrypt_text) => Ok(decrypt_text),
      Err(err) => Err(err.to_string()),
    }

  }
}