X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/b817bfc642225b8c3c0b6a7e42d1fb949b61a606..53cbeae3058cdebd54bf9a6c18d9f46ee52f0595:/ec-info.c diff --git a/ec-info.c b/ec-info.c index 1a95cd2..cf65584 100644 --- a/ec-info.c +++ b/ec-info.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: ec-info.c,v 1.5 2004/04/08 01:36:15 mdw Exp $ + * $Id: ec-info.c,v 1.6 2004/04/08 16:17:32 mdw Exp $ * * Elliptic curve information management * @@ -525,29 +525,48 @@ const char *ec_checkinfo(const ec_info *ei, grand *gr) #include "fibrand.h" -int main(void) +int main(int argc, char *argv[]) { const ecentry *ee; const char *e; int ok = 1; + int i; grand *gr; gr = fibrand_create(0); - fputs("checking standard curves: ", stdout); - for (ee = ectab; ee->name; ee++) { - ec_info ei; - getinfo(&ei, ee->data); - e = ec_checkinfo(&ei, gr); - ec_freeinfo(&ei); - if (e) { - fprintf(stderr, "\n*** curve %s fails: %s\n", ee->name, e); - ok = 0; + if (argc > 1) { + for (i = 1; i < argc; i++) { + ec_info ei; + if ((e = ec_getinfo(&ei, argv[i])) != 0) + fprintf(stderr, "bad curve spec `%s': %s", argv[i], e); + else { + e = ec_checkinfo(&ei, gr); + ec_freeinfo(&ei); + if (!e) + printf("OK %s\n", argv[i]); + else { + printf("BAD %s: %s\n", argv[i], e); + ok = 0; + } + } + } + } else { + fputs("checking standard curves: ", stdout); + for (ee = ectab; ee->name; ee++) { + ec_info ei; + getinfo(&ei, ee->data); + e = ec_checkinfo(&ei, gr); + ec_freeinfo(&ei); + if (e) { + fprintf(stderr, "\n*** curve %s fails: %s\n", ee->name, e); + ok = 0; + } + putchar('.'); + fflush(stdout); } - putchar('.'); - fflush(stdout); + fputs(ok ? " ok\n" : " failed\n", stdout); } gr->ops->destroy(gr); - fputs(ok ? " ok\n" : " failed\n", stdout); return (!ok); }