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

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

?? tls_gnutls.c

?? IEEE 802.11a/b/g 服務器端AP
?? C
?? 第 1 頁 / 共 3 頁
字號:
	size_t len;	ext = X509_get_ext_d2i(cert, NID_subject_alt_name, NULL, NULL);	for (i = 0; ext && i < sk_GENERAL_NAME_num(ext); i++) {		gen = sk_GENERAL_NAME_value(ext, i);		switch (gen->type) {		case GEN_EMAIL:			field = "EMAIL";			break;		case GEN_DNS:			field = "DNS";			break;		case GEN_URI:			field = "URI";			break;		default:			field = NULL;			wpa_printf(MSG_DEBUG, "TLS: altSubjectName: "				   "unsupported type=%d", gen->type);			break;		}		if (!field)			continue;		wpa_printf(MSG_DEBUG, "TLS: altSubjectName: %s:%s",			   field, gen->d.ia5->data);		len = os_strlen(field) + 1 +			strlen((char *) gen->d.ia5->data) + 1;		tmp = os_malloc(len);		if (tmp == NULL)			continue;		snprintf(tmp, len, "%s:%s", field, gen->d.ia5->data);		if (strstr(tmp, match))			found++;		os_free(tmp);	}	return found;}#endif#if 0static int tls_verify_cb(int preverify_ok, X509_STORE_CTX *x509_ctx){	char buf[256];	X509 *err_cert;	int err, depth;	SSL *ssl;	struct tls_connection *conn;	char *match, *altmatch;	err_cert = X509_STORE_CTX_get_current_cert(x509_ctx);	err = X509_STORE_CTX_get_error(x509_ctx);	depth = X509_STORE_CTX_get_error_depth(x509_ctx);	ssl = X509_STORE_CTX_get_ex_data(x509_ctx,					 SSL_get_ex_data_X509_STORE_CTX_idx());	X509_NAME_oneline(X509_get_subject_name(err_cert), buf, sizeof(buf));	conn = SSL_get_app_data(ssl);	match = conn ? conn->subject_match : NULL;	altmatch = conn ? conn->altsubject_match : NULL;	if (!preverify_ok) {		wpa_printf(MSG_WARNING, "TLS: Certificate verification failed,"			   " error %d (%s) depth %d for '%s'", err,			   X509_verify_cert_error_string(err), depth, buf);	} else {		wpa_printf(MSG_DEBUG, "TLS: tls_verify_cb - "			   "preverify_ok=%d err=%d (%s) depth=%d buf='%s'",			   preverify_ok, err,			   X509_verify_cert_error_string(err), depth, buf);		if (depth == 0 && match && strstr(buf, match) == NULL) {			wpa_printf(MSG_WARNING, "TLS: Subject '%s' did not "				   "match with '%s'", buf, match);			preverify_ok = 0;		} else if (depth == 0 && altmatch &&			   !tls_match_altsubject(err_cert, altmatch)) {			wpa_printf(MSG_WARNING, "TLS: altSubjectName match "				   "'%s' not found", altmatch);			preverify_ok = 0;		}	}	return preverify_ok;}#endifint tls_connection_set_params(void *tls_ctx, struct tls_connection *conn,			      const struct tls_connection_params *params){	int ret;	if (conn == NULL || params == NULL)		return -1;	os_free(conn->subject_match);	conn->subject_match = NULL;	if (params->subject_match) {		conn->subject_match = os_strdup(params->subject_match);		if (conn->subject_match == NULL)			return -1;	}	os_free(conn->altsubject_match);	conn->altsubject_match = NULL;	if (params->altsubject_match) {		conn->altsubject_match = os_strdup(params->altsubject_match);		if (conn->altsubject_match == NULL)			return -1;	}	/* TODO: gnutls_certificate_set_verify_flags(xcred, flags); 	 * to force peer validation(?) */	if (params->ca_cert) {		conn->verify_peer = 1;		ret = gnutls_certificate_set_x509_trust_file(			conn->xcred, params->ca_cert, GNUTLS_X509_FMT_PEM);		if (ret < 0) {			wpa_printf(MSG_DEBUG, "Failed to read CA cert '%s' "				   "in PEM format: %s", params->ca_cert,				   gnutls_strerror(ret));			ret = gnutls_certificate_set_x509_trust_file(				conn->xcred, params->ca_cert,				GNUTLS_X509_FMT_DER);			if (ret < 0) {				wpa_printf(MSG_DEBUG, "Failed to read CA cert "					   "'%s' in DER format: %s",					   params->ca_cert,					   gnutls_strerror(ret));				return -1;			}		}	}	if (params->client_cert && params->private_key) {		/* TODO: private_key_passwd? */		ret = gnutls_certificate_set_x509_key_file(			conn->xcred, params->client_cert, params->private_key,			GNUTLS_X509_FMT_PEM);		if (ret < 0) {			wpa_printf(MSG_DEBUG, "Failed to read client cert/key "				   "in PEM format: %s", gnutls_strerror(ret));			ret = gnutls_certificate_set_x509_key_file(				conn->xcred, params->client_cert,				params->private_key, GNUTLS_X509_FMT_DER);			if (ret < 0) {				wpa_printf(MSG_DEBUG, "Failed to read client "					   "cert/key in DER format: %s",					   gnutls_strerror(ret));				return ret;			}		}	} else if (params->private_key) {		int pkcs12_ok = 0;#ifdef PKCS12_FUNCS		/* Try to load in PKCS#12 format */#if LIBGNUTLS_VERSION_NUMBER >= 0x010302		ret = gnutls_certificate_set_x509_simple_pkcs12_file(			conn->xcred, params->private_key, GNUTLS_X509_FMT_DER,			params->private_key_passwd);		if (ret != 0) {			wpa_printf(MSG_DEBUG, "Failed to load private_key in "				   "PKCS#12 format: %s", gnutls_strerror(ret));			return -1;		} else			pkcs12_ok = 1;#endif /* LIBGNUTLS_VERSION_NUMBER >= 0x010302 */#endif /* PKCS12_FUNCS */		if (!pkcs12_ok) {			wpa_printf(MSG_DEBUG, "GnuTLS: PKCS#12 support not "				   "included");			return -1;		}	}	conn->tls_ia = params->tls_ia;	conn->params_set = 1;	ret = gnutls_credentials_set(conn->session, GNUTLS_CRD_CERTIFICATE,				     conn->xcred);	if (ret < 0) {		wpa_printf(MSG_INFO, "Failed to configure credentials: %s",			   gnutls_strerror(ret));	}#ifdef GNUTLS_IA	if (conn->iacred_cli)		gnutls_ia_free_client_credentials(conn->iacred_cli);	ret = gnutls_ia_allocate_client_credentials(&conn->iacred_cli);	if (ret) {		wpa_printf(MSG_DEBUG, "Failed to allocate IA credentials: %s",			   gnutls_strerror(ret));		return -1;	}	ret = gnutls_credentials_set(conn->session, GNUTLS_CRD_IA,				     conn->iacred_cli);	if (ret) {		wpa_printf(MSG_DEBUG, "Failed to configure IA credentials: %s",			   gnutls_strerror(ret));		gnutls_ia_free_client_credentials(conn->iacred_cli);		conn->iacred_cli = NULL;		return -1;	}#endif /* GNUTLS_IE */	return ret;}int tls_global_set_params(void *tls_ctx,			  const struct tls_connection_params *params){	struct tls_global *global = tls_ctx;	int ret;	/* Currently, global parameters are only set when running in server	 * mode. */	global->server = 1;	if (global->params_set) {		gnutls_certificate_free_credentials(global->xcred);		global->params_set = 0;	}	ret = gnutls_certificate_allocate_credentials(&global->xcred);	if (ret) {		wpa_printf(MSG_DEBUG, "Failed to allocate global credentials "			   "%s", gnutls_strerror(ret));		return -1;	}	if (params->ca_cert) {		ret = gnutls_certificate_set_x509_trust_file(			global->xcred, params->ca_cert, GNUTLS_X509_FMT_PEM);		if (ret < 0) {			wpa_printf(MSG_DEBUG, "Failed to read CA cert '%s' "				   "in PEM format: %s", params->ca_cert,				   gnutls_strerror(ret));			ret = gnutls_certificate_set_x509_trust_file(				global->xcred, params->ca_cert,				GNUTLS_X509_FMT_DER);			if (ret < 0) {				wpa_printf(MSG_DEBUG, "Failed to read CA cert "					   "'%s' in DER format: %s",					   params->ca_cert,					   gnutls_strerror(ret));				goto fail;			}		}	}	if (params->client_cert && params->private_key) {		/* TODO: private_key_passwd? */		ret = gnutls_certificate_set_x509_key_file(			global->xcred, params->client_cert,			params->private_key, GNUTLS_X509_FMT_PEM);		if (ret < 0) {			wpa_printf(MSG_DEBUG, "Failed to read client cert/key "				   "in PEM format: %s", gnutls_strerror(ret));			ret = gnutls_certificate_set_x509_key_file(				global->xcred, params->client_cert,				params->private_key, GNUTLS_X509_FMT_DER);			if (ret < 0) {				wpa_printf(MSG_DEBUG, "Failed to read client "					   "cert/key in DER format: %s",					   gnutls_strerror(ret));				goto fail;			}		}	} else if (params->private_key) {		int pkcs12_ok = 0;#ifdef PKCS12_FUNCS		/* Try to load in PKCS#12 format */#if LIBGNUTLS_VERSION_NUMBER >= 0x010302		ret = gnutls_certificate_set_x509_simple_pkcs12_file(			global->xcred, params->private_key,			GNUTLS_X509_FMT_DER, params->private_key_passwd);		if (ret != 0) {			wpa_printf(MSG_DEBUG, "Failed to load private_key in "				   "PKCS#12 format: %s", gnutls_strerror(ret));			goto fail;		} else			pkcs12_ok = 1;#endif /* LIBGNUTLS_VERSION_NUMBER >= 0x010302 */#endif /* PKCS12_FUNCS */		if (!pkcs12_ok) {			wpa_printf(MSG_DEBUG, "GnuTLS: PKCS#12 support not "				   "included");			goto fail;		}	}	global->params_set = 1;	return 0;fail:	gnutls_certificate_free_credentials(global->xcred);	return -1;}int tls_global_set_verify(void *ssl_ctx, int check_crl){	/* TODO */	return 0;}int tls_connection_set_verify(void *ssl_ctx, struct tls_connection *conn,			      int verify_peer){	if (conn == NULL || conn->session == NULL)		return -1;	conn->verify_peer = verify_peer;	gnutls_certificate_server_set_request(conn->session,					      verify_peer ? GNUTLS_CERT_REQUIRE					      : GNUTLS_CERT_REQUEST);	return 0;}int tls_connection_get_keys(void *ssl_ctx, struct tls_connection *conn,			    struct tls_keys *keys){#ifdef GNUTLS_INTERNAL_STRUCTURE_HACK	security_parameters_st *sec;#endif /* GNUTLS_INTERNAL_STRUCTURE_HACK */	if (conn == NULL || conn->session == NULL || keys == NULL)		return -1;	os_memset(keys, 0, sizeof(*keys));#ifdef GNUTLS_INTERNAL_STRUCTURE_HACK	sec = &conn->session->security_parameters;	keys->master_key = sec->master_secret;	keys->master_key_len = TLS_MASTER_SIZE;	keys->client_random = sec->client_random;	keys->server_random = sec->server_random;#else /* GNUTLS_INTERNAL_STRUCTURE_HACK */	keys->client_random =		(u8 *) gnutls_session_get_client_random(conn->session);	keys->server_random =		(u8 *) gnutls_session_get_server_random(conn->session);	/* No access to master_secret */#endif /* GNUTLS_INTERNAL_STRUCTURE_HACK */#ifdef GNUTLS_IA	gnutls_ia_extract_inner_secret(conn->session,				       (char *) conn->inner_secret);	keys->inner_secret = conn->inner_secret;	keys->inner_secret_len = TLS_MASTER_SIZE;#endif /* GNUTLS_IA */	keys->client_random_len = TLS_RANDOM_SIZE;	keys->server_random_len = TLS_RANDOM_SIZE;	return 0;}int tls_connection_prf(void *tls_ctx, struct tls_connection *conn,		       const char *label, int server_random_first,		       u8 *out, size_t out_len){#if LIBGNUTLS_VERSION_NUMBER >= 0x010302	if (conn == NULL || conn->session == NULL)		return -1;	return gnutls_prf(conn->session, os_strlen(label), label,			  server_random_first, 0, NULL, out_len, (char *) out);#else /* LIBGNUTLS_VERSION_NUMBER >= 0x010302 */	return -1;#endif /* LIBGNUTLS_VERSION_NUMBER >= 0x010302 */}static int tls_connection_verify_peer(struct tls_connection *conn){	unsigned int status, num_certs, i;	struct os_time now;	const gnutls_datum_t *certs;	gnutls_x509_crt_t cert;	if (gnutls_certificate_verify_peers2(conn->session, &status) < 0) {		wpa_printf(MSG_INFO, "TLS: Failed to verify peer "			   "certificate chain");		return -1;	}	if (conn->verify_peer && (status & GNUTLS_CERT_INVALID)) {		wpa_printf(MSG_INFO, "TLS: Peer certificate not trusted");		return -1;	}	if (status & GNUTLS_CERT_SIGNER_NOT_FOUND) {		wpa_printf(MSG_INFO, "TLS: Peer certificate does not have a "			   "known issuer");		return -1;	}	if (status & GNUTLS_CERT_REVOKED) {		wpa_printf(MSG_INFO, "TLS: Peer certificate has been revoked");		return -1;	}	os_get_time(&now);	certs = gnutls_certificate_get_peers(conn->session, &num_certs);	if (certs == NULL) {		wpa_printf(MSG_INFO, "TLS: No peer certificate chain "			   "received");		return -1;	}	for (i = 0; i < num_certs; i++) {		char *buf;		size_t len;		if (gnutls_x509_crt_init(&cert) < 0) {			wpa_printf(MSG_INFO, "TLS: Certificate initialization "				   "failed");			return -1;		}		if (gnutls_x509_crt_import(cert, &certs[i],					   GNUTLS_X509_FMT_DER) < 0) {			wpa_printf(MSG_INFO, "TLS: Could not parse peer "				   "certificate %d/%d", i + 1, num_certs);			gnutls_x509_crt_deinit(cert);			return -1;		}		gnutls_x509_crt_get_dn(cert, NULL, &len);		len++;		buf = os_malloc(len + 1);		if (buf) {			buf[0] = buf[len] = '\0';			gnutls_x509_crt_get_dn(cert, buf, &len);		}		wpa_printf(MSG_DEBUG, "TLS: Peer cert chain %d/%d: %s",			   i + 1, num_certs, buf);		if (i == 0) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女视频一区在线观看| 亚洲动漫第一页| 久久精品亚洲乱码伦伦中文| 国产日韩欧美一区二区三区乱码 | 99热这里都是精品| 欧美高清一级片在线| 欧美一区二区三区视频在线观看 | 91免费观看国产| 欧美一二区视频| 亚洲另类在线一区| 久久国产精品区| 99国产欧美另类久久久精品| 欧美男女性生活在线直播观看| 精品国产精品网麻豆系列 | 不卡的av网站| 欧美一区二区三区免费在线看| 亚洲人成精品久久久久| 亚洲一二三专区| 欧美裸体bbwbbwbbw| 天天色图综合网| 欧美电影免费观看高清完整版在线 | 色综合久久天天| 亚洲一区在线观看视频| 在线免费观看日本一区| 免费黄网站欧美| 国产精品福利电影一区二区三区四区| 成人一区在线看| 亚洲综合免费观看高清完整版| 91福利在线看| 极品尤物av久久免费看| 亚洲狠狠丁香婷婷综合久久久| 欧美日韩一区二区不卡| 国产尤物一区二区在线| 亚洲欧洲www| 欧美大胆人体bbbb| 成人午夜视频在线观看| 欧美一级久久久| 精品一区二区在线播放| 日韩美女视频在线| 成人精品视频一区| 亚洲在线视频免费观看| 555夜色666亚洲国产免| 久久99国产精品尤物| 久久综合中文字幕| 色美美综合视频| 婷婷成人激情在线网| 日韩精品一区二区三区四区视频| 久88久久88久久久| 亚洲精品久久久久久国产精华液| 日本韩国欧美在线| 国产麻豆成人传媒免费观看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 在线成人av网站| 国产电影一区二区三区| 免费欧美在线视频| 亚洲图片欧美综合| 亚洲三级电影全部在线观看高清| 日韩视频在线一区二区| 欧美美女bb生活片| 色94色欧美sute亚洲线路一ni| 精品对白一区国产伦| 国产精品18久久久久| 欧美绝品在线观看成人午夜影视| 中文字幕在线一区二区三区| 色呦呦国产精品| 久久黄色级2电影| 亚洲最大成人网4388xx| 国产亚洲一区二区三区四区| 成人三级伦理片| 美女免费视频一区二区| 综合婷婷亚洲小说| 欧美大片在线观看一区二区| 波多野结衣中文字幕一区二区三区| 亚洲黄色免费网站| 中文字幕精品一区二区精品绿巨人| 欧美体内she精视频| 国产一区二区美女诱惑| 亚洲h在线观看| 中文字幕亚洲电影| 久久久不卡网国产精品一区| 777午夜精品视频在线播放| 国产精品一区三区| 精品系列免费在线观看| 亚洲色图.com| 国产精品美日韩| 国产日韩精品一区二区三区在线| 91麻豆产精品久久久久久| 国产精品18久久久久久久久久久久| 日韩av中文在线观看| 午夜视频在线观看一区| 一区二区在线观看视频| 亚洲另类中文字| 国产精品色在线观看| 国产亚洲精品超碰| 中文字幕av一区二区三区高| 国产亚洲一区字幕| 亚洲色图色小说| 亚洲一区二区三区四区的| 亚洲成av人片在线观看| 亚洲精品国产一区二区精华液| 亚洲天堂精品视频| 五月综合激情日本mⅴ| 久久国产精品第一页| youjizz久久| 91免费观看在线| 91精品国产黑色紧身裤美女| 精品国内片67194| 国产精品免费久久| 天堂一区二区在线| 精品综合免费视频观看| 丰满放荡岳乱妇91ww| www.日本不卡| 日韩欧美电影在线| 亚洲日本在线天堂| 经典一区二区三区| 欧美三日本三级三级在线播放| 日韩欧美精品三级| 亚洲一区二区三区四区在线免费观看| 男男视频亚洲欧美| heyzo一本久久综合| 日韩午夜在线播放| 亚洲综合一区二区三区| 国产成人高清在线| 在线观看三级视频欧美| 中文字幕第一区第二区| 日本中文字幕一区二区视频 | 天天综合天天综合色| 99精品偷自拍| 国产精品午夜免费| 国产成都精品91一区二区三 | 91免费观看视频| 中文字幕在线观看不卡| 国产一区二区三区日韩| 91精品在线免费| 日韩成人伦理电影在线观看| 成人在线综合网| 国产精品二三区| av电影天堂一区二区在线观看| 国产亚洲欧美在线| 成人免费福利片| 国产精品美女一区二区三区 | 国产乱理伦片在线观看夜一区 | 久久夜色精品一区| 久久99热这里只有精品| 精品电影一区二区三区| 精品无人码麻豆乱码1区2区| 91精品国产麻豆国产自产在线 | 在线电影一区二区三区| 日韩不卡一区二区三区 | 91精品国产综合久久久蜜臀图片| 亚洲欧美怡红院| 欧美精品免费视频| 国内精品免费在线观看| 国产亚洲视频系列| 在线免费不卡电影| 蜜臀久久99精品久久久画质超高清| 欧美日韩国产在线观看| 久久69国产一区二区蜜臀| 18成人在线视频| 欧美色综合影院| 国产精品一线二线三线| 亚洲福利视频一区| 日本一区二区免费在线| 欧美精品乱人伦久久久久久| 国产成人自拍网| 亚洲天堂精品视频| 日韩精品中文字幕一区二区三区| 91蜜桃网址入口| 夜夜嗨av一区二区三区网页| 久久久www免费人成精品| 欧美怡红院视频| 不卡免费追剧大全电视剧网站| 午夜欧美视频在线观看| 久久人人超碰精品| 色天天综合久久久久综合片| 蜜桃一区二区三区四区| 亚洲黄色在线视频| 国产欧美一区二区精品性色超碰| 日本aⅴ精品一区二区三区 | 欧美日韩www| 亚洲一区二区影院| 在线观看日韩国产| 美女精品一区二区| 午夜久久电影网| 1区2区3区精品视频| 亚洲自拍偷拍欧美| 色88888久久久久久影院按摩| 亚洲激情在线激情| 欧美日韩免费高清一区色橹橹| 亚洲最大色网站| 日韩一区二区三区免费观看| 国内精品久久久久影院薰衣草| 精品裸体舞一区二区三区| 亚洲图片欧美视频| 久久精品99久久久| 国产在线一区二区综合免费视频| 国产精品久久久久aaaa| 欧美成人一区二区| 亚洲男人的天堂一区二区| 日韩三级高清在线|