nothing-unencr
quadrismegistus 4 years ago
parent 8e5bfe2237
commit ff19a08a2d

@ -202,30 +202,32 @@ class Operator(Keymaker):
assert data.count(BSEP) == 3
(
unencr_header, # Tele.pubkey_encr|Op.pubkey_decr
data_encr_phone2op,
data_encr_caller2op,
data_encr_phone2phone,
data_encr_caller2phone,
data_encr_caller2caller
) = data.split(BSEP)
# set up
DATA = {}
# layer 1: unencr
# get other keys from halfkeys
phone_pubkey,op_pubkey = self.reassemble_nec_keys_using_header(unencr_header)
# assuming the entire message is to me, whoever I am
op_keychain = self.keychain()
op_privkey = my_keychain.get('privkey')
self.log('keychain',self.keychain())
self.log('to_privkey',to_privkey)
from_phone_pubkey,to_phone_pubkey = self.reassemble_nec_keys_using_header(unencr_header)
# layer 2: I know I (either Telephone or Operator) am the recipient of this msg
to_phone = self
to_keychain = self.keychain()
to_privkey = to_keychain.get('privkey')
# 2) decrypt from phone
self.log('data_encr_by_phone',data_encr_phone2op)
self.log('data_encr_by_phone',data_encr_phone2phone)
self.log('phone_pubkey',phone_pubkey)
data_by_phone = self.decrypt_from_send(data_encr_phone2op,phone_pubkey,op_privkey)
data_phone2phone = self.decrypt_from_send(
msg_encr=data_encr_phone2op,
from_pubkey=,
to_privkey=
)
self.log('data_by_phone',data_by_phone)
# 3) decrypt from caller
@ -283,6 +285,48 @@ class Operator(Keymaker):
self.log('reassembled phone/op pubkeys:',phone_pubkey,op_pubkey)
return (phone_pubkey,op_pubkey)
def discover_which_phones_from_header(self,unencr_header):
assert unencr_header.count(BSEP2)==1
from_phone_pubkey_encr,to_phone_pubkey_decr = unencr_header.split(BSEP2)
phone_keychain = self.phone.keychain()
op_keychain = self.phone.keychain()
# was this sent from Phone -> Op?
to_phone=None
from_phone=None
op_fits_as_to_phone=False
tele_fits_as_to_phone=False
op_fits_as_from_phone=False
tele_fits_as_from_phone=False
if self.op.pubkey_encr_:
op_fits_as_to_phone = self.assemble_key(self.op.pubkey_encr_,to_phone_pubkey_decr)
if self.phone.pubkey_encr_:
tele_fits_as_to_phone = self.assemble_key(self.phone.pubkey_encr_,to_phone_pubkey_decr)
if self.op.pubkey_decr_:
op_fits_as_from_phone = self.assemble_key(self.op.pubkey_decr_,from_phone_pubkey_encr)
if self.phone.pubkey_decr_:
tele_fits_as_from_phone = self.assemble_key(self.phone.pubkey_decr_,from_phone_pubkey_encr)
self.log('op_fits_as_to_phone',op_fits_as_to_phone)
self.log('tele_fits_as_to_phone',tele_fits_as_to_phone)
self.log('op_fits_as_from_phone',op_fits_as_from_phone)
self.log('tele_fits_as_from_phone',tele_fits_as_from_phone)
stop
# get phone pubkey
new_phone_keychain = self.phone.keychain(extra_keys={'pubkey_encr':phone_pubkey_encr},force=True)
new_op_keychain = self.keychain(extra_keys={'pubkey_decr':op_pubkey_decr},force=True)
phone_pubkey = new_phone_keychain.get('pubkey')
op_pubkey = new_op_keychain.get('pubkey')
self.log('reassembled phone/op pubkeys:',phone_pubkey,op_pubkey)
return (phone_pubkey,op_pubkey)
def reassemble_necessary_keys_using_decr_phone_data(self,decr_phone_data):
name=decr_phone_data.get('name')
if not name: return None

Loading…
Cancel
Save