chiark / gitweb /
pubkey.c, ...: Support Bernstein's `Ed25519' signature scheme.
[catacomb-python] / catacomb / __init__.py
index 115e8fe785cec67af3ce5d46b0480ad4866cea08..9522528ae6b1b930c53a8ec6e02ac6dffba96a28 100644 (file)
@@ -495,6 +495,22 @@ class X25519Priv (_BoxyPriv, X25519Pub):
   def _op(me, k, X): return x25519(k, X)
   def _hashkey(me, z): return hsalsa20_prf(z, Z128)
 
+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))
+
 ###--------------------------------------------------------------------------
 ### Built-in named curves and prime groups.