keychain-uses-objects
quadrismegistus 4 years ago
parent caf447d77d
commit 0fbfd94b19

@ -16,8 +16,11 @@ LOG_GET_SET = True
class Crypt(Logger): class Crypt(Logger):
def __init__(self,name=None,fn=None,cell=None,init_d=None,use_secret=CRYPT_USE_SECRET,path_secret=PATH_CRYPT_SECRET): def __init__(self,name=None,fn=None,cell=None,init_d=None,use_secret=CRYPT_USE_SECRET,path_secret=PATH_CRYPT_SECRET,encrypt_values=True,path_encrypt_key=PATH_CRYPT_SECRET_KEY):
if not name and fn: name=os.path.basename(fn).replace('.','_') if not name and fn: name=os.path.basename(fn).replace('.','_')
self.name,self.fn,self.cell=name,fn,cell
self.encryptor_key = None
if use_secret and path_secret: if use_secret and path_secret:
if not os.path.exists(path_secret): if not os.path.exists(path_secret):
@ -32,7 +35,32 @@ class Crypt(Logger):
else: else:
self.secret = b'' self.secret = b''
self.name,self.fn,self.cell = name,fn,cell self.encrypt_values = encrypt_values
if encrypt_values:
if self.cell:
pass
elif path_encrypt_key:
if not os.path.exists(path_encrypt_key):
from komrade.backend.keymaker import KomradeSymmetricKeyWithoutPassphrase
self.encryptor_key = KomradeSymmetricKeyWithoutPassphrase()
with open(path_encrypt_key,'wb') as of:
of.write(self.encryptor_key.data)
from komrade.backend.keymaker import make_key_discreet_str
self.log(f'shhh! creating secret at {path_encrypt_key}:',make_key_discreet_str(self.encryptor_key.data_b64_s))
else:
with open(path_encrypt_key,'rb') as f:
self.encryptor_key = KomradeSymmetricKeyWithoutPassphrase(
key=f.read()
)
else:
self.log('cannot encrypt values!')
else:
self.encryptor_key=None
if self.encryptor_key and not self.cell: self.cell = self.encryptor_key.cell
self.store = FilesystemStore(self.fn) self.store = FilesystemStore(self.fn)
if init_d: if init_d:
for k,v in init_d.items(): for k,v in init_d.items():

@ -85,8 +85,6 @@ class TheOperator(Operator):
return msg_sealed return msg_sealed
# def find_pubkey(self):
# return self.operator_keychain['pubkey']
def send(self,encr_data_b): def send(self,encr_data_b):

@ -16,8 +16,6 @@ class TheTelephone(Operator):
keychain = check_phonelines()[TELEPHONE_NAME] keychain = check_phonelines()[TELEPHONE_NAME]
self._keychain = self.load_keychain_from_bytes(keychain) self._keychain = self.load_keychain_from_bytes(keychain)
# def find_pubkey(self):
# return self.telephone_keychain.get('pubkey')
def send_and_receive(self,msg_d,**y): def send_and_receive(self,msg_d,**y):
msg_b=msg_d["msg"] msg_b=msg_d["msg"]

@ -21,12 +21,15 @@ PATH_CRYPT_OP_DATA = os.path.join(PATH_KOMRADE_DATA,'.op.db.data.encr')
PATH_CRYPT_CA_KEYS = PATH_CRYPT_OP_KEYS PATH_CRYPT_CA_KEYS = PATH_CRYPT_OP_KEYS
PATH_CRYPT_CA_DATA = PATH_CRYPT_OP_DATA PATH_CRYPT_CA_DATA = PATH_CRYPT_OP_DATA
PATH_QRCODES = os.path.join(PATH_KOMRADE,'.contacts') PATH_QRCODES = os.path.join(PATH_KOMRADE,'.contacts')
for x in [PATH_KOMRADE,PATH_KOMRADE_DATA,PATH_KOMRADE_KEYS,PATH_QRCODES]: PATH_SECRETS = os.path.join(PATH_KOMRADE,'.secret')
for x in [PATH_KOMRADE,PATH_KOMRADE_DATA,PATH_KOMRADE_KEYS,PATH_QRCODES,PATH_SECRETS]:
if not os.path.exists(x): if not os.path.exists(x):
os.makedirs(x) os.makedirs(x)
CRYPT_USE_SECRET = True CRYPT_USE_SECRET = True
PATH_CRYPT_SECRET = os.path.join(PATH_KOMRADE,'.secret') PATH_CRYPT_SECRET = os.path.join(PATH_SECRETS,'.salt')
PATH_CRYPT_SECRET_KEY = os.path.join(PATH_SECRETS,'.key')
# etc # etc
BSEP=b'||||||||||' BSEP=b'||||||||||'

Loading…
Cancel
Save