summaryrefslogtreecommitdiff
path: root/lib/pubkey.c
diff options
context:
space:
mode:
authorDaiki Ueno <ueno@gnu.org>2020-09-03 14:16:08 +0000
committerDaiki Ueno <ueno@gnu.org>2020-09-03 14:16:08 +0000
commit999525211e1a5a22194411a4b078259137f5fe19 (patch)
tree3927532d2baa80554b30d4d446d5250868f988a2 /lib/pubkey.c
parent3c137c9f2888334596fb9f4313d4389d39afe8fd (diff)
parentb0be5d7c39d4a5f7d29db4630926a4cef7c3edce (diff)
downloadgnutls-999525211e1a5a22194411a4b078259137f5fe19.tar.gz
Merge branch 'tmp-backport-3.6' into 'gnutls_3_6_x'
Backport bug fixes from master to gnutls_3_6_x See merge request gnutls/gnutls!1317
Diffstat (limited to 'lib/pubkey.c')
-rw-r--r--lib/pubkey.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/pubkey.c b/lib/pubkey.c
index de95a04c37..6f9d54f119 100644
--- a/lib/pubkey.c
+++ b/lib/pubkey.c
@@ -2092,10 +2092,16 @@ int _gnutls_pubkey_compatible_with_sig(gnutls_session_t session,
unsigned int sig_hash_size;
const mac_entry_st *me;
const gnutls_sign_entry_st *se;
+ int ret;
se = _gnutls_sign_to_entry(sign);
- if (se == NULL && _gnutls_version_has_selectable_sighash(ver))
+ if (se != NULL) {
+ ret = pubkey_supports_sig(pubkey, se);
+ if (ret < 0)
+ return gnutls_assert_val(ret);
+ } else if (_gnutls_version_has_selectable_sighash(ver)) {
return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST);
+ }
if (pubkey->params.algo == GNUTLS_PK_DSA) {
me = _gnutls_dsa_q_to_hash(&pubkey->params, &hash_size);
@@ -2158,9 +2164,6 @@ int _gnutls_pubkey_compatible_with_sig(gnutls_session_t session,
}
}
- if (se != NULL)
- return pubkey_supports_sig(pubkey, se);
-
return 0;
}