X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb/blobdiff_plain/57fe52c7c965037770febce691a3aade8e16975b..401722dcd398760d2effc38a592ceab2bc4fc06e:/progs/perftest.c diff --git a/progs/perftest.c b/progs/perftest.c index 80f060aa..f064c2aa 100644 --- a/progs/perftest.c +++ b/progs/perftest.c @@ -67,6 +67,7 @@ #include "x25519.h" #include "x448.h" #include "ed25519.h" +#include "ed448.h" #include "cc.h" #include "gcipher.h" @@ -361,6 +362,56 @@ static void ed25519_vrfrun(void *cc) ed25519_verify(c->K, c->m, sizeof(c->m), c->sig); } +/* --- Ed448 --- */ + +typedef struct ed448_signctx { + octet k[ED448_KEYSZ]; + octet K[ED448_PUBSZ]; + octet m[64]; +} ed448_signctx; + +typedef struct ed448_vrfctx { + octet K[ED448_PUBSZ]; + octet m[64]; + octet sig[ED448_SIGSZ]; +} ed448_vrfctx; + +static void *ed448_signinit(opts *o) +{ + ed448_signctx *c = CREATE(ed448_signctx); + + rand_get(RAND_GLOBAL, c->k, sizeof(c->k)); + rand_get(RAND_GLOBAL, c->m, sizeof(c->m)); + ed448_pubkey(c->K, c->k, sizeof(c->k)); + return (c); +} + +static void ed448_signrun(void *cc) +{ + ed448_signctx *c = cc; + octet sig[ED448_SIGSZ]; + + ed448_sign(sig, c->k, sizeof(c->k), c->K, 0, 0, 0, c->m, sizeof(c->m)); +} + +static void *ed448_vrfinit(opts *o) +{ + octet k[ED448_KEYSZ]; + ed448_vrfctx *c = CREATE(ed448_vrfctx); + + rand_get(RAND_GLOBAL, k, sizeof(k)); + rand_get(RAND_GLOBAL, c->m, sizeof(c->m)); + ed448_pubkey(c->K, k, sizeof(k)); + ed448_sign(c->sig, k, sizeof(k), c->K, 0, 0, 0, c->m, sizeof(c->m)); + return (c); +} + +static void ed448_vrfrun(void *cc) +{ + ed448_vrfctx *c = cc; + ed448_verify(c->K, 0, 0, 0, c->m, sizeof(c->m), c->sig); +} + /* --- RSA --- */ typedef struct rsapriv_ctx { @@ -584,6 +635,8 @@ static const jobops jobtab[] = { { "x448", x448_jobinit, x448_jobrun }, { "ed25519-sign", ed25519_signinit, ed25519_signrun }, { "ed25519-vrf", ed25519_vrfinit, ed25519_vrfrun }, + { "ed448-sign", ed448_signinit, ed448_signrun }, + { "ed448-vrf", ed448_vrfinit, ed448_vrfrun }, { "ksched", ksched_init, ksched_run }, { "enc", enc_init, enc_run }, { "hash", hash_init, hash_run },