示例#1
0
def createEvent(hfeed_name, vfeed_name, message):

    # hfeed is the host feed of the virtual feed (vfeed)
    hfeed_key_path = "data/" + hfeed_name + "-secret.key"
    hfeed_pcap_path = "data/" + hfeed_name + "-feed.pcap"
    vfeed_key_path = "data/virtual/" + vfeed_name + ".key"
    vfeed_stats_path = "data/virtual/" + vfeed_name + ".stats"

    #host_feed read out
    with open(hfeed_key_path, 'r') as f:
        key = eval(f.read())
        hfeed_digestmod = "sha256"
        hfeed_h = crypto.HMAC(hfeed_digestmod, key["private"], key["feed_id"])
        hfeed_signer = crypto.HMAC(hfeed_digestmod,
                                   bytes.fromhex(hfeed_h.get_private_key()))

    with open(vfeed_key_path, 'rb') as f:
        vfeed_privKey = f.read()
        vfeed_h = crypto.HMAC(hfeed_digestmod, vfeed_privKey, vfeed_name)
        vfeed_signer = crypto.HMAC(hfeed_digestmod, vfeed_privKey)

    #shortpath file to get the sequence and the hash of the previous event, so we don't have to search all the hostfeeds till the end first
    with open(vfeed_stats_path, 'r') as f:
        key = eval(f.read())
        vfeed_seq = key["vfeed_seq"]
        vfeed_hprev = key["vfeed_hprev"]
        vfeed_sig = key["vfeed_sig"]

    if verifySign(vfeed_privKey, vfeed_sig, [vfeed_seq, vfeed_hprev]):
        hfeed = feed.FEED(fname=hfeed_pcap_path,
                          fid=hfeed_h.get_feed_id(),
                          signer=hfeed_signer,
                          create_if_notexisting=True,
                          digestmod=hfeed_digestmod)
        vfeed = feed.FEED(fname=hfeed_pcap_path,
                          fid=vfeed_h.get_feed_id(),
                          signer=vfeed_signer,
                          create_if_notexisting=True,
                          digestmod=hfeed_digestmod)

        e = event.EVENT(fid=vfeed_h.get_feed_id(),
                        seq=vfeed_seq,
                        hprev=vfeed_hprev,
                        content=message,
                        digestmod=hfeed_digestmod)
        metabits = e.mk_metabits(vfeed_signer.get_sinfo())
        signature = vfeed_signer.sign(metabits)
        w = e.to_wire(signature)
        print("w:", w)
        hfeed.write(w)
    def __init__(self):
        self.sensor_fid = binascii.unhexlify(b'028140a0502894ca')
        self.sensor_signer = crypto.HMAC(
            "md5", binascii.unhexlify(b'1c0e070381c0e0f0783c9e4f27130904'))

        self.control_fid = binascii.unhexlify(b'4c261309040281c0')
        self.control_signer = crypto.HMAC(
            "md5", binascii.unhexlify(b'1b0d060381c0e0f0783c1e8fc7633198'))

        self.sensor_feed = feed.FEED("Sensor_Feed.pcap", self.sensor_fid, None,
                                     True)

        self.control_feed = feed.FEED("Control_Feed.pcap", self.control_fid,
                                      self.control_signer, True)

        self.test_callback = 0
示例#3
0
    def __init__(self):
        self.link_layer = Lora_Link_Layer(self.receive_msg_cb)

        #self.events_list = [[0, "Hallo1"], [1, "Hallo2"], [2, "Hallo3"], [3, "Hallo4"]]

        _thread.start_new_thread(self.send_gossip, ())

        self.feed = feed.FEED("Feed.pcap", None, None, True)
示例#4
0
    def __init__(self):
        self.link_layer = Lora_Link_Layer(self.receive_msg_cb)

        #self.events_list = [[0, "Hallo1"], [1, "Hallo2"], [2, "Hallo3"], [3, "Hallo4"]]

        _thread.start_new_thread(self.send_gossip, ())

        self.create_keyfile()
        self.fid, self.signer = self.load_keyfile("secret.key")
        self.feed = feed.FEED("Feed.pcap", self.fid, self.signer, True)
        self.content = "['chat', 'Hi Bob 1']"
        self.feed.write(eval(self.content))
        self.content = "['chat', 'Hi Bob 2']"
        self.feed.write(eval(self.content))
        self.content = "['chat', 'Hi Bob 3']"
        self.feed.write(eval(self.content))
    def create_feed(self,type,kfile,fname):
        #self.create_keyfile(kfile)
        #[fid,signer] = self.load_keyfile(kfile)
        #f = feed.FEED(fname, fid,signer, True)

        #hardcoded
        if type == 0:
            fid = binascii.unhexlify(b'028140a0502894ca')
            signer = crypto.HMAC("md5", binascii.unhexlify(b'1c0e070381c0e0f0783c9e4f27130904'))

        if type == 1:
            fid = binascii.unhexlify(b'4c261309040281c0')
            signer = crypto.HMAC("md5", binascii.unhexlify(b'1b0d060381c0e0f0783c1e8fc7633198'))

        #new Feeds are generatet (True)
        f = feed.FEED(fname, fid, signer, True)

        return f,fid,signer
示例#6
0
    def generateOwnFeed(self):
        if not os.path.isdir("data"):
            os.mkdir("data")

        if not os.path.isdir("data/" + self.name):
            os.mkdir("data/" + self.name)

        # Generate a key pair

        # generate a feed
        digestmod = "sha256"
        h, signer = None, None

        # Generate a Key if non exists
        if not os.path.isfile("data/" + self.name + "/" + self.name +
                              "-secret.key"):
            print("Create " + self.name + "'s key pair at data/" + self.name +
                  "/" + self.name + "-secret.key")
            h = crypto.HMAC(digestmod)
            h.create()
            with open("data/" + self.name + "/" + self.name + "-secret.key",
                      "w") as f:
                f.write('{\n  ' +
                        (',\n '.join(h.as_string().split(','))[1:-1]) + '\n}')
                signer = crypto.HMAC(digestmod, h.get_private_key())

        print("Read " + self.name + "'s secret key.")
        with open("data/" + self.name + "/" + self.name + "-secret.key",
                  'r') as f:
            key = eval(f.read())
            h = crypto.HMAC(digestmod, key["private"], key["feed_id"])
            signer = crypto.HMAC(digestmod, bytes.fromhex(h.get_private_key()))

        print("Create or load " + self.name + "'s feed at data/" + self.name +
              "/" + self.name + "-feed.pcap")
        self.myFeed = feed.FEED(fname="data/" + self.name + "/" + self.name +
                                "-feed.pcap",
                                fid=h.get_feed_id(),
                                signer=signer,
                                create_if_notexisting=True,
                                digestmod=digestmod)
        self.id = h.get_feed_id()
示例#7
0
        f.write('{\n  ' + (',\n '.join(alice_h.as_string().split(','))[1:-1]) +
                '\n}')
        alice_signer = crypto.HMAC(alice_digestmod, alice_h.get_private_key())

print("Read Alice's secret key.")
with open("data/alice/alice-secret.key", 'r') as f:
    print("Create Alice's key pair at data/alice/alice-secret.key")
    key = eval(f.read())
    alice_h = crypto.HMAC(alice_digestmod, key["private"], key["feed_id"])
    alice_signer = crypto.HMAC(alice_digestmod,
                               bytes.fromhex(alice_h.get_private_key()))

print("Create or load Alice's feed at data/alice/alice-feed.pcap")
alice_feed = feed.FEED(fname="data/alice/alice-feed.pcap",
                       fid=alice_h.get_feed_id(),
                       signer=alice_signer,
                       create_if_notexisting=True,
                       digestmod=alice_digestmod)

## Bob
bob_digestmod = "sha256"
bob_h, bob_signer = None, None

if not os.path.isfile("data/bob/bob-secret.key"):
    print("Create Bob's key pair at data/bob/bob-secret.key")
    bob_h = crypto.HMAC(bob_digestmod)
    bob_h.create()
    with open("data/bob/bob-secret.key", "w") as f:
        f.write('{\n  ' + (',\n '.join(bob_h.as_string().split(','))[1:-1]) +
                '\n}')