/* -*-c-*-
*
- * $Id: group-stdops.c,v 1.1 2004/04/01 12:50:09 mdw Exp $
+ * $Id: group-stdops.c,v 1.3 2004/04/17 09:58:37 mdw Exp $
*
* Standard group operations
*
* MA 02111-1307, USA.
*/
-/*----- Revision history --------------------------------------------------*
- *
- * $Log: group-stdops.c,v $
- * Revision 1.1 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.)
- *
- */
-
/*----- Header files ------------------------------------------------------*/
#include "group.h"
* Returns: Zero on success, nonzero for failure.
*
* Use: Checks that @x@ is a valid group element. This may take a
- * while, since it checks that %$x^h \ne 1$% and %$x^r = 1$%.
+ * while, since it checks that %$x \ne 1$% and %$x^r = 1$%.
*/
int group_check(group *g, ge *x)
ge *d = G_CREATE(g);
int rc;
- G_EXP(g, d, x, g->h); rc = !G_IDENTP(g, d);
- if (rc) { G_EXP(g, d, x, g->r); rc = G_IDENTP(g, d); }
+ G_EXP(g, d, x, g->r);
+ rc = (G_IDENTP(g, d) && !G_IDENTP(g, x));
G_DESTROY(g, d);
if (!rc) return (-1);
return (0);
*
* Arguments: @group *g@ = abstract group
* @ge *d@ = destination pointer
- * @ec *p@ = elliptic curve point
+ * @const ec *p@ = elliptic curve point
*
* Returns: Zero for success, @-1@ on failure.
*
* coordinate.
*/
-int group_stdfromec(group *g, ge *d, ec *p)
+int group_stdfromec(group *g, ge *d, const ec *p)
{ if (EC_ATINF(p)) return (-1); return (G_FROMINT(g, d, p->x)); }
/* --- @group_stdcheck@ --- *