Breaks ABI! Add identification slots to abstract groups and elliptic
[u/mdw/catacomb] / dh-param.c
index 2e31c83..5ecb3cb 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: dh-param.c,v 1.2 2004/04/08 01:36:15 mdw Exp $
+ * $Id$
  *
  * Reading Diffie-Hellman parameters
  *
@@ -78,7 +78,7 @@ fail:
 
 #include "fibrand.h"
 
-int main(void)
+int main(int argc, char *argv[])
 {
   const pentry *pe;
   const char *e;
@@ -86,24 +86,31 @@ int main(void)
   grand *gr;
 
   gr = fibrand_create(0);
-  fputs("checking standard prime fields", stdout);
+  fputs("checking standard prime fields...\n", stdout);
   for (pe = ptab; pe->name; pe++) {
     dh_param dp;
     group *g;
     getinfo(&dp, pe->data);
+    printf("  %s: ", pe->name);
     g = group_prime(&dp);
+    if (mp_bits(dp.q) > 2048 &&
+       (!argv[1] || strcmp(argv[1], "keen") != 0)) {
+      fputs("skipping\n", stdout);
+      continue;
+    }
+    fflush(stdout);
     e = G_CHECK(g, gr);
     G_DESTROYGROUP(g);
     dh_paramfree(&dp);
     if (e) {
-      fprintf(stderr, "\n*** group %s fails: %s\n", pe->name, e);
+      printf("fails: %s\n", e);
       ok = 0;
-    }
-    putchar('.');
-    fflush(stdout);
+    } else
+      fputs("ok\n", stdout);
   }
   gr->ops->destroy(gr);
-  fputs(ok ? " ok\n" : " failed\n", stdout);
+  if (ok)
+    fputs("all ok\n", stdout);
   return (!ok);
 }