fixed key pow verification

master
Kevin Froman 2018-05-15 00:16:00 -05:00
parent d02af9600a
commit 03eb98fd16
No known key found for this signature in database
GPG Key ID: 0D414D0FE405B63B
3 changed files with 10 additions and 5 deletions

View File

@ -132,6 +132,8 @@ class OnionrCommunicate:
elif command[0] == 'runCheck': elif command[0] == 'runCheck':
logger.info('Status check; looks good.') logger.info('Status check; looks good.')
open('data/.runcheck', 'w+').close() open('data/.runcheck', 'w+').close()
elif command[0] == 'kex':
self.pexCount = pexTimer - 1
elif command[0] == 'event': elif command[0] == 'event':
# todo # todo
pass pass

View File

@ -79,8 +79,6 @@ class Core:
def addPeer(self, peerID, powID, name=''): def addPeer(self, peerID, powID, name=''):
''' '''
Adds a public key to the key database (misleading function name) Adds a public key to the key database (misleading function name)
DOES NO SAFETY CHECKS if the ID is valid, but prepares the insertion
''' '''
# This function simply adds a peer to the DB # This function simply adds a peer to the DB
if not self._utils.validatePubKey(peerID): if not self._utils.validatePubKey(peerID):
@ -452,7 +450,7 @@ class Core:
try: try:
if len(i[0]) != 0: if len(i[0]) != 0:
if getPow: if getPow:
peerList.append(i[0] + '-' + i[11]) peerList.append(i[0] + '-' + i[1])
else: else:
peerList.append(i[0]) peerList.append(i[0])
except TypeError: except TypeError:
@ -461,7 +459,6 @@ class Core:
try: try:
peerList.append(self._crypto.pubKey + '-' + self._crypto.pubKeyPowToken) peerList.append(self._crypto.pubKey + '-' + self._crypto.pubKeyPowToken)
except TypeError: except TypeError:
print('what')
pass pass
else: else:
peerList.append(self._crypto.pubKey) peerList.append(self._crypto.pubKey)

View File

@ -109,11 +109,17 @@ class OnionrUtils:
except IndexError: except IndexError:
logger.warn('No pow token') logger.warn('No pow token')
continue continue
if self._core._crypto.blake2bHash(base64.b64decode(key[1]) + key[0].encode()).startswith('0000'): powHash = self._core._crypto.blake2bHash(base64.b64decode(key[1]) + self._core._crypto.blake2bHash(key[0].encode()))
try:
powHash = powHash.encode()
except AttributeError:
pass
if powHash.startswith(b'0000'):
if not key[0] in self._core.listPeers(randomOrder=False) and type(key) != None and key[0] != self._core._crypto.pubKey: if not key[0] in self._core.listPeers(randomOrder=False) and type(key) != None and key[0] != self._core._crypto.pubKey:
if self._core.addPeer(key[0], key[1]): if self._core.addPeer(key[0], key[1]):
retVal = True retVal = True
else: else:
logger.warn(powHash)
logger.warn('%s pow failed' % key[0]) logger.warn('%s pow failed' % key[0])
return retVal return retVal
except Exception as error: except Exception as error: