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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? tls_openssl.c

?? IEEE802.11 a/b/g 客戶(hù)端應(yīng)用程序源代碼
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
/* * WPA Supplicant / SSL/TLS interface functions for openssl * Copyright (c) 2004-2007, Jouni Malinen <j@w1.fi> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * Alternatively, this software may be distributed under the terms of BSD * license. * * See README and COPYING for more details. */#include "includes.h"#ifndef CONFIG_SMARTCARD#ifndef OPENSSL_NO_ENGINE#define OPENSSL_NO_ENGINE#endif#endif#include <openssl/ssl.h>#include <openssl/err.h>#include <openssl/pkcs12.h>#include <openssl/x509v3.h>#ifndef OPENSSL_NO_ENGINE#include <openssl/engine.h>#endif /* OPENSSL_NO_ENGINE */#include "common.h"#include "tls.h"#if OPENSSL_VERSION_NUMBER >= 0x0090800fL#define OPENSSL_d2i_TYPE const unsigned char **#else#define OPENSSL_d2i_TYPE unsigned char **#endifstatic int tls_openssl_ref_count = 0;struct tls_connection {	SSL *ssl;	BIO *ssl_in, *ssl_out;#ifndef OPENSSL_NO_ENGINE	ENGINE *engine;        /* functional reference to the engine */	EVP_PKEY *private_key; /* the private key if using engine */#endif /* OPENSSL_NO_ENGINE */	char *subject_match, *altsubject_match;	int read_alerts, write_alerts, failed;	tls_session_ticket_cb session_ticket_cb;	void *session_ticket_cb_ctx;	/* SessionTicket received from OpenSSL hello_extension_cb (server) */	u8 *session_ticket;	size_t session_ticket_len;};#ifdef CONFIG_NO_STDOUT_DEBUGstatic void _tls_show_errors(void){	unsigned long err;	while ((err = ERR_get_error())) {		/* Just ignore the errors, since stdout is disabled */	}}#define tls_show_errors(l, f, t) _tls_show_errors()#else /* CONFIG_NO_STDOUT_DEBUG */static void tls_show_errors(int level, const char *func, const char *txt){	unsigned long err;	wpa_printf(level, "OpenSSL: %s - %s %s",		   func, txt, ERR_error_string(ERR_get_error(), NULL));	while ((err = ERR_get_error())) {		wpa_printf(MSG_INFO, "OpenSSL: pending error: %s",			   ERR_error_string(err, NULL));	}}#endif /* CONFIG_NO_STDOUT_DEBUG */#ifdef CONFIG_NATIVE_WINDOWS/* Windows CryptoAPI and access to certificate stores */#include <wincrypt.h>#ifdef __MINGW32_VERSION/* * MinGW does not yet include all the needed definitions for CryptoAPI, so * define here whatever extra is needed. */#define CALG_SSL3_SHAMD5 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SSL3SHAMD5)#define CERT_SYSTEM_STORE_CURRENT_USER (1 << 16)#define CERT_STORE_READONLY_FLAG 0x00008000#define CERT_STORE_OPEN_EXISTING_FLAG 0x00004000#define CRYPT_ACQUIRE_COMPARE_KEY_FLAG 0x00000004static BOOL WINAPI(*CryptAcquireCertificatePrivateKey)(PCCERT_CONTEXT pCert, DWORD dwFlags,				     void *pvReserved, HCRYPTPROV *phCryptProv,				     DWORD *pdwKeySpec, BOOL *pfCallerFreeProv)= NULL; /* to be loaded from crypt32.dll */static PCCERT_CONTEXT WINAPI(*CertEnumCertificatesInStore)(HCERTSTORE hCertStore,			       PCCERT_CONTEXT pPrevCertContext)= NULL; /* to be loaded from crypt32.dll */static int mingw_load_crypto_func(void){	HINSTANCE dll;	/* MinGW does not yet have full CryptoAPI support, so load the needed	 * function here. */	if (CryptAcquireCertificatePrivateKey)		return 0;	dll = LoadLibrary("crypt32");	if (dll == NULL) {		wpa_printf(MSG_DEBUG, "CryptoAPI: Could not load crypt32 "			   "library");		return -1;	}	CryptAcquireCertificatePrivateKey = GetProcAddress(		dll, "CryptAcquireCertificatePrivateKey");	if (CryptAcquireCertificatePrivateKey == NULL) {		wpa_printf(MSG_DEBUG, "CryptoAPI: Could not get "			   "CryptAcquireCertificatePrivateKey() address from "			   "crypt32 library");		return -1;	}	CertEnumCertificatesInStore = (void *) GetProcAddress(		dll, "CertEnumCertificatesInStore");	if (CertEnumCertificatesInStore == NULL) {		wpa_printf(MSG_DEBUG, "CryptoAPI: Could not get "			   "CertEnumCertificatesInStore() address from "			   "crypt32 library");		return -1;	}	return 0;}#else /* __MINGW32_VERSION */static int mingw_load_crypto_func(void){	return 0;}#endif /* __MINGW32_VERSION */struct cryptoapi_rsa_data {	const CERT_CONTEXT *cert;	HCRYPTPROV crypt_prov;	DWORD key_spec;	BOOL free_crypt_prov;};static void cryptoapi_error(const char *msg){	wpa_printf(MSG_INFO, "CryptoAPI: %s; err=%u",		   msg, (unsigned int) GetLastError());}static int cryptoapi_rsa_pub_enc(int flen, const unsigned char *from,				 unsigned char *to, RSA *rsa, int padding){	wpa_printf(MSG_DEBUG, "%s - not implemented", __func__);	return 0;}static int cryptoapi_rsa_pub_dec(int flen, const unsigned char *from,				 unsigned char *to, RSA *rsa, int padding){	wpa_printf(MSG_DEBUG, "%s - not implemented", __func__);	return 0;}static int cryptoapi_rsa_priv_enc(int flen, const unsigned char *from,				  unsigned char *to, RSA *rsa, int padding){	struct cryptoapi_rsa_data *priv =		(struct cryptoapi_rsa_data *) rsa->meth->app_data;	HCRYPTHASH hash;	DWORD hash_size, len, i;	unsigned char *buf = NULL;	int ret = 0;	if (priv == NULL) {		RSAerr(RSA_F_RSA_EAY_PRIVATE_ENCRYPT,		       ERR_R_PASSED_NULL_PARAMETER);		return 0;	}	if (padding != RSA_PKCS1_PADDING) {		RSAerr(RSA_F_RSA_EAY_PRIVATE_ENCRYPT,		       RSA_R_UNKNOWN_PADDING_TYPE);		return 0;	}	if (flen != 16 /* MD5 */ + 20 /* SHA-1 */) {		wpa_printf(MSG_INFO, "%s - only MD5-SHA1 hash supported",			   __func__);		RSAerr(RSA_F_RSA_EAY_PRIVATE_ENCRYPT,		       RSA_R_INVALID_MESSAGE_LENGTH);		return 0;	}	if (!CryptCreateHash(priv->crypt_prov, CALG_SSL3_SHAMD5, 0, 0, &hash))	{		cryptoapi_error("CryptCreateHash failed");		return 0;	}	len = sizeof(hash_size);	if (!CryptGetHashParam(hash, HP_HASHSIZE, (BYTE *) &hash_size, &len,			       0)) {		cryptoapi_error("CryptGetHashParam failed");		goto err;	}	if ((int) hash_size != flen) {		wpa_printf(MSG_INFO, "CryptoAPI: Invalid hash size (%u != %d)",			   (unsigned) hash_size, flen);		RSAerr(RSA_F_RSA_EAY_PRIVATE_ENCRYPT,		       RSA_R_INVALID_MESSAGE_LENGTH);		goto err;	}	if (!CryptSetHashParam(hash, HP_HASHVAL, (BYTE * ) from, 0)) {		cryptoapi_error("CryptSetHashParam failed");		goto err;	}	len = RSA_size(rsa);	buf = os_malloc(len);	if (buf == NULL) {		RSAerr(RSA_F_RSA_EAY_PRIVATE_ENCRYPT, ERR_R_MALLOC_FAILURE);		goto err;	}	if (!CryptSignHash(hash, priv->key_spec, NULL, 0, buf, &len)) {		cryptoapi_error("CryptSignHash failed");		goto err;	}	for (i = 0; i < len; i++)		to[i] = buf[len - i - 1];	ret = len;err:	os_free(buf);	CryptDestroyHash(hash);	return ret;}static int cryptoapi_rsa_priv_dec(int flen, const unsigned char *from,				  unsigned char *to, RSA *rsa, int padding){	wpa_printf(MSG_DEBUG, "%s - not implemented", __func__);	return 0;}static void cryptoapi_free_data(struct cryptoapi_rsa_data *priv){	if (priv == NULL)		return;	if (priv->crypt_prov && priv->free_crypt_prov)		CryptReleaseContext(priv->crypt_prov, 0);	if (priv->cert)		CertFreeCertificateContext(priv->cert);	os_free(priv);}static int cryptoapi_finish(RSA *rsa){	cryptoapi_free_data((struct cryptoapi_rsa_data *) rsa->meth->app_data);	os_free((void *) rsa->meth);	rsa->meth = NULL;	return 1;}static const CERT_CONTEXT * cryptoapi_find_cert(const char *name, DWORD store){	HCERTSTORE cs;	const CERT_CONTEXT *ret = NULL;	cs = CertOpenStore((LPCSTR) CERT_STORE_PROV_SYSTEM, 0, 0,			   store | CERT_STORE_OPEN_EXISTING_FLAG |			   CERT_STORE_READONLY_FLAG, L"MY");	if (cs == NULL) {		cryptoapi_error("Failed to open 'My system store'");		return NULL;	}	if (strncmp(name, "cert://", 7) == 0) {		unsigned short wbuf[255];		MultiByteToWideChar(CP_ACP, 0, name + 7, -1, wbuf, 255);		ret = CertFindCertificateInStore(cs, X509_ASN_ENCODING |						 PKCS_7_ASN_ENCODING,						 0, CERT_FIND_SUBJECT_STR,						 wbuf, NULL);	} else if (strncmp(name, "hash://", 7) == 0) {		CRYPT_HASH_BLOB blob;		int len;		const char *hash = name + 7;		unsigned char *buf;		len = os_strlen(hash) / 2;		buf = os_malloc(len);		if (buf && hexstr2bin(hash, buf, len) == 0) {			blob.cbData = len;			blob.pbData = buf;			ret = CertFindCertificateInStore(cs,							 X509_ASN_ENCODING |							 PKCS_7_ASN_ENCODING,							 0, CERT_FIND_HASH,							 &blob, NULL);		}		os_free(buf);	}	CertCloseStore(cs, 0);	return ret;}static int tls_cryptoapi_cert(SSL *ssl, const char *name){	X509 *cert = NULL;	RSA *rsa = NULL, *pub_rsa;	struct cryptoapi_rsa_data *priv;	RSA_METHOD *rsa_meth;	if (name == NULL ||	    (strncmp(name, "cert://", 7) != 0 &&	     strncmp(name, "hash://", 7) != 0))		return -1;	priv = os_zalloc(sizeof(*priv));	rsa_meth = os_zalloc(sizeof(*rsa_meth));	if (priv == NULL || rsa_meth == NULL) {		wpa_printf(MSG_WARNING, "CryptoAPI: Failed to allocate memory "			   "for CryptoAPI RSA method");		os_free(priv);		os_free(rsa_meth);		return -1;	}	priv->cert = cryptoapi_find_cert(name, CERT_SYSTEM_STORE_CURRENT_USER);	if (priv->cert == NULL) {		priv->cert = cryptoapi_find_cert(			name, CERT_SYSTEM_STORE_LOCAL_MACHINE);	}	if (priv->cert == NULL) {		wpa_printf(MSG_INFO, "CryptoAPI: Could not find certificate "			   "'%s'", name);		goto err;	}	cert = d2i_X509(NULL, (OPENSSL_d2i_TYPE) &priv->cert->pbCertEncoded,			priv->cert->cbCertEncoded);	if (cert == NULL) {		wpa_printf(MSG_INFO, "CryptoAPI: Could not process X509 DER "			   "encoding");		goto err;	}	if (mingw_load_crypto_func())		goto err;	if (!CryptAcquireCertificatePrivateKey(priv->cert,					       CRYPT_ACQUIRE_COMPARE_KEY_FLAG,					       NULL, &priv->crypt_prov,					       &priv->key_spec,					       &priv->free_crypt_prov)) {		cryptoapi_error("Failed to acquire a private key for the "				"certificate");		goto err;	}	rsa_meth->name = "Microsoft CryptoAPI RSA Method";	rsa_meth->rsa_pub_enc = cryptoapi_rsa_pub_enc;	rsa_meth->rsa_pub_dec = cryptoapi_rsa_pub_dec;	rsa_meth->rsa_priv_enc = cryptoapi_rsa_priv_enc;	rsa_meth->rsa_priv_dec = cryptoapi_rsa_priv_dec;	rsa_meth->finish = cryptoapi_finish;	rsa_meth->flags = RSA_METHOD_FLAG_NO_CHECK;	rsa_meth->app_data = (char *) priv;	rsa = RSA_new();	if (rsa == NULL) {		SSLerr(SSL_F_SSL_CTX_USE_CERTIFICATE_FILE,		       ERR_R_MALLOC_FAILURE);		goto err;	}	if (!SSL_use_certificate(ssl, cert)) {		RSA_free(rsa);		rsa = NULL;		goto err;	}	pub_rsa = cert->cert_info->key->pkey->pkey.rsa;	X509_free(cert);	cert = NULL;	rsa->n = BN_dup(pub_rsa->n);	rsa->e = BN_dup(pub_rsa->e);	if (!RSA_set_method(rsa, rsa_meth))		goto err;	if (!SSL_use_RSAPrivateKey(ssl, rsa))		goto err;	RSA_free(rsa);	return 0;err:	if (cert)		X509_free(cert);	if (rsa)		RSA_free(rsa);	else {		os_free(rsa_meth);		cryptoapi_free_data(priv);	}	return -1;}static int tls_cryptoapi_ca_cert(SSL_CTX *ssl_ctx, SSL *ssl, const char *name){	HCERTSTORE cs;	PCCERT_CONTEXT ctx = NULL;	X509 *cert;	char buf[128];	const char *store;#ifdef UNICODE	WCHAR *wstore;#endif /* UNICODE */	if (mingw_load_crypto_func())		return -1;	if (name == NULL || strncmp(name, "cert_store://", 13) != 0)		return -1;	store = name + 13;#ifdef UNICODE	wstore = os_malloc((os_strlen(store) + 1) * sizeof(WCHAR));	if (wstore == NULL)		return -1;	wsprintf(wstore, L"%S", store);	cs = CertOpenSystemStore(0, wstore);	os_free(wstore);#else /* UNICODE */	cs = CertOpenSystemStore(0, store);#endif /* UNICODE */	if (cs == NULL) {		wpa_printf(MSG_DEBUG, "%s: failed to open system cert store "			   "'%s': error=%d", __func__, store,			   (int) GetLastError());		return -1;	}	while ((ctx = CertEnumCertificatesInStore(cs, ctx))) {		cert = d2i_X509(NULL, (OPENSSL_d2i_TYPE) &ctx->pbCertEncoded,				ctx->cbCertEncoded);		if (cert == NULL) {			wpa_printf(MSG_INFO, "CryptoAPI: Could not process "				   "X509 DER encoding for CA cert");			continue;		}		X509_NAME_oneline(X509_get_subject_name(cert), buf,				  sizeof(buf));		wpa_printf(MSG_DEBUG, "OpenSSL: Loaded CA certificate for "			   "system certificate store: subject='%s'", buf);		if (!X509_STORE_add_cert(ssl_ctx->cert_store, cert)) {			tls_show_errors(MSG_WARNING, __func__,					"Failed to add ca_cert to OpenSSL "					"certificate store");		}		X509_free(cert);	}	if (!CertCloseStore(cs, 0)) {		wpa_printf(MSG_DEBUG, "%s: failed to close system cert store "			   "'%s': error=%d", __func__, name + 13,			   (int) GetLastError());	}	return 0;}#else /* CONFIG_NATIVE_WINDOWS */static int tls_cryptoapi_cert(SSL *ssl, const char *name){	return -1;}#endif /* CONFIG_NATIVE_WINDOWS */static void ssl_info_cb(const SSL *ssl, int where, int ret){

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人国产一区二区| 欧美日韩亚洲国产综合| 欧美一区午夜视频在线观看 | 成人av中文字幕| 91精品久久久久久久久99蜜臂| 中文字幕av资源一区| 蜜臀av一级做a爰片久久| 欧美亚洲综合一区| 中文字幕中文在线不卡住| 精品一区二区免费在线观看| 欧美日韩三级在线| 悠悠色在线精品| 成人激情视频网站| 久久久久九九视频| 亚洲电影在线播放| 色综合天天在线| 国产精品高清亚洲| 东方aⅴ免费观看久久av| 精品久久国产老人久久综合| 亚洲国产成人av| 色婷婷综合中文久久一本| 中文字幕一区二区三区蜜月| 国产精品自拍三区| 久久久影视传媒| 精品在线免费视频| 日韩精品一区二区三区在线观看| 午夜精品久久久久久久久久久 | 91免费观看视频| 欧美激情一区三区| 国产成人午夜高潮毛片| 欧美mv日韩mv国产| 美腿丝袜在线亚洲一区| 欧美一区二区国产| 日本va欧美va精品| 日韩欧美一区二区久久婷婷| 麻豆中文一区二区| 精品国产电影一区二区| 蜜臀99久久精品久久久久久软件| 欧美一区二区视频在线观看2020 | 久久 天天综合| 欧美不卡123| 国产制服丝袜一区| 久久亚洲综合色一区二区三区| 精品亚洲porn| 久久精品人人做人人爽人人 | 亚洲国产一区二区三区青草影视| 91在线看国产| 一区二区三区在线免费| 在线观看一区不卡| 亚洲18影院在线观看| 日韩欧美国产成人一区二区| 久久er99精品| 国产欧美日韩在线看| 99re66热这里只有精品3直播| 中文字幕一区二区三区色视频| 色综合天天综合| 午夜精品视频一区| 欧美不卡一区二区| 国产mv日韩mv欧美| 国产精品夫妻自拍| 色香蕉成人二区免费| 亚洲成av人片在线观看无码| 欧美一区二区不卡视频| 国产精品自在欧美一区| 中文字幕一区二区三区不卡| 在线观看日韩毛片| 捆绑变态av一区二区三区| 久久久欧美精品sm网站| 成人av网在线| 亚洲成人7777| 欧美电视剧免费观看| 成人深夜福利app| 亚洲小说欧美激情另类| 欧美电视剧免费全集观看| 成人在线视频一区二区| 一区二区三区欧美日| 欧美mv和日韩mv的网站| 不卡的av电影| 日韩高清不卡在线| 日本一区二区三区免费乱视频 | 韩国成人福利片在线播放| 亚洲国产精品成人综合| 欧美在线综合视频| 看片的网站亚洲| 最新热久久免费视频| 欧美精品少妇一区二区三区| 国产在线视视频有精品| 亚洲蜜臀av乱码久久精品蜜桃| 777奇米成人网| 成人一区二区三区中文字幕| 一个色综合网站| 精品国产91乱码一区二区三区 | 精品一区二区三区香蕉蜜桃| 国产精品久久久久久久久免费樱桃 | 亚洲综合激情网| 久久在线观看免费| 在线免费观看成人短视频| 国产麻豆午夜三级精品| 亚洲国产成人tv| 欧美韩国一区二区| 91精品国产综合久久婷婷香蕉| 国产不卡一区视频| 亚洲va国产va欧美va观看| 日本一区二区三区在线观看| 3d成人h动漫网站入口| 懂色av一区二区三区蜜臀| 天堂蜜桃91精品| 国产精品国产馆在线真实露脸| 91精品国产综合久久精品图片| 成人av在线网站| 久久99精品一区二区三区三区| 一区二区三区中文字幕| 国产日韩欧美在线一区| 欧美日韩国产a| av一本久道久久综合久久鬼色| 久久99精品一区二区三区| 午夜天堂影视香蕉久久| 亚洲三级久久久| 国产性色一区二区| 日韩三级视频在线观看| 欧美综合亚洲图片综合区| 国产99精品视频| 麻豆精品新av中文字幕| 性欧美大战久久久久久久久| 国产精品成人一区二区艾草 | 久久久精品一品道一区| 91精品国产91综合久久蜜臀| 91国内精品野花午夜精品| 国产激情一区二区三区四区| 免费观看91视频大全| 亚洲成av人片| 亚洲国产中文字幕| 亚洲免费观看在线视频| 一区在线中文字幕| 国产偷v国产偷v亚洲高清| 精品免费99久久| 日韩一区二区三区在线视频| 在线观看日韩一区| 91亚洲精品乱码久久久久久蜜桃| 国内精品免费在线观看| 另类综合日韩欧美亚洲| 日本大胆欧美人术艺术动态| 国产精品一区二区免费不卡| 91高清视频在线| 国产精品久久久久久户外露出| 日韩精品一区二区三区视频| 欧美精品xxxxbbbb| 欧美日韩精品二区第二页| 欧美综合在线视频| 欧美日韩在线播放三区| 欧美日韩一级黄| 欧美精品一卡二卡| 欧美美女视频在线观看| 精品裸体舞一区二区三区| 日本一区中文字幕| 欧美日本一道本在线视频| 亚洲自拍另类综合| 91美女视频网站| **欧美大码日韩| 91亚洲男人天堂| 亚洲欧洲美洲综合色网| 成人黄色在线视频| 国产精品你懂的在线| 国产成人精品免费| 国产精品欧美极品| 99这里都是精品| 自拍偷拍欧美激情| 91小视频在线| 一区二区三区日韩欧美精品 | 国产精品亚洲а∨天堂免在线| 欧美成人一级视频| 精品在线一区二区| 久久久亚洲精品一区二区三区 | 日本不卡免费在线视频| 日韩欧美一区中文| 韩日av一区二区| 国产午夜精品美女毛片视频| 成人午夜看片网址| 亚洲免费在线视频| 欧美日韩免费一区二区三区 | av资源网一区| 亚洲欧美一区二区三区久本道91| 99v久久综合狠狠综合久久| 一区二区三区日韩| 日韩亚洲欧美成人一区| 国产在线观看免费一区| 国产精品日日摸夜夜摸av| 91免费版pro下载短视频| 午夜欧美一区二区三区在线播放| 91精品国产一区二区| 国产精品一线二线三线精华| 国产精品久久久久影院亚瑟| 色久优优欧美色久优优| 日韩av电影天堂| 亚洲国产精品99久久久久久久久| 日本高清免费不卡视频| 久久se这里有精品| 亚洲免费观看高清| 欧美不卡123| 在线观看欧美黄色|