diff options
Diffstat (limited to 'lib/tls13/certificate.c')
-rw-r--r-- | lib/tls13/certificate.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/tls13/certificate.c b/lib/tls13/certificate.c index 90bd366854..b9a54df355 100644 --- a/lib/tls13/certificate.c +++ b/lib/tls13/certificate.c @@ -38,7 +38,8 @@ int _gnutls13_recv_certificate(gnutls_session_t session) gnutls_buffer_st buf; unsigned optional = 0; - if (session->internals.hsk_flags & HSK_PSK_SELECTED) + if (!session->internals.initial_negotiation_completed && + session->internals.hsk_flags & HSK_PSK_SELECTED) return 0; if (session->security_parameters.entity == GNUTLS_SERVER) { @@ -201,8 +202,10 @@ int _gnutls13_send_certificate(gnutls_session_t session, unsigned again) gnutls_certificate_credentials_t cred; if (again == 0) { - if (session->internals.hsk_flags & HSK_PSK_SELECTED) + if (!session->internals.initial_negotiation_completed && + session->internals.hsk_flags & HSK_PSK_SELECTED) return 0; + if (session->security_parameters.entity == GNUTLS_SERVER && session->internals.resumed) return 0; |