base/asm-common.h (x86), and knock-on: Add macros for full-size regs.
[catacomb] / pub / x25519.c
index aeff290..cfdfea6 100644 (file)
@@ -111,9 +111,12 @@ void x25519(octet zz[X25519_OUTSZ],
 #include <stdio.h>
 #include <string.h>
 
+#include <mLib/macros.h>
 #include <mLib/report.h>
 #include <mLib/testrig.h>
 
+#include "ct.h"
+
 static int vrf_x25519(dstr dv[])
 {
   dstr dz = DSTR_INIT;
@@ -123,11 +126,13 @@ static int vrf_x25519(dstr dv[])
   if (dv[1].len != X25519_PUBSZ) die(1, "bad public length");
   if (dv[2].len != X25519_OUTSZ) die(1, "bad result length");
 
+  ct_poison(dv[0].buf, dv[0].len);
   dstr_ensure(&dz, X25519_OUTSZ); dz.len = X25519_OUTSZ;
   x25519((octet *)dz.buf,
         (const octet *)dv[0].buf,
         (const octet *)dv[1].buf);
-  if (memcmp(dz.buf, dv[2].buf, X25519_OUTSZ) != 0) {
+  ct_remedy(dz.buf, dz.len);
+  if (MEMCMP(dz.buf, !=, dv[2].buf, X25519_OUTSZ)) {
     ok = 0;
     fprintf(stderr, "failed!");
     fprintf(stderr, "\n\t   k = "); type_hex.dump(&dv[0], stderr);
@@ -163,7 +168,7 @@ static int vrf_mct(dstr dv[])
   }
   memcpy(d.buf, k, d.len);
 
-  if (memcmp(d.buf, dv[3].buf, d.len) != 0) {
+  if (MEMCMP(d.buf, !=, dv[3].buf, d.len)) {
     ok = 0;
     fprintf(stderr, "failed...");
     fprintf(stderr, "\n\tinitial k = "); type_hex.dump(&dv[0], stderr);