/* -*-c-*-
*
- * $Id: field-parse.c,v 1.1 2004/03/27 17:54:11 mdw Exp $
+ * $Id: field-parse.c,v 1.2 2004/04/01 21:28:41 mdw Exp $
*
* Parse field descriptions
*
/*----- Revision history --------------------------------------------------*
*
* $Log: field-parse.c,v $
+ * Revision 1.2 2004/04/01 21:28:41 mdw
+ * Normal basis support (translates to poly basis internally). Rewrite
+ * EC and prime group table generators in awk, so that they can reuse data
+ * for repeated constants.
+ *
* Revision 1.1 2004/03/27 17:54:11 mdw
* Standard curves and curve checking.
*
field *field_parse(qd_parse *qd)
{
- field *f;
- mp *m = MP_NEW;
+ field *f = 0;
+ mp *m = MP_NEW, *b = MP_NEW;
- switch (qd_enum(qd, "prime,niceprime,binpoly")) {
+ switch (qd_enum(qd, "prime,niceprime,binpoly,binnorm")) {
case 0:
qd_delim(qd, ':');
- if ((m = qd_getmp(qd)) == 0) return (0);
+ if ((m = qd_getmp(qd)) == 0) goto done;
f = field_prime(m);
break;
case 1:
qd_delim(qd, ':');
- if ((m = qd_getmp(qd)) == 0) return (0);
+ if ((m = qd_getmp(qd)) == 0) goto done;
f = field_niceprime(m);
break;
case 2:
qd_delim(qd, ':');
- if ((m = qd_getmp(qd)) == 0) return (0);
+ if ((m = qd_getmp(qd)) == 0) goto done;
f = field_binpoly(m);
break;
+ case 3:
+ qd_delim(qd, ':');
+ if ((m = qd_getmp(qd)) == 0) goto done;
+ qd_delim(qd, ',');
+ if ((b = qd_getmp(qd)) == 0) goto done;
+ f = field_binnorm(m, b);
+ break;
default:
f = 0;
break;
}
+done:
mp_drop(m);
+ mp_drop(b);
return (f);
}