summaryrefslogtreecommitdiff
path: root/vio
diff options
context:
space:
mode:
authorOleksandr Byelkin <sanja@mariadb.com>2022-11-02 14:33:20 +0100
committerOleksandr Byelkin <sanja@mariadb.com>2022-11-02 14:33:20 +0100
commite5aa58190fd8697b3858add4b8f86a5fd38e07f8 (patch)
treed374390fa82b455d0944f74a346ddb07f761c0b9 /vio
parent64143741789a3e1c2bb8c6bf627eaec3751af0c6 (diff)
parent177d858e38d7fa7e90a7088fcc2f5576eba411a0 (diff)
downloadmariadb-git-e5aa58190fd8697b3858add4b8f86a5fd38e07f8.tar.gz
Merge branch '10.5' into 10.6
Diffstat (limited to 'vio')
-rw-r--r--vio/viosslfactories.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/vio/viosslfactories.c b/vio/viosslfactories.c
index 8ff71212878..289c28d4cf4 100644
--- a/vio/viosslfactories.c
+++ b/vio/viosslfactories.c
@@ -97,7 +97,7 @@ sslGetErrString(enum enum_ssl_init_error e)
static int
vio_set_cert_stuff(SSL_CTX *ctx, const char *cert_file, const char *key_file,
- enum enum_ssl_init_error* error)
+ my_bool is_client, enum enum_ssl_init_error* error)
{
DBUG_ENTER("vio_set_cert_stuff");
DBUG_PRINT("enter", ("ctx: %p cert_file: %s key_file: %s",
@@ -134,10 +134,10 @@ vio_set_cert_stuff(SSL_CTX *ctx, const char *cert_file, const char *key_file,
}
/*
- If we are using DSA, we can copy the parameters from the private key
- Now we know that a key and cert have been set against the SSL context
+ If certificate is used check if private key matches.
+ Note, that server side has to use certificate.
*/
- if (cert_file && !SSL_CTX_check_private_key(ctx))
+ if ((cert_file != NULL || !is_client) && !SSL_CTX_check_private_key(ctx))
{
*error= SSL_INITERR_NOMATCH;
DBUG_PRINT("error", ("%s",sslGetErrString(*error)));
@@ -353,7 +353,8 @@ new_VioSSLFd(const char *key_file, const char *cert_file,
#endif
}
- if (vio_set_cert_stuff(ssl_fd->ssl_context, cert_file, key_file, error))
+ if (vio_set_cert_stuff(ssl_fd->ssl_context, cert_file, key_file,
+ is_client_method, error))
{
DBUG_PRINT("error", ("vio_set_cert_stuff failed"));
goto err2;