X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/389d822217b802003674d2085b3b902cbe13cf25..fe6657c961b01ec72e9f35f4c3d96b11b31cf09c:/ec-info.c diff --git a/ec-info.c b/ec-info.c index bf9607c..2228381 100644 --- a/ec-info.c +++ b/ec-info.c @@ -48,7 +48,7 @@ * Use: Parses an elliptic curve description, which has the form * * * a field description - * * an optional `/' + * * an optional `;' * * `prime', `primeproj', `bin', or `binproj' * * an optional `:' * * the %$a$% parameter @@ -63,7 +63,7 @@ ec_curve *ec_curveparse(qd_parse *qd) field *f; if ((f = field_parse(qd)) == 0) goto fail; - qd_delim(qd, '/'); + qd_delim(qd, ';'); switch (qd_enum(qd, "prime,primeproj,bin,binproj")) { case 0: if (F_TYPE(f) != FTY_PRIME) { @@ -164,7 +164,7 @@ fail: return (0); } -/* --- @getinfo@ --- * +/* --- @ec_infofromdata@ --- * * * Arguments: @ec_info *ei@ = where to write the information * @ecdata *ed@ = raw data @@ -175,7 +175,7 @@ fail: * curves. */ -static void getinfo(ec_info *ei, ecdata *ed) +void ec_infofromdata(ec_info *ei, ecdata *ed) { field *f; @@ -218,7 +218,7 @@ static void getinfo(ec_info *ei, ecdata *ed) * curve, or it has the form * * * elliptic curve description - * * optional `/' + * * optional `;' * * common point * * optional `:' * * group order @@ -234,11 +234,15 @@ int ec_infoparse(qd_parse *qd, ec_info *ei) const ecentry *ee; mp *r = MP_NEW, *h = MP_NEW; - for (ee = ectab; ee->name; ee++) - if (qd_enum(qd, ee->name) >= 0) { getinfo(ei, ee->data); goto found; } + for (ee = ectab; ee->name; ee++) { + if (qd_enum(qd, ee->name) >= 0) { + ec_infofromdata(ei, ee->data); + goto found; + } + } if ((c = ec_curveparse(qd)) == 0) goto fail; - qd_delim(qd, '/'); if (!ec_ptparse(qd, &g)) goto fail; + qd_delim(qd, ';'); if (!ec_ptparse(qd, &g)) goto fail; qd_delim(qd, ':'); if ((r = qd_getmp(qd)) == 0) goto fail; qd_delim(qd, '*'); if ((h = qd_getmp(qd)) == 0) goto fail; ei->c = c; ei->g = g; ei->r = r; ei->h = h; @@ -559,23 +563,21 @@ int main(int argc, char *argv[]) } } } else { - fputs("checking standard curves...\n", stdout); + fputs("checking standard curves:", stdout); + fflush(stdout); for (ee = ectab; ee->name; ee++) { ec_info ei; - printf(" %s: ", ee->name); - fflush(stdout); - getinfo(&ei, ee->data); + ec_infofromdata(&ei, ee->data); e = ec_checkinfo(&ei, gr); ec_freeinfo(&ei); if (e) { - printf("fails: %s\n", e); + printf(" [%s fails: %s]", ee->name, e); ok = 0; } else - fputs("ok\n", stdout); + printf(" %s", ee->name); fflush(stdout); } - if (ok) - fputs("all ok\n", stdout); + fputs(ok ? " ok\n" : " failed\n", stdout); } gr->ops->destroy(gr); return (!ok);