diff options
Diffstat (limited to 'lib/tls13/certificate.c')
-rw-r--r-- | lib/tls13/certificate.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/tls13/certificate.c b/lib/tls13/certificate.c index 2560ca3427..91d0a7fe68 100644 --- a/lib/tls13/certificate.c +++ b/lib/tls13/certificate.c @@ -100,8 +100,13 @@ int _gnutls13_recv_certificate(gnutls_session_t session) ret = parse_cert_list(session, buf.data, buf.length); if (ret < 0) { - if (ret == GNUTLS_E_NO_CERTIFICATE_FOUND && optional) - ret = 0; + if (ret == GNUTLS_E_NO_CERTIFICATE_FOUND) { + if (optional) + ret = 0; + else if (session->security_parameters.entity == + GNUTLS_SERVER) + ret = GNUTLS_E_CERTIFICATE_REQUIRED; + } gnutls_assert(); goto cleanup; } |