Makefile.m4: Remove mplimits.[ch] on clean.
[u/mdw/catacomb] / perftest.c
index d356ce9..3c26937 100644 (file)
@@ -29,6 +29,8 @@
 
 /*----- Header files ------------------------------------------------------*/
 
+#define _FILE_OFFSET_BITS 64
+
 #include "config.h"
 
 #include <errno.h>
@@ -79,6 +81,8 @@ typedef struct opts {
   unsigned n;                          /* Number of factors */
   unsigned i;                          /* Number of intervals (or zero) */
   double t;                            /* Time for each interval (secs) */
+  unsigned f;                          /* Flags */
+#define OF_NOCHECK 1u                  /*   Don't do group checking */
 } opts;
 
 /*----- Job switch --------------------------------------------------------*/
@@ -206,7 +210,7 @@ static void *grp_init(opts *o)
     dh_gen(&gp, o->gbits, o->fbits, 0, &rand_global, pgen_evspin, 0);
   }
   c->g = group_prime(&gp);
-  if ((e = G_CHECK(c->g, &rand_global)) != 0)
+  if (!(o->f & OF_NOCHECK) && (e = G_CHECK(c->g, &rand_global)) != 0)
     die(1, "bad group: %s", e);
   if (!o->n) o->n = 1;
   c->n = o->n;
@@ -234,7 +238,7 @@ static void *grec_init(opts *o)
   if ((e = ec_getinfo(&ei, o->name)) != 0)
     die(1, "bad curve: %s", e);
   c->g = group_ec(&ei);
-  if ((e = G_CHECK(c->g, &rand_global)) != 0)
+  if (!(o->f & OF_NOCHECK) && (e = G_CHECK(c->g, &rand_global)) != 0)
     die(1, "bad group: %s", e);
   if (!o->n) o->n = 1;
   c->n = o->n;
@@ -482,6 +486,7 @@ Options:\n\
 \n\
 -C, --name=NAME                Select curve/DH-group/enc/hash name.\n\
 -b, --field-bits       Field size for g-prime and rsa.\n\
+-q, --no-check         Don't check field/group for validity.\n\
 -B, --group-bits       Group size for g-prime; key size for ksched;\n\
                          data size for enc and hash.\n\
 -n, --factors=COUNT    Number of factors for {exp,mul}-sim.\n\
@@ -555,10 +560,11 @@ int main(int argc, char *argv[])
       { "factors",     OPTF_ARGREQ,    0,      'n' },
       { "intervals",   OPTF_ARGREQ,    0,      'i' },
       { "time",                OPTF_ARGREQ,    0,      't' },
+      { "no-check",    0,              0,      'q' },
       { 0,             0,              0,      0 }
     };
 
-    i = mdwopt(argc, argv, "hvulC:b:B:n:i:t:", opts, 0, 0, 0);
+    i = mdwopt(argc, argv, "hvulC:b:B:n:i:t:q", opts, 0, 0, 0);
     if (i < 0) break;
     switch (i) {
       case 'h': help(stdout); exit(0);
@@ -571,6 +577,7 @@ int main(int argc, char *argv[])
       case 'n': o.n = uarg("factor count", optarg); break;
       case 'i': o.i = uarg("interval count", optarg); break;
       case 't': o.t = farg("interval length", optarg); break;
+      case 'q': o.f |= OF_NOCHECK; break;
       default: usage(stderr); exit(1);
     }
   }