feat: Add cache encryption #9

Merged
kamikazechaser merged 10 commits from lash/encrypt into master 2022-01-23 07:59:16 +01:00
2 changed files with 1 additions and 40 deletions
Showing only changes of commit 64c7fa950c - Show all commits

View File

@ -1,38 +0,0 @@
# 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)

View File

@ -65,7 +65,7 @@ class Account(Person):
class FileUserStore: class FileUserStore:
def __init__(self, metadata_opener, chain_spec, label, store_base_path, ttl, encrypter=None): def __init__(self, metadata_opener, chain_spec, label, store_base_path, ttl):
invalidate_before = datetime.datetime.now() - datetime.timedelta(seconds=ttl) invalidate_before = datetime.datetime.now() - datetime.timedelta(seconds=ttl)
self.invalidate_before = int(invalidate_before.timestamp()) self.invalidate_before = int(invalidate_before.timestamp())
self.have_xattr = False self.have_xattr = False
@ -82,7 +82,6 @@ class FileUserStore:
self.__validate_dir() self.__validate_dir()
self.metadata_opener = metadata_opener self.metadata_opener = metadata_opener
self.failed_entities = {} self.failed_entities = {}
self.encrypter = encrypter
def __validate_dir(self): def __validate_dir(self):