In [2]:
import ed25519
signing_key, verifying_key = ed25519.create_keypair()
open("my-secret-key","wb").write(signing_key.to_bytes())
vkey_hex = verifying_key.to_ascii(encoding="hex")
print ("the public key is", vkey_hex)


the public key is b'68c5c45e01be2aef5acb9414c78c677fcfee6bf7569f86d6c2fd1f678d1b2b56'

In [4]:
keydata = open("my-secret-key","rb").read()
signing_key = ed25519.SigningKey(keydata)

In [5]:
import os, hashlib
master = os.urandom(87)
seed = hashlib.sha256(master).digest()
signing_key = ed25519.SigningKey(seed)

In [7]:
sig = signing_key.sign(b"hello world", encoding="base64")
print("sig is:", sig)


sig is: b'v340+kzFE14wZ7peWkFLVaaHbSd6X/CvZZ7xo75Qq3qcV544kBqWs0Xuy3pqyb7THWhOnaquBHHjbaOryS4jDA'

In [17]:
vkey_hex = b"1246b84985e1ab5f83f4ec2bdf271114666fd3d9e24d12981a3c861b9ed523c6"
verifying_key = ed25519.VerifyingKey(vkey_hex, encoding="hex")

def check_sig(sig, msg, verifying_key):
    try:
      verifying_key.verify(sig, msg, encoding="base64")
      print("signature is good")
    except ed25519.BadSignatureError:
      print("signature is bad!")
check_sig(sig, b"hello world", verifying_key)


signature is bad!

In [21]:
check_sig(sig, b"hello world", signing_key.get_verifying_key())


signature is good

In [ ]: