keychain-uses-objects
quadrismegistus 4 years ago
parent 70c59075f6
commit 84a5dd3300

@ -43,9 +43,13 @@ class Message(Logger):
else:
msg=self.msg
return f"""
from: {self.from_whom}
to: {self.to_whom}
msg: {msg}
from: {self.from_whom}
({self.from_whom.pubkey.data_b64.decode()})
to: {self.to_whom}
({self.to_whom.pubkey.data_b64.decode()})
msg: {msg}
"""
@ -161,7 +165,7 @@ class Message(Logger):
def encrypt(self): # each child message should already be encrypted before coming to its parent message ,recursive=False):
if self._is_encrypted: return
# self.log(f'attempting to encrypt msg {self.msg} from {self.from_whom} to {self.to_whom}')
self.log(f'I ({self.from_whom}) am about to encrypt my message to {self.to_whom},\n "end to end" so that only {self.to_whom} can read it.\n\n Before encryption, I look like:\n{self}')
self.log(f'Before encrypting the message from {self.from_whom} to {self.to_whom}, it looks like:\n{self}')
# make sure msg is not meeta
if self.has_embedded_msg:
@ -180,7 +184,7 @@ class Message(Logger):
self.msg_decr = self.msg
self.msg_d['msg'] = self.msg = b64encode(msg_encr)
self.log(f'I ({self.from_whom}) am about to encrypt my message to {self.to_whom}\n "end to end" so that only {self.to_whom} can read it.\n\n And after encryption, I look like:\n{self}')
self.log(f'After encrypting the message from {self.from_whom} to {self.to_whom}, it looks like:\n{self}')
self.msg_d['msg'] = self.msg = msg_encr
self._is_encrypted = True

@ -107,7 +107,7 @@ class Operator(Keymaker):
def seal_msg(self,msg_d):
msg_b = pickle.dumps(msg_d)
self.log('Message has being sealed in a final binary package:',b64encode(msg_b))
return msg_b_encr
return msg_b
def unseal_msg(self,msg_b_encr,from_whom=None,to_whom=None):
# default to assumption that I am the recipient
@ -128,7 +128,7 @@ class Operator(Keymaker):
def __repr__(self):
clsname=(type(self)).__name__
#name = clsname+' '+
name = 'Komrade @'+self.name # if self.name!=clsname else clsname
name = '@'+self.name # if self.name!=clsname else clsname
# try:
# keystr= 'on device: ' + ('+'.join(self.top_keys) if self.pubkey else '')
# except TypeError:
@ -203,9 +203,11 @@ class Operator(Keymaker):
# {dict_format(msg,tab=4)}
# ''')
if caller!=self:
self.log(f'ring ring! I ({self}) have received a message from {caller},\n which I will now encrypt and send on to {to_whom}.')
from komrade.cli.artcode import ART_PHONE_SM1
self.log(f'ring ring! I the {self} have received a message from {caller},\n which I will now encrypt and send along to {to_whom}.\n {ART_PHONE_SM1} ')
else:
self.log(f'I ({self}) will now compose and send an encrypted message to {to_whom}.')
pass
# self.log(f'I ({self}) will now compose and send an encrypted message to {to_whom}.')
if route and type(msg)==dict and not ROUTE_KEYNAME in msg:
msg[ROUTE_KEYNAME] = route
@ -216,7 +218,7 @@ class Operator(Keymaker):
msg,
to_whom
)
self.log(f'Here is the message object I ({self}) made, to send to {to_whom}: {msg_obj}')
self.log(f'Here is the message I will now encrypt and to send to {to_whom}:\n {msg_obj}')
# encrypting
msg_obj.encrypt()

@ -60,7 +60,7 @@ class Persona(Caller):
## 2) Make pub public/private keys
keypair = KomradeAsymmetricKey()
pubkey,privkey = keypair.pubkey_obj,keypair.privkey_obj
self.log(f'@Keymaker has cut private and public keys:\n\n(1) {pubkey}\n\n(2) {privkey}')
self.log(f'Keymaker has cut private and public keys:\n\n(1) {pubkey}\n\n(2) {privkey}')
## 3) Have passphrase?
if SHOW_STATUS and not passphrase:
@ -70,13 +70,13 @@ class Persona(Caller):
## 4) Get hashed password
passhash = hasher(passphrase)
self.log(f'''@Keymaker has created a symmetric encryption cell using the disguised password:\n\n\t(2A) [Symmetric Encryption Key]\n\t({make_key_discreet_str(passhash)})''')
# self.log(f'''Keymaker has created a symmetric encryption cell using the disguised password:\n\n\t(2A) [Symmetric Encryption Key]\n\t({make_key_discreet_str(passhash)})''')
## 5) Encrypt private key
privkey_decr = KomradeSymmetricKeyWithPassphrase(passphrase)
privkey_encr = privkey_decr.encrypt(privkey.data)
privkey_encr_obj = KomradeEncryptedAsymmetricPrivateKey(privkey_encr)
self.log(f"This pass-generated key has now transformed the private key (2) into the following encrypted form (redacted):\n\n\t(2B) [Encrypted Private Key]\n\t({make_key_discreet_str(privkey_encr_obj.data_b64)})")
self.log(f"For my private key, I will store it only on my device as it was encrypted by my password-generated key:\n\n[Encrypted Private Key]\n({make_key_discreet_str(privkey_encr_obj.data_b64)})")
## 6) Test keychain works
privkey_decr2 = KomradeSymmetricKeyWithPassphrase(passphrase)
@ -88,7 +88,7 @@ class Persona(Caller):
# we should be able to reassemble privkey now?
assert 'privkey' in self.keychain()
self.log('My keychain now looks like:',dict_format(self.keychain()))
# self.log('My keychain now looks like:',dict_format(self.keychain()))
## 6) More narration?
if SHOW_STATUS:
@ -99,7 +99,7 @@ class Persona(Caller):
'name':name,
'pubkey': pubkey.data,
}
# self.log('I will be sending this data to @TheOperator, on the remote server:',dict_format(data,tab=2))
self.log('For my public key, I will be sending it to @Operator on the remote server:',dict_format(data,tab=2))
# ring operator
# call from phone since I don't have pubkey on record on Op yet

@ -19,6 +19,7 @@ def create_phonelines():
# save pub and priv
op_uri = op_pubkey.data_b64
keycrypt.set(OPERATOR_NAME,op_pubkey.data,prefix='/pubkey/')
keycrypt.set(op_uri,op_privkey_encr.data,prefix='/privkey_encr/')

@ -46,8 +46,6 @@ class TheSwitchboard(FlaskView, Logger):
return resp_data_b64_str
def run_forever(port='8080'):
global OPERATOR,TELEPHONE,TELEPHONE_KEYCHAIN,OPERATOR_KEYCHAIN,WORLD_KEYCHAIN,OMEGA_KEY
OPERATOR_KEYCHAIN,TELEPHONE_KEYCHAIN,WORLD_KEYCHAIN,OMEGA_KEY=connect_phonelines()
TELEPHONE = TheTelephone()
OPERATOR = TheOperator()
app = Flask(__name__)

@ -39,7 +39,7 @@ def do_pause():
def dict_format(d, tab=0):
def reppr(v):
if type(v)==bytes and not isBase64(v):
return b64encode(v)
return b64encode(v).decode()
return v
s = ['{\n\n']

Loading…
Cancel
Save