X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb/blobdiff_plain/0f00dc4c8eb47e67bc0f148c2dd109f73a451e0a..6fb4ecfbce59647143cb63115cdef28980f2fcb3:/progs/perftest.c diff --git a/progs/perftest.c b/progs/perftest.c index 97a2e0f4..e6f7ddf0 100644 --- a/progs/perftest.c +++ b/progs/perftest.c @@ -67,6 +67,8 @@ #include "gcipher.h" #include "ghash.h" #include "gmac.h" +#include "poly1305.h" + #include "ectab.h" #include "ptab.h" @@ -429,6 +431,40 @@ static void hash_run(void *cc) GH_DESTROY(h); } +/* --- Poly1305 --- */ + +typedef struct poly1305_jobctx { + poly1305_key k; + octet s[POLY1305_MASKSZ]; + octet *m; + size_t sz; + size_t n; +} poly1305_jobctx; + +static void *poly1305_jobinit(opts *o) +{ + octet k[POLY1305_KEYSZ]; + poly1305_jobctx *c = CREATE(poly1305_jobctx); + rand_get(RAND_GLOBAL, k, sizeof(k)); + poly1305_keyinit(&c->k, k, sizeof(k)); + rand_get(RAND_GLOBAL, c->s, sizeof(c->s)); + c->sz = o->gbits ? o->gbits : 65536; + c->n = o->n ? o->n : 16; + c->m = xmalloc(c->sz); + return (c); +} + +static void poly1305_jobrun(void *cc) +{ + poly1305_jobctx *c = cc; + poly1305_ctx ctx; + octet t[POLY1305_TAGSZ]; + size_t i; + poly1305_macinit(&ctx, &c->k, c->s); + for (i = 0; i < c->n; i++) poly1305_hash(&ctx, c->m, c->sz); + poly1305_done(&ctx, t); +} + /* --- Job table --- */ typedef struct jobops { @@ -452,6 +488,7 @@ static const jobops jobtab[] = { { "ksched", ksched_init, ksched_run }, { "enc", enc_init, enc_run }, { "hash", hash_init, hash_run }, + { "poly1305", poly1305_jobinit, poly1305_jobrun }, { 0, 0, 0 } };