projects
/
u
/
mdw
/
catacomb
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Normal basis support (translates to poly basis internally). Rewrite
[u/mdw/catacomb]
/
field-parse.c
diff --git
a/field-parse.c
b/field-parse.c
index
0a09e57
..
e815a9f
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:1
1 mdw Exp $
+ * $Id: field-parse.c,v 1.
2 2004/04/01 21:28:4
1 mdw Exp $
*
* Parse field descriptions
*
*
* Parse field descriptions
*
@@
-30,6
+30,11
@@
/*----- Revision history --------------------------------------------------*
*
* $Log: field-parse.c,v $
/*----- 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.
*
* Revision 1.1 2004/03/27 17:54:11 mdw
* Standard curves and curve checking.
*
@@
-56,30
+61,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;
+ 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;
}
default:
f = 0;
break;
}
+done:
mp_drop(m);
mp_drop(m);
+ mp_drop(b);
return (f);
}
return (f);
}