⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 https.c

📁 ELinks is an advanced and well-established feature-rich text mode web (HTTP/FTP/..) browser. ELinks
💻 C
字号:
/* https.c * HTTPS protocol client implementation * (c) 2002 Mikulas Patocka * This file is a part of the Links program, released under GPL. * In addition, as a special exception, the copyright holders give * permission to link the code of portions of this program with the * OpenSSL library under certain conditions as described in each * individual source file, and distribute linked combinations * including the two. * You must obey the GNU General Public License in all respects * for all of the code used other than OpenSSL.  If you modify * file(s) with this exception, you may extend this exception to your * version of the file(s), but you are not obligated to do so.  If you * do not wish to do so, delete this exception statement from your * version.  If you delete this exception statement from all source * files in the program, then also delete it here. */#include "links.h"#ifndef PATH_MAX#define PATH_MAX 255#endif#ifdef HAVE_SSLSSL_CTX *context = NULL;SSL *getSSL(void){	if (!context) {		char f_randfile[PATH_MAX];		const char *f = RAND_file_name(f_randfile, sizeof(f_randfile));		if (f && RAND_egd(f)<0) {			/* Not an EGD, so read and write to it */			if (RAND_load_file(f_randfile, -1))				RAND_write_file(f_randfile);		}		SSLeay_add_ssl_algorithms();		context = SSL_CTX_new(SSLv23_client_method());		SSL_CTX_set_options(context, SSL_OP_ALL);		SSL_CTX_set_default_verify_paths(context);/* needed for systems without /dev/random, but obviously kills security. */		/*{			char pool[32768];			int i;			struct timeval tv;			gettimeofday(&tv, NULL);			for (i = 0; i < sizeof pool; i++) pool[i] = random() ^ tv.tv_sec ^ tv.tv_usec;			RAND_add(pool, sizeof pool, sizeof pool);		}*/	}	return (SSL_new(context));}void ssl_finish(void){	if (context) SSL_CTX_free(context);}void https_func(struct connection *c){	c->ssl = (void *)-1;	http_func(c);}#elsevoid https_func(struct connection *c){	setcstate(c, S_NO_SSL);	abort_connection(c);}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -