projects
/
u
/
mdw
/
catacomb
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
dh_kcdsagen: Generate cofactor first.
[u/mdw/catacomb]
/
field-parse.c
diff --git
a/field-parse.c
b/field-parse.c
index
0a09e57
..
5f9092a
100644
(file)
--- a/
field-parse.c
+++ b/
field-parse.c
@@
-1,6
+1,6
@@
/* -*-c-*-
*
/* -*-c-*-
*
- * $Id: field-parse.c,v 1.
1 2004/03/27 17:54:11
mdw Exp $
+ * $Id: field-parse.c,v 1.
4 2004/04/08 01:36:15
mdw Exp $
*
* Parse field descriptions
*
*
* Parse field descriptions
*
@@
-27,14
+27,6
@@
* MA 02111-1307, USA.
*/
* MA 02111-1307, USA.
*/
-/*----- Revision history --------------------------------------------------*
- *
- * $Log: field-parse.c,v $
- * Revision 1.1 2004/03/27 17:54:11 mdw
- * Standard curves and curve checking.
- *
- */
-
/*----- Header files ------------------------------------------------------*/
#include "field.h"
/*----- Header files ------------------------------------------------------*/
#include "field.h"
@@
-56,30
+48,39
@@
field *field_parse(qd_parse *qd)
{
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, ':');
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, ':');
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, ':');
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;
f = field_binpoly(m);
break;
- default:
- f = 0;
+ 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;
break;
+ default:
+ goto done;
}
}
+ if (!f) qd->e = "bad field parameters";
+done:
mp_drop(m);
mp_drop(m);
+ mp_drop(b);
return (f);
}
return (f);
}