summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2020-01-25 22:02:48 +0100
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2020-01-25 22:07:00 +0100
commit876c9a95e02086218f479d610af6543b742a1200 (patch)
treeb4cadc620cfd7c7f2ddc0b1b424ea8ec0fc35720
parenta963369e626b7fac7e86b9577570a065b885e053 (diff)
downloadgnutls-876c9a95e02086218f479d610af6543b742a1200.tar.gz
key shares: avoid using internal errors
On unknown curves or illegal parameters, make sure we return the right error code which will translate to the appropriate alert. Resolves: #907 Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
-rw-r--r--lib/ext/key_share.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/lib/ext/key_share.c b/lib/ext/key_share.c
index 41dd1b7326..ab8abf8fe6 100644
--- a/lib/ext/key_share.c
+++ b/lib/ext/key_share.c
@@ -148,17 +148,17 @@ static int client_gen_key_share(gnutls_session_t session, const gnutls_group_ent
ret = _gnutls_mpi_init_scan_nz(&session->key.kshare.dh_params.params[DH_G],
group->generator->data, group->generator->size);
if (ret < 0)
- return gnutls_assert_val(ret);
+ return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER);
ret = _gnutls_mpi_init_scan_nz(&session->key.kshare.dh_params.params[DH_P],
group->prime->data, group->prime->size);
if (ret < 0)
- return gnutls_assert_val(ret);
+ return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER);
ret = _gnutls_mpi_init_scan_nz(&session->key.kshare.dh_params.params[DH_Q],
group->q->data, group->q->size);
if (ret < 0)
- return gnutls_assert_val(ret);
+ return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER);
session->key.kshare.dh_params.algo = group->pk;
session->key.kshare.dh_params.dh_group = group->id; /* no curve in FFDH, we write the group */
@@ -354,17 +354,17 @@ server_use_key_share(gnutls_session_t session, const gnutls_group_entry_st *grou
ret = _gnutls_mpi_init_scan_nz(&session->key.kshare.dh_params.params[DH_G],
group->generator->data, group->generator->size);
if (ret < 0)
- return gnutls_assert_val(ret);
+ return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER);
ret = _gnutls_mpi_init_scan_nz(&session->key.kshare.dh_params.params[DH_P],
group->prime->data, group->prime->size);
if (ret < 0)
- return gnutls_assert_val(ret);
+ return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER);
ret = _gnutls_mpi_init_scan_nz(&session->key.kshare.dh_params.params[DH_Q],
group->q->data, group->q->size);
if (ret < 0)
- return gnutls_assert_val(ret);
+ return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER);
session->key.kshare.dh_params.algo = GNUTLS_PK_DH;
session->key.kshare.dh_params.qbits = *group->q_bits;
@@ -381,7 +381,7 @@ server_use_key_share(gnutls_session_t session, const gnutls_group_entry_st *grou
ret = _gnutls_mpi_init_scan_nz(&pub.params[DH_Y],
data, data_size);
if (ret < 0)
- return gnutls_assert_val(ret);
+ return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER);
pub.algo = group->pk;
@@ -489,7 +489,7 @@ client_use_key_share(gnutls_session_t session, const gnutls_group_entry_st *grou
ret = _gnutls_mpi_init_scan_nz(&pub.params[DH_Y],
data, data_size);
if (ret < 0)
- return gnutls_assert_val(ret);
+ return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER);
pub.algo = group->pk;
@@ -599,7 +599,7 @@ key_share_recv_params(gnutls_session_t session,
if (_gnutls_ext_get_msg(session) == GNUTLS_EXT_FLAG_HRR) {
if (unlikely(!(session->internals.hsk_flags & HSK_HRR_RECEIVED)))
- return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR);
+ return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER);
DECR_LEN(data_size, 2);
gid = _gnutls_read_uint16(data);
@@ -692,7 +692,7 @@ key_share_send_params(gnutls_session_t session,
if (session->internals.hsk_flags & HSK_HRR_RECEIVED) { /* we know the group */
group = get_group(session);
if (unlikely(group == NULL))
- return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR);
+ return gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER);
ret = client_gen_key_share(session, group, extdata);
if (ret == GNUTLS_E_INT_RET_0)