Added ecp_copy() (for points)
diff --git a/include/polarssl/ecp.h b/include/polarssl/ecp.h
index e76cd9e..23d3fbd 100644
--- a/include/polarssl/ecp.h
+++ b/include/polarssl/ecp.h
@@ -33,6 +33,7 @@
  * ECP Error codes
  */
 
+
 /**
  * \brief           ECP point structure (affine coordinates)
  */
@@ -145,6 +146,26 @@
 #endif
 
 /**
+ * \brief           Free the components of a point
+ */
+void ecp_point_free( ecp_point *pt );
+
+/**
+ * \brief           Free the components of an ECP group
+ */
+void ecp_group_free( ecp_group *grp );
+
+/**
+ * \brief           Copy the contents of point Q into P
+ *
+ * \param P         Destination point
+ * \param Q         Source point
+ *
+ * \return          0 if successful, or an POLARSSL_ERR_ECP_XXX error code
+ */
+int ecp_copy( ecp_point *P, const ecp_point *Q );
+
+/**
  * \brief           Addition: R = P + Q
  *
  * \param grp       ECP group
@@ -171,16 +192,6 @@
              const mpi *m, const ecp_point *P );
 
 /**
- * \brief           Free the components of a point
- */
-void ecp_point_free( ecp_point *pt );
-
-/**
- * \brief           Free the components of an ECP group
- */
-void ecp_group_free( ecp_group *grp );
-
-/**
  * \brief          Checkup routine
  *
  * \return         0 if successful, or 1 if the test failed
diff --git a/library/ecp.c b/library/ecp.c
index 2173e24..6c3b4a8 100644
--- a/library/ecp.c
+++ b/library/ecp.c
@@ -26,7 +26,7 @@
 /*
  * References:
  *
- * SEC1-v2 (XXX: insert url)
+ * SEC1 http://www.secg.org/index.php?action=secg,docs_secg
  * Guide to Elliptic Curve Cryptography - Hankerson, Menezes, Vanstone
  */
 
@@ -57,12 +57,26 @@
     if( grp == NULL )
         return;
 
-    mpi_free( &( grp->P ) );
-    mpi_free( &( grp->B ) );
-    mpi_free( &( grp->N ) );
-    ecp_point_free( &( grp->G ) );
+    mpi_free( &grp->P );
+    mpi_free( &grp->B );
+    ecp_point_free( &grp->G );
+    mpi_free( &grp->N );
 }
 
+/*
+ * Copy the contents of Q into P
+ */
+int ecp_copy( ecp_point *P, const ecp_point *Q )
+{
+    int ret;
+
+    P->is_zero = Q->is_zero;
+    MPI_CHK( mpi_copy( &P->X, &Q->X ) );
+    MPI_CHK( mpi_copy( &P->Y, &Q->Y ) );
+
+cleanup:
+    return( ret );
+}
 
 
 #if defined(POLARSSL_SELF_TEST)