diff --git a/changelog b/changelog index 91e1e4be218b7066987c63e70204212bb39631c9..db8fce7040d7257c79e06f026a0ae2cdce947af3 100644 --- a/changelog +++ b/changelog @@ -1,6 +1,14 @@ Changelog --------- +User API additions +------------------ + +1) There's a new member in struct lws_context_creation_info, ecdh_curve, +which lets you set the name of the ECDH curve OpenSSL should use. By +default (if you leave ecdh_curve NULL) it will use "prime256v1" + + v1.7.0 ====== diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h index 7db50aa5f0fe70dc5b2f278ec149c97ce9c92fa1..6175a3d2d69e13d6c08f51d085e01f97721f61dd 100644 --- a/lib/libwebsockets.h +++ b/lib/libwebsockets.h @@ -1319,6 +1319,7 @@ extern int lws_extension_callback_pm_deflate( * library are protected from hanging forever by timeouts. If * nonzero, this member lets you set the timeout used in seconds. * Otherwise a default timeout is used. + * @ecdh_curve: if NULL, defaults to initializing server with "prime256v1" */ struct lws_context_creation_info { @@ -1353,6 +1354,7 @@ struct lws_context_creation_info { unsigned int count_threads; unsigned int fd_limit_per_thread; unsigned int timeout_secs; + const char *ecdh_curve; /* Add new things just above here ---^ * This is part of the ABI, don't needlessly break compatibility diff --git a/lib/ssl.c b/lib/ssl.c index ac3ad2e8a09b962cf61065ac79464f616e09708f..719f4bf971af1ce1400c54eff9d8fe1dba81680a 100644 --- a/lib/ssl.c +++ b/lib/ssl.c @@ -144,6 +144,9 @@ lws_context_ssl_init_ecdh_curve(struct lws_context_creation_info *info, int ecdh_nid; const char *ecdh_curve = "prime256v1"; + if (info->ecdh_curve) + ecdh_curve = info->ecdh_curve; + ecdh_nid = OBJ_sn2nid(ecdh_curve); if (NID_undef == ecdh_nid) { lwsl_err("SSL: Unknown curve name '%s'", ecdh_curve);