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

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

?? sensorm.nc

?? 無線傳感器密鑰管理算法
?? NC
字號:
/*									tab:4
 *
 *
 * Copyright (C) 2004 by North Carolina State University.  
 * All rights reserved.
 *
 * Permission to use, copy, modify, and distribute this software and its
 * documentation for any purpose, without fee, and without written agreement is
 * hereby granted, provided that the above copyright notice, the following
 * two paragraphs and the author appear in all copies of this software.
 * 
 * IN NO EVENT SHALL THE NORTH CAROLINA STATE UNIVERSITY BE LIABLE TO ANY PARTY 
 * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING 
 * OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE NORTH
 * CAROLINA STATE UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * 
 * THE NORTH CAROLINA STATE UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
 * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
 * ON AN "AS IS" BASIS, AND THE NORTH CAROLINA STATE UNIVERSITY HAS NO OBLIGATION 
 * TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS."
 *
 * Authors: Rongfang Li
 * Date:    4/25/04
 */


includes AM;
includes PolyOne;

module SensorM { 
  provides {
	 interface Sensor;
  }
  uses {
  	 interface Channel;
  	 interface ComputeKey;
  	 interface Random;
  	 interface Primitive;
	 interface Leds;
  }
}

implementation {  

	uint16_t sID,dID;
	uint16_t *compromised;
	PolyShare *secret;
 	bool sendflag=0,have;
 	uint8_t Msg[29];
	
// check whether *p and *pmy have the same poly_id  
    result_t check(uint8_t *p,PolyShare *pmy,uint8_t *kk)
    {
	uint8_t i,j;
	bool same;

	same=FALSE;
	i=0;
	while((same==FALSE)&&(i<ss)){
		j=0;
		while((same==FALSE)&&(j<ss)){
	    		if(p[i]==pmy[j].poly_id){
			same=TRUE;
			kk[0]=p[i];  // Id of the same polynomial 
			dbg(DBG_USR1,"same poly_id= %d\n",kk[0]);
			kk[1]=j; // pmy[j] is secret[j]
			}
	 		j++ ;
	  	}
		i++;
	}
	return same;
    }

 command void Sensor.init(uint16_t ID, uint8_t *sec, uint16_t *comp)
 {
 	sID=ID;
 	secret=(PolyShare *)sec;
 	compromised = comp;
	call Leds.init();
	
 }

 command uint8_t Sensor.establish_key(uint16_t ID)
 {
 	uint8_t i;
 	
 	have=0;
 	
  	dID=ID;	
 	Msg[0] = 1; // type1: node_s want to establish key with node_d  
	memcpy(Msg+1,(uint8_t *)&sID,2); // source sensor node
	memcpy(Msg+3,(uint8_t *)&dID,2); // destination node
	for(i=0;i<ss;i++)
		Msg[5+i] = secret[i].poly_id;

	if (sendflag==0) {
		sendflag = 1;
		call Channel.send(dID,Msg);
		call Leds.redOn();	
		dbg(DBG_USR1,"node%d send request to node%d.\n",sID,dID);
		return 0;
	}
	return 1;
 }
 
 event result_t Channel.sendDone(uint8_t *msgP,result_t success){
	sendflag = 0;
	dbg(DBG_USR1,"node %d Send Success ! \n",sID);
	call Leds.redOff();
	return SUCCESS;
 }
   
 event uint8_t* Channel.receive(uint8_t *msg){

	uint16_t node_s,node_d,node;
	uint16_t key[4],keys[4],keyd[4];
 	uint8_t cks[2],ckd[2];
 	uint8_t i,j,type;
	bool same,sames,samed,cp;
	
	type = msg[0];    
	memcpy((uint8_t *)&node_s,msg+1,2); // source sensor node
	memcpy((uint8_t *)&node_d,msg+3,2); // destination node

	call Leds.yellowOn();
	
   	if(type==1){  // type1: request to establish common key!
		dbg(DBG_USR1,"node %d received message from %d. type1: request to establish common key! \n",sID,node_s);

		same = check(msg+5,secret,ckd);
		dbg(DBG_USR1,"same= %d\n",same);
		if(same==1){ // have the same poly_id
			j = ckd[1];  // secret[j]
	    		call ComputeKey.compute((uint8_t *)&secret[j],node_s,(uint8_t *)keyd);
	    		dbg(DBG_USR1,"keyd=%X  %X  %X  %X\n",keyd[0],keyd[1],keyd[2],keyd[3]);
		    	msg[0] = 2; // type2  
		    	msg[5] = ckd[0];  // poly_id
//			memcpy(msg+19, (uint8_t *)keyd, 8); // test
		    	signal Sensor.keyEstablished(node_s,(uint8_t *)keyd);
		}
		else{   // have no common poly_id, send its poly_id to node_s  
			msg[0] = 3; // type3 
			for(i=0;i<ss;i++)
				msg[5+i] = secret[i].poly_id;
    		}

		memcpy(msg+1,(uint8_t *)&sID,2); // source sensor node
		memcpy(msg+3,(uint8_t *)&node_s,2); // destination node
		if (sendflag==0) {
			sendflag=1;
//			call Channel.send(TOS_UART_ADDR,msg); // test
			call Channel.send(node_s,msg);
			dbg(DBG_USR1,"node%d send answer to node%d.\n",sID,node_s);
		}
     	}		
	
	if(type==2){ // type2: have the same poly_id!
     		dbg(DBG_USR1,"node%d received answer from node%d. type2: have the same poly_id!\n",sID,node_s);
		ckd[0] = msg[5];

		i=0;  // find which poly_id is the same poly_id  
		while(ckd[0]!=secret[i].poly_id){
			 i++;
		}
		dbg(DBG_USR1,"find poly_id= %d\n",secret[i].poly_id);
    
       	// compute the common key  
		call ComputeKey.compute((uint8_t *)&secret[i],node_s,(uint8_t *)keys);	
		dbg(DBG_USR1,"keys= %X  %X  %X  %X\n",keys[0],keys[1],keys[2],keys[3]);

		signal Sensor.keyEstablished(dID,(uint8_t *)keys);
		
//		memcpy(msg, (uint8_t *)&sID, 2);  // test
//		memcpy(msg+2, (uint8_t *)&dID, 2);
//		msg[4] = ckd[0];
//  		memcpy(msg+5, (uint8_t *)keys, 8);
//	  	if (sendflag==0) {
//			sendflag=1;
//			node=TOS_UART_ADDR;
//			call Channel.send(node, msg);
//			call Leds.redOn();
//		}	

    	}

    	if(type==3){ // have no same poly_id, need to call pathdiscovery   
		dbg(DBG_USR1,"node %d received answer from node %d. type3: have no same poly_id ! \n",sID,node_s);

		msg[0] = 4; // type4: pathdiscovery 
		memcpy(msg+1,(uint8_t *)&sID,2); // source sensor node
		memcpy(msg+3,(uint8_t *)&node_s,2); // destination node
		for(i=0;i<ss;i++)
			msg[5+ss+i] = secret[i].poly_id;
		msg[5+ss+ss] = 1; // connect times
		node = TOS_BCAST_ADDR; 	// broadcast the message  
//		node = 0xffff;
		if (sendflag==0) {
			call Channel.send(node,msg);
			dbg(DBG_USR1,"node %d broadcast message.\n",sID);
			sendflag=1;
		}
	}
	
	// every sensor which recieved the message check itself
	if((type==4)&&(node_s!=sID)&&(node_d!=sID)) {   
		dbg(DBG_USR1,"node%d received message type4: request to establish path key!\n",sID);
		msg[5+ss+ss] = msg[5+ss+ss]-1;
		sames = check(msg+5+ss,secret,cks);
		samed = check(msg+5,secret,ckd);
		dbg(DBG_USR1,"sames=%d,  samed=%d\n",sames,samed);
		if((sames==1)&&(samed==1)){	// node_my send *cks *shares to node_s  
			j=cks[1];
			i=ckd[1];
			call ComputeKey.compute((uint8_t *)&secret[j], node_s, (uint8_t *)keys);
			call ComputeKey.compute((uint8_t *)&secret[i], node_d, (uint8_t *)keyd);
			// generate a random number
			key[0] = call Random.rand();
			key[1] = call Random.rand();
			key[2] = call Random.rand();
			key[3] = call Random.rand();
			dbg(DBG_USR1,"random key=%X  %X  %X  %X\n",key[0],key[1],key[2],key[3]);
			// encrypt key[0] with keys and keyd separately
			call Primitive.encrypt((uint8_t *)keys, (uint8_t *)key, (uint8_t *)keys);
			call Primitive.encrypt((uint8_t *)keyd, (uint8_t *)key, (uint8_t *)keyd);
			
			msg[0] = 5; // type5: send path key  
			memcpy(msg+1,(uint8_t *)&sID,2); // source sensor node
			memcpy(msg+3,(uint8_t *)&node_s,2); // destination node
		    	msg[5] = ckd[0];
		    	memcpy(msg+6,(uint8_t *)keyd,8);
			msg[14] = cks[0];
			memcpy(msg+15,(uint8_t *)keys,8);
	      		if(sendflag==0) {
				call Channel.send(node_s,msg);
//				call Channel.send(TOS_UART_ADDR, msg);  // test
				dbg(DBG_USR1,"node%d send answer to node%d.\n",sID,node_s);
	      			sendflag = 1;
			}
		}
		else if(msg[5+ss+ss]>0){  //connect times
			node = TOS_BCAST_ADDR;
//			node = 0xffff;
			if (sendflag==0) {
				call Channel.send(node,msg);
				dbg(DBG_USR1,"node %d broadcast further.\n",sID);
				sendflag=1;
			}
		}
	}

	if(type==5){ // receive path key result 
		dbg(DBG_USR1,"node%d received path key from node%d. type5 \n",sID,node_s);
		cp=0;
		for(i=0;i<ss*(T+1);i++) {
			if (node_s == compromised[i]) {
				cp=1;
				dbg(DBG_USR1,"!!! node_s %d is compromised, remove it\n", node_s);
				break;
			}
		}
		if(have==0&&cp==0) {
			cks[0] = msg[14]; // same poly_id of node_s 
			// encrypted message
			
			i=0;  // find which poly_id is the same poly_id  
			while(cks[0]!=secret[i].poly_id){
				 i++;
			}
			dbg(DBG_USR1,"find poly_id= %d\n",secret[i].poly_id);
		       	// compute the common key  
			call ComputeKey.compute((uint8_t *)&secret[i],node_s,(uint8_t *)keys);	
			dbg(DBG_USR1,"keys= %X  %X  %X  %X\n",keys[0],keys[1],keys[2],keys[3]);
			// decrypt key with keys
  			call Primitive.decrypt((uint8_t *)keys, msg+15, (uint8_t *)key);			
  			dbg(DBG_USR1,"key=%X  %X  %X  %X\n",key[0],key[1],key[2],key[3]);
  			
			msg[0] = 6;
			memcpy(msg+1,(uint8_t *)&sID,2); // source sensor node
			memcpy(msg+3,(uint8_t *)&dID,2); // destination node
			memcpy(msg+14,(uint8_t *)&node_s,2); // intermediate node_id
//		      		memcpy(msg+16, (uint8_t *)key, 8); // test
		      		
	      		if(sendflag==0) {
				call Channel.send(dID,msg);
				dbg(DBG_USR1,"node%d send answer to node%d.\n",sID,dID);
	      			sendflag = 1;
			}

			have=1;
			signal Sensor.keyEstablished(dID,(uint8_t *)key);
		}
	}

	if(type==6) {
		dbg(DBG_USR1,"node%d received path key from node%d. type6 \n",sID,node_s);
		memcpy((uint8_t *)&node, msg+14,2);
		ckd[0] = msg[5]; // same poly_id of node_s 

		i=0;  // find which poly_id is the same poly_id  
		while(ckd[0]!=secret[i].poly_id){
			 i++;
		}
		dbg(DBG_USR1,"find poly_id= %d\n",secret[i].poly_id);
    
       		// compute the common key  
		call ComputeKey.compute((uint8_t *)&secret[i],node,(uint8_t *)keyd);	
		dbg(DBG_USR1,"keyd= %X  %X  %X  %X\n",keyd[0],keyd[1],keyd[2],keyd[3]);
		// decrypt the key with keyd
		call Primitive.decrypt((uint8_t *)keyd, msg+6, (uint8_t *)key);	
		dbg(DBG_USR1,"key=%X  %X  %X  %X\n",key[0],key[1],key[2],key[3]);

		signal Sensor.keyEstablished(node_s,(uint8_t *)key);
		
//		memcpy(msg, (uint8_t *)&sID, 2); // test
//		memcpy(msg+2, (uint8_t *)&node_s, 2);
//		memcpy(msg+4, (uint8_t *)key, 8);
//		memset(msg+12,0,2);
//		if (sendflag==0) {
//			sendflag=1;
//			call Channel.send(TOS_UART_ADDR, msg);
//		}				
	}
	
//	call Leds.yellowOff();
    return msg;
 }
   
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲人成在线观看一区二区| 成人精品免费网站| 欧美日韩不卡一区二区| 日韩国产一区二| 欧美一区在线视频| 久久精品国产一区二区| 久久久久久一二三区| 成人看片黄a免费看在线| 亚洲视频中文字幕| 欧美日韩大陆一区二区| 美女脱光内衣内裤视频久久网站| 欧美大片在线观看| 成人午夜视频网站| 亚洲一二三区在线观看| 日韩美女视频一区二区在线观看| 国产成a人亚洲精| 亚洲一区日韩精品中文字幕| 欧美一区二区不卡视频| 国产综合一区二区| 亚洲视频电影在线| 91精品国产综合久久久蜜臀粉嫩 | 国产在线播放一区| 国产精品进线69影院| 欧美日韩大陆一区二区| 国产传媒日韩欧美成人| 一卡二卡三卡日韩欧美| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 亚洲一区二区四区蜜桃| 日韩欧美一区二区免费| 99精品热视频| 精品亚洲porn| 亚洲一区二区免费视频| 国产欧美日产一区| 欧美精品电影在线播放| 成人99免费视频| 另类小说视频一区二区| 一区二区成人在线| 国产日产欧美一区二区视频| 91官网在线观看| 国产精品996| 蜜桃视频在线观看一区| 一区二区三区在线视频免费| 国产亚洲精品久| 欧美一区二区三级| 色综合欧美在线| 国产超碰在线一区| 另类小说视频一区二区| 亚洲成人先锋电影| 成人免费一区二区三区在线观看| 日韩一区二区影院| 欧美日韩免费不卡视频一区二区三区| 成人黄色av网站在线| 精品综合久久久久久8888| 亚洲国产精品嫩草影院| 亚洲乱码国产乱码精品精小说| 久久蜜桃av一区精品变态类天堂 | 青娱乐精品视频在线| 亚洲日本va午夜在线影院| 国产日韩欧美精品综合| 日韩欧美的一区| 欧美日本国产一区| 欧美专区在线观看一区| 一本大道av伊人久久综合| 成人国产精品免费网站| 国产成人精品免费看| 精品午夜久久福利影院| 麻豆91精品91久久久的内涵| 丝袜美腿亚洲综合| 图片区小说区国产精品视频| 亚洲v中文字幕| 日韩影院在线观看| 婷婷国产v国产偷v亚洲高清| 亚洲国产精品一区二区www在线| 亚洲同性同志一二三专区| 国产精品久久久久影院色老大| 国产欧美一区二区三区鸳鸯浴| 久久女同精品一区二区| 久久精品综合网| 亚洲国产高清不卡| 中文字幕一区视频| 亚洲色欲色欲www| 亚洲综合成人在线视频| 亚洲午夜成aⅴ人片| 日韩有码一区二区三区| 六月婷婷色综合| 国产精品资源网| av不卡在线播放| 色偷偷久久一区二区三区| 欧美自拍丝袜亚洲| 欧美一区二区三区公司| 精品国产电影一区二区| 中文字幕欧美日韩一区| 亚洲欧美欧美一区二区三区| 亚洲电影一区二区| 日本女人一区二区三区| 国产乱子伦视频一区二区三区| 成人激情电影免费在线观看| 色综合天天在线| 欧美日韩国产精品成人| 日韩欧美一二三四区| 国产亚洲自拍一区| 亚洲免费观看高清完整版在线| 亚洲国产一区视频| 国内久久精品视频| 成人av电影在线| 欧美久久久久免费| 国产欧美中文在线| 亚洲一二三区在线观看| 理论电影国产精品| 91网站黄www| 欧美成人性战久久| 国产精品国产三级国产aⅴ无密码| 一区二区不卡在线视频 午夜欧美不卡在 | 93久久精品日日躁夜夜躁欧美| 在线视频观看一区| 精品福利一区二区三区| 亚洲精品老司机| 国产一区二区三区观看| 色又黄又爽网站www久久| 日韩一卡二卡三卡四卡| 自拍偷拍国产亚洲| 麻豆91在线播放免费| 色婷婷综合久久久久中文| 在线播放/欧美激情| 中文字幕在线不卡一区二区三区| 视频一区二区中文字幕| av在线不卡观看免费观看| 欧美一区二区三区小说| 国产精品久久久久毛片软件| 蜜臀久久99精品久久久画质超高清| av一二三不卡影片| 精品女同一区二区| 亚洲国产cao| 91免费精品国自产拍在线不卡 | 欧美视频中文字幕| 日本一区二区不卡视频| 老汉av免费一区二区三区| 日本高清无吗v一区| 国产亲近乱来精品视频| 免费不卡在线观看| 欧美色综合天天久久综合精品| 国产精品三级在线观看| 久久av老司机精品网站导航| 欧美美女激情18p| 亚洲精品v日韩精品| 国产成人综合在线| 555www色欧美视频| 亚洲国产精品久久艾草纯爱| 91小视频免费看| 国产精品丝袜91| 国产自产高清不卡| 欧美sm极限捆绑bd| 日韩电影免费在线看| 91久久线看在观草草青青| 国产精品二三区| 99vv1com这只有精品| 欧美精彩视频一区二区三区| 国产麻豆视频一区| 亚洲精品一区在线观看| 精品伊人久久久久7777人| 日韩欧美国产精品一区| 免费成人在线视频观看| 日韩午夜电影在线观看| 美女一区二区在线观看| 欧美一级精品在线| 免费人成精品欧美精品| 日韩女优毛片在线| 狠狠色狠狠色合久久伊人| 日韩一区二区不卡| 国产在线看一区| 久久精品欧美日韩精品| 国产**成人网毛片九色| 日韩一区在线播放| 色婷婷综合久久久久中文一区二区| 一区二区三区国产豹纹内裤在线 | 久久av资源站| 亚洲成精国产精品女| 欧美性猛交xxxxxxxx| 午夜精品久久久久久久| 欧美老女人第四色| 久久99精品久久久久久动态图| 精品国产污污免费网站入口 | 亚洲精品va在线观看| 欧洲精品一区二区| 日本aⅴ亚洲精品中文乱码| 日韩一级成人av| 国产69精品久久久久毛片| 亚洲人成人一区二区在线观看| 一本大道av伊人久久综合| 午夜精品久久久久久久久久久| 欧美xxxx在线观看| 成人午夜激情影院| 亚洲国产乱码最新视频| 欧美tk丨vk视频| 99精品国产99久久久久久白柏| 亚洲va欧美va天堂v国产综合| 欧美一区二区三区视频免费播放| 国产精品一二三区在线| 亚洲欧美偷拍三级| 日韩午夜在线影院|