Forking what is left of ZeroNet and hopefully adding an AT Proto Frontend/Proxy
at main 39 lines 976 B view raw
1import hashlib 2import struct 3 4 5# Electrum, the heck?! 6 7def bchr(i): 8 return struct.pack("B", i) 9 10def encode(val, base, minlen=0): 11 base, minlen = int(base), int(minlen) 12 code_string = b"".join([bchr(x) for x in range(256)]) 13 result = b"" 14 while val > 0: 15 index = val % base 16 result = code_string[index:index + 1] + result 17 val //= base 18 return code_string[0:1] * max(minlen - len(result), 0) + result 19 20def insane_int(x): 21 x = int(x) 22 if x < 253: 23 return bchr(x) 24 elif x < 65536: 25 return bchr(253) + encode(x, 256, 2)[::-1] 26 elif x < 4294967296: 27 return bchr(254) + encode(x, 256, 4)[::-1] 28 else: 29 return bchr(255) + encode(x, 256, 8)[::-1] 30 31 32def magic(message): 33 return b"\x18Bitcoin Signed Message:\n" + insane_int(len(message)) + message 34 35def format(message): 36 return hashlib.sha256(magic(message)).digest() 37 38def dbl_format(message): 39 return hashlib.sha256(format(message)).digest()