Adapt ecp_group_free() to static constants
diff --git a/include/polarssl/ecp.h b/include/polarssl/ecp.h
index 2ab458a..ff1072e 100644
--- a/include/polarssl/ecp.h
+++ b/include/polarssl/ecp.h
@@ -136,7 +136,7 @@
mpi N; /*!< 1. the order of G, or 2. unused */
size_t pbits; /*!< number of bits in P */
size_t nbits; /*!< number of bits in 1. P, or 2. private keys */
- unsigned int h; /*!< unused */
+ unsigned int h; /*!< internal: 1 if the constants are static */
int (*modp)(mpi *); /*!< function for fast reduction mod P */
int (*t_pre)(ecp_point *, void *); /*!< unused */
int (*t_post)(ecp_point *, void *); /*!< unused */
diff --git a/library/ecp.c b/library/ecp.c
index 8e162e7..8c5c06e 100644
--- a/library/ecp.c
+++ b/library/ecp.c
@@ -277,18 +277,17 @@
{
size_t i;
- /* FIXME WIP */
- if( grp->id != 0 )
- return;
-
if( grp == NULL )
return;
- mpi_free( &grp->P );
- mpi_free( &grp->A );
- mpi_free( &grp->B );
- ecp_point_free( &grp->G );
- mpi_free( &grp->N );
+ if( grp->h != 1 )
+ {
+ mpi_free( &grp->P );
+ mpi_free( &grp->A );
+ mpi_free( &grp->B );
+ ecp_point_free( &grp->G );
+ mpi_free( &grp->N );
+ }
if( grp->T != NULL )
{
diff --git a/library/ecp_curves.c b/library/ecp_curves.c
index f29b687..e20a1de 100644
--- a/library/ecp_curves.c
+++ b/library/ecp_curves.c
@@ -485,6 +485,8 @@
grp->pbits = mpi_msb( &grp->P );
grp->nbits = mpi_msb( &grp->N );
+ grp->h = 1;
+
return( 0 );
}