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

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

?? hal_rf_security.c

?? zigbee 無(wú)線(xiàn)通信 CC2520 芯片 C語(yǔ)言 原代碼
?? C
字號(hào):
/***********************************************************************************

  Filename:       hal_rf_security.c

  Description:    CC2520 CCM security

***********************************************************************************/

/***********************************************************************************
* INCLUDES
*/
#include "hal_board.h"
#include "hal_assert.h"

#include "hal_cc2520.h"

#include "hal_rf_security.h"

/***********************************************************************************
* CONSTANTS AND DEFINES
*/

#define ADDR_RX                   0x200
#define ADDR_TX                   0x280
#define ADDR_KEY                  0x300                 // Key address
#define ADDR_NONCE_RX             0x310                 // Nonce for incoming packets
#define ADDR_NONCE_TX             0x320                 // Nonce for outgoing packets

#define AUTHSTAT_H_BM             0x08                  // AUTHSTAT_H bit of DPUSTAT

#define HIGH_PRIORITY             1
#define LOW_PRIORITY              0

#define PKT_LEN_MAX               127


/***********************************************************************************
* @fn      halRfSecurityInit
*
* @brief   Security init. Write nonces and key to chip.
*
* @param   none
*
* @return  none
*/
void halRfSecurityInit(uint8* key, uint8* nonceRx, uint8* nonceTx)
{
    // Write key
    CC2520_MEMWR(ADDR_KEY,KEY_LENGTH,key);

    // Write nonce RX
    CC2520_MEMWR(ADDR_NONCE_RX,NONCE_LENGTH,nonceRx);

    // Write nonce TX
    CC2520_MEMWR(ADDR_NONCE_TX,NONCE_LENGTH,nonceTx);

    // Reverse key
    CC2520_MEMCPR(HIGH_PRIORITY,KEY_LENGTH,ADDR_KEY,ADDR_KEY);

    // Reverse nonces
    CC2520_MEMCPR(HIGH_PRIORITY,NONCE_LENGTH,ADDR_NONCE_RX,ADDR_NONCE_RX);
    CC2520_MEMCPR(HIGH_PRIORITY,NONCE_LENGTH,ADDR_NONCE_TX,ADDR_NONCE_TX);
}


/***********************************************************************************
* @fn      halRfReadRxBufSecure
*
* @brief   Decrypts and reverse authenticates with CCM then reads out received
*          frame
*
* @param   uint8* data - data buffer. This must be allocated by caller.
*          uint8 length - number of bytes
*          uint8 encrLength - number of bytes to decrypt
*          uint8 authLength - number of bytes to reverse authenticate
*          uuint8 m - integrity code (m=1,2,3 gives lenght of integrity
*                   field 4,8,16)
*
* @return  SUCCESS or FAILED
*/
uint8 halRfReadRxBufSecure(uint8* data, uint8 length, uint8 encrLength, \
    uint8 authLength, uint8 m)
{
    uint8 dpuStat;

    CC2520_RXBUFMOV(HIGH_PRIORITY, ADDR_RX, length, NULL);
    WAIT_DPU_DONE_H();

    // Find Framecounter value in received packet starting from 10th byte
    // Copy in to nonce bytes (3-6) frame counter bytes
    // Incoming frame uses nonce Rx
    CC2520_MEMCP(HIGH_PRIORITY, 4, ADDR_RX+10, ADDR_NONCE_RX+3);
    WAIT_DPU_DONE_H();

    // Copy in short address to nonce bytes (7-8)
    CC2520_MEMCP(HIGH_PRIORITY, 2, ADDR_RX+7, ADDR_NONCE_RX+7);
    WAIT_DPU_DONE_H();

    // Perform decryption and authentication
    CC2520_UCCM(HIGH_PRIORITY,ADDR_KEY/16, encrLength, ADDR_NONCE_RX/16, ADDR_RX, ADDR_RX+authLength, authLength, m);
    WAIT_DPU_DONE_H();

    // Check authentication status
    dpuStat = CC2520_REGRD8(CC2520_DPUSTAT);

    // Read from RX work buffer into data buffer
    CC2520_MEMRD(ADDR_RX, length, data);

    if( (dpuStat & AUTHSTAT_H_BM) != AUTHSTAT_H_BM ) {
        // Authentication failed
        return FAILED;
    } else {
        return SUCCESS;
    }
}


/***********************************************************************************
* @fn      halRfWriteTxBufSecure
*
* @brief   Encrypt and authenticate plaintext then fill TX buffer
*
* @param   uint8* data - data buffer. This must be allocated by caller.
*          uint8 length - number of bytes
*          uint8 encrLength - number of bytes to decrypt
*          uint8 authLength - number of bytes to reverse authenticate
*          uint8 m - integrity code (m=1,2,3 gives lenght of integrity
*                   field 4,8,16)
*
* @return  none
*/
void halRfWriteTxBufSecure(uint8* data, uint8 length, uint8 encrLength, uint8 authLength, uint8 m)
{
    uint8 micLength;

    // Check range of m
    HAL_ASSERT(m<=4);

    if(m>0) {
        micLength = 0x2<<m;
    }
    else if(m==0) {
        micLength=0;
    }

    // Write packet to work buffer
    CC2520_MEMWR(ADDR_TX, length, data);

    // skip the length byte and start from the next byte in TXBUF
    // Outgoing frame uses nonce_tx
    CC2520_CCM(HIGH_PRIORITY,ADDR_KEY/16, encrLength, ADDR_NONCE_TX/16, ADDR_TX+1, 0, authLength, m);
    WAIT_DPU_DONE_H();

    // copy from work buffer to TX FIFO
    CC2520_TXBUFCP(HIGH_PRIORITY, ADDR_TX, length+micLength, NULL);
    WAIT_DPU_DONE_H();

}


/***********************************************************************************
* @fn      halRfIncNonceTx
*
* @brief   Increments frame counter field of stored nonce TX
*
* @param   none
*
* @return  none
*/
void halRfIncNonceTx(void)
{
    // Increment frame counter field of 16 byte nonce TX
    // Frame counter field is 4 bytes long

    // Increment framecounter bytes (3-6) of nonce TX
    CC2520_INC(HIGH_PRIORITY, 2, ADDR_NONCE_TX+3);
    WAIT_DPU_DONE_H();
}

/***********************************************************************************
  Copyright 2007 Texas Instruments Incorporated. All rights reserved.

  IMPORTANT: Your use of this Software is limited to those specific rights
  granted under the terms of a software license agreement between the user
  who downloaded the software, his/her employer (which must be your employer)
  and Texas Instruments Incorporated (the "License").  You may not use this
  Software unless you agree to abide by the terms of the License. The License
  limits your use, and you acknowledge, that the Software may not be modified,
  copied or distributed unless embedded on a Texas Instruments microcontroller
  or used solely and exclusively in conjunction with a Texas Instruments radio
  frequency transceiver, which is integrated into your product.  Other than for
  the foregoing purpose, you may not use, reproduce, copy, prepare derivative
  works of, modify, distribute, perform, display or sell this Software and/or
  its documentation for any purpose.

  YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
  PROVIDED 揂S IS

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品激情在线观看| 全国精品久久少妇| 天天综合日日夜夜精品| 色综合视频在线观看| 国产欧美日韩激情| 成人影视亚洲图片在线| 久久蜜臀精品av| 国产一区91精品张津瑜| 久久影院午夜片一区| 激情综合色综合久久| 久久蜜臀精品av| 欧美日韩国产综合视频在线观看 | 日韩免费视频线观看| 五月综合激情网| 国产精品福利一区二区三区| 99国产麻豆精品| 一区二区三区不卡视频| 欧美色图免费看| 久久精品国产秦先生| 中文字幕欧美日本乱码一线二线| 欧美区视频在线观看| 色综合天天综合色综合av | 国产精品久久久久婷婷| 日韩欧美中文一区二区| 国产成人精品免费| 亚洲精品中文在线观看| 欧美日韩一区二区不卡| 91视频观看免费| 日韩在线一区二区三区| 久久精品视频免费| 色乱码一区二区三区88| 天天做天天摸天天爽国产一区| 国产精品大尺度| 国产精品美女久久久久aⅴ国产馆| 欧美在线视频日韩| 激情综合五月天| 久久av老司机精品网站导航| 天天色 色综合| 午夜精品久久久久久久久久| 亚洲成人免费看| 国产欧美综合色| 国产午夜亚洲精品午夜鲁丝片| 久久免费美女视频| 久久婷婷综合激情| 久久精品在这里| 中文字幕+乱码+中文字幕一区| 国产三级精品三级| 久久久国产精品不卡| 久久久久久久久久久久电影 | 久久久久久久久久美女| 国产夜色精品一区二区av| 久久久久国产免费免费| 国产日韩欧美一区二区三区乱码| 无码av免费一区二区三区试看| 亚洲成人资源在线| 日韩va亚洲va欧美va久久| 国产精品久久久久久一区二区三区| 久久精品亚洲麻豆av一区二区| 国产日韩欧美在线一区| 亚洲欧洲色图综合| 精品国产三级电影在线观看| 欧美日本在线看| 欧美一区二区三区色| 在线精品视频一区二区三四| 欧美日韩亚洲综合| 日韩欧美在线不卡| 国产欧美日韩另类视频免费观看 | 日韩电影一区二区三区四区| 蜜桃精品在线观看| 视频一区国产视频| 国模冰冰炮一区二区| 日韩在线一区二区三区| 久久99精品国产| 成人av在线看| 国产一区二区三区精品欧美日韩一区二区三区| 国产一区二区女| 91麻豆123| 91精品国产丝袜白色高跟鞋| 国产视频一区二区在线观看| 樱桃国产成人精品视频| 青娱乐精品在线视频| 大胆欧美人体老妇| 欧美日本一区二区三区四区| 久久久国产精华| 亚洲线精品一区二区三区八戒| 亚洲精品伦理在线| 久久er精品视频| 色综合色综合色综合色综合色综合| 欧美精品久久久久久久久老牛影院| 色综合网站在线| 日韩欧美一级二级三级久久久| 中文字幕成人av| 日产国产欧美视频一区精品| 欧美一区二区免费视频| 日本一区二区综合亚洲| 五月天网站亚洲| 成人午夜av影视| 日韩欧美美女一区二区三区| 亚洲欧美另类久久久精品2019| 中文字幕一区二区5566日韩| 免费观看在线色综合| 色婷婷av一区二区| 久久精品一区二区三区不卡牛牛| 亚洲午夜久久久久久久久久久| 国产精品影音先锋| 国产乱码精品1区2区3区| 欧美午夜免费电影| 欧美精品xxxxbbbb| 亚洲欧洲性图库| 国产麻豆精品在线观看| 欧美精品一二三| 亚洲欧美韩国综合色| 夫妻av一区二区| 欧美午夜精品一区二区蜜桃| 中文字幕免费不卡| 国模娜娜一区二区三区| 91精品国产综合久久久久| 久久在线观看免费| 美国欧美日韩国产在线播放| 欧美亚洲免费在线一区| 亚洲欧美另类图片小说| 丁香啪啪综合成人亚洲小说| 久久先锋影音av鲁色资源| 毛片不卡一区二区| 欧美一区二区三区日韩视频| 亚洲国产毛片aaaaa无费看| 91麻豆国产香蕉久久精品| 国产精品色哟哟| 国产999精品久久久久久| 久久久久久一二三区| 国产一区二区在线看| 2019国产精品| 精品一区二区影视| 日韩欧美国产不卡| 麻豆一区二区在线| 精品捆绑美女sm三区| 一区二区三区四区在线免费观看| 99在线精品免费| 欧美videofree性高清杂交| 免费人成精品欧美精品| 日韩一区二区三区视频在线观看| 偷拍亚洲欧洲综合| 欧美一区欧美二区| 免费国产亚洲视频| 亚洲精品在线免费观看视频| 激情丁香综合五月| 国产亚洲成年网址在线观看| 国产99久久久国产精品潘金网站| 国产欧美日韩另类视频免费观看| 丁香天五香天堂综合| 国产精品久久久久一区二区三区| 色综合天天视频在线观看| 亚洲午夜免费电影| 日韩欧美亚洲另类制服综合在线| 美脚の诱脚舐め脚责91 | 亚洲另类在线视频| 欧美视频中文一区二区三区在线观看| 亚洲亚洲人成综合网络| 51精品视频一区二区三区| 精品在线观看视频| 中文字幕精品一区二区三区精品| 99久久精品免费看国产| 一区二区三区高清在线| 制服丝袜亚洲色图| 国产一区二区精品久久| 国产精品国产成人国产三级 | 亚洲永久免费av| 成人动漫精品一区二区| 亚洲男人的天堂网| 91麻豆精品国产91久久久更新时间| 激情综合亚洲精品| 中文字幕亚洲成人| 91精品国产综合久久久久久漫画 | 亚洲精品国产第一综合99久久| 欧美日韩一区国产| 国产一区二区电影| 一区二区三区四区国产精品| 日韩欧美一区中文| 91在线看国产| 奇米精品一区二区三区在线观看一| 久久精品亚洲精品国产欧美| 欧美在线视频不卡| 国产成人欧美日韩在线电影| 一区二区三区**美女毛片| 精品日韩在线观看| 91福利视频久久久久| 国内成人自拍视频| 亚洲高清免费视频| 欧美激情中文不卡| 4438x成人网最大色成网站| 成人免费观看av| 全国精品久久少妇| 一区二区三区四区激情 | 日韩视频123| 91免费在线看| 国产精品影视在线| 91热门视频在线观看| 精品中文字幕一区二区| 亚洲高清在线视频| 国产精品麻豆99久久久久久|