import%20marimo%0A%0A__generated_with%20%3D%20%220.15.3%22%0Aapp%20%3D%20marimo.App()%0A%0Awith%20app.setup%3A%0A%20%20%20%20import%20fastecdsa.keys%20as%20keys%0A%20%20%20%20from%20fastecdsa%20import%20ecdsa%0A%20%20%20%20from%20fastecdsa.curve%20import%20secp256k1%20as%20curve%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20from%20hashlib%20import%20sha256%0A%0A%20%20%20%20private_key%20%3D%20keys.gen_private_key(curve)%0A%20%20%20%20public_key%20%3D%20keys.get_public_key(private_key%2C%20curve)%0A%0A%20%20%20%20%23%20We%20send%20the%20clear%20message...%0A%20%20%20%20message%20%3D%20%22I%20love%20this%20lecture%22%0A%0A%20%20%20%20%23%20standard%20signature%2C%20returns%20two%20integers%0A%20%20%20%20r%2C%20s%20%3D%20ecdsa.sign(message%2C%20private_key%2C%20curve%2C%20hashfunc%3Dsha256)%0A%20%20%20%20print(r)%0A%20%20%20%20print(s)%0A%0A%20%20%20%20%23%20should%20return%20True%20as%20the%20signature%20we%20just%20generated%20is%20valid.%0A%20%20%20%20valid%20%3D%20ecdsa.verify((r%2C%20s)%2C%20message%2C%20public_key%2C%20curve%2C%20hashfunc%3Dsha256)%0A%20%20%20%20assert%20valid%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
8f470515c33042031a3d58ff9ec0a1bf238b4fc9ff9a253eac5b2dc02537355a