if(out_verify)
if(out_verify > 0) {
static SSL_CTX *initialise_ssl_ctx(int server_mode, const char *engine_id,		const char *CAfile, const char *cert, const char *key,		const char *dcert, const char *dkey, const char *cipher_list,		int out_state, int out_verify, int verify_mode,		unsigned int verify_depth){	SSL_CTX *ctx, *ret = NULL;	SSL_METHOD *meth;	ENGINE *e = NULL;        OpenSSL_add_ssl_algorithms();        SSL_load_error_strings();	meth = (server_mode ? SSLv23_server_method() : SSLv23_client_method());	if(meth == NULL)		goto err;	if(engine_id) {		if((e = ENGINE_by_id(engine_id)) == NULL) {			fprintf(stderr, "Error obtaining '%s' engine, openssl "					"errors follow\n", engine_id);			goto err;		}		if(!ENGINE_set_default(e, ENGINE_METHOD_ALL)) {			fprintf(stderr, "Error assigning '%s' engine, openssl "					"errors follow\n", engine_id);			goto err;		}		ENGINE_free(e);	}	if((ctx = SSL_CTX_new(meth)) == NULL)		goto err;	/* cacert */	if(CAfile) {		if(!X509_STORE_load_locations(SSL_CTX_get_cert_store(ctx),					CAfile, NULL)) {			fprintf(stderr, "Error loading CA cert(s) in '%s'\n",					CAfile);			goto err;		}		fprintf(stderr, "Info, operating with CA cert(s) in '%s'\n",				CAfile);	} else		fprintf(stderr, "Info, operating without a CA cert(-list)\n");	if(!SSL_CTX_set_default_verify_paths(ctx)) {		fprintf(stderr, "Error setting default verify paths\n");		goto err;	}	/* cert and key */	if((cert || key) && !ctx_set_cert(ctx, cert, key))		goto err;	/* dcert and dkey */	if((dcert || dkey) && !ctx_set_cert(ctx, dcert, dkey))		goto err;	/* cipher_list */	if(cipher_list) {		if(!SSL_CTX_set_cipher_list(ctx, cipher_list)) {			fprintf(stderr, "Error setting cipher list '%s'\n",					cipher_list);			goto err;		}		fprintf(stderr, "Info, set cipher list '%s'\n", cipher_list);	} else		fprintf(stderr, "Info, operating with default cipher list\n");	/* out_state (output of SSL handshake states to screen). */	if(out_state)		cb_ssl_info_set_output(stderr);	/* out_verify */	if(out_verify)		cb_ssl_verify_set_output(stderr);	/* verify_depth */	cb_ssl_verify_set_depth(verify_depth);	/* Success! (includes setting verify_mode) */	SSL_CTX_set_info_callback(ctx, cb_ssl_info);	SSL_CTX_set_verify(ctx, verify_mode, cb_ssl_verify);	ret = ctx;err:	if(!ret) {		ERR_print_errors_fp(stderr);		if(ctx)			SSL_CTX_free(ctx);	}	return ret;}