posting
quadrismegistus 4 years ago
parent 29b7806520
commit 3674787df0

@ -108,13 +108,16 @@ class KomradeX(Caller):
keypair = KomradeAsymmetricKey()
pubkey,privkey = keypair.pubkey_obj,keypair.privkey_obj
logfunc(f'I have cut for you a private and public asymmetric key pair, using the iron-clad Elliptic curve algorithm:\n\n(1) {pubkey}\n\n(2) {privkey}{ART_KEY_PAIR}',clear=True,pause=True)
self._keychain['pubkey']=pubkey
self._keychain['privkey']=privkey
self.log('My keychain now looks like:',dict_format(self.keychain()))
### PUBLIC KEY
qr_str=self.qr_str(pubkey.data_b64)
logfunc(f'(1) You may store your public key both on your device hardware, as well as share it with anyone you wish:\n\n{pubkey.data_b64_s}\n\nIt will also be stored as a QR code on your device:\n{qr_str}',pause=True,clear=True)
logfunc('You must also register your username and public key with Komrade @Operator on the remote server. Shall Komrade @Telephone send them over?',pause=True,clear=False)#),dict_format(data,tab=2),pause=True)
ok_to_send = input(f'Komrade @{name}: [Y/n]')
logfunc('You must also register your username and public key with Komrade @Operator on the remote server.\n\nShall Komrade @Telephone send them over?',pause=False,clear=False)#),dict_format(data,tab=2),pause=True)
ok_to_send = input(f'Komrade @{name}: [Y/n] ')
if ok_to_send.strip().lower()=='n':
logfunc('Cancelling registration.')
return
@ -127,9 +130,11 @@ class KomradeX(Caller):
},
route='register_new_user'
)
logfunc(resp_msg_d.get('status'),komrade_name='Operator')
print()
logfunc(resp_msg_d.get('status'),komrade_name='Operator',pause=True)
if not resp_msg_d.get('success'):
logfunc('Cancelling registration.',pause=True,clear=True)
return
clear_screen()
@ -154,16 +159,15 @@ class KomradeX(Caller):
privkey_encr = privkey_decr.encrypt(privkey.data)
privkey_encr_obj = KomradeEncryptedAsymmetricPrivateKey(privkey_encr)
self._keychain['privkey_encr']=privkey_encr_obj
self.log('My keychain now looks like v2:',dict_format(self.keychain()))
logfunc(f"With that password we then encrypt your asymmetric private key:\n\n[Encrypted Private Key]\n({make_key_discreet_str(privkey_encr_obj.data_b64)})",pause=True,clear=False)
logfunc('Only this encrypted version is stored.',pause=True,clear=True)
self._keychain['pubkey']=pubkey
self._keychain['privkey_encr']=privkey_encr_obj
self._keychain['privkey']=privkey
self.log('My keychain now looks like:',dict_format(self.keychain()))
# More narration?
if SHOW_STATUS: self.cli.status_keymaker_part3(privkey,privkey_decr,privkey_encr,passphrase)

@ -60,6 +60,7 @@ class Operator(Keymaker):
def __eq__(self,other):
if not self.pubkey or not other.pubkey: return False
return self.pubkey.data == other.pubkey.data
def __init__(self,

@ -290,6 +290,7 @@ class TheOperator(Operator):
'pubkey':pubkey_b,
'secret_login':shared_secret,
'name':name,
'status':f'Name @{name} was successfully registered with the public key {uri_id}.'
}
# res_safe = {
# **res,

@ -10,7 +10,7 @@ import textwrap as tw
class CLI(Logger):
ROUTES = {
'help':'seek help',
'signup':'join the komrades',
'register':'join the komrades',
'login':'log back in',
'meet':'meet a komrade',
'who':'show contacts or info',
@ -64,7 +64,7 @@ class CLI(Logger):
try:
res=f(dat)
except KomradeException as e:
self.stat('Message not sent.',e,'\n')
self.stat('Message not sent.',str(e),'\n')
def stat(self,*msgs,use_prefix=True,prefix=None,komrade_name=None,pause=False,clear=False,min_prefix_len=19,**kwargs):
if not prefix:
@ -73,6 +73,7 @@ class CLI(Logger):
blank=' '*(len(prefix) if len(prefix)>min_prefix_len else min_prefix_len)
total_msg=[]
for i,msg in enumerate(msgs):
if not msg: msg=''
msg=msg.replace('\r\n','\n').replace('\r','\n')
for ii,ln in enumerate(msg.split('\n')):
if not ln:
@ -119,21 +120,21 @@ class CLI(Logger):
border = '-'*(40)
if not self.logged_in:
HELPSTR=f"""
/login [name] --> log back in
/signup [name] --> new komrade
/login [name] --> log back in
/register [name] --> new komrade
"""
else:
HELPSTR=f"""
/check --> check messages
/read --> read messages
/msg [name] --> send message
/check --> check messages
/read --> read messages
/msg [name] --> send message
/meet [name] --> exchange info
/who [name] --> show contacts
/meet [name] --> exchange info
/who [name] --> show contacts
"""
HELPSTR+=f"""
/help --> seek help
/help --> seek help
"""
helpstr = tw.indent(HELPSTR.strip()+'\n\n',' '*13)
self.print(helpstr)
@ -154,7 +155,7 @@ class CLI(Logger):
self.print(' ' + '\n '.join(contacts))
def signup(self,name=None):
def register(self,name=None):
if not name: name=input('name: ')
if not name: return
self.komrade = Komrade(name)
@ -174,6 +175,7 @@ class CLI(Logger):
self.name=None
self.loggedin=False
self.komrade=None
self.help()
if res and 'status' in res:
# self.boot()
self.stat(res.get('status','?'))
@ -688,7 +690,7 @@ class CLI(Logger):
def run_cli(inp):
cli = CLI()
cli.run(inp) #'/signup elon') #'/signup',name='elon')
cli.run(inp) #'/register elon') #'/register',name='elon')
if __name__=='__main__':
inp = ' '.join(sys.argv[1:])

Loading…
Cancel
Save