示例#1
0
    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)
示例#2
0
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))