Modify syntax of field and curve specs to reserve `/'.
[u/mdw/catacomb] / ec.h
diff --git a/ec.h b/ec.h
index bd71810..beb412a 100644 (file)
--- a/ec.h
+++ b/ec.h
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: ec.h,v 1.11 2004/04/08 01:36:15 mdw Exp $
+ * $Id$
  *
  * Elliptic curve definitions
  *
@@ -84,6 +84,7 @@ typedef struct ec_mulfactor {
  */
 
 typedef struct ec_ops {
+  const char *name;
   void (*destroy)(ec_curve */*c*/);
   int (*samep)(ec_curve */*c*/, ec_curve */*d*/);
   ec *(*in)(ec_curve */*c*/, ec */*d*/, const ec */*p*/);
@@ -97,6 +98,8 @@ typedef struct ec_ops {
   int (*check)(ec_curve */*c*/, const ec */*p*/);
 } ec_ops;
 
+#define EC_NAME(c)             (c)->ops->name
+
 #define EC_SAMEP(c, d)         (c)->ops->samep((c), (d))
 #define EC_IN(c, d, p)         (c)->ops->in((c), (d), (p))
 #define EC_OUT(c, d, p)                (c)->ops->out((c), (d), (p))
@@ -498,7 +501,7 @@ extern ec_curve *ec_binproj(field */*f*/, mp */*a*/, mp */*b*/);
  * 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
@@ -536,7 +539,7 @@ extern ec *ec_ptparse(qd_parse */*qd*/, ec */*p*/);
  *             information in @ei@.  This has the form
  *
  *               * elliptic curve description
- *               * optional `/'
+ *               * optional `;'
  *               * common point
  *               * optional `:'
  *               * group order
@@ -546,6 +549,20 @@ extern ec *ec_ptparse(qd_parse */*qd*/, ec */*p*/);
 
 extern int ec_infoparse(qd_parse */*qd*/, ec_info */*ei*/);
 
+/* --- @ec_infofromdata@ --- *
+ *
+ * Arguments:  @ec_info *ei@ = where to write the information
+ *             @ecdata *ed@ = raw data
+ *
+ * Returns:    ---
+ *
+ * Use:                Loads elliptic curve information about one of the standard
+ *             curves.
+ */
+
+struct ecdata;
+extern void ec_infofromdata(ec_info */*ei*/, struct ecdata */*ed*/);
+
 /* --- @ec_getinfo@ --- *
  *
  * Arguments:  @ec_info *ei@ = where to write the information