亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ssl.c

?? 一個很有名的瀏覽器
?? C
字號:
/* SSL support - wrappers for SSL routines *//* $Id: ssl.c,v 1.52 2004/08/17 08:03:18 miciah Exp $ */#ifdef HAVE_CONFIG_H#include "config.h"#endif#ifdef CONFIG_OPENSSL#include <openssl/ssl.h>#include <openssl/rand.h>#elif defined(CONFIG_GNUTLS)#include <gnutls/gnutls.h>#include <gnutls/compat4.h> /* FIXME: this should be removed after upgrading GNUTLS code! */#else#error "Huh?! You have SSL enabled, but not OPENSSL nor GNUTLS!! And then you want exactly *what* from me?"#endif#ifdef HAVE_LIMITS_H#include <limits.h>#endif#include "elinks.h"#include "intl/gettext/libintl.h"#include "modules/module.h"#include "sched/connection.h"#include "ssl/ssl.h"#include "util/conv.h"#include "util/error.h"#include "util/string.h"/* FIXME: As you can see, SSL is currently implemented in very, erm, * decentralized manner. */#ifdef CONFIG_OPENSSL#ifndef PATH_MAX#define	PATH_MAX	256 /* according to my /usr/include/bits/posix1_lim.h */#endifSSL_CTX *context = NULL;static voidinit_openssl(struct module *module){	unsigned char f_randfile[PATH_MAX];	/* In a nutshell, on OS's without a /dev/urandom, the OpenSSL library	 * cannot initialize the PRNG and so every attempt to use SSL fails.	 * It's actually an OpenSSL FAQ, and according to them, it's up to the	 * application coders to seed the RNG. -- William Yodlowsky */	if (RAND_egd(RAND_file_name(f_randfile, sizeof(f_randfile))) < 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);}static voiddone_openssl(struct module *module){	if (context) SSL_CTX_free(context);}static struct option_info openssl_options[] = {	INIT_OPT_BOOL("connection.ssl", N_("Verify certificates"),		"cert_verify", 0, 0,		N_("Verify the peer's SSL certificate. Note that this\n"		"needs extensive configuration of OpenSSL by the user.")),	INIT_OPT_TREE("connection.ssl", N_("Client Certificates"),        	"client_cert", OPT_SORT,        	N_("X509 client certificate options.")),	INIT_OPT_BOOL("connection.ssl.client_cert", N_("Enable"),		"enable", 0, 0,		 N_("Enable or not the sending of X509 client certificates\n"		    "to servers which request them.")),	INIT_OPT_STRING("connection.ssl.client_cert", N_("Certificate File"),		"file", 0, "",		 N_("The location of a file containing the client certificate\n"		    "and unencrypted private key in PEM format. If unset, the\n"		    "file pointed to by the X509_CLIENT_CERT variable is used\n"		    "instead.")),	NULL_OPTION_INFO,};static struct module openssl_module = struct_module(	/* name: */		"OpenSSL",	/* options: */		openssl_options,	/* events: */		NULL,	/* submodules: */	NULL,	/* data: */		NULL,	/* init: */		init_openssl,	/* done: */		done_openssl);#elif defined(CONFIG_GNUTLS)GNUTLS_ANON_CLIENT_CREDENTIALS anon_cred = NULL;GNUTLS_CERTIFICATE_CLIENT_CREDENTIALS xcred = NULL;const static int protocol_priority[16] = {	GNUTLS_TLS1, GNUTLS_SSL3, 0};const static int kx_priority[16] = {	GNUTLS_KX_RSA, GNUTLS_KX_DHE_DSS, GNUTLS_KX_DHE_RSA, GNUTLS_KX_SRP,	/* Do not use anonymous authentication, unless you know what that means */	GNUTLS_KX_ANON_DH, GNUTLS_KX_RSA_EXPORT, 0};const static int cipher_priority[16] = {	GNUTLS_CIPHER_RIJNDAEL_128_CBC, GNUTLS_CIPHER_ARCFOUR_128,	GNUTLS_CIPHER_3DES_CBC, GNUTLS_CIPHER_AES_256_CBC, GNUTLS_CIPHER_ARCFOUR_40, 0};const static int comp_priority[16] = { GNUTLS_COMP_ZLIB, GNUTLS_COMP_NULL, 0 };const static int mac_priority[16] = { GNUTLS_MAC_SHA, GNUTLS_MAC_MD5, 0 };const static int cert_type_priority[16] = { GNUTLS_CRT_X509, GNUTLS_CRT_OPENPGP, 0 };static voidinit_gnutls(struct module *module){	int ret = gnutls_global_init();	if (ret < 0)		INTERNAL("GNUTLS init failed: %s", gnutls_strerror(ret));	ret = gnutls_anon_allocate_client_sc(&anon_cred);	if (ret < 0)		INTERNAL("GNUTLS anon credentials alloc failed: %s",			 gnutls_strerror(ret));	ret = gnutls_certificate_allocate_sc(&xcred);	if (ret < 0)		INTERNAL("GNUTLS X509 credentials alloc failed: %s",			 gnutls_strerror(ret));	/* Here, we should load certificate files etc. */}static voiddone_gnutls(struct module *module){	if (xcred) gnutls_certificate_free_sc(xcred);	if (anon_cred) gnutls_anon_free_client_sc(anon_cred);	gnutls_global_deinit();}static struct option_info gnutls_options[] = {	INIT_OPT_BOOL("connection.ssl", N_("Verify certificates"),		"cert_verify", 0, 0,		N_("Verify the peer's SSL certificate. Note that this\n"		"probably doesn't work properly at all with GnuTLS.")),	NULL_OPTION_INFO,};static struct module gnutls_module = struct_module(	/* name: */		"GnuTLS",	/* options: */		gnutls_options,	/* events: */		NULL,	/* submodules: */	NULL,	/* data: */		NULL,	/* init: */		init_gnutls,	/* done: */		done_gnutls);#endif /* CONFIG_OPENSSL or CONFIG_GNUTLS */static struct option_info ssl_options[] = {	INIT_OPT_TREE("connection", N_("SSL"),		"ssl", OPT_SORT,		N_("SSL options.")),	NULL_OPTION_INFO,};static struct module *ssl_modules[] = {#ifdef CONFIG_OPENSSL	&openssl_module,#elif defined(CONFIG_GNUTLS)	&gnutls_module,#endif	NULL,};struct module ssl_module = struct_module(	/* name: */		N_("SSL"),	/* options: */		ssl_options,	/* events: */		NULL,	/* submodules: */	ssl_modules,	/* data: */		NULL,	/* init: */		NULL,	/* done: */		NULL);intinit_ssl_connection(struct connection_socket *socket){#ifdef CONFIG_OPENSSL	socket->ssl = SSL_new(context);	if (!socket->ssl) return S_SSL_ERROR;#elif defined(CONFIG_GNUTLS)	const unsigned char server_name[] = "localhost";	ssl_t *state = mem_alloc(sizeof(GNUTLS_STATE));	if (!state) return S_SSL_ERROR;	if (gnutls_init(state, GNUTLS_CLIENT) < 0) {		/* DBG("sslinit %s", gnutls_strerror(ret)); */		mem_free(state);		return S_SSL_ERROR;	}	if (gnutls_cred_set(*state, GNUTLS_CRD_ANON, anon_cred) < 0) {		/* DBG("sslanoncred %s", gnutls_strerror(ret)); */		gnutls_deinit(*state);		mem_free(state);		return S_SSL_ERROR;	}	if (gnutls_cred_set(*state, GNUTLS_CRD_CERTIFICATE, xcred) < 0) {		/* DBG("sslx509cred %s", gnutls_strerror(ret)); */		gnutls_deinit(*state);		mem_free(state);		return S_SSL_ERROR;	}	gnutls_handshake_set_private_extensions(*state, 1);	gnutls_cipher_set_priority(*state, cipher_priority);	gnutls_compression_set_priority(*state, comp_priority);	gnutls_kx_set_priority(*state, kx_priority);	gnutls_protocol_set_priority(*state, protocol_priority);	gnutls_mac_set_priority(*state, mac_priority);	gnutls_certificate_type_set_priority(*state, cert_type_priority);	gnutls_set_server_name(*state, GNUTLS_NAME_DNS, server_name,			       sizeof(server_name) - 1);	socket->ssl = state;#endif	return S_OK;}voiddone_ssl_connection(struct connection_socket *socket){	ssl_t *ssl = socket->ssl;	if (!ssl) return;#ifdef CONFIG_OPENSSL	SSL_free(ssl);#elif defined(CONFIG_GNUTLS)	gnutls_deinit(*ssl);	mem_free(ssl);#endif	socket->ssl = NULL;}unsigned char *get_ssl_connection_cipher(struct connection *conn){	ssl_t *ssl = conn->socket.ssl; /* FIXME: Assuming ssl handle */	struct string str;	if (!init_string(&str)) return NULL;#ifdef CONFIG_OPENSSL	add_format_to_string(&str, "%ld-bit %s %s",		SSL_get_cipher_bits(ssl, NULL),		SSL_get_cipher_version(ssl),		SSL_get_cipher_name(ssl));#elif defined(CONFIG_GNUTLS)	/* XXX: How to get other relevant parameters? */	add_format_to_string(&str, "%s - %s - %s - %s - %s (compr: %s)",		gnutls_protocol_get_name(gnutls_protocol_get_version(*ssl)),		gnutls_kx_get_name(gnutls_kx_get(*ssl)),		gnutls_cipher_get_name(gnutls_cipher_get(*ssl)),		gnutls_mac_get_name(gnutls_mac_get(*ssl)),		gnutls_cert_type_get_name(gnutls_cert_type_get(*ssl)),		gnutls_compression_get_name(gnutls_compression_get(*ssl)));#endif	return str.source;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
爽好久久久欧美精品| 国产精品456露脸| 国产日韩精品久久久| 欧美久久久一区| 91美女精品福利| 丁香激情综合五月| 国产高清在线观看免费不卡| 久久成人羞羞网站| 色美美综合视频| 91丨九色porny丨蝌蚪| 97久久超碰精品国产| 日本道免费精品一区二区三区| 91美女在线观看| 色综合久久综合| 精品三级av在线| 男人的天堂久久精品| 视频一区二区三区在线| 精品一区二区日韩| 国产精品一区二区久久精品爱涩| 国产精品一区三区| 91免费观看视频在线| 欧美日韩国产综合一区二区| 欧美精品在欧美一区二区少妇| 欧美日韩国产高清一区二区三区| 日韩极品在线观看| 亚洲v中文字幕| 免费av成人在线| 成人动漫精品一区二区| 91福利精品第一导航| 日韩欧美色电影| 国产精品久久久久四虎| 中文字幕佐山爱一区二区免费| 国产精品初高中害羞小美女文| 色噜噜狠狠成人中文综合| 欧美日韩在线直播| 精品国产欧美一区二区| 欧美国产乱子伦| 亚洲综合免费观看高清完整版 | 久久久精品黄色| 色综合欧美在线| 日韩欧美不卡一区| 中文字幕二三区不卡| 亚洲一区二区三区视频在线| 寂寞少妇一区二区三区| 色94色欧美sute亚洲线路二 | 在线一区二区三区做爰视频网站| 日韩一区二区电影在线| 亚洲国产精品t66y| 蜜桃免费网站一区二区三区| 91丨porny丨在线| 国产亚洲一区字幕| 男人的天堂亚洲一区| 91福利社在线观看| 亚洲欧美在线高清| 国产精品一区二区黑丝| 91精品国产全国免费观看| 亚洲乱码国产乱码精品精可以看| 日本在线不卡视频一二三区| 亚洲欧美另类久久久精品| 国产麻豆一精品一av一免费 | 亚洲女人的天堂| 国产麻豆91精品| 亚洲最大成人网4388xx| 久久久天堂av| 美女久久久精品| 欧美日韩国产小视频在线观看| 欧美日韩免费在线视频| 欧美成人三级在线| 日韩va亚洲va欧美va久久| 欧美婷婷六月丁香综合色| 国产精品国产自产拍在线| 精品亚洲国内自在自线福利| 欧美日韩午夜在线| 亚洲一区二区视频| 欧美亚州韩日在线看免费版国语版| 久久久午夜精品理论片中文字幕| 美女视频第一区二区三区免费观看网站| 在线免费亚洲电影| 亚洲午夜成aⅴ人片| 在线视频综合导航| 亚洲精品免费播放| 99麻豆久久久国产精品免费| 日本一区二区综合亚洲| 国产精品99久久久久久似苏梦涵| 麻豆传媒一区二区三区| 欧美成人欧美edvon| 国产美女精品在线| 中文字幕不卡一区| 成人v精品蜜桃久久一区| 欧美国产精品久久| 91老师片黄在线观看| 亚洲嫩草精品久久| 91丨九色丨尤物| 亚洲视频免费看| 欧美三级乱人伦电影| 天天av天天翘天天综合网色鬼国产| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 亚洲欧美乱综合| 欧美日韩在线播放三区四区| 日本va欧美va瓶| 久久嫩草精品久久久精品一| av福利精品导航| 亚洲妇女屁股眼交7| 欧美日韩精品一区二区三区| 日本不卡一区二区三区 | 大白屁股一区二区视频| 欧美影院一区二区三区| 青青草原综合久久大伊人精品 | 国产精品国产a级| 国产高清不卡二三区| 亚洲精品亚洲人成人网| 91精品国产综合久久精品图片| 青青草原综合久久大伊人精品优势 | 国产精品久久久久一区二区三区共| 97精品久久久久中文字幕| 亚洲成a天堂v人片| 国产欧美日韩不卡免费| 欧美日韩亚洲综合| www.66久久| 麻豆成人久久精品二区三区小说| 久久精品国产亚洲aⅴ| 久久久国产精品午夜一区ai换脸| 99天天综合性| 蜜臀精品久久久久久蜜臀 | 久久久天堂av| 欧美乱熟臀69xxxxxx| 中文字幕制服丝袜一区二区三区| 欧美日韩国产区一| aaa亚洲精品一二三区| 欧美一区二区视频网站| 91麻豆精东视频| 国产一区 二区 三区一级| 亚洲va国产va欧美va观看| 日本一区二区不卡视频| 一区二区三区 在线观看视频 | 中文成人综合网| 在线播放中文一区| 色狠狠色狠狠综合| 成人av网站在线观看免费| 美女久久久精品| 婷婷久久综合九色综合绿巨人| 国产精品视频一二| 日韩亚洲欧美在线观看| 99re6这里只有精品视频在线观看| 久久精品国产77777蜜臀| 欧美日韩一卡二卡| 色婷婷综合五月| 97精品国产97久久久久久久久久久久| 国产乱码精品一区二区三区忘忧草 | 五月综合激情婷婷六月色窝| 国产欧美一区二区在线| 久久综合av免费| 精品日韩av一区二区| 欧美一区二区视频在线观看2022| 亚洲免费色视频| 久久综合九色综合97婷婷| 国产午夜精品久久久久久免费视| 精品第一国产综合精品aⅴ| 精品精品国产高清a毛片牛牛| 8x福利精品第一导航| 91精彩视频在线| 色婷婷久久99综合精品jk白丝| 成人免费视频免费观看| 国产精品家庭影院| 亚洲国产日韩a在线播放性色| 欧美一级爆毛片| 2020国产成人综合网| 国产欧美一区二区在线观看| 中文字幕欧美激情| 综合欧美一区二区三区| 亚洲一区二区三区免费视频| 日韩国产欧美在线播放| 久久精品免费观看| 国产精品456露脸| 在线观看一区二区精品视频| 欧美三级中文字幕在线观看| 日韩一区二区三区免费观看| 精品精品国产高清一毛片一天堂| 欧美激情在线观看视频免费| 亚洲欧美综合在线精品| 亚洲国产精品嫩草影院| 日本视频免费一区| 成人福利视频网站| 欧美日韩另类国产亚洲欧美一级| 欧美一区二区久久久| 亚洲国产精品t66y| 亚洲国产欧美日韩另类综合| 久久国产免费看| 成人成人成人在线视频| 欧洲av在线精品| 精品欧美一区二区在线观看| 在线一区二区视频| 日韩亚洲欧美综合| 亚洲精品国产第一综合99久久| 日韩一区精品视频| 波多野结衣中文一区| 日韩欧美中文字幕制服| 一区二区中文字幕在线| 久久av资源网| 欧美日韩一卡二卡|