fixing key system. ok for world.key to be here, it's meant to be public

pull/20/head
quadrismegistus 4 years ago
parent 153f68ff2e
commit daea7c08a5

BIN
.DS_Store vendored

Binary file not shown.

BIN
app/.DS_Store vendored

Binary file not shown.

@ -301,11 +301,12 @@ class MainApp(MDApp):
self.root.ids.login_screen.login_status.text_color=rgb(*COLOR_ACCENT)
await asyncio.sleep(1)
#self.save_login(dat)
self.change_screen_from_uri('/inbox/earth')
self.change_screen_from_uri('/inbox/world')
return True
elif 'error' in dat:
self.root.ids.login_screen.login_status.text=dat['error']
await asyncio.sleep(1)
# await asyncio.sleep(3)
# self.change_screen_from_uri('/inbox/world')
return False
asyncio.create_task(do())
@ -335,7 +336,7 @@ class MainApp(MDApp):
if data_piece is not None:
of.write(data_piece)
async def post(self, content='', file_id=None, file_ext=None, anonymous=False,channels=['earth']):
async def post(self, content='', file_id=None, file_ext=None, anonymous=False,channels=['world']):
#timestamp=time.time()
jsond={}
#jsond['timestamp']=
@ -367,7 +368,7 @@ class MainApp(MDApp):
async def get_post(self,post_id):
return await self.api.get_post(post_id)
async def get_posts(self,uri='/inbox/eee'):
async def get_posts(self,uri='/inbox/world'):
self.log(f'app.get_posts(uri={uri} -> ...')
data = await self.api.get_posts(uri)
self.log('app.get_posts() got back from api.get_posts():',data)

@ -11,6 +11,7 @@ from datetime import datetime
from kivy.app import App
from threading import Thread
import asyncio
from misc import *
@ -64,6 +65,7 @@ class PostCard(MDCard):
super().__init__()
# self.log('PostCard() got data: '+str(data))
self.author = data.get('author','[Anonymous]')
self.recipient = data.get('to_name','')
self.img_id = data.get('file_id','')
self.img_ext = data.get('file_ext','')
self.img_src=self.img_id[:3]+'/'+self.img_id[3:]+'.'+self.img_ext if self.img_id else ''
@ -81,10 +83,20 @@ class PostCard(MDCard):
# pieces
self.author_section_layout = author_section_layout = PostAuthorLayout()
self.author_label = author_label = PostAuthorLabel(text='@'+self.author)
self.author_label.font_name='assets/overpass-mono-semibold.otf'
if self.recipient:
self.author_label.text+='\n[size=14sp][i]to @'+self.recipient+'[/i][/size]'
self.author_label.markup=True
self.author_label.font_size = '18sp'
self.author_avatar = author_avatar = PostAuthorAvatar(source='assets/avatar.jpg') #self.img_src)
self.author_section_layout.add_widget(author_avatar)
self.author_section_layout.add_widget(author_label)
# self.author_section_layout.add_widget(MDSeparator(height='1sp',size_hint=(None,None)))
# self.recipient_label = author_label = PostAuthorLabel(text='--> @'+self.recipient)
# self.recipient_label.font_size = '14sp'
# self.author_label.add_widget(self.recipient_label)
# timestamp
timestr=''
@ -92,8 +104,10 @@ class PostCard(MDCard):
if self.timestamp:
dt_object = datetime.fromtimestamp(self.timestamp)
timestr = dt_object.strftime("%-d %b %Y %H:%M")
#log('timestr: '+timestr)
author_section_layout.add_widget(PostTimestampLabel(text=timestr))
#log('timestr: '+timestr)
self.timestamp_label=PostTimestampLabel(text=timestr)
self.timestamp_label.font_size='14sp'
author_section_layout.add_widget(self.timestamp_label)
# author_section_layout.add_widget(author_avatar)
# self.add_widget(author_section_layout)

@ -19,7 +19,7 @@ class RegisterButton(MDRectangleFlatButton):
un=self.parent.parent.parent.username_field.text
app=App.get_running_app()
app.register(un)
app.change_screen_from_uri(f'/inbox/{un}')
# app.change_screen_from_uri(f'/inbox/{un}')
pass
class LoginStatus(MDLabel): pass

@ -1 +0,0 @@
{"_keys": {"private": "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", "public": "MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA14Q27hRIdmFUJWCLahlHaDrCPNN3gzEEeLfhhst39WMzQnDEGBVZ2nGqhmpe1kijx47A/6eS89Rg08ed9YetLscp02ceV7CIO2utsA3d/oP8fgMrcUPWxuVcXXAXgxs+W2FErcQKMNEfieI6tRFqUtjQSs25PyNLZd6lCRenageNPZpui05NU7K26jwmdRv1yikyNjlYSLIxWWrz7MIaEp3eX3LjSD1yA9eDx+vQQACPJ4+zXSNXyWgrHdDiSiqr6dgIZdSajeb0Qzmcx/5QaWdxqWTUwvm3TUiNtN82xpmN96dgxcjAivZbVo2acNgjJ8AL0LmmQRDhGcCuoB68cWQ878ncq6TzMjZ6sSGGlqyfie9790dYsxzD2XKSAe9DnMB8K+6LKfjoRhwYSDZGNmuhSawoM2h39vQUtpNrWT/F1WHzg6EceqUdTcN7piS+AQbAlrGQAstERUlUpMui98NmvYY4cetLiOvFX+6PFWilCHUImK04fW1mOuCNfAzbNk+YwUHQxvQ7jaP+VuQ3sWTnmcXpsO60hCsZLa3tnY+FzZC82buZtEHtm9kxZSM8ZI3UBAGEt50/pJCDzy/XwsQSMRxX3isktOiVoAL7B6Oap1hmDZ1YrtPrIlDLvgB51XxlHw28ppxOk03Gvr3R92ldnqQW1gKJ/k29BVqGCkECAwEAAQ=="}}

@ -0,0 +1 @@
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

@ -13,6 +13,7 @@ BSEP=b'||||||||||'
BSEP2=b'@@@@@@@@@@'
BSEP3=b'##########'
NODE_SLEEP_FOR=1
PATH_WORLD_KEY='.world.key'
try:
from .crypto import *
@ -141,7 +142,7 @@ class Api(object):
self.log('trying again...')
val = await node.get(key)
self.log('got',val)
asyncio.sleep(1)
#asyncio.sleep(1)
self.log(f'val for {key} = {val} {type(val)}')
if decode_data:
@ -315,9 +316,10 @@ class Api(object):
try:
encrypted_payload, decryption_tools = entire_packet.split(sep) #split_binary(entire_packet, sep=sep) #entire_packet.split(sep)
decryption_tools=decryption_tools.split(sep2) #split_binary(decryption_tools,sep=sep2)
except AssertionError as e:
except ValueError as e:
self.log('!! decode_data() got incorrect format:',e)
self.log('packet =',entire_packet)
return entire_packet_orig
@ -403,12 +405,11 @@ class Api(object):
private_signature_key=private_signature_key
)
self.log(f'got back encoded data for {key} -> {x} ...')
return x
else:
self.log(f'did not encode data for {key} -> {value} ...')
x = value
self.log('set encoded data =',x)
return x
return value
if type(key_or_keys) in {list,tuple,dict}:
keys = key_or_keys
values = value_or_values
@ -416,18 +417,19 @@ class Api(object):
res=[]
for key,value in zip(keys,values):
newval = proc(key,value)
self.log(f'kvv (plural) <- {key}:{value} -> {newval}')
self.log(f'kvv (plural) <- {keys}:{value} -> {newval}')
await node.set(key,newval)
res+=[newval]
else:
key = key_or_keys
value = value_or_values
newval = proc(key,value)
self.log(f'kvv (plural) <- {key}:{value} -> {newval}')
self.log(f'kvv (singular) <- {key}:{value} -> {newval}')
res = newval
await node.set(key,newval)
self.log(f'api.set(res = {res})')
self.log(f'api.set(key={key_or_keys}, \
res = {res})')
#node.stop()
# self.log('reconnecting ...',self._node)
#await self._node.stop()
@ -467,7 +469,7 @@ class Api(object):
async def set_json(self,key,value,private_signature_key=None,encode_data=True,encrypt_for_pubkey=None):
self.log(f'api.self_json({key}, {value} ...)')
self.log(f'api.set_json({key}, {value} ...)')
value_json = jsonify(value)
self.log(f'value_json = {value_json}')
set_res = await self.set(
@ -476,7 +478,7 @@ class Api(object):
private_signature_key=private_signature_key,
encode_data=encode_data,
encrypt_for_pubkey=encrypt_for_pubkey)
self.log(f'api.self_json({key},{value} ...) <-- {set_res}')
self.log(f'api.set_json({key},{value} ...) --> {set_res}')
return set_res
async def has(self,key):
@ -492,8 +494,11 @@ class Api(object):
# pem_public_key = save_public_key(public_key,return_instead=True)
#obj = {'name':username, 'public_key':pem_public_key}
# await self.set_json('/person/'+username,obj)
# keystr=base64.b64encode(pem_public_key).decode()
# self.log('keystr',type(keystr))
await self.set('/pubkey/'+username,pem_public_key,encode_data=False)
await self.set(b'/name/'+pem_public_key,base64.b64encode(username.encode('utf-8')),encode_data=False)
# keystr=pem_public_key
# await self.set(b'/name/'+keystr,username,encode_data=False)
@ -548,11 +553,28 @@ class Api(object):
self.log('!!',e)
return {'error':'Incorrect password'}
def add_world_key(self,fn=PATH_WORLD_KEY):
import shutil
name='.'.join(os.path.basename(PATH_WORLD_KEY).split('.')[1:-1])
priv_key=load_privkey_fn(fn)
pub_key=priv_key.public_key()
pub_key_b=serialize_pubkey(pub_key)
if self.set_person(name,pub_key_b):
ofn=os.path.join(KEYDIR,f'.{name}.key')
shutil.copyfile(fn,ofn)
#@property
def get_keys(self):
res={}
for priv_key_fn in os.listdir(KEYDIR):
key_files = os.listdir(KEYDIR)
world_key_fn = os.path.basename(PATH_WORLD_KEY)
if not world_key_fn in key_files:
self.log('[first time?] adding world key')
self.add_world_key()
for priv_key_fn in key_files:
if (not priv_key_fn.startswith('.') or not priv_key_fn.endswith('.key')): continue
fnfn = os.path.join(KEYDIR,priv_key_fn)
print(fnfn)
@ -672,16 +694,17 @@ class Api(object):
for channel in channels:
self.log('ADDING TO CHANNEL??',channel)
pubkey_channel = self.keys[channel].public_key()
data_channel = dict(data.items())
data_channel['to_name']=channel
## add per channel
# encrypt and post
uri = '/'+os.path.join('inbox',channel,post_id)
self.log('setting',uri,'????',type(data),data)
self.log('setting',uri,'????',type(data_channel),data_channel)
json_res = await self.set_json(
uri,
data,
data_channel,
encode_data=True,
encrypt_for_pubkey=pubkey_channel,
private_signature_key=author_privkey
@ -724,7 +747,7 @@ class Api(object):
async def get_post(self,post_id):
return await self.get_json_val(post_id,decode_data=False)
async def get_posts(self,uri='/inbox/earth'):
async def get_posts(self,uri='/inbox/world'):
self.log(f'api.get_posts(uri={uri}) --> ...')
index = await self.get(uri,decode_data=False)
self.log('api.get_posts index1 <-',index,bool(index))
@ -743,15 +766,32 @@ class Api(object):
## get full json
uris = [os.path.join(uri,x) for x in index]
self.log('URIs:',uris)
x = await self.get_json(uris,decode_data=True)
self.log('api.get_posts got back from .get_json() <-',x)
res=[y for y in x if y is not None]
res = await self.get_json(uris,decode_data=True)
self.log('api.get_posts got back from .get_json() <-',res)
res=[d for d in res if d is not None]
# fill out
for d in res:
from_name = self.get(b'/name/'+d['from'])
to_name = self.get(b'/name/'+d['to'])
raise Exception(from_name+' '+to_name)
# for d in res:
# self.log(d['from'],type(d['from']),'---->',d['to'],type(d['to']))
# # from_st=base64.b64decode(d['from']) #.decode('utf-8')
# # to_st=base64.b64decode(d['to']) #.decode('utf-8')
# from_st=d['from']
# to_st=d['to']
# self.log(from_st,'---->',to_st)
# from_key=b'/name/'+from_st
# to_key=b'/name/'+to_st
# self.log('to_key:',to_key)
# self.log('from_key:',from_key)
# from_name = await self.get(from_key)
# to_name = await self.get(to_key)
# self.log('from_name:',from_name)
# self.log('to_name:',to_name)
# d['from_name']=from_name
# d['to_name']=to_name
# raise Exception(from_name+b' '+to_name)
return res
@ -886,15 +926,15 @@ def boot_lonely_selfless_node(port=8467):
asyncio.run(API.connect_forever())
def init_entities(usernames = ['earth']):
## make global entity called earth
def init_entities(usernames = ['world']):
## make global entity called world
#loop=asyncio.new_event_loop()
async def register(username):
API = Api()
#await API.connect_forever()
#await API.register(username)
await API.register(username)
print(API.keys)
print('done')
@ -937,7 +977,7 @@ def split_binary(data, sep=BSEP):
if __name__=='__main__':
#init_entities()
init_entities()
res = split_binary(b'eeeehey||||whatsueep',b'||||')
print(res)
# res = split_binary(b'eeeehey||||whatsueep',b'||||')
# print(res)
Loading…
Cancel
Save