diff --git a/src/tls/tlsv1_client_read.c b/src/tls/tlsv1_client_read.c index 9ce968037..4fe95807a 100644 --- a/src/tls/tlsv1_client_read.c +++ b/src/tls/tlsv1_client_read.c @@ -364,7 +364,7 @@ static int tls_process_certificate(struct tlsv1_client *conn, u8 ct, pos += cert_len; } - if (conn->cred && + if (conn->cred && conn->cred->ca_cert_verify && x509_certificate_chain_validate(conn->cred->trusted_certs, chain, &reason, conn->disable_time_checks) < 0) { diff --git a/src/tls/tlsv1_cred.c b/src/tls/tlsv1_cred.c index 1ea6827b8..fbac96511 100644 --- a/src/tls/tlsv1_cred.c +++ b/src/tls/tlsv1_cred.c @@ -190,6 +190,8 @@ int tlsv1_set_ca_cert(struct tlsv1_credentials *cred, const char *cert, const u8 *cert_blob, size_t cert_blob_len, const char *path) { + cred->ca_cert_verify = cert || cert_blob || path; + if (tlsv1_set_cert_chain(&cred->trusted_certs, cert, cert_blob, cert_blob_len) < 0) return -1; diff --git a/src/tls/tlsv1_cred.h b/src/tls/tlsv1_cred.h index 68fbdc923..b1e3e00bd 100644 --- a/src/tls/tlsv1_cred.h +++ b/src/tls/tlsv1_cred.h @@ -14,6 +14,8 @@ struct tlsv1_credentials { struct x509_certificate *cert; struct crypto_private_key *key; + unsigned int ca_cert_verify:1; + /* Diffie-Hellman parameters */ u8 *dh_p; /* prime */ size_t dh_p_len;