return 1;
}
/*Make sure the key and certificate file match*/
- if ( (err = SSL_check_private_key(ssl)) != 1) {
- set_error(cc, ERR_get_error(), SSL_ERROR, "Private key does not match"
- " the certificate public key");
- return 1;
- }
+ if ( (err = SSL_check_private_key(ssl)) != 1)
+ return set_error(cc, ERR_get_error(), SSL_ERROR, "Private key"
+ " does not match the certificate public key");
*ctx = ssl;
if (err)
return err;
}
+ else {
+ if (user_cert_fn && !access(user_cert_fn, R_OK)) {
+ err = do_set_ctx_own_cert_file(cc, user_cert_fn, NULL);
+ if (err)
+ return err;
+ }
+ if (user_key_fn && !access(user_key_fn, R_OK)) {
+ err = do_set_ctx_own_cert_file(cc, NULL, user_key_fn);
+ if (err)
+ return err;
+ }
+ }
}
free(user_cert_fn);
"use private key");
}
}
- else if (cc->cert_key->cert) {
+ if (cc->cert_key->cert) {
err = SSL_use_certificate(ssl, cc->cert_key->cert);
if (err != 1) {
return set_error(cc, ERR_get_error(), SSL_ERROR, "Cannot"
}
}
}
+ /*Make sure the key and certificate file match
+ * not mandatory on client side*/
+ if (cc->cert_key->cert && cc->cert_key->key)
+ if ( (err = SSL_check_private_key(ssl)) != 1)
+ return set_error(cc, ERR_get_error(), SSL_ERROR, "Private key"
+ " does not match the certificate public key");
*ctx = ssl;
return 0;