symm/poly1305.c: Keep the working buffers in `dstr' buffers.
authorMark Wooding <mdw@distorted.org.uk>
Tue, 29 Oct 2019 10:26:11 +0000 (10:26 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 9 May 2020 19:57:33 +0000 (20:57 +0100)
This way, they can be printed easily using the testrig type machinery.

symm/poly1305.c

index 9deaf19..df38939 100644 (file)
@@ -960,10 +960,18 @@ static int vrf_mct(dstr v[])
   rijndael_ecbctx rij;
   poly1305_key key;
   poly1305_ctx mac;
-  dstr d = DSTR_INIT;
-  octet k[16], r[16], n[16], s[16], *t, m[MSZMAX] = { 0 };
+  dstr dk = DSTR_INIT, dr = DSTR_INIT, dn = DSTR_INIT,
+    dt = DSTR_INIT, dm = DSTR_INIT;
+  octet *k, *r, s[16], *n, *t, *m;
   int ok = 1;
 
+  DENSURE(&dk, 16);     k = (octet *)dk.buf; dk.len = 16;
+  DENSURE(&dr, 16);     r = (octet *)dr.buf; dr.len = 16;
+  DENSURE(&dn, 16);     n = (octet *)dn.buf; dn.len = 16;
+  DENSURE(&dt, 16);     t = (octet *)dt.buf; dt.len = 16;
+  DENSURE(&dm, MSZMAX); m = (octet *)dm.buf; dm.len = MSZMAX;
+  memset(m, 0, MSZMAX);
+
   if (v[0].len != 16) { fprintf(stderr, "AES key len\n"); exit(2); }
   if (v[1].len != 16) { fprintf(stderr, "poly key len\n"); exit(2); }
   if (v[2].len != 16) { fprintf(stderr, "nonce len\n"); exit(2); }
@@ -972,7 +980,6 @@ static int vrf_mct(dstr v[])
   memcpy(r, v[1].buf, 16);
   memcpy(n, v[2].buf, 16);
   niter = *(unsigned long *)v[3].buf;
-  dstr_ensure(&d, 16); d.len = 16; t = (octet *)d.buf;
 
   rijndael_ecbinit(&rij, k, 16, 0);
   poly1305_keyinit(&key, r, 16);
@@ -1006,11 +1013,15 @@ static int vrf_mct(dstr v[])
     fprintf(stderr, "\n\tinitial n = "); type_hex.dump(&v[2], stderr);
     fprintf(stderr, "\n\titerations = %lu", niter);
     fprintf(stderr, "\n\texpected = "); type_hex.dump(&v[4], stderr);
-    fprintf(stderr, "\n\tcalculated = "); type_hex.dump(&d, stderr);
+    fprintf(stderr, "\n\tcalculated = "); type_hex.dump(&dt, stderr);
     fputc('\n', stderr);
   }
 
-  dstr_destroy(&d);
+  dstr_destroy(&dk);
+  dstr_destroy(&dr);
+  dstr_destroy(&dn);
+  dstr_destroy(&dt);
+  dstr_destroy(&dm);
   return (ok);
 }