X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb-python/blobdiff_plain/925aa45b22569dd0d08a695a89602f1781085f89..4cc4728f637194814cde8aad98cee53b8222f549:/catacomb/__init__.py diff --git a/catacomb/__init__.py b/catacomb/__init__.py index 7ac5baf..e283744 100644 --- a/catacomb/__init__.py +++ b/catacomb/__init__.py @@ -889,24 +889,38 @@ class X448Pub (_XDHPub): class X448Priv (_XDHPriv, X448Pub): _KEYSZ = KeySZSet(X448_KEYSZ) def _op(me, k, X): return x448(k, X) - ##def _hashkey(me, z): return ??? + def _hashkey(me, z): return Shake256().hash(z).done(salsa20.keysz.default) class _EdDSAPub (_BasePub): - pass + def beginhash(me): return me._HASH() + def endhash(me, h): return h.done() class _EdDSAPriv (_BasePriv, _EdDSAPub): pass class Ed25519Pub (_EdDSAPub): _PUBSZ = KeySZSet(ED25519_PUBSZ) - def verify(me, msg, sig): - return ed25519_verify(me.pub, msg, sig) + _HASH = sha512 + def verify(me, msg, sig, **kw): + return ed25519_verify(me.pub, msg, sig, **kw) class Ed25519Priv (_EdDSAPriv, Ed25519Pub): _KEYSZ = KeySZAny(ED25519_KEYSZ) def _pubkey(me, priv): return ed25519_pubkey(priv) - def sign(me, msg): - return ed25519_sign(me.priv, msg, pub = me.pub) + 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.