feat: Add cache encryption #9
@ -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)
|
|
@ -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):
|
||||||
|
Loading…
Reference in New Issue
Block a user