def runUdpReceiver(self): while True: data, addr = self.server.recvfrom(1024) dataJson = json.loads(data) if (dataJson["coin"] == "simplecoin"): # address = "http://" + addr[0] + ":"+ str(addr[1]) # Address of ledger on other client should be on port 8001 address = "http://" + addr[0] + ":" + str(8001) tosend = dict() tosend['ip'] = socket.gethostbyname(socket.gethostname()) tosend['encryptedNonce'] = encryptedNonce tosend['wallet'] = Wallet("new Name", creatorKey, "") # At this point I have sent a post request and am saving the response which is a list of all known peers and # an ecrypted nonce, and a public key r = request.post(url=address + "/peers", data=tosend) postResponse = r.getresponse() if (postResponse.text == ""): print("already registered with other peer") else: postData = postResponse.read() alldata = JSON.parse(postData) encryptedNonced = alldata['encryptedNonce'] publicKey = alldata['publicKey'] decryptedNonced = rsa.decryptMessage( publicKey, encryptedNonced) if (decryptedNonced == nonce): currPeerList = ledger.getPeerList() newPostPeers = alldata['peerList'] util.joinPeerLists(newPostPeers, currPeerList)
def test1(): if request.method == 'POST': data = json.loads(request.get_data().decode('UTF-8')) encryptedNonce = data['encryptedNonce'] publicKey = data['wallet']['publicKey'] name = data['wallet']['name'] ip = data['ip'] decryptedNonce = rsa.decryptMessage(publicKey, encryptedNonce) reEncryptedNonce = rsa.encryptMessage(creatorPrivKey, decryptedNonce) if self.isDuplicate(ip): # don't send back peer list return "" else: # add to my list lock.acquire(blocking=True) peerList.append(Peer(ip, Wallet(name, publicKey))) lock.release() # send get request at /peers?mode=json g = requests.get(url=address + "/peers?mode=json") getResponse = g.getresponse() getData = getResponse.read() allGetData = JSON.parse(getData) # peerList is returned in unencrypted json newList = allGetData["peerList"] util.joinPeerLists(newList, peerList) # send back all known peers with encrypted nonce with my private key tosend = { "peerList": peerList, "publicKey": creatorKey, "encryptedNonce": reEncryptedNonce } jsonPeerList = json.dumps(peerList, indent=4, cls=ChainEncoder) return jsonPeerList else: mode = request.args.get('mode') if (mode == "json"): # returns an unencrypted JSON with a list of all known peers tosend = { "peerList": peerList, } jsonPeerList = json.dumps(peerList, indent=4, cls=ChainEncoder) return jsonPeerList else: # returns an HTML page populated with a list of all known peers return render_template( 'startBlock.html', peers=peerList, )
def decryptHash(self): #Decrypt operation with sender public key return rsa.decryptMessage(self.senderPub, str(self.hash))