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

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

?? mac_aessecurity.c

?? zigbee location examples
?? C
?? 第 1 頁 / 共 3 頁
字號:

}

//-------------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------------
static void CompareTAndMacTag (BYTE                     integrityLength,
                               INTEGRITY_CODE XDATA     *t,
                               INTEGRITY_CODE XDATA     *macTag,
                               BOOL XDATA               *result)
{
    BYTE i,
	     XDATA *tempT,
		 XDATA *tempMacTag;

    *result = TRUE;
	tempT = (BYTE *)t;
	tempMacTag = (BYTE *)macTag;

    for ( i = 0; i < integrityLength; i++)
    {
        if (tempMacTag[i] != tempT[i])
            *result = FALSE;
    }
}

//-------------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------------
static void ConvertOutputModeToNoOfBytes (OUTPUT_MODE outputMode, BYTE XDATA *bytesInOutput)
{
    switch (outputMode)
    {
        case OUTPUT_MODE_RESULT_128:
            *bytesInOutput = RESULT_128;
            break;

        case OUTPUT_MODE_RESULT_64:
            *bytesInOutput = RESULT_64;
            break;

        case OUTPUT_MODE_RESULT_32:
            *bytesInOutput = RESULT_32;
            break;

       case OUTPUT_MODE_RESULT_0:
       default:
            *bytesInOutput = 0;
            break;

    }
}

//-------------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------------
void FetchAesFinished (BOOL XDATA *aesFinished)
{
    *aesFinished = currentAesFinished;
}

//-------------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------------
void FetchAesTransferCount (BYTE XDATA *aesTransferCount)
{
    *aesTransferCount = currentAesTransferCount;
}

//-------------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------------
static void LoadIv (AES_MODE   aesMode,
                    IV XDATA   *iv,
                    BOOL XDATA *result)
{
    WriteToAes (aesMode,
                AES_COMMAND_LOAD_IV,
                IV_LENGTH,
                (BYTE *)iv,
                result);
}

//-------------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------------
static void LoadKey (AES_MODE   aesMode,
                     KEY XDATA  *key,
                     BOOL XDATA *result)
{
    WriteToAes (aesMode,
                AES_COMMAND_LOAD_KEY,
                KEY_LENGTH,
                (BYTE *)key,
                result);
}

//-------------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------------
static void PerformCcmCbcMac (AES_CCM_DATA XDATA *aesCcmData,
                              BYTE XDATA         *mac,
                              BOOL XDATA         *result)
{
    BYTE XDATA           *buffer,
         XDATA           noOfBytes;
    MAC_TX_PACKET XDATA  *macTxBuffer;

    macTxBuffer = mtxpReservePacket();

    if (macTxBuffer->occupied != NO_PACKET)
    {
        *result = TRUE;
        buffer = (BYTE *)macTxBuffer;
        BuildAuthenticationData (&aesCcmData->b0,
                                 aesCcmData->ccmData.authenticationLength,
                                 aesCcmData->ccmData.authenticationData,
                                 &noOfBytes,
                                 buffer);
        DmaMemcpy(&buffer[noOfBytes], aesCcmData->ccmData.message, aesCcmData->ccmData.messageLength);
        noOfBytes = (BYTE)(noOfBytes + aesCcmData->ccmData.messageLength);
        ZeroPadData (&noOfBytes, buffer);
        AesCbcMac (aesCcmData->outputMode,
                   &aesCcmData->key,
                   &iv0,
                   noOfBytes,
                   buffer,
                   mac,
                   result);
        mtxpReleasePacket (macTxBuffer);
    }
    else
        *result = FALSE;

}

//-------------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------------
void SaveAesFinished (BOOL aesFinished)
{
    currentAesFinished = aesFinished;
}

//-------------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------------
void SaveAesTransferCount (BYTE aesTransferCount)
{
    currentAesTransferCount = aesTransferCount;
}

//-------------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------------
static void SetupAesRead (BYTE         noOfBytes,
                          BYTE XDATA   *bytes)
{
    WORD                            address;
    DMA_CHANNEL_CONFIGURATION XDATA *dmaChannelConfiguration;

    FetchDmaChannelConfiguration (DMA_FROM_AES_CHANNEL_NO, &dmaChannelConfiguration);

    address = (WORD)bytes;
    dmaChannelConfiguration->destMsb = (BYTE)(address >> 8);
    dmaChannelConfiguration->destLsb = (BYTE)address;
    dmaChannelConfiguration->lenLsb = noOfBytes;

}

//-------------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------------
static void SetupAesWrite (BYTE         noOfBytes,
                           BYTE XDATA   *bytes)
{
    WORD                            address;
    DMA_CHANNEL_CONFIGURATION XDATA *dmaChannelConfiguration;

    FetchDmaChannelConfiguration (DMA_TO_AES_CHANNEL_NO, &dmaChannelConfiguration);

    address = (WORD)bytes;
    dmaChannelConfiguration->srcMsb = (BYTE)(address >> 8);
    dmaChannelConfiguration->srcLsb = (BYTE)address;
    dmaChannelConfiguration->lenLsb = noOfBytes;

}

//-------------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------------
static void StartAes (AES_MODE  aesMode, AES_COMMAND    aesCommand)
{
    BYTE    aesCsrCommand;

    aesCsrCommand = (BYTE)(aesMode << AES_MODE_POSITION);
    aesCsrCommand |= (aesCommand << AES_COMMAND_POSITION);
    aesCsrCommand |= AES_START_COMMAND;

    ENCCS = aesCsrCommand;
}

//-------------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------------
static void WriteAndReadAes (AES_MODE        aesMode,
                             AES_COMMAND     aesCommand,
                             BYTE            noOfBytes,
                             BYTE XDATA      *bytesIn,
                             BYTE XDATA      *bytesOut,
                             BOOL XDATA      *result)
{
    BYTE XDATA aesFinished,
               i;

    if (noOfBytes > 0)
    {
        SaveAesTransferCount (noOfBytes);
        SaveAesFinished (FALSE);
        SetupAesWrite (noOfBytes, bytesIn);
        StartDma (DMA_TO_AES_CHANNEL_NO);
        SetupAesRead (noOfBytes, bytesOut);
        StartDma (DMA_FROM_AES_CHANNEL_NO);
        StartAes (aesMode, aesCommand);

        for ( i = 0; i < AES_WAIT_TIME; i++)
        {
            FetchAesFinished (&aesFinished);

            if ( aesFinished == TRUE)
                break;

        }

        if (i == AES_WAIT_TIME)
            *result = FALSE;
        else
            *result = TRUE;


    }

}

//-------------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------------
static void WriteToAes (AES_MODE        aesMode,
                        AES_COMMAND     aesCommand,
                        BYTE            noOfBytes,
                        BYTE XDATA      *bytes,
                        BOOL XDATA      *result)
{
    BYTE XDATA aesFinished,
               i;

    if (noOfBytes > 0)
    {
        SaveAesTransferCount (noOfBytes);
        SaveAesFinished (FALSE);
        SetupAesWrite (noOfBytes, bytes);
        StartDma (DMA_TO_AES_CHANNEL_NO);
        StartAes (aesMode, aesCommand);

        for ( i = 0; i < AES_WAIT_TIME; i++)
        {
            FetchAesFinished (&aesFinished);

            if ( aesFinished == TRUE)
                break;

        }

        if (i == AES_WAIT_TIME)
            *result = FALSE;
        else
            *result = TRUE;

    }

}

//-------------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------------
static void ZeroPadData (BYTE XDATA *noOfBytes, BYTE XDATA *bytesIn)
{
    BYTE i,
         noOfPaddedData,
         noOfRemaining;

    noOfRemaining = (BYTE)(*noOfBytes & REMAINING_FOUR_BITS);

    if (noOfRemaining > 0)
    {
        noOfPaddedData = (BYTE)(SIXTEEN_BYTES_BLOCK - noOfRemaining);
        for ( i = *noOfBytes; i < (BYTE)(*noOfBytes + noOfPaddedData); i++)
            bytesIn[i] = 0;
        *noOfBytes = (BYTE)(*noOfBytes + noOfPaddedData);
    }
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美绝品在线观看成人午夜影视| 毛片av一区二区三区| 欧美成人三级电影在线| 精品婷婷伊人一区三区三| 91亚洲精品久久久蜜桃网站| 99在线精品一区二区三区| 色哟哟一区二区三区| 91丨九色porny丨蝌蚪| 欧洲精品视频在线观看| 欧美日韩精品专区| 26uuu久久天堂性欧美| 久久久久88色偷偷免费| 国产精品女人毛片| 亚洲欧洲av在线| 亚洲一区二区免费视频| 视频一区视频二区中文字幕| 蜜桃视频第一区免费观看| 国产原创一区二区| 99久久精品免费看国产| 欧美羞羞免费网站| 日韩一区二区在线播放| 一区二区三区在线高清| 性做久久久久久| 国产乱一区二区| thepron国产精品| 色久优优欧美色久优优| 欧美日韩免费高清一区色橹橹 | 日韩一级免费一区| 日韩精品一二三| 亚洲欧美怡红院| 黄页网站大全一区二区| 久久精品视频在线看| 国产精品乱人伦| 亚洲大片在线观看| 国内精品久久久久影院一蜜桃| 国产在线国偷精品产拍免费yy| 国产a精品视频| 欧美欧美欧美欧美首页| 久久精品一区二区三区av| 亚洲一区二区免费视频| 国产风韵犹存在线视精品| 欧美日韩国产片| 中文字幕精品—区二区四季| 日日夜夜一区二区| 91美女在线视频| 一区二区三区四区高清精品免费观看 | 欧美在线999| 久久久久国色av免费看影院| 无吗不卡中文字幕| 91在线视频官网| 久久久久久久久久美女| 青青草国产成人99久久| 欧美午夜视频网站| 国产精品毛片a∨一区二区三区| 不卡在线观看av| ww久久中文字幕| 婷婷久久综合九色综合伊人色| 99久久精品99国产精品 | 国产一区在线观看视频| 欧美日韩国产乱码电影| 一区二区在线观看不卡| 成人av动漫在线| 欧美—级在线免费片| 国模套图日韩精品一区二区| 日韩一级片网址| 日本在线不卡视频| 国产精品你懂的在线| 国产成人在线观看免费网站| 欧美精品一区二区三区蜜桃| 美女脱光内衣内裤视频久久影院| 91精品久久久久久蜜臀| 日韩av网站免费在线| 91精品国产色综合久久| 免费在线观看不卡| 精品国内二区三区| 国产精品中文字幕欧美| 中文成人av在线| 91欧美一区二区| 国产成人av电影在线播放| 欧美精品一区二区三区高清aⅴ | 在线影院国内精品| 亚洲精品伦理在线| 欧美午夜精品久久久久久超碰| 亚洲国产精品自拍| 欧美一区二区三区视频在线观看| 秋霞午夜av一区二区三区| 亚洲日本韩国一区| 在线视频一区二区免费| 蜜桃传媒麻豆第一区在线观看| 欧美成人国产一区二区| 国产成人综合亚洲网站| 亚洲视频中文字幕| 欧美乱熟臀69xxxxxx| 精品在线视频一区| 国产精品传媒在线| 欧美久久婷婷综合色| 狠狠色丁香婷婷综合| 亚洲色图视频网站| 欧美一区二区三区免费| 在线不卡中文字幕| 国精产品一区一区三区mba视频| 国产欧美日韩视频一区二区| 91在线观看视频| 日韩精品一二三区| 欧美韩国日本一区| 欧美色老头old∨ideo| 国内精品视频一区二区三区八戒 | 欧美三级乱人伦电影| 蜜臀av一级做a爰片久久| 日本一区二区三区免费乱视频| 色一情一伦一子一伦一区| 久久精品国产久精国产爱| 男女激情视频一区| 综合分类小说区另类春色亚洲小说欧美| 欧美视频一区在线观看| 高清不卡在线观看av| 天天综合网天天综合色| 国产农村妇女毛片精品久久麻豆| 欧美综合欧美视频| 成人丝袜视频网| 理论电影国产精品| 亚洲国产你懂的| 亚洲天堂免费在线观看视频| 久久综合成人精品亚洲另类欧美| 欧美日韩一区二区三区视频| 成人综合激情网| 色婷婷av一区二区三区软件| 国产成人精品免费在线| 日本三级亚洲精品| 91久久国产最好的精华液| 美女爽到高潮91| 欧美日本一区二区三区四区| 久久99久国产精品黄毛片色诱| 日韩理论在线观看| 国产日产亚洲精品系列| 欧美一级免费大片| 色妞www精品视频| 成人sese在线| 丁香婷婷综合网| 色综合久久九月婷婷色综合| 国产成人福利片| 国产精品一二三四区| 精品一区二区综合| 久久99国产精品尤物| 日韩成人一级片| 日日夜夜精品视频天天综合网| 亚洲大片在线观看| 午夜精品视频一区| 天堂影院一区二区| 蜜桃视频一区二区三区在线观看| 午夜a成v人精品| 日韩高清在线电影| 男女男精品网站| 激情综合色综合久久综合| 国产盗摄一区二区三区| 成人黄色在线视频| 91丝袜高跟美女视频| 色欧美片视频在线观看| 91久久奴性调教| 欧美剧情电影在线观看完整版免费励志电影 | 精品视频在线看| 久久久综合激的五月天| 婷婷国产v国产偷v亚洲高清| 久久久99精品免费观看不卡| 日韩欧美一级二级| 亚洲最新视频在线观看| 久久精品国产免费| 在线观看一区不卡| 欧美日韩卡一卡二| 日韩欧美专区在线| 国产日本亚洲高清| 亚洲精品老司机| 美女免费视频一区| 成人av在线网站| 欧美另类高清zo欧美| 精品少妇一区二区三区| 中文字幕在线不卡一区| 亚洲午夜激情网页| 国产美女一区二区三区| yourporn久久国产精品| 欧美日韩一卡二卡三卡| 国产亚洲美州欧州综合国| 亚洲免费观看高清完整版在线| 国产一区二区电影| 一本色道亚洲精品aⅴ| 日韩精品一区在线| 亚洲欧洲日韩在线| 久久精品国产第一区二区三区| 成人午夜电影网站| 91精品国产综合久久精品| 国产精品久久久久一区二区三区共| 亚洲国产视频一区二区| 国产成人一级电影| 欧美一级欧美三级| 一级日本不卡的影视| 国产精品一区二区在线播放 | 色呦呦网站一区| 欧美www视频| 亚洲乱码国产乱码精品精的特点| 韩国精品一区二区|