Add back crypt module

This commit is contained in:
lash 2022-01-21 10:15:43 +00:00
parent f17e31d801
commit 36b4fcab93
Signed by: lash
GPG Key ID: 21D2E7BB88C2A746
1 changed files with 38 additions and 0 deletions

38
clicada/crypt.py Normal file
View File

@ -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)