X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb/blobdiff_plain/25f673625c9f2d3a323fed185f4b0c4b4a241976..d56fd9d102115283485493dbe56b0d320ac99097:/progs/perftest.c diff --git a/progs/perftest.c b/progs/perftest.c index ebed0173..33774879 100644 --- a/progs/perftest.c +++ b/progs/perftest.c @@ -63,6 +63,7 @@ #include "ec.h" #include "group.h" #include "x25519.h" +#include "ed25519.h" #include "cc.h" #include "gcipher.h" @@ -288,6 +289,56 @@ static void *x25519_jobinit(opts *o) static void x25519_jobrun(void *cc) { x25519_jobctx *c = cc; octet z[X25519_OUTSZ]; x25519(z, c->k, c->p); } +/* --- Ed25519 --- */ + +typedef struct ed25519_signctx { + octet k[ED25519_KEYSZ]; + octet K[ED25519_PUBSZ]; + octet m[64]; +} ed25519_signctx; + +typedef struct ed25519_vrfctx { + octet K[ED25519_PUBSZ]; + octet m[64]; + octet sig[ED25519_SIGSZ]; +} ed25519_vrfctx; + +static void *ed25519_signinit(opts *o) +{ + ed25519_signctx *c = CREATE(ed25519_signctx); + + rand_get(RAND_GLOBAL, c->k, sizeof(c->k)); + rand_get(RAND_GLOBAL, c->m, sizeof(c->m)); + ed25519_pubkey(c->K, c->k, sizeof(c->k)); + return (c); +} + +static void ed25519_signrun(void *cc) +{ + ed25519_signctx *c = cc; + octet sig[ED25519_SIGSZ]; + + ed25519_sign(sig, c->k, sizeof(c->k), c->K, c->m, sizeof(c->m)); +} + +static void *ed25519_vrfinit(opts *o) +{ + octet k[ED25519_KEYSZ]; + ed25519_vrfctx *c = CREATE(ed25519_vrfctx); + + rand_get(RAND_GLOBAL, k, sizeof(k)); + rand_get(RAND_GLOBAL, c->m, sizeof(c->m)); + ed25519_pubkey(c->K, k, sizeof(k)); + ed25519_sign(c->sig, k, sizeof(k), c->K, c->m, sizeof(c->m)); + return (c); +} + +static void ed25519_vrfrun(void *cc) +{ + ed25519_vrfctx *c = cc; + ed25519_verify(c->K, c->m, sizeof(c->m), c->sig); +} + /* --- RSA --- */ typedef struct rsapriv_ctx { @@ -505,6 +556,8 @@ static const jobops jobtab[] = { { "rsa-priv-blind", rsaprivblind_init, rsapriv_run }, { "rsa-pub", rsapub_init, rsapub_run }, { "x25519", x25519_jobinit, x25519_jobrun }, + { "ed25519-sign", ed25519_signinit, ed25519_signrun }, + { "ed25519-vrf", ed25519_vrfinit, ed25519_vrfrun }, { "ksched", ksched_init, ksched_run }, { "enc", enc_init, enc_run }, { "hash", hash_init, hash_run },