From 7db0c82e39c0da1a71c16634523d40d6db924712 Mon Sep 17 00:00:00 2001 From: Script Kid Date: Sat, 17 Feb 2018 21:50:22 +0100 Subject: [PATCH] add url verification proposal --- bisurl.py | 35 +++++++++++++++++++++++++++++++++++ suggested_peers.txt | 1 + wallet.py | 8 +++++++- 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 bisurl.py diff --git a/bisurl.py b/bisurl.py new file mode 100644 index 00000000..b0f8e3b7 --- /dev/null +++ b/bisurl.py @@ -0,0 +1,35 @@ +import hashlib,base64 + +def checksum(string): + #return base64.urlsafe_b64encode(string.encode("utf-8")).decode("utf-8")[:8] + m = hashlib.md5() + m.update(string.encode("utf-8")) + return m.hexdigest()[:8] + + +def create_url(command, address, recipient, amount, openfield): + if command == "pay": + openfield_b64_encode = (base64.urlsafe_b64encode(openfield.encode("utf-8"))).decode("utf-8") + print (openfield_b64_encode) + + url_output = "bis://{}/{}/{}/{}/{}/".format(command,address,recipient,amount,openfield_b64_encode) + return url_output+checksum(url_output) + + +def read_url(url): + url_split = url.split("/") + #print(url_split) + + + reconstruct = "bis://{}/{}/{}/{}/{}/".format(url_split[2],url_split[3],url_split[4],url_split[5],url_split[6]) + openfield_b64_decode = base64.urlsafe_b64decode(url_split[6]).decode("utf-8") + + if checksum(reconstruct) == url_split[7]: + print ("Checksum match") + return url_split[2],url_split[3],url_split[4],url_split[5],openfield_b64_decode + else: + print ("Checksum mismatch",checksum(reconstruct),url_split[7]) + return + +print ("create_url", create_url ("pay", "address", "recipient", "10", "eeeeeeeeeasdasdasdasdasdeeeeeeeeeeee")) +print ("read_url", read_url("bis://pay/address/recipient/10/ZWVlZWVlZWVlYXNkYXNkYXNkYXNkYXNkZWVlZWVlZWVlZWVl/7bfd1630")) \ No newline at end of file diff --git a/suggested_peers.txt b/suggested_peers.txt index 3f4a745a..64d8768f 100644 --- a/suggested_peers.txt +++ b/suggested_peers.txt @@ -73,3 +73,4 @@ ('91.92.136.121', '5658') ('78.46.74.182', '5658') ('127.0.0.1', '5658') +('146.199.65.231', '5658') diff --git a/wallet.py b/wallet.py index f874de96..4b062f92 100644 --- a/wallet.py +++ b/wallet.py @@ -3,6 +3,7 @@ import PIL.Image, PIL.ImageTk, pyqrcode, os, hashlib, time, base64, connections, icons, log, socks, ast, options, tarfile, glob, essentials, re from tokens import * from decimal import * +from bisurl import * getcontext().prec = 8 # decimal places print(getcontext()) @@ -45,7 +46,6 @@ s = socks.socksocket() s.settimeout(3) - def node_connect(): while True: try: @@ -1083,6 +1083,12 @@ def hello(): tokens_b = Button(f5, text="Tokens", command=tokens, height=1, width=10, font=("Tahoma", 8)) tokens_b.grid(row=button_row_zero+7, column=0, sticky=W + E + S, pady=0, padx=15) +create_url_b = Button(f5, text="Create URL", command=lambda: create_url("pay",myaddress,recipient.get(),amount.get(),openfield.get("1.0", END).strip()), height=1, width=10, font=("Tahoma", 8)) +create_url_b.grid(row=button_row_zero+8, column=0, sticky=W + E + S, pady=0, padx=15) + +read_url_b = Button(f5, text="Read URL", command=lambda: read_url(url.get()), height=1, width=10, font=("Tahoma", 8)) +read_url_b.grid(row=button_row_zero+9, column=0, sticky=W + E + S, pady=0, padx=15) + #quit_b = Button(f5, text="Quit", command=app_quit, height=1, width=10, font=("Tahoma", 8)) #quit_b.grid(row=16, column=0, sticky=W + E + S, pady=0, padx=15)