chiark / gitweb /
pubkey.c: Add support for Ed448 signatures, following RFC8032.
authorMark Wooding <mdw@distorted.org.uk>
Thu, 11 May 2017 09:42:15 +0000 (10:42 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sun, 14 May 2017 03:29:42 +0000 (04:29 +0100)
catacomb-python.h
catacomb.c
catacomb/__init__.py
pubkey.c

index 65f2ed10e5508931303d0b62512ad8d8a049e26b..03077019e36bd6f39c8654318ba742d58cf72721 100644 (file)
@@ -92,6 +92,7 @@
 #include <catacomb/x25519.h>
 #include <catacomb/x448.h>
 #include <catacomb/ed25519.h>
+#include <catacomb/ed448.h>
 
 #include <catacomb/gf.h>
 #include <catacomb/gfreduce.h>
index 9e3b9cb46fc8d29c0622c3e8b63df3282eefbda0..f9e85875f192081da04ec358f1a63977362aca48 100644 (file)
@@ -49,6 +49,7 @@ static const struct nameval consts[] = {
   C(X448_KEYSZ), C(X448_PUBSZ), C(X448_OUTSZ),
   C(ED25519_KEYSZ), C(ED25519_PUBSZ), C(ED25519_SIGSZ),
     C(ED25519_MAXPERSOSZ),
+  C(ED448_KEYSZ), C(ED448_PUBSZ), C(ED448_SIGSZ), C(ED448_MAXPERSOSZ),
 #define ENTRY(tag, val, str) C(KERR_##tag),
   KEY_ERRORS(ENTRY)
 #undef ENTRY
index 5cbf9935e901e666818b8ad7008b512b41be988b..e283744eff3378ca89f16e0d394558b56de8cfd8 100644 (file)
@@ -910,6 +910,18 @@ class Ed25519Priv (_EdDSAPriv, Ed25519Pub):
   def sign(me, msg, **kw):
     return ed25519_sign(me.priv, msg, pub = me.pub, **kw)
 
+class Ed448Pub (_EdDSAPub):
+  _PUBSZ = KeySZSet(ED448_PUBSZ)
+  _HASH = shake256
+  def verify(me, msg, sig, **kw):
+    return ed448_verify(me.pub, msg, sig, **kw)
+
+class Ed448Priv (_EdDSAPriv, Ed448Pub):
+  _KEYSZ = KeySZAny(ED448_KEYSZ)
+  def _pubkey(me, priv): return ed448_pubkey(priv)
+  def sign(me, msg, **kw):
+    return ed448_sign(me.priv, msg, pub = me.pub, **kw)
+
 ###--------------------------------------------------------------------------
 ### Built-in named curves and prime groups.
 
index 73744299be232a845a2804ce30397c8c59d71cae..f94108f54b29d138221cb5c7ebd6d5ca6bff0c75 100644 (file)
--- a/pubkey.c
+++ b/pubkey.c
@@ -1164,7 +1164,8 @@ XDHS(DEFXDH)
 /*----- Ed25519 and related algorithms ------------------------------------*/
 
 #define EDDSAS(_)                                                      \
-  _(ED25519, ed25519, -1, ctx)
+  _(ED25519, ed25519, -1, ctx)                                         \
+  _(ED448, ed448, 0, )
 
 #define DEFEDDSA(ED, ed, phdflt, sigver)                               \
                                                                        \