+class Ed25519Pub (object):
+ def __init__(me, pub):
+ me.pub = pub
+ def verify(me, msg, sig):
+ return ed25519_verify(me.pub, msg, sig)
+
+class Ed25519Priv (Ed25519Pub):
+ def __init__(me, priv):
+ me.priv = priv
+ Ed25519Pub.__init__(me, ed25519_pubkey(priv))
+ def sign(me, msg):
+ return ed25519_sign(me.priv, msg, pub = me.pub)
+ @classmethod
+ def generate(cls, rng = rand):
+ return cls(rng.block(ED25519_KEYSZ))
+