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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? eap_tls_common.c

?? hostapd無線AP工具
?? C
字號:
/* * hostapd / EAP-TLS/PEAP/TTLS common functions * Copyright (c) 2004-2005, Jouni Malinen <jkmaline@cc.hut.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 <stdlib.h>#include <stdio.h>#include <string.h>#include <netinet/in.h>#include "hostapd.h"#include "common.h"#include "eap_i.h"#include "eap_tls_common.h"#include "sha1.h"#include "tls.h"int eap_tls_ssl_init(struct eap_sm *sm, struct eap_ssl_data *data,		     int verify_peer){	data->eap = sm;	data->phase2 = sm->init_phase2;	data->conn = tls_connection_init(sm->ssl_ctx);	if (data->conn == NULL) {		wpa_printf(MSG_INFO, "SSL: Failed to initialize new TLS "			   "connection");		return -1;	}	if (tls_connection_set_verify(sm->ssl_ctx, data->conn, verify_peer)) {		wpa_printf(MSG_INFO, "SSL: Failed to configure verification "			   "of TLS peer certificate");		tls_connection_deinit(sm->ssl_ctx, data->conn);		data->conn = NULL;		return -1;	}	/* TODO: make this configurable */	data->tls_out_limit = 1398;	if (data->phase2) {		/* Limit the fragment size in the inner TLS authentication		 * since the outer authentication with EAP-PEAP does not yet		 * support fragmentation */		if (data->tls_out_limit > 100)			data->tls_out_limit -= 100;	}	return 0;}void eap_tls_ssl_deinit(struct eap_sm *sm, struct eap_ssl_data *data){	tls_connection_deinit(sm->ssl_ctx, data->conn);	free(data->tls_in);	free(data->tls_out);}u8 * eap_tls_derive_key(struct eap_sm *sm, struct eap_ssl_data *data,			char *label, size_t len){	struct tls_keys keys;	u8 *random;	u8 *out;	if (tls_connection_get_keys(sm->ssl_ctx, data->conn, &keys))		return NULL;	out = malloc(len);	random = malloc(keys.client_random_len + keys.server_random_len);	if (out == NULL || random == NULL) {		free(out);		free(random);		return NULL;	}	memcpy(random, keys.client_random, keys.client_random_len);	memcpy(random + keys.client_random_len, keys.server_random,	       keys.server_random_len);	if (tls_prf(keys.master_key, keys.master_key_len,		    label, random, keys.client_random_len +		    keys.server_random_len, out, len)) {		free(random);		free(out);		return NULL;	}	free(random);	return out;}int eap_tls_data_reassemble(struct eap_sm *sm, struct eap_ssl_data *data,			    u8 **in_data, size_t *in_len){	u8 *buf;	if (data->tls_in_left > *in_len || data->tls_in) {		buf = realloc(data->tls_in, data->tls_in_len + *in_len);		if (buf == NULL) {			free(data->tls_in);			data->tls_in = NULL;			data->tls_in_len = 0;			wpa_printf(MSG_INFO, "SSL: Could not allocate memory "				   "for TLS data");			return -1;		}		memcpy(buf + data->tls_in_len, *in_data, *in_len);		data->tls_in = buf;		data->tls_in_len += *in_len;		if (*in_len > data->tls_in_left) {			wpa_printf(MSG_INFO, "SSL: more data than TLS message "				   "length indicated");			data->tls_in_left = 0;			return -1;		}		data->tls_in_left -= *in_len;		if (data->tls_in_left > 0) {			wpa_printf(MSG_DEBUG, "SSL: Need %lu bytes more input "				   "data", (unsigned long) data->tls_in_left);			return 1;		}		*in_data = data->tls_in;		*in_len = data->tls_in_len;	} else		data->tls_in_left = 0;	return 0;}int eap_tls_process_helper(struct eap_sm *sm, struct eap_ssl_data *data,			   u8 *in_data, size_t in_len){	WPA_ASSERT(data->tls_out_len == 0 || in_len == 0);	if (data->tls_out_len == 0) {		/* No more data to send out - expect to receive more data from		 * the peer. */		int res = eap_tls_data_reassemble(sm, data, &in_data, &in_len);		if (res < 0 || res == 1) {			wpa_printf(MSG_DEBUG, "SSL: data reassembly failed");			return res;		}		/* Full TLS message reassembled - continue handshake processing		 */		if (data->tls_out) {			/* This should not happen.. */			wpa_printf(MSG_INFO, "SSL: eap_tls_process_helper - "				   "pending tls_out data even though "				   "tls_out_len = 0");			free(data->tls_out);			WPA_ASSERT(data->tls_out == NULL);		}		data->tls_out = tls_connection_server_handshake(			sm->ssl_ctx, data->conn, in_data, in_len,			&data->tls_out_len);		/* Clear reassembled input data (if the buffer was needed). */		data->tls_in_left = data->tls_in_total = data->tls_in_len = 0;		free(data->tls_in);		data->tls_in = NULL;	}	if (data->tls_out == NULL) {		wpa_printf(MSG_DEBUG, "SSL: failed to generate output data");		data->tls_out_len = 0;		return -1;	}	if (data->tls_out_len == 0) {		/* TLS negotiation should now be complete since all other cases		 * needing more that should have been catched above based on		 * the TLS Message Length field. */		wpa_printf(MSG_DEBUG, "SSL: No data to be sent out");		free(data->tls_out);		data->tls_out = NULL;		if (tls_connection_get_read_alerts(sm->ssl_ctx, data->conn)) {			wpa_printf(MSG_DEBUG, "SSL: Remote end sent a fatal "				   "alert - abort handshake");			return -1;		}		return 1;	}	wpa_printf(MSG_DEBUG, "SSL: %lu bytes left to be sent out (of total "		   "%lu bytes)",		   (unsigned long) data->tls_out_len - data->tls_out_pos,		   (unsigned long) data->tls_out_len);	return 0;}int eap_tls_buildReq_helper(struct eap_sm *sm, struct eap_ssl_data *data,			    int eap_type, int peap_version, u8 id,			    u8 **out_data, size_t *out_len){	size_t len;	u8 *pos, *flags;	struct eap_hdr *req;	*out_len = 0;	req = malloc(sizeof(struct eap_hdr) + 2 + 4 + data->tls_out_limit);	if (req == NULL) {		*out_data = NULL;		return -1;	}	req->code = EAP_CODE_REQUEST;	req->identifier = id;	pos = (u8 *) (req + 1);	*pos++ = eap_type;	flags = pos++;	*flags = peap_version;	if (data->tls_out_pos == 0 &&	    data->tls_out_len > data->tls_out_limit) {		*flags |= EAP_TLS_FLAGS_LENGTH_INCLUDED;		*pos++ = (data->tls_out_len >> 24) & 0xff;		*pos++ = (data->tls_out_len >> 16) & 0xff;		*pos++ = (data->tls_out_len >> 8) & 0xff;		*pos++ = data->tls_out_len & 0xff;	}	len = data->tls_out_len - data->tls_out_pos;	if (len > data->tls_out_limit) {		*flags |= EAP_TLS_FLAGS_MORE_FRAGMENTS;		len = data->tls_out_limit;		wpa_printf(MSG_DEBUG, "SSL: sending %lu bytes, more fragments "			   "will follow", (unsigned long) len);	}	memcpy(pos, &data->tls_out[data->tls_out_pos], len);	data->tls_out_pos += len;	*out_len = (pos - (u8 *) req) + len;	req->length = htons(*out_len);	*out_data = (u8 *) req;	if (!(*flags & EAP_TLS_FLAGS_MORE_FRAGMENTS)) {		data->tls_out_len = 0;		data->tls_out_pos = 0;		free(data->tls_out);		data->tls_out = NULL;	}	return 0;}u8 * eap_tls_build_ack(size_t *reqDataLen, u8 id, int eap_type,		       int peap_version){	struct eap_hdr *req;	u8 *pos;	*reqDataLen = sizeof(struct eap_hdr) + 2;	req = malloc(*reqDataLen);	if (req == NULL)		return NULL;	wpa_printf(MSG_DEBUG, "SSL: Building ACK");	req->code = EAP_CODE_REQUEST;	req->identifier = id;	req->length = htons(*reqDataLen);	pos = (u8 *) (req + 1);	*pos++ = eap_type; /* Type */	*pos = peap_version; /* Flags */	return (u8 *) req;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美男男青年gay1069videost | 欧美性受极品xxxx喷水| 欧美在线短视频| 制服.丝袜.亚洲.另类.中文| 欧美成人bangbros| 国产精品久久久久婷婷二区次| 亚洲日本韩国一区| 五月天婷婷综合| 国产成人av网站| 欧美天堂一区二区三区| 26uuu亚洲综合色欧美| 中文字幕日韩一区| 麻豆专区一区二区三区四区五区| 国产成人在线免费| 欧美日免费三级在线| 久久久综合激的五月天| 亚洲一级二级在线| 国产成人精品1024| 欧美久久一二三四区| 欧美高清在线精品一区| 日本欧美加勒比视频| 99久久精品免费| 精品国产一区二区三区忘忧草| 亚洲人成网站色在线观看| 日日摸夜夜添夜夜添国产精品 | 国产精品久久久久9999吃药| 午夜伊人狠狠久久| 成人午夜视频免费看| 91.成人天堂一区| 国产精品理论片在线观看| 青青草原综合久久大伊人精品| 91在线免费看| 精品88久久久久88久久久| 亚洲午夜日本在线观看| 成人免费视频一区| 欧美大片国产精品| 亚洲v精品v日韩v欧美v专区| av福利精品导航| 精品国产免费久久| 日韩精品亚洲专区| 91国偷自产一区二区三区成为亚洲经典 | 2020国产精品自拍| 婷婷亚洲久悠悠色悠在线播放| 不卡高清视频专区| 国产区在线观看成人精品| 麻豆精品在线看| 欧美精品在线一区二区三区| 亚洲欧美激情插| 波多野结衣在线aⅴ中文字幕不卡| 日韩午夜精品电影| 亚洲va中文字幕| 色婷婷久久综合| 亚洲同性同志一二三专区| 国产传媒日韩欧美成人| 欧美成人a∨高清免费观看| 婷婷六月综合网| 欧洲另类一二三四区| 亚洲人午夜精品天堂一二香蕉| 国产aⅴ综合色| 久久亚洲综合色一区二区三区 | 国产亚洲精品精华液| 日韩国产欧美视频| 欧美午夜在线观看| 一区二区三区日韩在线观看| 91视频在线观看免费| 国产精品国产三级国产普通话蜜臀 | 色综合久久88色综合天天免费| 欧美高清在线一区| 国产精品88av| 国产日本欧美一区二区| 国产成人精品www牛牛影视| 久久蜜桃香蕉精品一区二区三区| 久久国产精品99精品国产| 日韩欧美第一区| 国产一区久久久| 久久久久久一二三区| 久99久精品视频免费观看| 日韩欧美一级精品久久| 美女久久久精品| 久久嫩草精品久久久精品| 国产大片一区二区| 国产精品卡一卡二| 91麻豆精品在线观看| 一区二区三区视频在线看| 欧美日韩视频专区在线播放| 亚洲va欧美va天堂v国产综合| 欧美精品免费视频| 麻豆91小视频| 久久婷婷一区二区三区| 成人一级黄色片| 一区二区三区在线视频观看| 欧美在线视频你懂得| 天天操天天干天天综合网| 日韩欧美中文一区二区| 国产一区二区在线免费观看| 欧美高清在线一区| 欧美性欧美巨大黑白大战| 日韩精品欧美成人高清一区二区| 欧美不卡视频一区| 丁香婷婷综合激情五月色| 亚洲靠逼com| 91精品国产全国免费观看| 国产一区二区在线影院| 国产精品国产自产拍高清av王其 | 婷婷综合另类小说色区| 欧美变态tickling挠脚心| 国产精品亚洲成人| 玉米视频成人免费看| 日韩视频免费观看高清在线视频| 国产综合一区二区| 怡红院av一区二区三区| 日韩三区在线观看| 国产91精品一区二区麻豆亚洲| 亚洲制服丝袜一区| 91精品国产欧美一区二区18| 国产美女久久久久| 亚洲资源中文字幕| 久久久久久免费网| 91国偷自产一区二区三区成为亚洲经典| 日本美女一区二区三区| 国产精品天天看| 69堂成人精品免费视频| 国产精品一二三区| 亚洲影视在线观看| 久久精品视频一区| 欧美日韩国产影片| 成人永久看片免费视频天堂| 亚洲第一精品在线| 国产精品免费人成网站| 欧美嫩在线观看| 97se亚洲国产综合自在线| 美女视频免费一区| 亚洲激情六月丁香| 国产欧美日韩另类一区| 欧美精品v国产精品v日韩精品 | 中文字幕一区免费在线观看| 欧美一级理论片| www.欧美.com| 久久99久久精品欧美| 一区二区久久久久久| 26uuu亚洲| 欧美区视频在线观看| 99久久99久久精品国产片果冻| 麻豆中文一区二区| 亚洲电影欧美电影有声小说| 欧美高清一级片在线观看| 欧美成人vps| 欧美日韩精品一二三区| 91免费观看国产| 国产sm精品调教视频网站| 日本va欧美va精品发布| 亚洲精品日韩综合观看成人91| 久久婷婷色综合| 日韩女优视频免费观看| 欧美日韩第一区日日骚| 91丝袜美腿高跟国产极品老师| 国产精品自在欧美一区| 麻豆传媒一区二区三区| 天堂精品中文字幕在线| 亚洲一区二区在线免费观看视频| 日本一区二区三区dvd视频在线| 精品日产卡一卡二卡麻豆| 在线播放日韩导航| 在线观看91视频| 在线亚洲一区观看| 99国产精品国产精品毛片| 国产成a人无v码亚洲福利| 五月婷婷激情综合网| 亚洲午夜av在线| 亚洲午夜久久久久| 一二三四社区欧美黄| 一色桃子久久精品亚洲| 国产精品无遮挡| 中文字幕国产精品一区二区| 2023国产精品视频| 久久新电视剧免费观看| 久久久亚洲欧洲日产国码αv| 精品av久久707| 久久一夜天堂av一区二区三区| 欧美精品一区在线观看| 久久久精品人体av艺术| 久久久精品国产免大香伊| 久久婷婷久久一区二区三区| 精品成人一区二区| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 欧美激情一区二区三区蜜桃视频| 久久久久高清精品| 国产色婷婷亚洲99精品小说| 国产婷婷色一区二区三区四区| 国产喂奶挤奶一区二区三区| 中文在线一区二区| 国产精品美日韩| 亚洲欧洲性图库| 亚洲已满18点击进入久久| 视频一区国产视频| 蜜臀av在线播放一区二区三区| 久久爱www久久做| 国内精品久久久久影院一蜜桃| 国产超碰在线一区| 91在线视频观看|