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

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

?? aes.c

?? IAR5.2下 AT91SAM9260 ARM 對 MCP2515 控制源化碼
?? C
字號:
/* ----------------------------------------------------------------------------
 *         ATMEL Microcontroller Software Support 
 * ----------------------------------------------------------------------------
 * Copyright (c) 2008, Atmel Corporation
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * - Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the disclaimer below.
 *
 * Atmel's name may not be used to endorse or promote products derived from
 * this software without specific prior written permission.
 *
 * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
 * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * ----------------------------------------------------------------------------
 */

#ifndef trace_LEVEL
    #define trace_LEVEL     1
#endif

//------------------------------------------------------------------------------
//         Headers
//------------------------------------------------------------------------------

#include "aes.h"
#include <board.h>
#include <utility/trace.h>
#include <utility/assert.h>

//------------------------------------------------------------------------------
//         Global functions
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
/// Configures the AES peripheral to encrypt/decrypt, start mode (manual, auto,
/// PDC) and operating mode (ECB, CBC, OFB, CFB, CTR).
/// \param cipher  Indicates if the peripheral should encrypt or decrypt data.
/// \param smode  Start mode.
/// \param opmode  Operating mode.
//------------------------------------------------------------------------------
void AES_Configure(
    unsigned char cipher,
    unsigned int smode,
    unsigned int opmode)
{
    trace_LOG(trace_DEBUG, "-D- AES_Configure()\n\r");
    SANITY_CHECK((cipher & 0xFFFFFFFE) == 0);
    SANITY_CHECK((smode & 0xFFFFFCFF) == 0);
    SANITY_CHECK((opmode & 0xFFFF8FFF) == 0);

    // Reset the peripheral first
    AT91C_BASE_AES->AES_CR = AT91C_AES_SWRST;

    // Configure mode register
    AT91C_BASE_AES->AES_MR = cipher | smode | opmode;
}

//------------------------------------------------------------------------------
/// Sets the key used by the AES algorithm to cipher the plain text or
/// decipher the encrypted text.
/// \param pKey  Pointer to a 16-bytes cipher key.
//------------------------------------------------------------------------------
void AES_SetKey(const unsigned int *pKey)
{
    trace_LOG(trace_DEBUG, "-D- AES_SetKey()\n\r");
    SANITY_CHECK(pKey);

    AT91C_BASE_AES->AES_KEYWxR[0] = pKey[0];
    AT91C_BASE_AES->AES_KEYWxR[1] = pKey[1];
    AT91C_BASE_AES->AES_KEYWxR[2] = pKey[2];
    AT91C_BASE_AES->AES_KEYWxR[3] = pKey[3];
}

//------------------------------------------------------------------------------
/// Sets the initialization vector that is used to encrypt the plain text or
/// decrypt the cipher text in chained block modes (CBC, CFB, OFB & CTR).
/// \param pVector  Pointer to a 16-bytes initialization vector.
//------------------------------------------------------------------------------
void AES_SetVector(const unsigned int *pVector)
{
    trace_LOG(trace_DEBUG, "-D- AES_SetVector()\n\r");
    SANITY_CHECK(pVector);

    AT91C_BASE_AES->AES_IVxR[0] = pVector[0];
    AT91C_BASE_AES->AES_IVxR[1] = pVector[1];
    AT91C_BASE_AES->AES_IVxR[2] = pVector[2];
    AT91C_BASE_AES->AES_IVxR[3] = pVector[3];
}

//------------------------------------------------------------------------------
/// Sets the input data of the AES algorithm (i.e. plain text in cipher mode,
/// ciphered text in decipher mode). If auto mode is active, the encryption is
/// started automatically after writing the last word.
/// \param pData  Pointer to the 16-bytes data to cipher/decipher.
//------------------------------------------------------------------------------
void AES_SetInputData(const unsigned int *pData)
{
    trace_LOG(trace_DEBUG, "-D- AES_SetInputData()\n\r");
    SANITY_CHECK(pData);

    AT91C_BASE_AES->AES_IDATAxR[0] = pData[0];
    AT91C_BASE_AES->AES_IDATAxR[1] = pData[1];
    AT91C_BASE_AES->AES_IDATAxR[2] = pData[2];
    AT91C_BASE_AES->AES_IDATAxR[3] = pData[3];
}

//------------------------------------------------------------------------------
/// Stores the result of the last AES operation (encrypt/decrypt) in the
/// provided buffer.
/// \param pData  Pointer to a 16-bytes buffer.
//------------------------------------------------------------------------------
void AES_GetOutputData(unsigned int *pData)
{
    trace_LOG(trace_DEBUG, "-D- AES_GetOutputData()\n\r");
    SANITY_CHECK(pData);

    pData[0] = AT91C_BASE_AES->AES_ODATAxR[0];
    pData[1] = AT91C_BASE_AES->AES_ODATAxR[1];
    pData[2] = AT91C_BASE_AES->AES_ODATAxR[2];
    pData[3] = AT91C_BASE_AES->AES_ODATAxR[3];
}

//------------------------------------------------------------------------------
/// Sets the input buffer to use when in PDC mode.
/// \param pInput  Pointer to the input buffer.
//------------------------------------------------------------------------------
void AES_SetInputBuffer(const unsigned int *pInput)
{
    trace_LOG(trace_DEBUG, "-D- AES_SetInputBuffer()\n\r");
    SANITY_CHECK(pInput);

    AT91C_BASE_AES->AES_TPR = (unsigned int) pInput;
    AT91C_BASE_AES->AES_TCR = 4;
}

//------------------------------------------------------------------------------
/// Sets the output buffer to use when in PDC mode.
/// \param pOutput  Pointer to the output buffer.
//------------------------------------------------------------------------------
void AES_SetOutputBuffer(unsigned int *pOutput)
{
    trace_LOG(trace_DEBUG, "-D- AES_SetOutputBuffer()\n\r");
    SANITY_CHECK(pOutput);

    AT91C_BASE_AES->AES_RPR = (unsigned int) pOutput;
    AT91C_BASE_AES->AES_RCR = 4;
}

//------------------------------------------------------------------------------
/// Starts the encryption/decryption process when in manual or PDC mode. In
/// manual mode, the key and input data must have been entered using
/// AES_SetKey() and AES_SetInputData(). In PDC mode, the key, input & output
/// buffer must have been set using AES_SetKey(), AES_SetInputBuffer() and
/// AES_SetOutputBuffer().
//------------------------------------------------------------------------------
void AES_Start(void)
{
    trace_LOG(trace_DEBUG, "AES_Start()\n\r");
    SANITY_CHECK(((AT91C_BASE_AES->AES_MR & AT91C_AES_SMOD) == AT91C_AES_SMOD_MANUAL)
                 || ((AT91C_BASE_AES->AES_MR & AT91C_AES_SMOD) == AT91C_AES_SMOD_PDC));

    // Manual mode
    if ((AT91C_BASE_AES->AES_MR & AT91C_AES_SMOD) == AT91C_AES_SMOD_MANUAL) {

        AT91C_BASE_AES->AES_CR = AT91C_AES_START;
    }
    // PDC
    else {

        AT91C_BASE_AES->AES_PTCR = AT91C_PDC_RXTEN | AT91C_PDC_TXTEN;
    }
}

//------------------------------------------------------------------------------
/// Returns the current value of the AES interrupt status register.
//------------------------------------------------------------------------------
unsigned int AES_GetStatus(void)
{
    trace_LOG(trace_DEBUG, "-D- AES_GetStatus()\n\r");

    return AT91C_BASE_AES->AES_ISR;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成在线观看| 国产精品三级久久久久三级| 亚洲自拍偷拍综合| 欧洲亚洲精品在线| 午夜精品福利视频网站| 欧美一级黄色片| 麻豆国产欧美日韩综合精品二区 | 国产a区久久久| 国产精品视频看| 欧美在线短视频| 蜜桃av一区二区在线观看| 日韩精品中午字幕| 成人一区二区三区中文字幕| 亚洲欧美成aⅴ人在线观看| 在线免费观看日本欧美| 日韩黄色免费网站| 日本一区二区成人在线| 日本精品视频一区二区| 卡一卡二国产精品| 国产精品午夜春色av| 欧美视频在线观看一区| 麻豆精品一二三| 自拍偷在线精品自拍偷无码专区| 欧美日韩亚州综合| 国产精品资源在线看| 亚洲欧美日韩国产手机在线| 日韩精品最新网址| 日本韩国欧美在线| 久久不见久久见免费视频7| 亚洲人成网站影音先锋播放| 欧美一区二区人人喊爽| eeuss鲁片一区二区三区在线观看| 亚洲电影视频在线| 欧美激情一区二区三区四区| 7777精品伊人久久久大香线蕉超级流畅| 国产在线乱码一区二区三区| 亚洲精品日韩一| 国产日韩一级二级三级| 欧美福利视频导航| 91网页版在线| 国产在线播放一区| 图片区小说区国产精品视频| 国产精品美女久久久久久久| 日韩一区二区三区视频在线| 91麻豆免费看片| 国产一本一道久久香蕉| 日韩影院免费视频| 亚洲欧美日韩中文播放| 久久精品一级爱片| 91麻豆精品国产91久久久使用方法| 99在线热播精品免费| 国产剧情一区二区| 日韩精品电影一区亚洲| 一区二区日韩电影| 亚洲欧洲成人自拍| 久久久综合精品| 日韩久久免费av| 欧美一区二区三区视频在线| 欧美三级电影一区| 在线视频一区二区三| 在线视频一区二区三区| 不卡的av电影在线观看| 国产风韵犹存在线视精品| 激情图片小说一区| 久久国产尿小便嘘嘘尿| 首页欧美精品中文字幕| 亚洲v中文字幕| 亚洲线精品一区二区三区八戒| 国产精品你懂的| 国产蜜臀97一区二区三区| 亚洲精品在线三区| 精品国产一二三| 欧美成人女星排行榜| 日韩视频免费观看高清完整版 | 亚洲国产成人tv| 一级中文字幕一区二区| 亚洲黄色尤物视频| 亚洲精品免费在线播放| 一个色妞综合视频在线观看| 亚洲乱码日产精品bd| 亚洲精品成人悠悠色影视| 亚洲精品久久7777| 亚洲一二三四区| 亚洲国产成人av网| 日韩国产精品91| 精品在线播放免费| 精品亚洲免费视频| 国产福利一区在线观看| 成人激情开心网| 91国偷自产一区二区三区观看 | 视频一区视频二区中文字幕| 日韩精品久久理论片| 黑人巨大精品欧美一区| 国产suv精品一区二区883| 91在线视频免费观看| 欧美三级欧美一级| 精品乱人伦小说| 一区在线中文字幕| 亚洲一二三四区| 久久不见久久见免费视频7| 国产成人a级片| 欧美在线视频全部完| 欧美一区二区三级| 国产精品看片你懂得| 亚洲亚洲人成综合网络| 日本最新不卡在线| 风间由美一区二区三区在线观看 | 国产乱码精品一品二品| 91香蕉国产在线观看软件| 欧美日韩精品欧美日韩精品一综合| 欧美一区二区三区视频在线| 国产亚洲午夜高清国产拍精品| 亚洲少妇最新在线视频| 日本一区中文字幕| 国产99久久久国产精品潘金| 色婷婷av一区| 亚洲精品一区二区三区四区高清| 亚洲视频在线观看三级| 奇米精品一区二区三区在线观看一| 国产精品一区在线| 一本大道久久a久久综合| 日韩欧美国产电影| 亚洲裸体在线观看| 黑人精品欧美一区二区蜜桃 | 欧美视频三区在线播放| 久久蜜桃av一区二区天堂| 亚洲一区二区av电影| 国产一区二区视频在线播放| 欧美午夜精品久久久久久超碰 | 亚洲男人电影天堂| 国产一区二区三区四区在线观看| 91国产成人在线| 国产精品少妇自拍| 激情综合色丁香一区二区| 色先锋久久av资源部| 国产视频亚洲色图| 日本成人在线不卡视频| 色天使色偷偷av一区二区| 国产天堂亚洲国产碰碰| 久久精品久久99精品久久| 欧美日韩在线直播| 亚洲免费毛片网站| 国产乱码精品一区二区三区av| 日韩一区二区三区视频在线观看| 一区二区高清在线| 99久久99久久久精品齐齐| 国产三级精品三级在线专区| 美腿丝袜亚洲综合| 制服丝袜亚洲精品中文字幕| 一区二区欧美在线观看| 99精品国产一区二区三区不卡| 久久精品欧美一区二区三区不卡| 日韩精品国产精品| 3d动漫精品啪啪| 天天综合天天综合色| 欧美这里有精品| 一区二区三区免费网站| 97国产一区二区| 亚洲男同1069视频| 91福利视频在线| 亚洲综合免费观看高清在线观看| 97久久超碰国产精品电影| 成人欧美一区二区三区在线播放| 成人一区二区视频| 国产蜜臀av在线一区二区三区| 韩国av一区二区三区| 精品日韩成人av| 紧缚捆绑精品一区二区| 26uuu精品一区二区在线观看| 美腿丝袜亚洲综合| 精品播放一区二区| 国产在线观看一区二区| 久久久久一区二区三区四区| 岛国av在线一区| **欧美大码日韩| 色婷婷综合激情| 亚洲电影第三页| 欧美高清你懂得| 麻豆freexxxx性91精品| 337p日本欧洲亚洲大胆精品| 国产不卡在线一区| 国产精品国产三级国产三级人妇 | 久久精品久久久精品美女| 精品国产免费视频| 丰满放荡岳乱妇91ww| 中文字幕一区二区三| 日本韩国视频一区二区| 日韩精品亚洲专区| 欧美va亚洲va| 波多野结衣亚洲| 午夜在线电影亚洲一区| 日韩欧美一卡二卡| 国产suv一区二区三区88区| 亚洲欧美日韩小说| 91精品婷婷国产综合久久性色| 国精产品一区一区三区mba视频 | 色网站国产精品| 免费不卡在线视频| 欧美激情一区二区三区不卡 | 国产精品激情偷乱一区二区∴|