Add ecdh_make_server_params (untested yet)
diff --git a/include/polarssl/ecdh.h b/include/polarssl/ecdh.h
index 2f1e51d..9928503 100644
--- a/include/polarssl/ecdh.h
+++ b/include/polarssl/ecdh.h
@@ -34,11 +34,12 @@
*/
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 */
+ 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 */
+ int point_format; /*!< format for point export */
}
ecdh_context;
@@ -91,6 +92,25 @@
void ecdh_free( ecdh_context *ctx );
/**
+ * \brief Setup and write the ServerKeyExhange parameters
+ *
+ * \param ctx ECDH context
+ * \param buf destination buffer
+ * \param olen number of chars written
+ * \param f_rng RNG function
+ * \param p_rng RNG parameter
+ *
+ * \note This function assumes that ctx->grp has already been
+ * properly set (for example using ecp_use_known_dp).
+ *
+ * \return 0 if successful, or an POLARSSL_ERR_ECP_XXX error code
+ */
+int ecdh_make_server_params( ecdh_context *ctx, size_t *olen,
+ unsigned char *buf, size_t blen,
+ int (*f_rng)(void *, unsigned char *, size_t),
+ void *p_rng );
+
+/**
* \brief Checkup routine
*
* \return 0 if successful, or 1 if the test failed