diff options
Diffstat (limited to 'lib/ext/signature.c')
-rw-r--r-- | lib/ext/signature.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/ext/signature.c b/lib/ext/signature.c index 765a475b1a..61a67b0d31 100644 --- a/lib/ext/signature.c +++ b/lib/ext/signature.c @@ -255,7 +255,9 @@ _gnutls_signature_algorithm_send_params(gnutls_session_t session, */ gnutls_sign_algorithm_t _gnutls_session_get_sign_algo(gnutls_session_t session, - gnutls_pcert_st * cert, unsigned client_cert) + gnutls_pcert_st * cert, + gnutls_privkey_t privkey, + unsigned client_cert) { unsigned i; int ret; @@ -285,6 +287,9 @@ _gnutls_session_get_sign_algo(gnutls_session_t session, } for (i = 0; i < priv->sign_algorithms_size; i++) { + if (_gnutls_privkey_compatible_with_sig(privkey, priv->sign_algorithms[i]) == 0) + continue; + if (gnutls_sign_supports_pk_algorithm(priv->sign_algorithms[i], cert_algo) != 0) { if (_gnutls_pubkey_compatible_with_sig (session, cert->pubkey, ver, |