math/g-bin.c, math/g-prime.c: Fix type incompatibility.
[catacomb] / math / ec.h
index cc7649d..3de2bb5 100644 (file)
--- a/math/ec.h
+++ b/math/ec.h
@@ -72,8 +72,10 @@ typedef struct ec_mulfactor {
 
 /* --- Elliptic curve operations --- *
  *
- * All operations (apart from @destroy@ and @in@) are guaranteed to be
- * performed on internal representations of points.
+ * All operations apart from @destroy@, @in@, and @compr@ are guaranteed to
+ * be performed on internal representations of points; @in@ and @compr@ will
+ * always be performed on external representations; @destroy@ might be
+ * performed on either.
  *
  * (Historical note.  We used to guarantee that the second to @add@ and @mul@
  * was the output of @in@ or @fix@, but this canonification turned out to
@@ -94,6 +96,7 @@ typedef struct ec_ops {
   ec *(*sub)(ec_curve */*c*/, ec */*d*/, const ec */*p*/, const ec */*q*/);
   ec *(*dbl)(ec_curve */*c*/, ec */*d*/, const ec */*p*/);
   int (*check)(ec_curve */*c*/, const ec */*p*/);
+  int (*compr)(ec_curve */*c*/, const ec */*p*/);
 } ec_ops;
 
 #define EC_NAME(c)             (c)->ops->name
@@ -104,6 +107,7 @@ typedef struct ec_ops {
 #define EC_FIX(c, d, p)                (c)->ops->fix((c), (d), (p))
 
 #define EC_FIND(c, d, x)       (c)->ops->find((c), (d), (x))
+#define EC_COMPR(c, d)         (c)->ops->compr((c), (d))
 #define EC_NEG(c, d, x)                (c)->ops->neg((c), (d), (x))
 #define EC_ADD(c, d, p, q)     (c)->ops->add((c), (d), (p), (q))
 #define EC_SUB(c, d, p, q)     (c)->ops->sub((c), (d), (p), (q))