2525import shared
2626import state
2727import tr
28- from addresses import (
29- calculateInventoryHash , decodeAddress , decodeVarint , encodeVarint
30- )
28+ from addresses import decodeAddress , decodeVarint , encodeVarint
3129from bmconfigparser import config
3230from helper_sql import sqlExecute , sqlQuery
3331from inventory import Inventory
@@ -75,18 +73,16 @@ def run(self):
7573 queryreturn = sqlQuery (
7674 '''SELECT DISTINCT toaddress FROM sent'''
7775 ''' WHERE (status='awaitingpubkey' AND folder='sent')''' )
78- for row in queryreturn :
79- toAddress , = row
80- # toStatus
81- _ , toAddressVersionNumber , toStreamNumber , toRipe = \
82- decodeAddress (toAddress )
76+ for toAddress , in queryreturn :
77+ toAddressVersionNumber , toStreamNumber , toRipe = \
78+ decodeAddress (toAddress )[1 :]
8379 if toAddressVersionNumber <= 3 :
8480 state .neededPubkeys [toAddress ] = 0
8581 elif toAddressVersionNumber >= 4 :
86- doubleHashOfAddressData = hashlib . sha512 ( hashlib . sha512 (
82+ doubleHashOfAddressData = highlevelcrypto . double_sha512 (
8783 encodeVarint (toAddressVersionNumber )
8884 + encodeVarint (toStreamNumber ) + toRipe
89- ). digest ()). digest ()
85+ )
9086 # Note that this is the first half of the sha512 hash.
9187 privEncryptionKey = doubleHashOfAddressData [:32 ]
9288 tag = doubleHashOfAddressData [32 :]
@@ -289,7 +285,7 @@ def doPOWForMyV2Pubkey(self, adressHash):
289285 payload = self ._doPOWDefaults (
290286 payload , TTL , log_prefix = '(For pubkey message)' )
291287
292- inventoryHash = calculateInventoryHash (payload )
288+ inventoryHash = highlevelcrypto . calculateInventoryHash (payload )
293289 objectType = 1
294290 Inventory ()[inventoryHash ] = (
295291 objectType , streamNumber , payload , embeddedTime , '' )
@@ -377,7 +373,7 @@ def sendOutOrStoreMyV3Pubkey(self, adressHash):
377373 payload = self ._doPOWDefaults (
378374 payload , TTL , log_prefix = '(For pubkey message)' )
379375
380- inventoryHash = calculateInventoryHash (payload )
376+ inventoryHash = highlevelcrypto . calculateInventoryHash (payload )
381377 objectType = 1
382378 Inventory ()[inventoryHash ] = (
383379 objectType , streamNumber , payload , embeddedTime , '' )
@@ -449,10 +445,10 @@ def sendOutOrStoreMyV4Pubkey(self, myAddress):
449445 # unencrypted, the pubkey with part of the hash so that nodes
450446 # know which pubkey object to try to decrypt
451447 # when they want to send a message.
452- doubleHashOfAddressData = hashlib . sha512 ( hashlib . sha512 (
448+ doubleHashOfAddressData = highlevelcrypto . double_sha512 (
453449 encodeVarint (addressVersionNumber )
454450 + encodeVarint (streamNumber ) + addressHash
455- ). digest ()). digest ()
451+ )
456452 payload += doubleHashOfAddressData [32 :] # the tag
457453 signature = highlevelcrypto .sign (
458454 payload + dataToEncrypt , privSigningKeyHex , self .digestAlg )
@@ -468,7 +464,7 @@ def sendOutOrStoreMyV4Pubkey(self, myAddress):
468464 payload = self ._doPOWDefaults (
469465 payload , TTL , log_prefix = '(For pubkey message)' )
470466
471- inventoryHash = calculateInventoryHash (payload )
467+ inventoryHash = highlevelcrypto . calculateInventoryHash (payload )
472468 objectType = 1
473469 Inventory ()[inventoryHash ] = (
474470 objectType , streamNumber , payload , embeddedTime ,
@@ -504,7 +500,7 @@ def sendOnionPeerObj(self, peer=None):
504500 objectType = protocol .OBJECT_ONIONPEER
505501 # FIXME: ideally the objectPayload should be signed
506502 objectPayload = encodeVarint (peer .port ) + protocol .encodeHost (peer .host )
507- tag = calculateInventoryHash (objectPayload )
503+ tag = highlevelcrypto . calculateInventoryHash (objectPayload )
508504
509505 if Inventory ().by_type_and_tag (objectType , tag ):
510506 return # not expired
@@ -518,7 +514,7 @@ def sendOnionPeerObj(self, peer=None):
518514 payload = self ._doPOWDefaults (
519515 payload , TTL , log_prefix = '(For onionpeer object)' )
520516
521- inventoryHash = calculateInventoryHash (payload )
517+ inventoryHash = highlevelcrypto . calculateInventoryHash (payload )
522518 Inventory ()[inventoryHash ] = (
523519 objectType , streamNumber , buffer (payload ), # noqa: F821
524520 embeddedTime , buffer (tag ) # noqa: F821
@@ -612,10 +608,10 @@ def sendBroadcast(self):
612608
613609 payload += encodeVarint (streamNumber )
614610 if addressVersionNumber >= 4 :
615- doubleHashOfAddressData = hashlib . sha512 ( hashlib . sha512 (
611+ doubleHashOfAddressData = highlevelcrypto . double_sha512 (
616612 encodeVarint (addressVersionNumber )
617613 + encodeVarint (streamNumber ) + ripe
618- ). digest ()). digest ()
614+ )
619615 tag = doubleHashOfAddressData [32 :]
620616 payload += tag
621617 else :
@@ -685,7 +681,7 @@ def sendBroadcast(self):
685681 )
686682 continue
687683
688- inventoryHash = calculateInventoryHash (payload )
684+ inventoryHash = highlevelcrypto . calculateInventoryHash (payload )
689685 objectType = 3
690686 Inventory ()[inventoryHash ] = (
691687 objectType , streamNumber , payload , embeddedTime , tag )
@@ -794,10 +790,10 @@ def sendMsg(self):
794790 if toAddressVersionNumber <= 3 :
795791 toTag = ''
796792 else :
797- toTag = hashlib . sha512 ( hashlib . sha512 (
793+ toTag = highlevelcrypto . double_sha512 (
798794 encodeVarint (toAddressVersionNumber )
799795 + encodeVarint (toStreamNumber ) + toRipe
800- ). digest ()). digest () [32 :]
796+ )[32 :]
801797 if toaddress in state .neededPubkeys or \
802798 toTag in state .neededPubkeys :
803799 # We already sent a request for the pubkey
@@ -831,11 +827,11 @@ def sendMsg(self):
831827 # already contains the toAddress and cryptor
832828 # object associated with the tag for this toAddress.
833829 if toAddressVersionNumber >= 4 :
834- doubleHashOfToAddressData = hashlib . sha512 (
835- hashlib . sha512 (
836- encodeVarint (toAddressVersionNumber ) + encodeVarint ( toStreamNumber ) + toRipe
837- ). digest ()
838- ). digest ( )
830+ doubleHashOfToAddressData = \
831+ highlevelcrypto . double_sha512 (
832+ encodeVarint (toAddressVersionNumber )
833+ + encodeVarint ( toStreamNumber ) + toRipe
834+ )
839835 # The first half of the sha512 hash.
840836 privEncryptionKey = doubleHashOfToAddressData [:32 ]
841837 # The second half of the sha512 hash.
@@ -1302,7 +1298,7 @@ def sendMsg(self):
13021298 )
13031299 continue
13041300
1305- inventoryHash = calculateInventoryHash (encryptedPayload )
1301+ inventoryHash = highlevelcrypto . calculateInventoryHash (encryptedPayload )
13061302 objectType = 2
13071303 Inventory ()[inventoryHash ] = (
13081304 objectType , toStreamNumber , encryptedPayload , embeddedTime , '' )
@@ -1352,8 +1348,7 @@ def sendMsg(self):
13521348 # the message in our own inbox.
13531349 if config .has_section (toaddress ):
13541350 # Used to detect and ignore duplicate messages in our inbox
1355- sigHash = hashlib .sha512 (hashlib .sha512 (
1356- signature ).digest ()).digest ()[32 :]
1351+ sigHash = highlevelcrypto .double_sha512 (signature )[32 :]
13571352 t = (inventoryHash , toaddress , fromaddress , subject , int (
13581353 time .time ()), message , 'inbox' , encoding , 0 , sigHash )
13591354 helper_inbox .insert (t )
@@ -1410,16 +1405,13 @@ def requestPubKey(self, toAddress):
14101405 # neededPubkeys dictionary. But if we are recovering
14111406 # from a restart of the client then we have to put it in now.
14121407
1413- # Note that this is the first half of the sha512 hash.
1414- privEncryptionKey = hashlib .sha512 (hashlib .sha512 (
1408+ doubleHashOfAddressData = highlevelcrypto .double_sha512 (
14151409 encodeVarint (addressVersionNumber )
14161410 + encodeVarint (streamNumber ) + ripe
1417- ).digest ()).digest ()[:32 ]
1411+ )
1412+ privEncryptionKey = doubleHashOfAddressData [:32 ]
14181413 # Note that this is the second half of the sha512 hash.
1419- tag = hashlib .sha512 (hashlib .sha512 (
1420- encodeVarint (addressVersionNumber )
1421- + encodeVarint (streamNumber ) + ripe
1422- ).digest ()).digest ()[32 :]
1414+ tag = doubleHashOfAddressData [32 :]
14231415 if tag not in state .neededPubkeys :
14241416 # We'll need this for when we receive a pubkey reply:
14251417 # it will be encrypted and we'll need to decrypt it.
@@ -1462,7 +1454,7 @@ def requestPubKey(self, toAddress):
14621454
14631455 payload = self ._doPOWDefaults (payload , TTL )
14641456
1465- inventoryHash = calculateInventoryHash (payload )
1457+ inventoryHash = highlevelcrypto . calculateInventoryHash (payload )
14661458 objectType = 1
14671459 Inventory ()[inventoryHash ] = (
14681460 objectType , streamNumber , payload , embeddedTime , '' )
0 commit comments