From 36b4fcab93ea22b076d4d75dc633fdfbdf6671c1 Mon Sep 17 00:00:00 2001 From: lash Date: Fri, 21 Jan 2022 10:15:43 +0000 Subject: [PATCH] Add back crypt module --- clicada/crypt.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 clicada/crypt.py diff --git a/clicada/crypt.py b/clicada/crypt.py new file mode 100644 index 0000000..b917098 --- /dev/null +++ b/clicada/crypt.py @@ -0,0 +1,38 @@ +# standard imports +import os +import logging + +from Crypto.Cipher import AES +from Crypto.Util import Counter + +logg = logging.getLogger(__name__) + + +class Encrypt: + + aesBlockSize = 1 << 7 + + def __init__(self, secret, db_dir): + fp = os.path.join(db_dir, '.aes_ctr_iv') + try: + f = open(fp, 'rb') + self.iv = f.read() + except FileNotFoundError: + logg.debug('generating new iv for aes-ctr') + self.iv = os.urandom(8) + f = open(fp, 'wb') + f.write(self.iv) + + f.close() + + iv_num = int.from_bytes(self.iv, 'big') + self.ctr = Counter.new(aesBlockSize, initial_value=iv_num) + self.cipher = AES.new(secret, AES.MODE_CTR, counter=self.ctr) + + + def encrypt(self, v): + return self.cipher.encrypt(v) + + + def decrypt(self, v): + return self.cipher.decrypt(v)