summaryrefslogtreecommitdiffhomepage
path: root/src/event
diff options
context:
space:
mode:
authorRuslan Ermilov <ru@nginx.com>2021-12-24 15:53:59 +0300
committerRuslan Ermilov <ru@nginx.com>2021-12-24 15:53:59 +0300
commitfa4da058549d122387f5d553b62b0ec15b84ddc8 (patch)
treedb7b2f8666f24e805b4e5c13c021b0f6cac9dbd6 /src/event
parent3341a850763eec48263a4ab2fd3a35008b11da3e (diff)
parent363505e806feebb7ceb1f9edb0e3f75c1253384f (diff)
downloadnginx-fa4da058549d122387f5d553b62b0ec15b84ddc8.tar.gz
nginx-fa4da058549d122387f5d553b62b0ec15b84ddc8.tar.bz2
Merged with the default branch.
Diffstat (limited to 'src/event')
-rw-r--r--src/event/ngx_event_openssl.c36
-rw-r--r--src/event/ngx_event_openssl.h2
2 files changed, 38 insertions, 0 deletions
diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
index fef4fe50c..c1485f35a 100644
--- a/src/event/ngx_event_openssl.c
+++ b/src/event/ngx_event_openssl.c
@@ -4741,6 +4741,42 @@ ngx_ssl_get_ciphers(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s)
ngx_int_t
+ngx_ssl_get_curve(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s)
+{
+#ifdef SSL_get_negotiated_group
+
+ int nid;
+
+ nid = SSL_get_negotiated_group(c->ssl->connection);
+
+ if (nid != NID_undef) {
+
+ if ((nid & TLSEXT_nid_unknown) == 0) {
+ s->len = ngx_strlen(OBJ_nid2sn(nid));
+ s->data = (u_char *) OBJ_nid2sn(nid);
+ return NGX_OK;
+ }
+
+ s->len = sizeof("0x0000") - 1;
+
+ s->data = ngx_pnalloc(pool, s->len);
+ if (s->data == NULL) {
+ return NGX_ERROR;
+ }
+
+ ngx_sprintf(s->data, "0x%04xd", nid & 0xffff);
+
+ return NGX_OK;
+ }
+
+#endif
+
+ s->len = 0;
+ return NGX_OK;
+}
+
+
+ngx_int_t
ngx_ssl_get_curves(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s)
{
#ifdef SSL_CTRL_GET_CURVES
diff --git a/src/event/ngx_event_openssl.h b/src/event/ngx_event_openssl.h
index 97beae7c4..d75e235e4 100644
--- a/src/event/ngx_event_openssl.h
+++ b/src/event/ngx_event_openssl.h
@@ -264,6 +264,8 @@ ngx_int_t ngx_ssl_get_cipher_name(ngx_connection_t *c, ngx_pool_t *pool,
ngx_str_t *s);
ngx_int_t ngx_ssl_get_ciphers(ngx_connection_t *c, ngx_pool_t *pool,
ngx_str_t *s);
+ngx_int_t ngx_ssl_get_curve(ngx_connection_t *c, ngx_pool_t *pool,
+ ngx_str_t *s);
ngx_int_t ngx_ssl_get_curves(ngx_connection_t *c, ngx_pool_t *pool,
ngx_str_t *s);
ngx_int_t ngx_ssl_get_session_id(ngx_connection_t *c, ngx_pool_t *pool,