summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaiki Ueno <dueno@redhat.com>2020-04-21 16:29:41 +0200
committerDaiki Ueno <dueno@redhat.com>2020-04-21 16:48:13 +0200
commit6e2e00257ac495d46ebe67e59fc48b67f8701fb3 (patch)
treea335c2b017330b8d655b1919118ea8fed2ed6d4d
parent55611b8fa7f8c18bb94fcb6d3af391b844c97077 (diff)
downloadgnutls-6e2e00257ac495d46ebe67e59fc48b67f8701fb3.tar.gz
gnutls_ext_get_name2: new function
This adds a generalized version of gnutls_ext_get_name, which can retrieve the name of the extension, even if it is registered per session. Signed-off-by: Daiki Ueno <dueno@redhat.com>
-rw-r--r--devel/libgnutls-latest-x86_64.abi1
-rw-r--r--devel/symbols.last2
-rw-r--r--doc/Makefile.am2
-rw-r--r--doc/manpages/Makefile.am1
-rw-r--r--lib/hello_ext.c24
-rw-r--r--lib/includes/gnutls/gnutls.h.in2
-rw-r--r--lib/libgnutls.map6
7 files changed, 38 insertions, 0 deletions
diff --git a/devel/libgnutls-latest-x86_64.abi b/devel/libgnutls-latest-x86_64.abi
index 12d5f5b7af..8aa81a55dd 100644
--- a/devel/libgnutls-latest-x86_64.abi
+++ b/devel/libgnutls-latest-x86_64.abi
@@ -271,6 +271,7 @@
<elf-symbol name='gnutls_ext_get_current_msg' version='GNUTLS_3_6_3' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
<elf-symbol name='gnutls_ext_get_data' version='GNUTLS_3_4' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
<elf-symbol name='gnutls_ext_get_name' version='GNUTLS_3_4' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+ <elf-symbol name='gnutls_ext_get_name2' version='GNUTLS_3_6_14' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
<elf-symbol name='gnutls_ext_raw_parse' version='GNUTLS_3_6_3' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
<elf-symbol name='gnutls_ext_register' version='GNUTLS_3_4' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
<elf-symbol name='gnutls_ext_set_data' version='GNUTLS_3_4' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
diff --git a/devel/symbols.last b/devel/symbols.last
index 5a8343a0f0..080f7f2954 100644
--- a/devel/symbols.last
+++ b/devel/symbols.last
@@ -3,6 +3,7 @@ GNUTLS_3_6_0@GNUTLS_3_6_0
GNUTLS_3_6_10@GNUTLS_3_6_10
GNUTLS_3_6_12@GNUTLS_3_6_12
GNUTLS_3_6_13@GNUTLS_3_6_13
+GNUTLS_3_6_14@GNUTLS_3_6_14
GNUTLS_3_6_2@GNUTLS_3_6_2
GNUTLS_3_6_3@GNUTLS_3_6_3
GNUTLS_3_6_4@GNUTLS_3_6_4
@@ -215,6 +216,7 @@ gnutls_error_to_alert@GNUTLS_3_4
gnutls_est_record_overhead_size@GNUTLS_3_4
gnutls_ext_get_current_msg@GNUTLS_3_6_3
gnutls_ext_get_data@GNUTLS_3_4
+gnutls_ext_get_name2@GNUTLS_3_6_14
gnutls_ext_get_name@GNUTLS_3_4
gnutls_ext_raw_parse@GNUTLS_3_6_3
gnutls_ext_register@GNUTLS_3_4
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 0f16eeccc8..83d851220c 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -1023,6 +1023,8 @@ FUNCS += functions/gnutls_ext_get_data
FUNCS += functions/gnutls_ext_get_data.short
FUNCS += functions/gnutls_ext_get_name
FUNCS += functions/gnutls_ext_get_name.short
+FUNCS += functions/gnutls_ext_get_name2
+FUNCS += functions/gnutls_ext_get_name2.short
FUNCS += functions/gnutls_ext_raw_parse
FUNCS += functions/gnutls_ext_raw_parse.short
FUNCS += functions/gnutls_ext_register
diff --git a/doc/manpages/Makefile.am b/doc/manpages/Makefile.am
index 97cc80ed6e..18f382ee45 100644
--- a/doc/manpages/Makefile.am
+++ b/doc/manpages/Makefile.am
@@ -313,6 +313,7 @@ APIMANS += gnutls_est_record_overhead_size.3
APIMANS += gnutls_ext_get_current_msg.3
APIMANS += gnutls_ext_get_data.3
APIMANS += gnutls_ext_get_name.3
+APIMANS += gnutls_ext_get_name2.3
APIMANS += gnutls_ext_raw_parse.3
APIMANS += gnutls_ext_register.3
APIMANS += gnutls_ext_set_data.3
diff --git a/lib/hello_ext.c b/lib/hello_ext.c
index 1df1506e0b..8052488366 100644
--- a/lib/hello_ext.c
+++ b/lib/hello_ext.c
@@ -1000,3 +1000,27 @@ unsigned gnutls_ext_get_current_msg(gnutls_session_t session)
{
return _gnutls_ext_get_msg(session);
}
+
+/**
+ * gnutls_ext_get_name2:
+ * @session: a #gnutls_session_t opaque pointer
+ * @tls_id: is a TLS extension numeric ID
+ * @parse_point: the parse type of the extension
+ *
+ * Convert a TLS extension numeric ID to a printable string.
+ *
+ * Returns: a pointer to a string that contains the name of the
+ * specified cipher, or %NULL.
+ **/
+const char *gnutls_ext_get_name2(gnutls_session_t session, unsigned int tls_id,
+ gnutls_ext_parse_type_t parse_point)
+{
+ const struct hello_ext_entry_st *ext;
+
+ ext = tls_id_to_ext_entry(session, tls_id, parse_point);
+ if (ext)
+ return ext->name;
+
+ return NULL;
+}
+
diff --git a/lib/includes/gnutls/gnutls.h.in b/lib/includes/gnutls/gnutls.h.in
index 517153634a..fdcf914f42 100644
--- a/lib/includes/gnutls/gnutls.h.in
+++ b/lib/includes/gnutls/gnutls.h.in
@@ -3130,6 +3130,8 @@ int gnutls_session_ext_register(gnutls_session_t, const char *name, int type, gn
gnutls_ext_unpack_func unpack_func, unsigned flags);
const char *gnutls_ext_get_name(unsigned int ext);
+const char *gnutls_ext_get_name2(gnutls_session_t session, unsigned int tls_id,
+ gnutls_ext_parse_type_t parse_point);
/* Public supplemental data related functions */
diff --git a/lib/libgnutls.map b/lib/libgnutls.map
index 5541e9caba..512e403bb6 100644
--- a/lib/libgnutls.map
+++ b/lib/libgnutls.map
@@ -1324,6 +1324,12 @@ GNUTLS_3_6_13
gnutls_psk_set_client_credentials_function2;
} GNUTLS_3_6_12;
+GNUTLS_3_6_14
+{
+ global:
+ gnutls_ext_get_name2;
+} GNUTLS_3_6_13;
+
GNUTLS_FIPS140_3_4 {
global:
gnutls_cipher_self_test;