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

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

?? tls_crypt.c

?? 可以用作很多客戶端的XSUPPLICANT的源代碼。比如用在802.1x或者無線AP上
?? C
字號:
/** * A client-side 802.1x implementation supporting EAP/TLS * * This code is released under both the GPL version 2 and BSD licenses. * Either license may be used.  The respective licenses are found below. * * Copyright (C) 2002 Bryan D. Payne & Nick L. Petroni Jr. * All Rights Reserved * * --- GPL Version 2 License --- * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. * * --- BSD License --- * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * *  - Redistributions of source code must retain the above copyright notice, *    this list of conditions and the following disclaimer. *  - Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. *  - All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *       This product includes software developed by the University of *       Maryland at College Park and its contributors. *  - Neither the name of the University nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. *//******************************************************************* * En/Decrypt Function implementations * * File: tls_crypt.c * * Authors: Chris.Hessing@utah.edu * * $Id: tls_crypt.c,v 1.8 2004/04/14 21:09:33 chessing Exp $ * $Date: 2004/04/14 21:09:33 $ * $Log: tls_crypt.c,v $ * Revision 1.8  2004/04/14 21:09:33  chessing * * Finished up extra error checking code.  Added ability to have passwords removed from memory on an authentication failure, so that a new password can be entered.  However, this feature has been disabled at this point due to a few small issues.  It will probably show up in 1.1. ;)  (It just isn't stable enough right now.) * * Revision 1.7  2004/04/13 22:13:31  chessing * * Additional error checking in all eap methods. * * Revision 1.6  2004/04/05 17:19:30  chessing * * Added additional checks against pointers to try to help prevent segfaults.  (This still needs to be completed.)  Fixed a problem with PEAP where a NULL input packet would result in a huge unencrypted packet, and a segfault.  (This was triggered when using one of the gui password tools.  When the password was in the config file, it wouldn't be triggered.) * * Revision 1.5  2004/04/02 20:50:21  chessing * * Attempt to fix PEAP with IAS. At this point, we can get through the TLS piece of the PEAP authentication, and successfully attempt a phase 2 authentication.  But, for some reason MS-CHAPv2 is failing when used with IAS.  (But at least we are one step closer!)  Also, removed the des pieces that were needed for eap-mschapv2, since we can use the OpenSSL routines instead.  The proper way to handle DES was found while looking at the CVS code for wpa_supplicant.  The fix for phase 1 of PEAP was found while looking at the commit notes for wpa_supplicant.  (wpa_supplicant is part of hostap, and is written/maintained by Jouni Malinen.) * * Revision 1.4  2004/01/15 01:12:45  chessing * * Fixed a keying problem (keying material wasn't being generated correctly).  Added support for global counter variables from the config file. (Such as auth_period)  Added support for executing command defined in the config file based on different events.  (Things such as what to do on reauth.)  Added the ability to roam to a different SSID.  We now check to make sure our BSSID hasn't changed, and we follow it, if it has.  Fixed a sefault when the program was terminated in certain states.  Added attempt at better garbage collection on program termination. Various small code cleanups. * * Revision 1.3  2004/01/13 01:55:56  chessing * * Major changes to EAP related code.  We no longer pass in an interface_data struct to EAP handlers.  Instead, we hand in a generic_eap_data struct which containsnon-interface specific information.  This will allow EAP types to be reused as phase 2 type easier.  However, this new code may create issues with EAP types that make use of the identity in the eap type.  Somehow, the identity value needs to propigate down to the EAP method.  It currently does not.  This should be any easy fix, but more testing will be needed. * * Revision 1.2  2003/11/21 05:09:47  chessing * * PEAP now works! * * Revision 1.1.1.1  2003/11/19 04:13:25  chessing * New source tree * * *******************************************************************/#include <string.h>#include <strings.h>#include <openssl/ssl.h>#include <stdint.h>#include <netinet/in.h>#include "config.h"#include "profile.h"#include "eap.h"#include "eaptls.h"#include "tls_funcs.h"#include "../../xsup_debug.h"#include "../../xsup_err.h"u_char *tls_crypt_gen_keyblock(struct generic_eap_data *thisint, char *sesskey,			      int sesskeylen){  u_char seed[SSL3_RANDOM_SIZE*2];  u_char *p = seed;  struct tls_vars *mytls_vars;  u_char *retblock;  debug_printf(DEBUG_EVERYTHING, "Generating key block!\n");  if ((!thisint) || (!thisint->eap_data))    {      debug_printf(DEBUG_NORMAL, "Invalid data passed in to tls_crypt_gen_keyblock()!\n");      return NULL;    }  if (!sesskey)    {      debug_printf(DEBUG_NORMAL, "Invalid session constant!\n");      return NULL;    }  mytls_vars = (struct tls_vars *)thisint->eap_data;  if (!mytls_vars->ssl)    {      debug_printf(DEBUG_NORMAL, "No valid SSL context found!\n");      return NULL;    }  debug_printf(DEBUG_EVERYTHING, "Using session key const of : %s\n",	       sesskey);  retblock = (u_char *)malloc(TLS_SESSION_KEY_SIZE);  if (!retblock)    return NULL;  memcpy(p, mytls_vars->ssl->s3->client_random, SSL3_RANDOM_SIZE);  p+= SSL3_RANDOM_SIZE;  memcpy(p, mytls_vars->ssl->s3->server_random, SSL3_RANDOM_SIZE);  tls_funcs_PRF(mytls_vars->ssl->session->master_key, 		mytls_vars->ssl->session->master_key_length,		sesskey, sesskeylen, seed, 		SSL3_RANDOM_SIZE * 2, retblock, 		TLS_SESSION_KEY_SIZE);  return retblock;}// This function written by Danielle Breviint tls_crypt_decrypt(struct generic_eap_data *thisint, u_char *in_data, int in_size, u_char *out_data, int *out_size){  struct tls_vars *mytls_vars;  int rc=0;  u_char p[1000];  if ((!thisint) || (!thisint->eap_data) || (!in_data) || (!out_data) ||      (!out_size))    {      debug_printf(DEBUG_NORMAL, "Invalid data passed in to tls_crypt_decrypt()!\n");      return XEMALLOC;    }  mytls_vars = (struct tls_vars *)thisint->eap_data;  bzero(p,1000);  BIO_reset(mytls_vars->ssl_in);  rc=BIO_write(mytls_vars->ssl_in, in_data, in_size);  BIO_reset(mytls_vars->ssl_out);  rc=SSL_read(mytls_vars->ssl, out_data, 1000);  *out_size = rc;  // CLEAN THIS UP -- And use it.  /*    switch (SSL_get_error(ssl,rc))    {    case SSL_ERROR_NONE:    printf("No SSL error!?   Dump :\n");    for (i=0;i<=rc;i++)    {    printf("%02x ",out_data[i]);    }    printf("\n");    break;    case SSL_ERROR_ZERO_RETURN:    printf("SSL Error Zero Return!\n");    break;    case SSL_ERROR_WANT_READ:    case SSL_ERROR_WANT_WRITE:    printf("SSL Error want read or write.\n");    break;    case SSL_ERROR_WANT_CONNECT:    printf("SSL Error want connect\n");    break;    case SSL_ERROR_WANT_ACCEPT:    printf("SSL Error want accept\n");    break;    case SSL_ERROR_WANT_X509_LOOKUP:    printf("SSL Error want x509 Lookup\n");    break;    case SSL_ERROR_SYSCALL:    printf("SSL Error syscall\n");    break;    case SSL_ERROR_SSL:    printf("SSL error of some sort!\n");    break;    default:    printf("This shouldn't happen!\n");    break;    }  */  return XENONE;}int tls_crypt_encrypt(struct generic_eap_data *thisint, u_char *in_data, int in_size, u_char *out_data, int *out_size){  struct tls_vars *mytls_vars;  int rc=0;  u_char *p;  int to_send_size = 0;  uint64_t length;  if ((!thisint) || (!thisint->eap_data) || (!in_data) || (!out_data))    {      debug_printf(DEBUG_NORMAL, "Invalid data passed in to tls_crypt_encrypt()!\n");      return XEMALLOC;    }  mytls_vars = (struct tls_vars *)thisint->eap_data;  // We need to modify this, to read more when there is more to be returned.  p = (u_char *)malloc(1000);  if (p == NULL)    {      debug_printf(DEBUG_NORMAL, "Error with malloc of \"p\" in tls_crypt_encrypt().\n");      return -1;    }  bzero(p,1000);    BIO_reset(mytls_vars->ssl_in);  BIO_reset(mytls_vars->ssl_out);  rc=SSL_write(mytls_vars->ssl, in_data, in_size);  rc = BIO_read(mytls_vars->ssl_out, p, 1000);   // Allow largest possible read.  to_send_size = rc;  out_data[0] = EAPTLS_LENGTH_INCL;  // No more to send.  length = ntohl(to_send_size+5);  memcpy(&out_data[1], &length, 4);  memcpy(&out_data[5], p, to_send_size);  *out_size = to_send_size+5;  if(p)    {      free(p);      p = NULL;    }  return XENONE;}int tls_crypt_encrypt_nolen(struct generic_eap_data *thisint, u_char *in_data, int in_size, u_char *out_data, int *out_size){  struct tls_vars *mytls_vars;  int rc=0;  u_char *p;  int to_send_size = 0;  if ((!thisint) || (!thisint->eap_data) || (!in_data) || (!out_data))    {      debug_printf(DEBUG_NORMAL, "Invalid data passed in to tls_crypt_encrypt()!\n");      return XEMALLOC;    }  mytls_vars = (struct tls_vars *)thisint->eap_data;  // We need to modify this, to read more when there is more to be returned.  p = (u_char *)malloc(1000);  if (p == NULL)    {      debug_printf(DEBUG_NORMAL, "Error with malloc of \"p\" in tls_crypt_encrypt().\n");      return -1;    }  bzero(p,1000);    BIO_reset(mytls_vars->ssl_in);  BIO_reset(mytls_vars->ssl_out);  rc=SSL_write(mytls_vars->ssl, in_data, in_size);  rc = BIO_read(mytls_vars->ssl_out, p, 1000);   // Allow largest possible read.  to_send_size = rc;  out_data[0] = 0x00;  // No more to send.  memcpy(&out_data[1], p, to_send_size);  *out_size = to_send_size+1;  if(p)    {      free(p);      p = NULL;    }  return XENONE;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩三级中文字幕| 在线免费av一区| 琪琪一区二区三区| 老司机精品视频一区二区三区| 午夜精品成人在线视频| 日韩精品高清不卡| 国产一区二区成人久久免费影院| 久草这里只有精品视频| 99视频超级精品| 欧美日韩另类国产亚洲欧美一级| 国产三级精品视频| 欧美色综合久久| 欧美影院一区二区三区| 国产精品中文字幕日韩精品| 国产欧美日本一区二区三区| 欧美日韩国产高清一区| 日本丰满少妇一区二区三区| 欧美日韩国产色站一区二区三区| 26uuu亚洲婷婷狠狠天堂| 精品欧美久久久| 精品国产一区二区三区忘忧草| 色拍拍在线精品视频8848| 成人美女视频在线观看18| 亚洲视频综合在线| 激情伊人五月天久久综合| 午夜精品成人在线视频| 高清在线观看日韩| 日韩精品自拍偷拍| 性久久久久久久久| 97精品超碰一区二区三区| 精品捆绑美女sm三区| 亚洲自拍与偷拍| 色婷婷av一区二区三区之一色屋| 国产偷国产偷亚洲高清人白洁| 日韩精品福利网| 久久久久久亚洲综合| 久久99国产精品免费| 精品国产乱码久久久久久免费 | 国产精品电影一区二区三区| 激情深爱一区二区| 精品久久久久久久久久久久久久久久久| 亚洲一区二区在线观看视频| 色综合一个色综合亚洲| 亚洲一区二区三区小说| 在线一区二区三区| 秋霞午夜鲁丝一区二区老狼| 91精品国产乱码久久蜜臀| 久久国产免费看| 一区二区中文字幕在线| 欧美三片在线视频观看 | 蜜桃传媒麻豆第一区在线观看| 日韩视频免费观看高清在线视频| 男女男精品网站| 国产精品美女久久久久高潮| 欧美在线观看禁18| 蜜臀av一区二区在线观看| 久久亚区不卡日本| 欧美高清www午色夜在线视频| 日韩高清一区二区| 中文字幕欧美激情一区| 欧美日韩视频不卡| 在线观看日韩电影| 国产精品自产自拍| 久久精品国产免费| 亚洲国产成人午夜在线一区| 欧美日韩在线免费视频| 99riav久久精品riav| 成人一级片在线观看| 国产在线精品不卡| 国产成人99久久亚洲综合精品| 美女一区二区久久| 精品一区二区综合| 蜜桃视频一区二区| 精品亚洲成a人| 色综合色狠狠天天综合色| 亚洲精品在线免费观看视频| 日本一区二区三区电影| 日韩欧美在线网站| 欧美mv日韩mv国产网站app| 欧美日韩国产首页| 日韩午夜激情免费电影| 日韩美女视频一区二区在线观看| 精品福利一区二区三区| 久久精品夜色噜噜亚洲aⅴ| 日本一区二区免费在线观看视频 | 欧美日韩精品欧美日韩精品一| 欧美日韩情趣电影| 久久久五月婷婷| 亚洲夂夂婷婷色拍ww47| 天堂成人国产精品一区| 精品一区二区三区不卡| 一本色道久久加勒比精品| 欧美日韩成人一区二区| 亚洲国产精品成人久久综合一区| 亚洲一区二区综合| 99久精品国产| 国产精品理伦片| 久久国内精品自在自线400部| www.亚洲在线| 国产嫩草影院久久久久| 三级欧美韩日大片在线看| 99re热视频这里只精品| 亚洲精品一区二区三区在线观看| 亚洲欧美视频一区| 99精品欧美一区| 中文字幕日韩欧美一区二区三区| 韩日精品视频一区| 精品久久久网站| 国内精品伊人久久久久av影院| 欧美日韩在线一区二区| 亚洲va在线va天堂| 欧美精品亚洲一区二区在线播放| 一区二区在线观看免费视频播放| 高清国产一区二区三区| 久久久国产午夜精品| 国产69精品一区二区亚洲孕妇 | 亚洲欧美另类在线| 91亚洲精华国产精华精华液| 亚洲欧美综合另类在线卡通| 97精品久久久久中文字幕 | 26uuu精品一区二区在线观看| 日本免费新一区视频| 日韩欧美视频一区| 99视频精品在线| 亚洲国产一区二区三区青草影视 | 精品无人码麻豆乱码1区2区| 欧美精品vⅰdeose4hd| 久久99精品国产91久久来源| 日韩美女精品在线| 久久九九影视网| 欧美日韩极品在线观看一区| 午夜欧美一区二区三区在线播放| 日韩欧美在线影院| 欧美日韩精品一区二区三区蜜桃| 久久97超碰国产精品超碰| 亚洲欧美另类久久久精品| 久久精品夜色噜噜亚洲a∨| 91麻豆国产在线观看| 国产成人精品影视| 激情久久五月天| 日本不卡一区二区| 亚洲国产日韩一区二区| 亚洲欧美综合另类在线卡通| 国产精品无遮挡| 国产欧美视频一区二区三区| 日韩亚洲欧美一区二区三区| 欧美亚洲高清一区| 欧美日韩国产精选| 欧美性猛交一区二区三区精品| 成人精品国产福利| 国产a视频精品免费观看| 国产高清不卡二三区| 国产一区二区在线观看免费| 久久精品国产精品青草| 久99久精品视频免费观看| 久久精品国产99| 国产精品综合网| 99久久国产综合精品女不卡| 成人网男人的天堂| 欧洲一区在线观看| 欧美一卡二卡在线| 国产视频一区二区在线观看| 国产精品久久久久9999吃药| 中文字幕在线观看不卡| 性感美女久久精品| 国产麻豆成人精品| 欧美在线观看视频一区二区 | 欧美国产精品一区| 亚洲一二三四区| 大陆成人av片| 欧美电视剧在线看免费| 日韩理论电影院| 国产不卡在线视频| 日韩欧美国产综合| 亚洲午夜一区二区| 粉嫩欧美一区二区三区高清影视| 欧美体内she精高潮| 国产精品亲子伦对白| 极品少妇xxxx精品少妇| 波多野洁衣一区| 国产欧美一区二区三区在线看蜜臀| 亚洲免费大片在线观看| 国产精品一区久久久久| 91精品国产色综合久久不卡蜜臀| 国产精品美女视频| av电影天堂一区二区在线观看| 日韩亚洲欧美成人一区| 奇米888四色在线精品| 欧美精三区欧美精三区| 亚洲国产精品影院| 欧美午夜免费电影| 丝袜脚交一区二区| 日韩一区二区免费视频| 九九精品一区二区| 久久久精品免费免费| 豆国产96在线|亚洲| 国产精品久久久久久久久久免费看| 国产精品18久久久久久vr| 国产日韩三级在线| 色国产综合视频|