fixed key pow verification

This commit is contained in:
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':
logger.info('Status check; looks good.')
open('data/.runcheck', 'w+').close()
elif command[0] == 'kex':
self.pexCount = pexTimer - 1
elif command[0] == 'event':
# todo
pass

View File

@ -79,8 +79,6 @@ class Core:
def addPeer(self, peerID, powID, 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
if not self._utils.validatePubKey(peerID):
@ -452,7 +450,7 @@ class Core:
try:
if len(i[0]) != 0:
if getPow:
peerList.append(i[0] + '-' + i[11])
peerList.append(i[0] + '-' + i[1])
else:
peerList.append(i[0])
except TypeError:
@ -461,7 +459,6 @@ class Core:
try:
peerList.append(self._crypto.pubKey + '-' + self._crypto.pubKeyPowToken)
except TypeError:
print('what')
pass
else:
peerList.append(self._crypto.pubKey)

View File

@ -109,11 +109,17 @@ class OnionrUtils:
except IndexError:
logger.warn('No pow token')
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 self._core.addPeer(key[0], key[1]):
retVal = True
else:
logger.warn(powHash)
logger.warn('%s pow failed' % key[0])
return retVal
except Exception as error: