/* -*-c-*-
*
- * $Id: buf.h,v 1.2 2003/11/10 22:18:30 mdw Exp $
+ * $Id: buf.h,v 1.3 2004/04/01 12:50:09 mdw Exp $
*
* Reading and writing packet buffers
*
/*----- Revision history --------------------------------------------------*
*
* $Log: buf.h,v $
+ * Revision 1.3 2004/04/01 12:50:09 mdw
+ * Add cyclic group abstraction, with test code. Separate off exponentation
+ * functions for better static linking. Fix a buttload of bugs on the way.
+ * Generally ensure that negative exponents do inversion correctly. Add
+ * table of standard prime-field subgroups. (Binary field subgroups are
+ * currently unimplemented but easy to add if anyone ever finds a good one.)
+ *
* Revision 1.2 2003/11/10 22:18:30 mdw
* Build fixes.
*
# include "mp.h"
#endif
+#ifndef CATACOMB_EC_H
+# include "ec.h"
+#endif
+
/*----- Data structures ---------------------------------------------------*/
/* --- Buffers --- *
extern int buf_putmp(buf */*b*/, mp */*m*/);
+/* --- @buf_getec@ --- *
+ *
+ * Arguments: @buf *b@ = pointer to a buffer block
+ * @ec *p@ = where to put the point
+ *
+ * Returns: Zero if it worked, nonzero if it failed.
+ *
+ * Use: Gets a multiprecision integer from a buffer. The point must
+ * be initialized.
+ */
+
+extern int buf_getec(buf */*b*/, ec */*p*/);
+
+/* --- @buf_putec@ --- *
+ *
+ * Arguments: @buf *b@ = pointer to a buffer block
+ * @ec *p@ = an elliptic curve point
+ *
+ * Returns: Zero if it worked, nonzero if there wasn't enough space.
+ *
+ * Use: Puts an elliptic curve point to a buffer.
+ */
+
+extern int buf_putec(buf */*b*/, ec */*p*/);
+
/*----- That's all, folks -------------------------------------------------*/
#ifdef __cplusplus