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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? aes_hardware.c

?? 在BOOTLOADR中增加當(dāng)今最好AES加密技術(shù),可用于客戶遠程更新應(yīng)用程式
?? C
字號:
//------------------------------------------------------------------------------
// File:          aes_hardware.c
// Function:      Firmware encryption using hardware acceleration
// Supported chip(s):
//    - AT91SAM7XC128
//    - AT91SAM7XC256
// Supported toolchain(s):
//    - IAR Embedded Workbench
// Date created:  07 June 2006
// Created by:    JJo
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
// Includes
//------------------------------------------------------------------------------

#include "aes_hardware.h"

#if defined(USE_ENCRYPTION) && defined(ENCRYPTION_AES_HARD)

//------------------------------------------------------------------------------
// Inline functions
//------------------------------------------------------------------------------

/**
 * Name:     ASCII2Hex
 * Purpose:  Converts an ASCII value to an hexadecimal one
 * Input(s):
 *  - ASCII string
 *  - Buffer to store integer value
 *  - Length of string
 */
inline void ASCII2Hex(const unsigned char * ascii, unsigned char * binary, unsigned int length) {
  
  for (unsigned int i=0; i < length; i++) {

    if (ascii[i*2] >= 'A') {

      binary[i] = ascii[i*2] - 'A' + 10;
    }
    else {

      binary[i] = ascii[i*2] - '0';
    }

    binary[i] <<= 4;
  
    if (ascii[i*2+1] >= 'A') {

      binary[i] += ascii[i*2+1] - 'A' + 10;
    }
    else {

      binary[i] += ascii[i*2+1] - '0';
    }
  }
}

//------------------------------------------------------------------------------
// Functions
//------------------------------------------------------------------------------

/**
 * Name:     aes_hard_init
 * Purpose:  Initializes the AES peripheral
 */
void aes_hard_init(void) {
  
  // Local variables
  unsigned char key[16];
  
#if defined(ENCRYPTION_CTR) || defined(ENCRYPTION_CBC)
  unsigned char IV[16];
#endif
  
  debug_printf("AES/HARD: Initializing ...\n");
  
  // Activate peripheral clock
  AT91F_AES_CfgPMC();
  
  // Load mode
#if defined(ENCRYPTION_ECB)
  AT91F_AES_CfgModeReg(AT91C_BASE_AES, AT91C_AES_SMOD_PDC | AT91C_AES_OPMOD_ECB);
#elif defined(ENCRYPTION_CBC)
  AT91F_AES_CfgModeReg(AT91C_BASE_AES, AT91C_AES_SMOD_PDC | AT91C_AES_OPMOD_CBC);
#elif defined(ENCRYPTION_CTR)
  AT91F_AES_CfgModeReg(AT91C_BASE_AES, AT91C_AES_SMOD_PDC | AT91C_AES_OPMOD_CTR);
#endif
  
  // Convert and load key
  ASCII2Hex(ENCRYPTION_KEY, key, ENCRYPTION_KEY_LENGTH);
  
  AT91C_BASE_AES->AES_KEYWxR[0] = ((int *) key)[0];
  AT91C_BASE_AES->AES_KEYWxR[1] = ((int *) key)[1];
  AT91C_BASE_AES->AES_KEYWxR[2] = ((int *) key)[2];
  AT91C_BASE_AES->AES_KEYWxR[3] = ((int *) key)[3];
  
  // Convert and load IV
#if defined(ENCRYPTION_CTR) || defined(ENCRYPTION_CBC)
  ASCII2Hex(ENCRYPTION_IV, IV, ENCRYPTION_BLOCK_LENGTH);
    
  AT91C_BASE_AES->AES_IVxR[0] = ((int *) IV)[0];
  AT91C_BASE_AES->AES_IVxR[1] = ((int *) IV)[1];
  AT91C_BASE_AES->AES_IVxR[2] = ((int *) IV)[2];
  AT91C_BASE_AES->AES_IVxR[3] = ((int *) IV)[3];
#endif

  debug_printf("AES/HARD: Initialization done.\n");
}

/**
 * Name:     aes_hard_cleanup
 * Purpose:  Cleans up the AES peripheral
 */
void aes_hard_cleanup(void) {
  
  debug_printf("AES/HARD: Cleaning up ...\n");
  
  AT91F_AES_CfgModeReg(AT91C_BASE_AES, 0);
  AT91F_PMC_DisablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_AES);
  
  // Close PDC
  AT91F_PDC_Close(AT91C_BASE_PDC_AES);

  debug_printf("AES/HARD: Cleanup done.\n");
}

/**
 * Name:     aes_hard_decrypt
 * Purpose:  Decrypts a variable-length cipher text
 * Input(s):
 *  - Cipher text to decrypt
 *  - Buffer to store plain text
 *  - Length of cipher text (in bytes)
 */
int aes_hard_decrypt(const unsigned char * cipherText,
                     unsigned char * plainText,
                     unsigned int length) {
  
  // Check parameters
  if ((cipherText == NULL) || (plainText == NULL)) {
    
    return ERROR;
  }
  
  // Set source and destination buffers in PDC
  AT91C_BASE_PDC_AES->PDC_TPR = (unsigned int) cipherText;
  AT91C_BASE_PDC_AES->PDC_RPR = (unsigned int) plainText;

  AT91C_BASE_PDC_AES->PDC_TCR = length >> 2;
  AT91C_BASE_PDC_AES->PDC_RCR = length >> 2;
  
  // Start decryption and wait
  AT91C_BASE_PDC_AES->PDC_PTCR = AT91C_PDC_RXTEN | AT91C_PDC_TXTEN;
  while ((AT91F_AES_GetStatus(AT91C_BASE_AES) & AT91C_AES_ENDRX) == 0);
  
  return OK;
}

#endif // defined(USE_ENCRYPTION) && defined(ENCRYPTION_AES_HARD)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美综合天天夜夜久久| 亚洲色图制服丝袜| 丁香婷婷综合色啪| 日韩伦理av电影| 欧美日韩一区国产| 久久国产精品99久久人人澡| 国产亚洲短视频| 91在线精品一区二区三区| 亚洲一区二区三区四区五区中文| 亚洲图片欧美色图| 精品视频在线免费看| 免费看日韩a级影片| 久久先锋影音av鲁色资源网| 99久久99久久精品国产片果冻| 久久久www成人免费毛片麻豆 | 国产精品系列在线| 91在线精品一区二区| 天堂久久久久va久久久久| 精品国产人成亚洲区| 不卡av在线网| 日本在线不卡一区| 日本一区二区三区电影| 91浏览器在线视频| 日本伊人精品一区二区三区观看方式| 欧美视频精品在线观看| 精品一区二区精品| 亚洲欧美日本韩国| 日韩女优视频免费观看| 不卡的av在线| 美女视频一区在线观看| 国产精品美女久久久久高潮| 欧美日韩成人高清| 成人深夜在线观看| 日韩高清不卡一区二区三区| 中文字幕在线免费不卡| 911精品国产一区二区在线| 成人app网站| 奇米一区二区三区av| 亚洲视频香蕉人妖| 欧美精品一区二| 欧美日韩免费电影| 成人国产精品免费观看视频| 丝袜美腿亚洲色图| 亚洲欧美日韩国产中文在线| 欧美成人猛片aaaaaaa| 一本色道**综合亚洲精品蜜桃冫| 亚洲综合色视频| 久久久久久久久久久久电影 | 激情都市一区二区| 亚洲欧美日韩国产一区二区三区| 欧美亚洲综合色| 国产成人av电影在线| 免费在线看成人av| 一区二区三区欧美在线观看| 2021国产精品久久精品| 欧美日韩精品欧美日韩精品| 99综合电影在线视频| 狠狠v欧美v日韩v亚洲ⅴ| 午夜久久久久久| 中文字幕一区二区三| 久久久三级国产网站| 337p亚洲精品色噜噜噜| 91久久免费观看| 成人福利视频在线看| 国内精品久久久久影院色| 日韩在线卡一卡二| 亚洲自拍偷拍av| 亚洲色图在线看| 国产欧美一区二区精品性| 日韩免费高清电影| 欧美二区在线观看| 欧美色区777第一页| 91丝袜美腿高跟国产极品老师| 三级久久三级久久| 一区二区三区高清在线| 亚洲欧美一区二区视频| 国产日韩精品一区二区浪潮av| 色噜噜狠狠色综合中国| 成人午夜av影视| 国产激情视频一区二区在线观看| 亚洲精品成a人| 国产精品视频免费看| 精品国产亚洲在线| 日韩一区二区三区免费看| 欧美顶级少妇做爰| 欧美日韩高清不卡| 欧美日韩三级一区二区| 欧美色视频在线观看| 欧美怡红院视频| 欧洲一区二区三区免费视频| 色婷婷亚洲综合| 色哟哟一区二区在线观看 | 成人免费毛片嘿嘿连载视频| 国产在线精品一区二区不卡了| 亚洲美女视频在线| 亚洲人成精品久久久久久| 亚洲视频1区2区| 亚洲欧美乱综合| 亚洲美女免费在线| 亚洲综合999| 亚洲v日本v欧美v久久精品| 亚洲一区视频在线观看视频| 亚洲图片欧美视频| 午夜a成v人精品| 青娱乐精品视频在线| 久久国产精品色| 国产精品一线二线三线| 国产精品 日产精品 欧美精品| 午夜激情久久久| 日韩黄色一级片| 九色|91porny| 国产乱码精品一区二区三区忘忧草 | 视频一区欧美精品| 日韩国产高清影视| 日本欧美一区二区三区| 精品综合久久久久久8888| 国内精品第一页| 成人性视频免费网站| 91在线小视频| 欧洲国内综合视频| 欧美精品vⅰdeose4hd| 欧美一级淫片007| 精品免费国产二区三区| 久久精品无码一区二区三区| 国产精品免费视频网站| 亚洲欧美日韩一区二区| 五月天一区二区| 久久99久久99| 成人a区在线观看| 欧美丝袜自拍制服另类| 欧美一级免费大片| 久久久久国产精品麻豆| 一色桃子久久精品亚洲| 亚洲网友自拍偷拍| 激情综合色综合久久| 成人99免费视频| 欧美日韩1234| 久久久久久99精品| 中文字幕在线观看不卡视频| 亚洲国产视频在线| 久久国产精品无码网站| caoporen国产精品视频| 欧美久久一区二区| 国产亚洲成aⅴ人片在线观看| 久久先锋资源网| 亚洲欧美另类图片小说| 亚洲电影一级黄| 久久99国产精品免费网站| 99视频精品免费视频| 欧美另类z0zxhd电影| 久久精品一区二区| 一区二区三区日本| 国产在线视频一区二区| 色综合久久综合网欧美综合网| 91美女精品福利| 日韩一区二区三区电影在线观看 | 亚洲国产精品久久艾草纯爱| 免费黄网站欧美| k8久久久一区二区三区| 欧美电影影音先锋| 国产精品丝袜久久久久久app| 国产精品麻豆网站| 日韩av不卡一区二区| 成人短视频下载| 91精品福利在线一区二区三区| 欧美区一区二区三区| 欧美激情一区在线观看| 日日欢夜夜爽一区| 成人激情综合网站| 欧美一区二区成人| 亚洲欧美另类图片小说| 国内一区二区视频| 在线观看日韩毛片| 国产欧美日本一区视频| 视频一区二区不卡| 91丝袜呻吟高潮美腿白嫩在线观看| 色综合天天综合网国产成人综合天| 一本大道av伊人久久综合| 日韩欧美精品在线视频| 一区二区免费在线| 高清shemale亚洲人妖| 91精品国产综合久久香蕉的特点 | 国产亚洲自拍一区| 日韩成人一区二区| 色综合久久天天综合网| 国产视频一区二区在线| 日韩国产在线观看一区| 色综合久久天天综合网| 国产日产欧美一区二区视频| 日韩电影在线一区二区| 91精品福利视频| 欧美激情综合在线| 久久99精品国产麻豆婷婷洗澡| 成人三级伦理片| 日韩一卡二卡三卡| 一区二区三区久久久| 成人黄色国产精品网站大全在线免费观看 | 欧美国产综合一区二区| 麻豆91精品视频| 欧美美女激情18p|