From 03eb98fd16d4a211db35e63d1ad218c3f8e57593 Mon Sep 17 00:00:00 2001 From: Kevin Froman Date: Tue, 15 May 2018 00:16:00 -0500 Subject: [PATCH] fixed key pow verification --- onionr/communicator.py | 2 ++ onionr/core.py | 5 +---- onionr/onionrutils.py | 8 +++++++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/onionr/communicator.py b/onionr/communicator.py index 4ca6f8d4..a71710e9 100755 --- a/onionr/communicator.py +++ b/onionr/communicator.py @@ -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 diff --git a/onionr/core.py b/onionr/core.py index 143b11f8..c368784f 100644 --- a/onionr/core.py +++ b/onionr/core.py @@ -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) diff --git a/onionr/onionrutils.py b/onionr/onionrutils.py index 1a1afcc3..4badd1d1 100644 --- a/onionr/onionrutils.py +++ b/onionr/onionrutils.py @@ -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: