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

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

?? rtmp_tkip.c

?? 臺灣RALink公司的 rt2570無線 802.11g 網卡的 驅動的源代碼 ,支持linux2.4以上的 內河
?? C
?? 第 1 頁 / 共 3 頁
字號:
*/
VOID	RTMPInitTkipEngine(
	IN	PRT2570ADAPTER	pAdapter,	
	IN	PUCHAR			pKey,
	IN	UCHAR			KeyId,
	IN	PUCHAR			pTA,
	IN	PUCHAR			pMICKey,
	IN	PUCHAR			pTSC,
	IN	INT				DoEncrypt,
	OUT	PULONG			pIV16,
	OUT	PULONG			pIV32,
	IN	PUCHAR			pDest)
{
    TKIP_IV	tkipIv;
    if (DoEncrypt == 0)
    {
        // Prepare 8 bytes TKIP encapsulation for MPDU
        NdisZeroMemory(&tkipIv, sizeof(TKIP_IV));	
	tkipIv.IV16.word = 0;
        tkipIv.IV16.field.rc0 = *(pTSC + 1);	
        tkipIv.IV16.field.rc1 = (tkipIv.IV16.field.rc0 | 0x20) & 0x7f;	
        tkipIv.IV16.field.rc2 = *pTSC;	
        tkipIv.IV16.field.CONTROL.field.ExtIV = 1;  // 0: non-extended IV, 1: an extended IV
        tkipIv.IV16.field.CONTROL.field.KeyID = KeyId;
        tkipIv.IV32 = *(PULONG)(pTSC + 2);

        *pIV16 = tkipIv.IV16.word;
        *pIV32 = tkipIv.IV32;
    }
    else
    {
        pAdapter->PrivateInfo.FCSCRC32 = PPPINITFCS32;   //Init crc32.

        // Set IV16, IV32 from TSC value
        pAdapter->PrivateInfo.Tx.IV16 = (ULONG) *(pTSC) + (((ULONG) *(pTSC + 1)) << 8);	//TSC[0]:TSC[1]
        pAdapter->PrivateInfo.Tx.IV32 = *(PULONG)(pTSC + 2);

        // Init RC4 Key
        RTMPTkipMixTKey(&pAdapter->PrivateInfo.Tx, pKey, pTA);

        // Prepare 8 bytes TKIP encapsulation for MPDU
        NdisZeroMemory(&tkipIv, sizeof(TKIP_IV));	
        tkipIv.IV16.field.rc2 = (UCHAR) (pAdapter->PrivateInfo.Tx.IV16 & 0xFF);	
        tkipIv.IV16.field.rc1 = (UCHAR) pAdapter->PrivateInfo.Tx.RC4KEY[1];	
        tkipIv.IV16.field.rc0 = (UCHAR) ((pAdapter->PrivateInfo.Tx.IV16 >> 8) & 0xFF);	
        tkipIv.IV32 = pAdapter->PrivateInfo.Tx.IV32;
        tkipIv.IV16.field.CONTROL.field.ExtIV = 1;  // 0: non-extended IV, 1: an extended IV
        tkipIv.IV16.field.CONTROL.field.KeyID = KeyId;

        *pIV16 = tkipIv.IV16.word;
        *pIV32 = tkipIv.IV32;


        // Copy 8 bytes encapsulation into Tx ring
        NdisMoveMemory(pDest, &tkipIv, sizeof(TKIP_IV));

        // Init RC4 encyption engine
        ARCFOUR_INIT(&pAdapter->PrivateInfo.WEPCONTEXT, pAdapter->PrivateInfo.Tx.RC4KEY, 16);
    }


    // Prepare 8 bytes TKIP encapsulation for MPDU
    NdisZeroMemory(&tkipIv, sizeof(TKIP_IV));	
    tkipIv.IV16.field.rc0 = *(pTSC + 1);	
    tkipIv.IV16.field.rc1 = (tkipIv.IV16.field.rc0 | 0x20) & 0x7f;	
    tkipIv.IV16.field.rc2 = *pTSC;	
    tkipIv.IV16.field.CONTROL.field.ExtIV = 1;  // 0: non-extended IV, 1: an extended IV
    tkipIv.IV16.field.CONTROL.field.KeyID = KeyId;
    tkipIv.IV32 = *(PULONG)(pTSC + 2);

    *pIV16 = tkipIv.IV16.word;
    *pIV32 = tkipIv.IV32;

}


VOID	RTMPTkipEncryptData(
	IN	PRT2570ADAPTER	pAdapter,	
	IN	PUCHAR			pSrc,
	IN	PUCHAR			pDest,
	IN	UINT			Len)
{
	pAdapter->PrivateInfo.FCSCRC32 = RTMP_CALC_FCS32(pAdapter->PrivateInfo.FCSCRC32, pSrc, Len);
	ARCFOUR_ENCRYPT(&pAdapter->PrivateInfo.WEPCONTEXT, pDest, pSrc, Len);


}
/*
	========================================================================

	Routine	Description:
		Init MIC Value calculation function which include set MIC key & 
		calculate first 16 bytes (DA + SA + priority +  0)
		
	Arguments:
      pAdapter		Pointer to our adapter
		pTKey       Pointer to the Temporal Key (TK), TK shall be 128bits.
		pDA			Pointer to DA address
		pSA			Pointer to SA address
		pMICKey		pointer to MIC Key
		
	Return Value:
		None

	Note:
	
	========================================================================
*/
VOID	RTMPInitMICEngine(
	IN	PRT2570ADAPTER	pAdapter,	
	IN	PUCHAR			pKey,
	IN	PUCHAR			pDA,
	IN	PUCHAR			pSA,
	IN	PUCHAR			pMICKey)
{
	UCHAR	Priority[4];

	// Zero priority value. Can change to input parameter if required
	NdisZeroMemory(Priority, 4);
	// Init MIC value calculation
	RTMPTkipSetMICKey(&pAdapter->PrivateInfo.Tx, pMICKey);
	// DA
	RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, pDA, 6);
	// SA
	RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, pSA, 6);
	// Priority + 3 bytes of 0
	RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, Priority, 4);
}

/*
	========================================================================

	Routine	Description:
		Compare MIC value of received MSDU
		
	Arguments:
		pAdapter	Pointer to our adapter
		pSrc        Pointer to the received Plain text data
		pDA			Pointer to DA address
		pSA			Pointer to SA address
		pMICKey		pointer to MIC Key
		Len         the length of the received plain text data exclude MIC value
		
	Return Value:
		TRUE        MIC value matched
		FALSE       MIC value mismatched
		
	IRQL = DISPATCH_LEVEL
	
	Note:
	
	========================================================================
*/
BOOLEAN	RTMPTkipCompareMICValue(
	IN	PRT2570ADAPTER	pAdapter,
	IN	PUCHAR			pSrc,
	IN	PUCHAR			pDA,
	IN	PUCHAR			pSA,
	IN	PUCHAR			pMICKey,
	IN	UINT			Len)
{
	UCHAR	OldMic[8];
	UCHAR	Priority[4];
	INT		i;

	// Zero priority value. Can change to input parameter if required
	NdisZeroMemory(Priority, 4);
	// Init MIC value calculation
	RTMPTkipSetMICKey(&pAdapter->PrivateInfo.Rx, pMICKey);
	// DA
	RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, pDA, 6);
	// SA
	RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, pSA, 6);
	// Priority + 3 bytes of 0
	RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, Priority, 4);
	
	// Calculate MIC value from plain text data
	RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, pSrc, Len);

	// Get MIC valude from received frame
	NdisMoveMemory(OldMic, pSrc + Len, 8);
	
	// Get MIC value from decrypted plain data
	RTMPTkipGetMIC(&pAdapter->PrivateInfo.Rx);
		
	// Move MIC value from MSDU, this steps should move to data path.
	// Since the MIC value might cross MPDUs.
	if(!NdisEqualMemory(pAdapter->PrivateInfo.Rx.MIC, OldMic, 8))
	{
		DBGPRINT_RAW(RT_DEBUG_ERROR, "! TKIP MIC Error Len=%d!\n", Len);  //MIC error.
		DBGPRINT_RAW(RT_DEBUG_INFO, "Orig MIC value =");  //MIC error.
		for (i = 0; i < 8; i++)
		{
			DBGPRINT_RAW(RT_DEBUG_INFO, "%02x:", OldMic[i]);  //MIC error.
		}
		DBGPRINT_RAW(RT_DEBUG_INFO, "\n");  //MIC error.
		DBGPRINT_RAW(RT_DEBUG_INFO, "Calculated MIC value =");  //MIC error.
		for (i = 0; i < 8; i++)
		{
			DBGPRINT_RAW(RT_DEBUG_INFO, "%02x:", pAdapter->PrivateInfo.Rx.MIC[i]);  //MIC error.
		}
		DBGPRINT_RAW(RT_DEBUG_INFO, "\n");  //MIC error.
		return (FALSE);
	}
	return (TRUE);
}


/*
	========================================================================

	Routine	Description:
		Compare MIC value of received MSDU
		
	Arguments:
		pAdapter	Pointer to our adapter
		pLLC		LLC header
		pSrc        Pointer to the received Plain text data
		pDA			Pointer to DA address
		pSA			Pointer to SA address
		pMICKey		pointer to MIC Key
		Len         the length of the received plain text data exclude MIC value
		
	Return Value:
		TRUE        MIC value matched
		FALSE       MIC value mismatched
		
	IRQL = DISPATCH_LEVEL
	
	Note:
	
	========================================================================
*/
BOOLEAN	RTMPTkipCompareMICValueWithLLC(
	IN	PRT2570ADAPTER	pAdapter,
	IN	PUCHAR			pLLC,
	IN	PUCHAR			pSrc,
	IN	PUCHAR			pDA,
	IN	PUCHAR			pSA,
	IN	PUCHAR			pMICKey,
	IN	UINT			Len)
{
	UCHAR	OldMic[8];
	UCHAR	Priority[4];
	INT		i;

	// Zero priority value. Can change to input parameter if required
	NdisZeroMemory(Priority, 4);
	// Init MIC value calculation
	RTMPTkipSetMICKey(&pAdapter->PrivateInfo.Rx, pMICKey);
	// DA
	RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, pDA, 6);
	// SA
	RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, pSA, 6);
	// Priority + 3 bytes of 0
	RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, Priority, 4);
	
	// Start with LLC header
	RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, pLLC, 8);

	// Calculate MIC value from plain text data
	RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, pSrc, Len);

	// Get MIC valude from received frame
	NdisMoveMemory(OldMic, pSrc + Len, 8);
	
	// Get MIC value from decrypted plain data
	RTMPTkipGetMIC(&pAdapter->PrivateInfo.Rx);
		
	// Move MIC value from MSDU, this steps should move to data path.
	// Since the MIC value might cross MPDUs.
	if(!NdisEqualMemory(pAdapter->PrivateInfo.Rx.MIC, OldMic, 8))
	{
		DBGPRINT_RAW(RT_DEBUG_ERROR, "! TKIP MIC Error !\n");  //MIC error.
		DBGPRINT_RAW(RT_DEBUG_INFO, "Orig MIC value =");  //MIC error.
		for (i = 0; i < 8; i++)
		{
			DBGPRINT_RAW(RT_DEBUG_INFO, "%02x:", OldMic[i]);  //MIC error.
		}
		DBGPRINT_RAW(RT_DEBUG_INFO, "\n");  //MIC error.
		DBGPRINT_RAW(RT_DEBUG_INFO, "Calculated MIC value =");  //MIC error.
		for (i = 0; i < 8; i++)
		{
			DBGPRINT_RAW(RT_DEBUG_INFO, "%02x:", pAdapter->PrivateInfo.Rx.MIC[i]);  //MIC error.
		}
		DBGPRINT_RAW(RT_DEBUG_INFO, "\n");  //MIC error.
		return (FALSE);
	}
	return (TRUE);
}
/*
	========================================================================

	Routine	Description:
		Copy frame from waiting queue into relative ring buffer and set 
	appropriate ASIC register to kick hardware transmit function
		
	Arguments:
		pAdapter		Pointer	to our adapter
		PNDIS_PACKET	Pointer to Ndis Packet for MIC calculation
		pEncap			Pointer to LLC encap data
		LenEncap		Total encap length, might be 0 which indicates no encap
		
	Return Value:
		None

	IRQL = DISPATCH_LEVEL
	
	Note:
	
	========================================================================
*/
VOID	RTMPCalculateMICValue(
	IN	PRT2570ADAPTER	pAdapter,
	IN  struct sk_buff  *skb,
	IN	PUCHAR			pEncap,
	IN	INT				LenEncap,
	IN	PWPA_KEY		pWpaKey)
{
    PUCHAR          pSrc;
    static UCHAR    Priority[4] = {"\x00\x00\x00\x00"};
   
    pSrc = (PUCHAR) skb->data;
    
    // Init MIC value calculation and reset the message
    pAdapter->PrivateInfo.Tx.L = RTMPTkipGetUInt32(pWpaKey->TxMic);
    pAdapter->PrivateInfo.Tx.R = RTMPTkipGetUInt32(pWpaKey->TxMic + 4);
    pAdapter->PrivateInfo.Tx.nBytesInM = 0;
    pAdapter->PrivateInfo.Tx.M = 0;
	
    // DA & SA field
    RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, pSrc, 12);
    
    // Priority + 3 bytes of 0
    RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, Priority, 4);
    
    if (LenEncap > 0)
    {
        // LLC encapsulation
        RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, pEncap, LenEncap);
        // Protocol Type
        RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, pSrc + 12, skb->len - 12);
    }
    else
        RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, pSrc + 14, skb->len - 14);
    
    // Compute the final MIC Value
    RTMPTkipGetMIC(&pAdapter->PrivateInfo.Tx);

}

/************************************************************/ 
/* tkip_sbox()																*/ 
/* Returns a 16 bit value from a 64K entry table. The Table */ 
/* is synthesized from two 256 entry byte wide tables.		*/ 
/************************************************************/ 

UINT tkip_sbox(UINT index) 
{ 
	UINT index_low; 
	UINT index_high; 
	UINT left, right; 

	index_low = (index % 256); 
	index_high = ((index >> 8) % 256); 

	left = Tkip_Sbox_Lower[index_low] + (Tkip_Sbox_Upper[index_low] * 256); 
	right = Tkip_Sbox_Upper[index_high] + (Tkip_Sbox_Lower[index_high] * 256); 

	return (left ^ right); 
}

UINT rotr1(UINT a) 
{ 
	unsigned int b; 

	if ((a & 0x01) == 0x01) 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品三级麻豆| 亚洲精品一区在线观看| 久久嫩草精品久久久精品| 石原莉奈一区二区三区在线观看| 日本道免费精品一区二区三区| 日本一区二区三区免费乱视频| 国产经典欧美精品| 老色鬼精品视频在线观看播放| 精品国产一区a| 欧美一级高清片| 国产成都精品91一区二区三| 国产精品久久久久久久久免费樱桃| 91在线码无精品| 亚洲一区二区三区爽爽爽爽爽| 3d成人h动漫网站入口| 国产在线精品一区二区不卡了 | 亚洲欧美一区二区久久| 在线视频一区二区三区| 久久精品久久综合| 国产一区二区在线看| 国产一本一道久久香蕉| 成人动漫一区二区| 美女网站在线免费欧美精品| 国产精品久久福利| 亚洲免费成人av| 三级亚洲高清视频| 国产美女视频一区| 色诱视频网站一区| 久久国产剧场电影| 成人晚上爱看视频| 国产在线播放一区二区三区| 国产999精品久久久久久| 91同城在线观看| 成人黄色在线视频| 在线观看亚洲一区| 精品毛片乱码1区2区3区| 欧美三级电影精品| 99re8在线精品视频免费播放| 91久久精品国产91性色tv| 在线不卡的av| 欧美日韩精品一区二区三区| 日本久久电影网| 日韩欧美一区二区在线视频| 不卡的看片网站| 91精品久久久久久久91蜜桃| 国产偷v国产偷v亚洲高清| 精品福利在线导航| 一区二区在线看| 亚洲欧美视频在线观看视频| 久久99精品国产.久久久久| 日欧美一区二区| 成人av电影在线| 欧美一区二区三级| 精品日韩欧美在线| 一区二区三区中文免费| 亚洲制服丝袜一区| 国产99精品国产| 精品女同一区二区| 亚洲一区二区精品3399| 不卡视频一二三| 欧美va亚洲va香蕉在线| 亚洲国产精品久久久久秋霞影院| 亚洲精品国产视频| 成人性生交大合| 2017欧美狠狠色| 国产精品欧美精品| 亚洲精品v日韩精品| 丁香网亚洲国际| 日韩欧美黄色影院| 天堂蜜桃91精品| 欧美亚一区二区| 日韩欧美国产综合在线一区二区三区| 亚洲三级理论片| 日韩成人一区二区| 国产成人啪免费观看软件| 日韩一级欧美一级| 午夜伦理一区二区| 国产成人精品1024| 欧美不卡在线视频| 蜜臀久久久99精品久久久久久| 欧美日韩国产另类不卡| 一区二区三区高清在线| 欧洲视频一区二区| 亚洲国产欧美一区二区三区丁香婷| 99精品桃花视频在线观看| 国产精品大尺度| 99久久精品免费| 中文字幕日韩精品一区 | 一区二区三区在线免费| 91在线一区二区| 伊人开心综合网| 欧美日韩国产成人在线免费| 亚洲一二三区在线观看| 日韩一级黄色大片| 国产在线麻豆精品观看| 色噜噜狠狠色综合欧洲selulu| 亚洲天堂精品在线观看| 欧美在线制服丝袜| 视频在线在亚洲| 久久综合色之久久综合| 国产a区久久久| 亚洲丝袜精品丝袜在线| 欧美丝袜丝交足nylons图片| 亚洲成人免费电影| av亚洲精华国产精华精华| 日韩欧美中文字幕公布| 国产成人aaaa| 亚洲综合偷拍欧美一区色| 欧美一级爆毛片| 成人一级片网址| 亚洲制服丝袜一区| 欧美成人官网二区| 99精品在线免费| 麻豆91在线看| 亚洲视频一区二区在线观看| 日韩一卡二卡三卡| 91丝袜美腿高跟国产极品老师| 性欧美疯狂xxxxbbbb| 国产午夜精品一区二区三区嫩草| 91在线国产观看| 久久精品国产99久久6| 国产精品精品国产色婷婷| 欧美精品1区2区3区| 丁香天五香天堂综合| 日韩激情一二三区| 中文字幕一区二区三区四区 | 欧美一区二区成人| 成人黄色国产精品网站大全在线免费观看| 亚洲精品国产精华液| 久久久久国产精品厨房| 欧美欧美欧美欧美| 91在线精品一区二区三区| 国产在线精品免费| 日本v片在线高清不卡在线观看| 欧美性xxxxxxxx| 成人网页在线观看| 国模无码大尺度一区二区三区| 夜夜揉揉日日人人青青一国产精品| 久久综合久久鬼色中文字| 欧美男人的天堂一二区| 色伊人久久综合中文字幕| 粉嫩绯色av一区二区在线观看| 蜜臀av性久久久久蜜臀av麻豆| 一卡二卡欧美日韩| 一色屋精品亚洲香蕉网站| 久久五月婷婷丁香社区| 欧美一三区三区四区免费在线看| 色94色欧美sute亚洲线路二| 成人av资源网站| 国产成人综合视频| 国产剧情在线观看一区二区| 国产精品三级在线观看| wwwwxxxxx欧美| 日韩一区二区精品在线观看| 欧美精品成人一区二区三区四区| 欧美婷婷六月丁香综合色| 91麻豆免费观看| 91在线视频观看| 91精品办公室少妇高潮对白| 91色.com| 91麻豆精品一区二区三区| 99这里只有精品| 91麻豆6部合集magnet| 99久久精品国产观看| 99re热视频精品| 欧美性猛片xxxx免费看久爱| 91久久精品网| 在线观看91精品国产麻豆| 欧美妇女性影城| 日韩欧美国产1| 久久九九99视频| 中文字幕av资源一区| 日韩欧美亚洲另类制服综合在线| 日韩三区在线观看| 久久综合精品国产一区二区三区| 久久色中文字幕| 国产精品久久久一本精品 | 亚洲午夜国产一区99re久久| 亚洲h在线观看| 精品亚洲porn| 99视频在线精品| 欧美日韩一区二区欧美激情| 欧美一级免费观看| 国产日韩欧美激情| 亚洲美女免费在线| 奇米精品一区二区三区四区| 国产精品18久久久久久久久久久久| 成人性生交大片免费看视频在线| 欧洲一区二区三区免费视频| 日韩一级片在线观看| 国产精品国产三级国产aⅴ中文| 艳妇臀荡乳欲伦亚洲一区| 老司机精品视频线观看86 | 一区二区三区中文在线观看| 免费黄网站欧美| 成人亚洲一区二区一| 精品视频一区三区九区| 久久精品人人做人人爽97| 亚洲综合免费观看高清完整版在线 | 午夜精品福利一区二区蜜股av|