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

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

?? tls_openssl.c

?? IEEE 802.11a/b/g 服務器端AP
?? C
?? 第 1 頁 / 共 5 頁
字號:
			   "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 && os_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;}#ifndef OPENSSL_NO_STDIOstatic int tls_load_ca_der(void *_ssl_ctx, const char *ca_cert){	SSL_CTX *ssl_ctx = _ssl_ctx;	X509_LOOKUP *lookup;	int ret = 0;	lookup = X509_STORE_add_lookup(ssl_ctx->cert_store,				       X509_LOOKUP_file());	if (lookup == NULL) {		tls_show_errors(MSG_WARNING, __func__,				"Failed add lookup for X509 store");		return -1;	}	if (!X509_LOOKUP_load_file(lookup, ca_cert, X509_FILETYPE_ASN1)) {		unsigned long err = ERR_peek_error();		tls_show_errors(MSG_WARNING, __func__,				"Failed load CA in DER format");		if (ERR_GET_LIB(err) == ERR_LIB_X509 &&		    ERR_GET_REASON(err) == X509_R_CERT_ALREADY_IN_HASH_TABLE) {			wpa_printf(MSG_DEBUG, "OpenSSL: %s - ignoring "				   "cert already in hash table error",				   __func__);		} else			ret = -1;	}	return ret;}#endif /* OPENSSL_NO_STDIO */static int tls_connection_ca_cert(void *_ssl_ctx, struct tls_connection *conn,				  const char *ca_cert, const u8 *ca_cert_blob,				  size_t ca_cert_blob_len, const char *ca_path){	SSL_CTX *ssl_ctx = _ssl_ctx;	/*	 * Remove previously configured trusted CA certificates before adding	 * new ones.	 */	X509_STORE_free(ssl_ctx->cert_store);	ssl_ctx->cert_store = X509_STORE_new();	if (ssl_ctx->cert_store == NULL) {		wpa_printf(MSG_DEBUG, "OpenSSL: %s - failed to allocate new "			   "certificate store", __func__);		return -1;	}	if (ca_cert_blob) {		X509 *cert = d2i_X509(NULL, (OPENSSL_d2i_TYPE) &ca_cert_blob,				      ca_cert_blob_len);		if (cert == NULL) {			tls_show_errors(MSG_WARNING, __func__,					"Failed to parse ca_cert_blob");			return -1;		}		if (!X509_STORE_add_cert(ssl_ctx->cert_store, cert)) {			unsigned long err = ERR_peek_error();			tls_show_errors(MSG_WARNING, __func__,					"Failed to add ca_cert_blob to "					"certificate store");			if (ERR_GET_LIB(err) == ERR_LIB_X509 &&			    ERR_GET_REASON(err) ==			    X509_R_CERT_ALREADY_IN_HASH_TABLE) {				wpa_printf(MSG_DEBUG, "OpenSSL: %s - ignoring "					   "cert already in hash table error",					   __func__);			} else {				X509_free(cert);				return -1;			}		}		X509_free(cert);		wpa_printf(MSG_DEBUG, "OpenSSL: %s - added ca_cert_blob "			   "to certificate store", __func__);		SSL_set_verify(conn->ssl, SSL_VERIFY_PEER, tls_verify_cb);		return 0;	}#ifdef CONFIG_NATIVE_WINDOWS	if (ca_cert && tls_cryptoapi_ca_cert(ssl_ctx, conn->ssl, ca_cert) ==	    0) {		wpa_printf(MSG_DEBUG, "OpenSSL: Added CA certificates from "			   "system certificate store");		SSL_set_verify(conn->ssl, SSL_VERIFY_PEER, tls_verify_cb);		return 0;	}#endif /* CONFIG_NATIVE_WINDOWS */	if (ca_cert || ca_path) {#ifndef OPENSSL_NO_STDIO		if (SSL_CTX_load_verify_locations(ssl_ctx, ca_cert, ca_path) !=		    1) {			tls_show_errors(MSG_WARNING, __func__,					"Failed to load root certificates");			if (ca_cert &&			    tls_load_ca_der(ssl_ctx, ca_cert) == 0) {				wpa_printf(MSG_DEBUG, "OpenSSL: %s - loaded "					   "DER format CA certificate",					   __func__);			} else				return -1;		} else {			wpa_printf(MSG_DEBUG, "TLS: Trusted root "				   "certificate(s) loaded");			tls_get_errors(ssl_ctx);		}		SSL_set_verify(conn->ssl, SSL_VERIFY_PEER, tls_verify_cb);#else /* OPENSSL_NO_STDIO */		wpa_printf(MSG_DEBUG, "OpenSSL: %s - OPENSSL_NO_STDIO",			   __func__);		return -1;#endif /* OPENSSL_NO_STDIO */	} else {		/* No ca_cert configured - do not try to verify server		 * certificate */		SSL_set_verify(conn->ssl, SSL_VERIFY_NONE, NULL);	}	return 0;}static int tls_global_ca_cert(SSL_CTX *ssl_ctx, const char *ca_cert){	if (ca_cert) {		if (SSL_CTX_load_verify_locations(ssl_ctx, ca_cert, NULL) != 1)		{			tls_show_errors(MSG_WARNING, __func__,					"Failed to load root certificates");			return -1;		}		wpa_printf(MSG_DEBUG, "TLS: Trusted root "			   "certificate(s) loaded");#ifndef OPENSSL_NO_STDIO		/* Add the same CAs to the client certificate requests */		SSL_CTX_set_client_CA_list(ssl_ctx,					   SSL_load_client_CA_file(ca_cert));#endif /* OPENSSL_NO_STDIO */	}	return 0;}int tls_global_set_verify(void *ssl_ctx, int check_crl){	int flags;	if (check_crl) {		X509_STORE *cs = SSL_CTX_get_cert_store(ssl_ctx);		if (cs == NULL) {			tls_show_errors(MSG_INFO, __func__, "Failed to get "					"certificate store when enabling "					"check_crl");			return -1;		}		flags = X509_V_FLAG_CRL_CHECK;		if (check_crl == 2)			flags |= X509_V_FLAG_CRL_CHECK_ALL;		X509_STORE_set_flags(cs, flags);	}	return 0;}static int tls_connection_set_subject_match(struct tls_connection *conn,					    const char *subject_match,					    const char *altsubject_match){	os_free(conn->subject_match);	conn->subject_match = NULL;	if (subject_match) {		conn->subject_match = os_strdup(subject_match);		if (conn->subject_match == NULL)			return -1;	}	os_free(conn->altsubject_match);	conn->altsubject_match = NULL;	if (altsubject_match) {		conn->altsubject_match = os_strdup(altsubject_match);		if (conn->altsubject_match == NULL)			return -1;	}	return 0;}int tls_connection_set_verify(void *ssl_ctx, struct tls_connection *conn,			      int verify_peer){	static int counter = 0;	if (conn == NULL)		return -1;	if (verify_peer) {		SSL_set_verify(conn->ssl, SSL_VERIFY_PEER |			       SSL_VERIFY_FAIL_IF_NO_PEER_CERT |			       SSL_VERIFY_CLIENT_ONCE, tls_verify_cb);	} else {		SSL_set_verify(conn->ssl, SSL_VERIFY_NONE, NULL);	}	SSL_set_accept_state(conn->ssl);	/*	 * Set session id context in order to avoid fatal errors when client	 * tries to resume a session. However, set the context to a unique	 * value in order to effectively disable session resumption for now	 * since not all areas of the server code are ready for it (e.g.,	 * EAP-TTLS needs special handling for Phase 2 after abbreviated TLS	 * handshake).	 */	counter++;	SSL_set_session_id_context(conn->ssl,				   (const unsigned char *) &counter,				   sizeof(counter));	return 0;}static int tls_connection_client_cert(struct tls_connection *conn,				      const char *client_cert,				      const u8 *client_cert_blob,				      size_t client_cert_blob_len){	if (client_cert == NULL && client_cert_blob == NULL)		return 0;	if (client_cert_blob &&	    SSL_use_certificate_ASN1(conn->ssl, (u8 *) client_cert_blob,				     client_cert_blob_len) == 1) {		wpa_printf(MSG_DEBUG, "OpenSSL: SSL_use_certificate_ASN1 --> "			   "OK");		return 0;	} else if (client_cert_blob) {		tls_show_errors(MSG_DEBUG, __func__,				"SSL_use_certificate_ASN1 failed");	}	if (client_cert == NULL)		return -1;#ifndef OPENSSL_NO_STDIO	if (SSL_use_certificate_file(conn->ssl, client_cert,				     SSL_FILETYPE_ASN1) == 1) {		wpa_printf(MSG_DEBUG, "OpenSSL: SSL_use_certificate_file (DER)"			   " --> OK");		return 0;	} else {		tls_show_errors(MSG_DEBUG, __func__,				"SSL_use_certificate_file (DER) failed");	}	if (SSL_use_certificate_file(conn->ssl, client_cert,				     SSL_FILETYPE_PEM) == 1) {		wpa_printf(MSG_DEBUG, "OpenSSL: SSL_use_certificate_file (PEM)"			   " --> OK");		return 0;	} else {		tls_show_errors(MSG_DEBUG, __func__,				"SSL_use_certificate_file (PEM) failed");	}#else /* OPENSSL_NO_STDIO */	wpa_printf(MSG_DEBUG, "OpenSSL: %s - OPENSSL_NO_STDIO", __func__);#endif /* OPENSSL_NO_STDIO */	return -1;}static int tls_global_client_cert(SSL_CTX *ssl_ctx, const char *client_cert){#ifndef OPENSSL_NO_STDIO	if (client_cert == NULL)		return 0;	if (SSL_CTX_use_certificate_file(ssl_ctx, client_cert,					 SSL_FILETYPE_ASN1) != 1 &&	    SSL_CTX_use_certificate_file(ssl_ctx, client_cert,					 SSL_FILETYPE_PEM) != 1) {		tls_show_errors(MSG_INFO, __func__,				"Failed to load client certificate");		return -1;	}	return 0;#else /* OPENSSL_NO_STDIO */	if (client_cert == NULL)		return 0;	wpa_printf(MSG_DEBUG, "OpenSSL: %s - OPENSSL_NO_STDIO", __func__);	return -1;#endif /* OPENSSL_NO_STDIO */}static int tls_passwd_cb(char *buf, int size, int rwflag, void *password){	if (password == NULL) {		return 0;	}	os_strlcpy(buf, (char *) password, size);	return os_strlen(buf);}#ifdef PKCS12_FUNCSstatic int tls_parse_pkcs12(SSL_CTX *ssl_ctx, SSL *ssl, PKCS12 *p12,			    const char *passwd){	EVP_PKEY *pkey;	X509 *cert;	STACK_OF(X509) *certs;	int res = 0;	char buf[256];	pkey = NULL;	cert = NULL;	certs = NULL;	if (!PKCS12_parse(p12, passwd, &pkey, &cert, &certs)) {		tls_show_errors(MSG_DEBUG, __func__,				"Failed to parse PKCS12 file");		PKCS12_free(p12);		return -1;	}	wpa_printf(MSG_DEBUG, "TLS: Successfully parsed PKCS12 data");	if (cert) {		X509_NAME_oneline(X509_get_subject_name(cert), buf,				  sizeof(buf));		wpa_printf(MSG_DEBUG, "TLS: Got certificate from PKCS12: "			   "subject='%s'", buf);		if (ssl) {			if (SSL_use_certificate(ssl, cert) != 1)				res = -1;		} else {			if (SSL_CTX_use_certificate(ssl_ctx, cert) != 1)				res = -1;		}		X509_free(cert);	}	if (pkey) {		wpa_printf(MSG_DEBUG, "TLS: Got private key from PKCS12");		if (ssl) {			if (SSL_use_PrivateKey(ssl, pkey) != 1)				res = -1;		} else {			if (SSL_CTX_use_PrivateKey(ssl_ctx, pkey) != 1)				res = -1;		}		EVP_PKEY_free(pkey);	}	if (certs) {		while ((cert = sk_X509_pop(certs)) != NULL) {			X509_NAME_oneline(X509_get_subject_name(cert), buf,					  sizeof(buf));			wpa_printf(MSG_DEBUG, "TLS: additional certificate"				   " from PKCS12: subject='%s'", buf);			/*			 * There is no SSL equivalent for the chain cert - so			 * always add it to the context...			 */			if (SSL_CTX_add_extra_chain_cert(ssl_ctx, cert) != 1) {				res = -1;				break;			}		}		sk_X509_free(certs);	}	PKCS12_free(p12);	if (res < 0)		tls_get_errors(ssl_ctx);	return res;}#endif  /* PKCS12_FUNCS */static int tls_read_pkcs12(SSL_CTX *ssl_ctx, SSL *ssl, const char *private_key,			   const char *passwd){#ifdef PKCS12_FUNCS	FILE *f;	PKCS12 *p12;	f = fopen(private_key, "rb");	if (f == NULL)		return -1;	p12 = d2i_PKCS12_fp(f, NULL);	fclose(f);	if (p12 == NULL) {		tls_show_errors(MSG_INFO, __func__,				"Failed to use PKCS#12 file");		return -1;	}	return tls_parse_pkcs12(ssl_ctx, ssl, p12, passwd);#else /* PKCS12_FUNCS */	wpa_printf(MSG_INFO, "TLS: PKCS12 support disabled - cannot read "		   "p12/pfx files");	return -1;#endif  /* PKCS12_FUNCS */}static int tls_read_pkcs12_blob(SSL_CTX *ssl_ctx, SSL *ssl,				const u8 *blob, size_t len, const char *passwd){#ifdef PKCS12_FUNCS	PKCS12 *p12;	p12 = d2i_PKCS12(NULL, (OPENSSL_d2i_TYPE) &blob, len);	if (p12 == NULL) {		tls_show_errors(MSG_INFO, __func__,				"Failed to use PKCS#12 blob");		return -1;	}	return tls_parse_pkcs12(ssl_ctx, ssl, p12, passwd);#else /* PKCS12_FUNCS */	wpa_printf(MSG_INFO, "TLS: PKCS12 support disabled - cannot parse "		   "p12/pfx blobs");	return -1;#endif  /* PKCS12_FUNCS */}#ifndef OPENSSL_NO_ENGINEstatic int tls_engine_get_cert(struct tls_connection *conn,			       const char *cert_id,			       X509 **cert){	/* this runs after the private key is loaded so no PIN is required */	struct {		const char *cert_id;		X509 *cert;	} params;	params.cert_id = cert_id;	params.cert = NULL;	if (!ENGINE_ctrl_cmd(conn->engine, "LOAD_CERT_CTRL",			     0, &params, NULL, 1)) {		wpa_printf(MSG_ERROR, "ENGINE: cannot load client cert with id"			   " '%s' [%s]", cert_id,			   ERR_error_string(ERR_get_error(), NULL));		return TLS_SET_PARAMS_ENGINE_PRV_INIT_FAILED;	}	if (!params.cert) {		wpa_printf(MSG_ERROR, "ENGINE: did not properly cert with id"			   " '%s'", cert_id);		return TLS_SET_PARAMS_ENGINE_PRV_INIT_FAILED;	}	*cert = params.cert;	return 0;}#endif /* OPENSSL_NO_ENGINE */static int tls_connection_engine_client_cert(struct tls_connection *conn,					     const char *cert_id){#ifndef OPENSSL_NO_ENGINE	X509 *cert;	if (tls_engine_get_cert(conn, cert_id, &cert))		return -1;	if (!SSL_use_certificate(conn->ssl, cert)) {		tls_show_errors(MSG_ERROR, __func__,				"SSL_use_certificate failed");                X509_free(cert);		return -1;	}	X509_free(cert);	wpa_printf(MSG_DEBUG, "ENGINE: SSL_use_certificate --> "		   "OK");	return 0;#else /* OPENSSL_NO_ENGINE */	return -1;#endif /* OPENSSL_NO_ENGINE */}static int tls_connection_engine_ca_cert(void *_ssl_ctx,					 struct tls_connection *conn,					 const char *ca_cert_id){#ifndef OPENSSL_NO_ENGINE	X509 *cert;	SSL_CTX *ssl_ctx = _ssl_ctx;	if (tls_engine_get_cert(conn, ca_cert_id, &cert))		return -1;	/* start off the same as tls_connection_ca_cert */	X509_STORE_free(ssl_ctx->cert_store);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色88888久久久久久影院按摩| 久久久久久久久久电影| 欧美日韩一本到| 午夜精品久久久久久久| 欧美日韩一区高清| 五月天欧美精品| 日韩欧美的一区二区| 国产美女在线精品| 一区精品在线播放| 欧美日韩中文一区| 国产一区二区伦理| 亚洲精选在线视频| 91精品国产色综合久久不卡电影| 精品中文字幕一区二区| 国产精品理论片在线观看| 欧美怡红院视频| 九九九精品视频| 亚洲欧洲精品天堂一级| 欧美久久婷婷综合色| 国产原创一区二区三区| 国产精品成人免费精品自在线观看| 欧美中文字幕一区二区三区| 麻豆91免费看| 亚洲天堂网中文字| 日韩欧美一级在线播放| 成人丝袜18视频在线观看| 午夜影院久久久| 337p日本欧洲亚洲大胆精品| 色素色在线综合| 狠狠色2019综合网| 日本一区二区免费在线| 色婷婷狠狠综合| 精品一区二区三区免费观看| 国产亚洲自拍一区| 亚洲第一搞黄网站| 欧美一区二区三区性视频| 亚洲色图制服丝袜| 激情久久五月天| 成人99免费视频| 欧美精品视频www在线观看| 三级欧美在线一区| 国内精品免费在线观看| 欧美精品一区二区久久久| 色就色 综合激情| 风间由美性色一区二区三区| 精品成人佐山爱一区二区| 免费观看日韩电影| 亚洲二区视频在线| 亚洲国产精品激情在线观看 | 欧美日本乱大交xxxxx| 精品亚洲欧美一区| 亚洲午夜视频在线观看| 国产精品久久夜| 久久精品一二三| 日韩精品一区二区三区在线观看| 91福利精品视频| 不卡的电视剧免费网站有什么| 久久精品国产99久久6| 亚洲成人免费电影| 一区二区三区在线视频免费观看| www一区二区| 精品嫩草影院久久| 欧美一区二区三区日韩视频| 欧美亚洲图片小说| 色噜噜狠狠一区二区三区果冻| 国产v综合v亚洲欧| 国产成人超碰人人澡人人澡| 国产一区二区免费看| 激情都市一区二区| 国产在线播精品第三| 国产制服丝袜一区| 国产精品一区二区不卡| 国产精品99久久久久久似苏梦涵 | 成人激情午夜影院| 国产成人亚洲综合a∨猫咪| 久久99精品国产麻豆婷婷洗澡| 日本aⅴ免费视频一区二区三区| 婷婷一区二区三区| 日韩av一区二区三区四区| 免费成人在线观看视频| 蜜乳av一区二区三区| 久久精工是国产品牌吗| 北条麻妃国产九九精品视频| 九色porny丨国产精品| 日本aⅴ精品一区二区三区| 日韩电影免费在线| 日本视频中文字幕一区二区三区| 日本不卡在线视频| 美女性感视频久久| 国产盗摄精品一区二区三区在线| 丁香六月综合激情| 一本久道久久综合中文字幕| 欧美视频一二三区| 欧美人牲a欧美精品| 精品国产成人系列| 国产欧美日韩视频在线观看| 国产精品国产精品国产专区不蜜| 亚洲精品欧美激情| 日本亚洲欧美天堂免费| 国产美女在线精品| jizz一区二区| 91福利资源站| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 成人在线综合网| 美女视频网站黄色亚洲| 国产精品一区在线| 97久久久精品综合88久久| 欧美四级电影网| 亚洲精品在线观| 亚洲精品成人精品456| 日日摸夜夜添夜夜添精品视频| 韩国一区二区视频| 91在线免费播放| 欧美剧在线免费观看网站| 精品视频在线视频| 日本一区二区三区dvd视频在线| 一区二区在线观看视频在线观看| 免播放器亚洲一区| 波多野结衣中文一区| 欧美一区二区三区四区在线观看| 日本一区二区在线不卡| 亚洲成人动漫av| 丁香另类激情小说| 欧美日韩和欧美的一区二区| 日本一区二区综合亚洲| 日本午夜一区二区| 91视频精品在这里| 久久一区二区三区四区| 偷窥国产亚洲免费视频| 99精品欧美一区二区蜜桃免费 | 91精品国产高清一区二区三区蜜臀 | 欧美一区二区久久久| 国产精品免费aⅴ片在线观看| 亚洲3atv精品一区二区三区| 成人精品小蝌蚪| 欧美变态口味重另类| 亚洲午夜视频在线观看| 99免费精品视频| 精品美女在线观看| 丝袜a∨在线一区二区三区不卡 | 激情五月播播久久久精品| 色综合天天在线| 欧美国产欧美亚州国产日韩mv天天看完整| 日韩精品电影一区亚洲| 在线免费视频一区二区| 日本一区二区三区四区 | 亚洲视频香蕉人妖| 欧美久久一区二区| 成人免费在线播放视频| 久久国产精品露脸对白| 欧美日韩在线观看一区二区 | 久久99国产精品尤物| 在线播放国产精品二区一二区四区| 国产精品乱码人人做人人爱| 黄网站免费久久| 欧美刺激午夜性久久久久久久| 亚洲国产va精品久久久不卡综合 | 色噜噜偷拍精品综合在线| 中文字幕av一区二区三区高| 国产精品一区三区| 久久综合久久99| 国产真实精品久久二三区| 精品国产免费视频| 国产一区二区免费看| 久久久久99精品国产片| 国产一区 二区| 久久九九影视网| 国产91对白在线观看九色| 国产精品乱人伦| 91在线国产观看| 一区二区三区国产精华| 日本道免费精品一区二区三区| 亚洲精品一二三| 欧美日本韩国一区| 麻豆精品在线视频| 欧美成人高清电影在线| 国产乱人伦偷精品视频免下载 | 一区二区三区精品视频| 在线精品视频免费观看| 偷拍自拍另类欧美| 精品国产制服丝袜高跟| 国产福利不卡视频| 亚洲欧洲精品成人久久奇米网| 91福利在线播放| 日韩成人av影视| 久久精品人人爽人人爽| jlzzjlzz欧美大全| 亚洲香蕉伊在人在线观| 欧美一区二区三区啪啪| 国产成人精品亚洲777人妖 | 丝袜美腿亚洲综合| 精品欧美黑人一区二区三区| 成人自拍视频在线| 亚洲国产一区二区在线播放| 日韩欧美在线不卡| 国产ts人妖一区二区| 亚洲一二三四区不卡| 精品国产青草久久久久福利| 97久久超碰精品国产| 日本不卡的三区四区五区|