Create ecdh_context structure

parent 98f51815
......@@ -29,6 +29,19 @@
#include "polarssl/ecp.h"
/**
* \brief ECDH context structure
*/
typedef struct
{
ecp_group grp; /*!< ellipitic curve used */
mpi d; /*!< our secret value */
ecp_point Q; /*!< our public value */
ecp_point Qp; /*!< peer's public value */
mpi z; /*!< shared secret */
}
ecdh_context;
#ifdef __cplusplus
extern "C" {
#endif
......@@ -63,6 +76,20 @@ int ecdh_gen_public( const ecp_group *grp, mpi *d, ecp_point *Q,
int ecdh_compute_shared( const ecp_group *grp, mpi *z,
const ecp_point *Q, const mpi *d );
/**
* \brief Initialize context
*
* \param ctx Context to initialize
*/
void ecdh_init( ecdh_context *ctx );
/**
* \brief Free context
*
* \param ctx Context to free
*/
void ecdh_free( ecdh_context *ctx );
/**
* \brief Checkup routine
*
......
......@@ -27,6 +27,7 @@
* References:
*
* SEC1 http://www.secg.org/index.php?action=secg,docs_secg
* RFC 4492
*/
#include "polarssl/config.h"
......@@ -74,6 +75,34 @@ cleanup:
return( ret );
}
/*
* Initialize context
*/
void ecdh_init( ecdh_context *ctx )
{
ecp_group_init( &ctx->grp );
mpi_init ( &ctx->d );
ecp_point_init( &ctx->Q );
ecp_point_init( &ctx->Qp );
mpi_init ( &ctx->z );
}
/*
* Free context
*/
void ecdh_free( ecdh_context *ctx )
{
if( ctx == NULL )
return;
ecp_group_free( &ctx->grp );
mpi_free ( &ctx->d );
ecp_point_free( &ctx->Q );
ecp_point_free( &ctx->Qp );
mpi_free ( &ctx->z );
}
#if defined(POLARSSL_SELF_TEST)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment