+extern ec *ec_mul(ec_curve */*c*/, ec */*d*/, const ec */*p*/, mp */*n*/);
+
+/*----- Standard curve operations -----------------------------------------*/
+
+/* --- @ec_idin@, @ec_idout@ --- *
+ *
+ * Arguments: @ec_curve *c@ = pointer to an elliptic curve
+ * @ec *d@ = pointer to the destination
+ * @const ec *p@ = pointer to a source point
+ *
+ * Returns: The destination @d@.
+ *
+ * Use: An identity operation if your curve has no internal
+ * representation. (The field internal representation is still
+ * used.)
+ */
+
+extern ec *ec_idin(ec_curve */*c*/, ec */*d*/, const ec */*p*/);
+extern ec *ec_idout(ec_curve */*c*/, ec */*d*/, const ec */*p*/);
+
+/* --- @ec_projin@, @ec_projout@ --- *
+ *
+ * Arguments: @ec_curve *c@ = pointer to an elliptic curve
+ * @ec *d@ = pointer to the destination
+ * @const ec *p@ = pointer to a source point
+ *
+ * Returns: The destination @d@.
+ *
+ * Use: Conversion functions if your curve operations use a
+ * projective representation.
+ */
+
+extern ec *ec_projin(ec_curve */*c*/, ec */*d*/, const ec */*p*/);
+extern ec *ec_projout(ec_curve */*c*/, ec */*d*/, const ec */*p*/);