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
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)
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
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()
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}')