summaryrefslogtreecommitdiff
path: root/lib/auth
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@redhat.com>2017-07-14 10:35:58 +0200
committerNikos Mavrogiannopoulos <nmav@redhat.com>2017-08-02 08:26:32 +0200
commit05a70e1283a1755456f5bb6941b9b0c908a725f1 (patch)
tree1b24efd594517756f3fc593aa3276ef9683b7845 /lib/auth
parentf9b6cfd536fc97a9fdf94e61649bffb682e78de1 (diff)
downloadgnutls-05a70e1283a1755456f5bb6941b9b0c908a725f1.tar.gz
security_parameters: ease access to group information by keeping pointer to it
Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
Diffstat (limited to 'lib/auth')
-rw-r--r--lib/auth/anon_ecdh.c4
-rw-r--r--lib/auth/dhe_psk.c4
-rw-r--r--lib/auth/ecdhe.c42
-rw-r--r--lib/auth/ecdhe.h4
4 files changed, 29 insertions, 25 deletions
diff --git a/lib/auth/anon_ecdh.c b/lib/auth/anon_ecdh.c
index 368fda1573..2872427eea 100644
--- a/lib/auth/anon_ecdh.c
+++ b/lib/auth/anon_ecdh.c
@@ -82,7 +82,7 @@ gen_anon_ecdh_server_kx(gnutls_session_t session, gnutls_buffer_st * data)
ret =
_gnutls_ecdh_common_print_server_kx(session, data,
- _gnutls_session_group_get
+ get_group
(session));
if (ret < 0) {
gnutls_assert();
@@ -107,7 +107,7 @@ proc_anon_ecdh_client_kx(gnutls_session_t session, uint8_t * data,
return _gnutls_proc_ecdh_common_client_kx(session, data,
_data_size,
- _gnutls_session_group_get
+ get_group
(session), NULL);
}
diff --git a/lib/auth/dhe_psk.c b/lib/auth/dhe_psk.c
index 2edec8d91b..501451aff0 100644
--- a/lib/auth/dhe_psk.c
+++ b/lib/auth/dhe_psk.c
@@ -259,7 +259,7 @@ gen_ecdhe_psk_server_kx(gnutls_session_t session, gnutls_buffer_st * data)
return gnutls_assert_val(ret);
ret = _gnutls_ecdh_common_print_server_kx(session, data,
- _gnutls_session_group_get
+ get_group
(session));
if (ret < 0)
gnutls_assert();
@@ -395,7 +395,7 @@ proc_ecdhe_psk_client_kx(gnutls_session_t session, uint8_t * data,
return gnutls_assert_val(ret);
ret = _gnutls_proc_ecdh_common_client_kx(session, data, data_size,
- _gnutls_session_group_get
+ get_group
(session), &psk_key);
_gnutls_free_key_datum(&psk_key);
diff --git a/lib/auth/ecdhe.c b/lib/auth/ecdhe.c
index 6a54b00555..ae8c9f11fa 100644
--- a/lib/auth/ecdhe.c
+++ b/lib/auth/ecdhe.c
@@ -137,16 +137,19 @@ static int calc_ecdh_key(gnutls_session_t session,
int _gnutls_proc_ecdh_common_client_kx(gnutls_session_t session,
uint8_t * data, size_t _data_size,
- gnutls_group_t group,
+ const struct gnutls_group_entry_st *group,
gnutls_datum_t * psk_key)
{
ssize_t data_size = _data_size;
int ret, i = 0;
unsigned point_size;
- const gnutls_ecc_curve_entry_st *ecurve =
- _gnutls_group_get_curve_params((gnutls_ecc_curve_t)group);
+ const gnutls_ecc_curve_entry_st *ecurve;
+
+ if (group == NULL)
+ return gnutls_assert_val(GNUTLS_E_ECC_NO_SUPPORTED_CURVES);
- if (group == 0 || ecurve == NULL)
+ ecurve = _gnutls_ecc_curve_get_params(group->curve);
+ if (ecurve == NULL)
return gnutls_assert_val(GNUTLS_E_ECC_NO_SUPPORTED_CURVES);
DECR_LEN(data_size, 1);
@@ -213,7 +216,7 @@ proc_ecdhe_client_kx(gnutls_session_t session,
return _gnutls_proc_ecdh_common_client_kx(session, data,
_data_size,
- _gnutls_session_group_get
+ get_group
(session), NULL);
}
@@ -231,11 +234,14 @@ _gnutls_gen_ecdh_common_client_kx_int(gnutls_session_t session,
{
int ret;
gnutls_datum_t out;
- gnutls_group_t group = _gnutls_session_group_get(session);
- const gnutls_ecc_curve_entry_st *ecurve =
- _gnutls_group_get_curve_params((gnutls_ecc_curve_t)group);
+ const gnutls_group_entry_st *group = get_group(session);
+ const gnutls_ecc_curve_entry_st *ecurve;
int pk;
+ if (group == NULL)
+ return gnutls_assert_val(GNUTLS_E_ECC_NO_SUPPORTED_CURVES);
+
+ ecurve = _gnutls_ecc_curve_get_params(group->curve);
if (ecurve == NULL)
return gnutls_assert_val(GNUTLS_E_ECC_NO_SUPPORTED_CURVES);
@@ -243,7 +249,7 @@ _gnutls_gen_ecdh_common_client_kx_int(gnutls_session_t session,
/* generate temporal key */
ret =
- _gnutls_pk_generate_keys(pk, (gnutls_ecc_curve_t)group,
+ _gnutls_pk_generate_keys(pk, ecurve->id,
&session->key.ecdh_params, 1);
if (ret < 0)
return gnutls_assert_val(ret);
@@ -396,15 +402,13 @@ _gnutls_proc_ecdh_common_server_kx(gnutls_session_t session,
* be inserted */
int _gnutls_ecdh_common_print_server_kx(gnutls_session_t session,
gnutls_buffer_st * data,
- gnutls_group_t group)
+ const gnutls_group_entry_st *group)
{
uint8_t p;
int ret;
gnutls_datum_t out;
- const gnutls_group_entry_st *e;
- e = _gnutls_id_to_group(group);
- if (e == NULL || e->curve == 0)
+ if (group == NULL || group->curve == 0)
return gnutls_assert_val(GNUTLS_E_ECC_NO_SUPPORTED_CURVES);
/* just in case we are resuming a session */
@@ -421,21 +425,21 @@ int _gnutls_ecdh_common_print_server_kx(gnutls_session_t session,
ret =
_gnutls_buffer_append_prefix(data, 16,
- e->tls_id);
+ group->tls_id);
if (ret < 0)
return gnutls_assert_val(ret);
/* generate temporal key */
ret =
- _gnutls_pk_generate_keys(e->pk, group,
+ _gnutls_pk_generate_keys(group->pk, group->curve,
&session->key.ecdh_params, 1);
if (ret < 0)
return gnutls_assert_val(ret);
- if (e->pk == GNUTLS_PK_EC) {
+ if (group->pk == GNUTLS_PK_EC) {
ret =
- _gnutls_ecc_ansi_x962_export(e->curve,
+ _gnutls_ecc_ansi_x962_export(group->curve,
session->key.ecdh_params.
params[ECC_X] /* x */ ,
session->key.ecdh_params.
@@ -451,7 +455,7 @@ int _gnutls_ecdh_common_print_server_kx(gnutls_session_t session,
if (ret < 0)
return gnutls_assert_val(ret);
- } else if (e->pk == GNUTLS_PK_ECDH_X25519) {
+ } else if (group->pk == GNUTLS_PK_ECDH_X25519) {
ret =
_gnutls_buffer_append_data_prefix(data, 8,
session->key.ecdh_params.raw_pub.data,
@@ -488,7 +492,7 @@ gen_ecdhe_server_kx(gnutls_session_t session, gnutls_buffer_st * data)
ret =
_gnutls_ecdh_common_print_server_kx(session, data,
- _gnutls_session_group_get
+ get_group
(session));
if (ret < 0) {
gnutls_assert();
diff --git a/lib/auth/ecdhe.h b/lib/auth/ecdhe.h
index 2917ea830b..4991bc3317 100644
--- a/lib/auth/ecdhe.h
+++ b/lib/auth/ecdhe.h
@@ -38,12 +38,12 @@ _gnutls_gen_ecdh_common_client_kx_int(gnutls_session_t session,
int
_gnutls_proc_ecdh_common_client_kx(gnutls_session_t session,
uint8_t * data, size_t _data_size,
- gnutls_group_t group,
+ const struct gnutls_group_entry_st *group,
gnutls_datum_t * psk_key);
int _gnutls_ecdh_common_print_server_kx(gnutls_session_t,
gnutls_buffer_st * data,
- gnutls_group_t group);
+ const struct gnutls_group_entry_st *group);
int _gnutls_proc_ecdh_common_server_kx(gnutls_session_t session,
uint8_t * data, size_t _data_size);