diff options
author | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2017-07-14 10:35:58 +0200 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2017-08-02 08:26:32 +0200 |
commit | 05a70e1283a1755456f5bb6941b9b0c908a725f1 (patch) | |
tree | 1b24efd594517756f3fc593aa3276ef9683b7845 /lib/auth | |
parent | f9b6cfd536fc97a9fdf94e61649bffb682e78de1 (diff) | |
download | gnutls-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.c | 4 | ||||
-rw-r--r-- | lib/auth/dhe_psk.c | 4 | ||||
-rw-r--r-- | lib/auth/ecdhe.c | 42 | ||||
-rw-r--r-- | lib/auth/ecdhe.h | 4 |
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); |