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

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

?? mac_aessecurity.c

?? zigbee location examples
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*******************************************************************************************************
 *                                                                                                     *
 *        **********                                                                                   *
 *       ************                                                                                  *
 *      ***        ***                                                                                 *
 *      ***   +++   ***                                                                                *
 *      ***   + +   ***                                                                                *
 *      ***   +                         CHIPCON CC2430 INTEGRATED 802.15.4 MAC AND PHY                 *
 *      ***   + +   ***                              MAC-AESSECURITY.C                                 *
 *      ***   +++   ***                                                                                *
 *      ***        ***                                                                                 *
 *       ************                                                                                  *
 *        **********                                                                                   *
 *                                                                                                     *
 *******************************************************************************************************
 * CONFIDENTIAL                                                                                        *
 * The use of this file is restricted by the signed MAC software license agreement.                    *
 *                                                                                                     *
 * Copyright Chipcon AS, 2005                                                                          *
 *******************************************************************************************************/
#include "mac_headers.h"
#include <string.h>

extern BOOL                    XDATA currentAesFinished;
extern BYTE                    XDATA currentAesTransferCount;

__near_func __interrupt void  AesIsr (void);

static void AppendFrameKeyAndSource (DWORD          frameCounter,
                                     BYTE           keySequenceCounter,
                                     ADDRESS XDATA  *extendedSourceAddress,
                                     BYTE XDATA     *bytes);
static void AppendUToEncryptedMessage (BYTE         noOfBytes,
                                       BYTE XDATA   *u,
                                       BYTE XDATA   *messageLength,
                                       BYTE XDATA   *message);
static void BuildAesCtrInputBlock (DWORD            frameCounter,
                                   BYTE             keySequenceCounter,
                                   ADDRESS XDATA    *extendedSourceAddress,
                                   BYTE XDATA       *iv);
static void BuildAuthenticationData (B0 XDATA   *b0,
                                     BYTE       authenticationLength,
                                     BYTE XDATA *authenticationData,
                                     BYTE XDATA *additionalLength,
                                     BYTE XDATA *additionalAuthData);
static void BuildA0 (DWORD          frameCounter,
                     BYTE           keySequenceCounter,
                     ADDRESS XDATA  *extendedAddress,
                     A0 XDATA       *a0);
static void BuildB0 (BYTE           messageLength,
                     OUTPUT_MODE    outputMode,
                     DWORD          frameCounter,
                     BYTE           keySequenceCounter,
                     ADDRESS XDATA  *extendedAddress,
                     B0 XDATA       *b0);
static void CompareTAndMacTag (BYTE                     integrityLength,
                               INTEGRITY_CODE XDATA     *t,
                               INTEGRITY_CODE XDATA     *macTag,
                               BOOL XDATA               *result);
static void ConvertOutputModeToNoOfBytes (OUTPUT_MODE outputMode, BYTE XDATA *bytesInOutput);
static void LoadIv (AES_MODE   aesMode,
                    IV XDATA   *iv,
                    BOOL XDATA *result);
static void LoadKey (AES_MODE   aesMode,
                     KEY XDATA  *key,
                     BOOL XDATA *result);
static void PerformCcmCbcMac (AES_CCM_DATA XDATA *aesCcmData,
                              BYTE XDATA         *mac,
                              BOOL XDATA         *result);
static void SetupAesRead (BYTE         noOfBytes,
                          BYTE XDATA   *bytes);
static void SetupAesWrite (BYTE         noOfBytes,
                           BYTE XDATA   *bytes);
static void StartAes (AES_MODE  aesMode, AES_COMMAND    aesCommand);
static void WriteAndReadAes (AES_MODE        aesMode,
                             AES_COMMAND     aesCommand,
                             BYTE            noOfBytes,
                             BYTE XDATA      *bytesIn,
                             BYTE XDATA      *bytesOut,
                             BOOL XDATA      *result);
static void WriteToAes (AES_MODE        aesMode,
                        AES_COMMAND     aesCommand,
                        BYTE            noOfBytes,
                        BYTE XDATA      *bytes,
                        BOOL XDATA      *result);
static void ZeroPadData (BYTE XDATA *noOfBytes, BYTE XDATA *bytesIn);

IV XDATA iv0 =
    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};

//-------------------------------------------------------------------------------------------------------
//
// Global functions
//
//-------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------------
void Aes (AES_MODE          aesMode,
          ENCRYPTION_TYPE   encryptionType,
          KEY XDATA         *key,
          IV  XDATA         *iv,
          BYTE              noOfBytes,
          BYTE XDATA        *bytesIn,
          BYTE XDATA        *bytesOut,
          BOOL XDATA        *result)
{
    AES_COMMAND aesCommand;
    BYTE XDATA tempNoOfBytes;

    tempNoOfBytes = noOfBytes;

    if (tempNoOfBytes > MAX_IN_AES)
        *result = FALSE;
    else
    {
        *result = TRUE;
        ZeroPadData ((BYTE *)&tempNoOfBytes, bytesIn);
        LoadKey (aesMode,
                 key,
                 result);

        if (*result)
        {
            if (aesMode != AES_MODE_ECB)
                LoadIv (aesMode,
                        iv,
						result);

            if (*result)
            {

                if (encryptionType == ENCRYPTION_TYPE_ENCRYPT)
                   aesCommand = AES_COMMAND_ENCRYPT_BLOCK;
               else
                   aesCommand = AES_COMMAND_DECRYPT_BLOCK;

                WriteAndReadAes (aesMode,
                                 aesCommand,
                                 tempNoOfBytes,
                                 bytesIn,
                                 bytesOut,
                                 result);
            }

        }

    }

}

//-------------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------------
void AesCbcMac (OUTPUT_MODE     outputMode,
                KEY XDATA       *key,
                IV  XDATA       *iv,
                BYTE            noOfBytes,
                BYTE XDATA      *bytes,
                BYTE XDATA      *mac,
                BOOL XDATA      *result)
{
    BYTE XDATA bytesInOutput,
         XDATA tempNoOfBytes,
               i;

    tempNoOfBytes = noOfBytes;

    if (tempNoOfBytes > MAX_IN_AES)
        *result = FALSE;
    else
    {
        *result = TRUE;
        ZeroPadData ((BYTE *)&tempNoOfBytes, bytes);
        LoadKey (AES_MODE_CBC_MAC,
                 key,
                 result);

        if (*result)
        {
            LoadIv  (AES_MODE_CBC_MAC,
                     iv,
                     result);

            if (*result)
            {
                tempNoOfBytes = (BYTE)(tempNoOfBytes - SIXTEEN_BYTES_BLOCK);

                if (tempNoOfBytes > 0)
                    WriteToAes (AES_MODE_CBC_MAC,
                                AES_COMMAND_ENCRYPT_BLOCK,
                                tempNoOfBytes,
                                bytes,
        						result);

                WriteAndReadAes (AES_MODE_CBC,
                                 AES_COMMAND_ENCRYPT_BLOCK,
                                 SIXTEEN_BYTES_BLOCK,
                                 (BYTE *)&(bytes[tempNoOfBytes]),
                                 mac,
                                 result);

                if (*result)
                {
                    ConvertOutputModeToNoOfBytes (outputMode, (BYTE *)&bytesInOutput);

                    if (outputMode != OUTPUT_MODE_RESULT_128)
                    {
                        for ( i = (BYTE)(SIXTEEN_BYTES_BLOCK - bytesInOutput);
                              i < SIXTEEN_BYTES_BLOCK;
                              i++)
                            mac[i] = 0;
                    }
                }
            }
        }
    }
}

//-------------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------------
void AesCcmDecrypt (AES_CCM_DATA XDATA *aesCcmData,
                    U XDATA            *u,
                    BOOL XDATA         *result)
{
    BYTE           XDATA integrityLength,
                   XDATA messageLength;
    INTEGRITY_CODE XDATA t,
                   XDATA macTag;

    ConvertOutputModeToNoOfBytes (aesCcmData->outputMode, (BYTE *)&integrityLength);
    Aes (AES_MODE_CTR,
         ENCRYPTION_TYPE_DECRYPT,
         &aesCcmData->key,
         (IV *)&aesCcmData->a0,
         integrityLength,
         (BYTE *)u,
         (BYTE *)&t,
         result);

    if (*result)
    {
        messageLength = aesCcmData->ccmData.messageLength;
        ZeroPadData ((BYTE *)&messageLength, aesCcmData->ccmData.message);
        WriteAndReadAes (AES_MODE_CTR,
                         AES_COMMAND_DECRYPT_BLOCK,
                         messageLength,
                         aesCcmData->ccmData.message,
                         aesCcmData->ccmData.message,
                         result);

        if (*result)
        {
            PerformCcmCbcMac (aesCcmData,
                             (BYTE *)&macTag,
                              result);

            if (*result)
            {
                CompareTAndMacTag (integrityLength,
                                   (INTEGRITY_CODE *)&t,
                                   (INTEGRITY_CODE *)&macTag,
                                   result);
            }
        }
    }
}

//-------------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------------
void AesCcmEncrypt (AES_CCM_DATA XDATA *aesCcmData, BOOL XDATA *result)
{
    BYTE           XDATA noOfBytes,
                   XDATA noOfBytesInU,
                   XDATA messageLength;
    INTEGRITY_CODE XDATA t;
    U XDATA              u;

    PerformCcmCbcMac (aesCcmData,
                      (BYTE *)&t,
                      result);

    if (*result)
    {
        ConvertOutputModeToNoOfBytes (aesCcmData->outputMode, (BYTE *)&noOfBytes);
        noOfBytesInU = noOfBytes;
        Aes (AES_MODE_CTR,
             ENCRYPTION_TYPE_ENCRYPT,
             &aesCcmData->key,
             (IV *)&aesCcmData->a0,
             noOfBytes,
             (BYTE *)&t,
             (BYTE *)&u,
             result);

        if (*result)
        {
            messageLength = aesCcmData->ccmData.messageLength;
            ZeroPadData ((BYTE *)&messageLength, aesCcmData->ccmData.message);
            WriteAndReadAes (AES_MODE_CTR,
                             AES_COMMAND_ENCRYPT_BLOCK,
                             messageLength,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天堂一区二区在线免费观看| 亚洲欧美偷拍另类a∨色屁股| 99久久久精品| 免费在线观看不卡| 玉米视频成人免费看| 久久久亚洲精品石原莉奈| 欧美美女一区二区三区| 99久久伊人网影院| 懂色av一区二区在线播放| 久久精品国产99国产| 亚洲香蕉伊在人在线观| 亚洲天堂成人在线观看| 国产日韩高清在线| 精品捆绑美女sm三区| 日韩欧美国产一区在线观看| 在线视频你懂得一区| 91网站在线观看视频| 成人av网站在线| aa级大片欧美| 日本道色综合久久| 色8久久精品久久久久久蜜| 色香色香欲天天天影视综合网| 在线观看国产日韩| www.综合网.com| 色94色欧美sute亚洲线路一ni | 国产黄色精品视频| 成人手机在线视频| www.亚洲在线| 欧美视频三区在线播放| 91精品国产乱| 精品伦理精品一区| 亚洲欧洲国产日韩| 亚洲成人久久影院| 蜜桃久久久久久| 成人午夜免费视频| 日韩美女在线视频| 成人动漫视频在线| 26uuu精品一区二区在线观看| 欧美日韩国产另类不卡| 国产片一区二区三区| 蜜桃av噜噜一区| 在线播放一区二区三区| 一区二区成人在线视频| 成人av一区二区三区| 日本一区二区动态图| 国产寡妇亲子伦一区二区| 日韩免费观看2025年上映的电影| 国产精品久久久久久亚洲毛片| 亚洲永久免费视频| a4yy欧美一区二区三区| 久久久久久久久久看片| 日日夜夜免费精品视频| 91色乱码一区二区三区| 国产日韩欧美精品在线| 奇米色一区二区| 欧美日韩国产精选| 韩国欧美国产一区| 欧美三级午夜理伦三级中视频| 国产亚洲一区二区三区| 九九久久精品视频| 欧美一级日韩一级| 青青草97国产精品免费观看| 精品视频在线视频| 亚洲精品欧美二区三区中文字幕| 蜜桃视频一区二区| 亚洲精品在线三区| 国产成人午夜电影网| 久久精品日产第一区二区三区高清版| 国产一区二区三区最好精华液| 日韩欧美色综合| 美女在线观看视频一区二区| 日韩一区二区电影网| 狠狠色狠狠色综合| 欧美高清一级片在线观看| av动漫一区二区| 一区二区三区四区国产精品| 欧美日韩和欧美的一区二区| 日韩va亚洲va欧美va久久| 精品理论电影在线观看| 国产成人综合视频| 亚洲免费av高清| 在线成人免费视频| 国产白丝精品91爽爽久久| 国产精品天美传媒| 欧美精品 国产精品| 国产黄色成人av| 调教+趴+乳夹+国产+精品| 亚洲欧洲成人自拍| 欧美激情中文字幕一区二区| 日韩午夜电影在线观看| 欧美挠脚心视频网站| 欧美嫩在线观看| 欧美艳星brazzers| 国产精品99久| 美女视频黄久久| 亚洲国产欧美一区二区三区丁香婷| 精品国产人成亚洲区| 91免费看片在线观看| 国产精品伊人色| 日韩制服丝袜av| 午夜精品久久久久久久| 亚洲婷婷在线视频| 国产精品婷婷午夜在线观看| 日韩欧美三级在线| 精品日韩成人av| 亚洲欧美偷拍另类a∨色屁股| 日韩专区在线视频| 日本欧美韩国一区三区| 国内精品国产成人| 中文字幕一区二区三区在线播放| 精品久久免费看| 欧美国产禁国产网站cc| 国产精品福利影院| 一级日本不卡的影视| 亚洲成av人片一区二区| 精油按摩中文字幕久久| 99久久精品国产导航| 欧美三级乱人伦电影| 精品国内二区三区| 777精品伊人久久久久大香线蕉| 国产69精品久久777的优势| 亚洲午夜免费视频| 免费观看一级欧美片| 亚洲女女做受ⅹxx高潮| 欧美xxxxx牲另类人与| 色综合天天天天做夜夜夜夜做| 蜜臀a∨国产成人精品| 亚洲不卡在线观看| 狠狠色狠狠色综合系列| 91麻豆精品国产91久久久久| 91麻豆精品国产91久久久资源速度 | 91免费版在线看| 亚洲成a人片在线观看中文| 日韩欧美国产电影| 国产宾馆实践打屁股91| 欧美亚洲国产一区二区三区 | 亚洲精品成人在线| 国产精品免费久久| 国产精品视频一二三区| 国产女同互慰高潮91漫画| 精品国产91洋老外米糕| 久久伊人蜜桃av一区二区| 日韩精品一区在线| 欧美日韩1区2区| 91精品国产综合久久蜜臀| 精品视频在线视频| 欧美一区二区精品在线| 日韩视频在线永久播放| 91精品蜜臀在线一区尤物| 日韩无一区二区| 精品国一区二区三区| 久久久久国产精品麻豆 | 91国在线观看| 91美女片黄在线| 国产日产欧美一区| 婷婷夜色潮精品综合在线| 激情都市一区二区| 99久久综合国产精品| 午夜精品久久久久影视| 午夜亚洲福利老司机| 久久精品国产秦先生| 成人综合婷婷国产精品久久| 国产性做久久久久久| 91蝌蚪国产九色| 亚洲一区二区3| 欧美性欧美巨大黑白大战| 国产伦精品一区二区三区免费 | 欧美色倩网站大全免费| 国产美女主播视频一区| 欧美无人高清视频在线观看| 欧美二区三区的天堂| 久久日韩粉嫩一区二区三区| 中文字幕日韩一区二区| 日韩电影一区二区三区四区| 国产精品1024| 91久久线看在观草草青青| 精品美女一区二区三区| 国产精品国产a| 欧美a级理论片| 欧美日韩另类一区| 美女在线一区二区| 亚洲区小说区图片区qvod| 日韩欧美一区二区视频| 成人午夜视频免费看| 全国精品久久少妇| 亚洲地区一二三色| 亚洲精品美国一| 国产精品高潮呻吟| 国产日韩欧美精品在线| 2023国产精品| 日韩色视频在线观看| 欧美精品tushy高清| 欧美日韩高清一区二区三区| 91成人在线精品| 91蝌蚪国产九色| 99久久精品免费| 成人黄色av网站在线| 国产91在线|亚洲| 粉嫩嫩av羞羞动漫久久久| 国产一区二区伦理片|