%load_ext autoreload %autoreload 2 # %% import hashlib from zokrates.eddsa import PrivateKey, PublicKey from zokrates.field import FQ from zokrates.utils import write_for_zokrates_cli raw_msg = "This is my secret message" msg = hashlib.sha512(raw_msg.encode("utf-8")).digest() # sk = PrivateKey.from_rand() # Seeded for debug purpose key = FQ(1997011358982923168928344992199991480689546837621580239342656433234255379025) sk = PrivateKey(key) sig = sk.sign(msg) pk = PublicKey.from_private(sk) is_verified = pk.verify(sig, msg) print(is_verified) #%% hAM = 108668349213596007683571215050197457258149172074632839444545934270199648764593 hAMinv = inv(108668349213596007683571215050197457258149172074632839444545934270199648764593, 21888242871839275222246405745257275088614511777268538073601725287587578984328) assert hAM * hAMinv % 21888242871839275222246405745257275088614511777268538073601725287587578984328== 1 #%% B = Point.generator() sB = B.mult(sig[1]) #%% sbR = (sB - sig[0]) assert sbR.mult(hAMinv) == pk.p