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

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

?? des_hardware.c

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

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

#include "des_hardware.h"

#if defined(USE_ENCRYPTION) && defined(ENCRYPTION_3DES_HARD)

//------------------------------------------------------------------------------
// Global variables
//------------------------------------------------------------------------------

#ifdef ENCRYPTION_CTR
  unsigned char CTR[ENCRYPTION_BLOCK_LENGTH];
#endif

//------------------------------------------------------------------------------
// 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
 */
static 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:     des_hard_init
 * Purpose:  Initializes the AES peripheral
 */
void des_hard_init(void) {
  
  // Local variables
  unsigned char key[ENCRYPTION_KEY_LENGTH];
  
  debug_printf("DES/HARD: Initializing ...\n");
  
  // Activate peripheral clock
  AT91F_TDES_CfgPMC();
  
  // Load mode
#if (ENCRYPTION_KEY_LENGTH == 24)
  AT91F_TDES_CfgModeReg(AT91C_BASE_TDES, AT91C_TDES_SMOD_MANUAL | TDES_MODE |
                        AT91C_TDES_TDESMOD | TDES_CIPHER);
#else
  AT91F_TDES_CfgModeReg(AT91C_BASE_TDES, AT91C_TDES_SMOD_MANUAL | TDES_MODE |
                        AT91C_TDES_KEYMOD | AT91C_TDES_TDESMOD | TDES_CIPHER);
#endif
  
  // Convert and load key
  ASCII2Hex(ENCRYPTION_KEY, key, ENCRYPTION_KEY_LENGTH);
  
  AT91C_BASE_TDES->TDES_KEY1WxR[0] = ((int *) key)[0];
  AT91C_BASE_TDES->TDES_KEY1WxR[1] = ((int *) key)[1];
  AT91C_BASE_TDES->TDES_KEY2WxR[0] = ((int *) key)[2];
  AT91C_BASE_TDES->TDES_KEY2WxR[1] = ((int *) key)[3];
  
#if (ENCRYPTION_KEY_LENGTH == 24)
  AT91C_BASE_TDES->TDES_KEY3WxR[0] = ((int *) key)[4];
  AT91C_BASE_TDES->TDES_KEY3WxR[1] = ((int *) key)[5];
#endif

#if defined(ENCRYPTION_CBC)
  unsigned char IV[8];
  ASCII2Hex(ENCRYPTION_IV, IV, ENCRYPTION_BLOCK_LENGTH);
  
  AT91C_BASE_TDES->TDES_IVxR[0] = ((int *) IV)[0];
  AT91C_BASE_TDES->TDES_IVxR[1] = ((int *) IV)[1];
  
#elif defined(ENCRYPTION_CTR)
  // Convert IV
  ASCII2Hex(ENCRYPTION_IV, CTR, ENCRYPTION_BLOCK_LENGTH);
#endif
  
  debug_printf("DES/HARD: Initialization done.\n");
}

/**
 * Name:     des_hard_cleanup
 * Purpose:  Cleans up the AES peripheral
 */
void des_hard_cleanup(void) {
  
  debug_printf("DES/HARD: Cleaning up ...\n");
  
  AT91F_TDES_CfgModeReg(AT91C_BASE_TDES, 0);
  AT91F_PMC_DisablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_TDES);
  
  debug_printf("DES/HARD: Cleanup done.\n");
}

/**
 * Name:     des_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 des_hard_decrypt(const unsigned char * cipherText,
                     unsigned char * plainText,
                     unsigned int length) {

#if defined(ENCRYPTION_ECB) || defined(ENCRYPTION_CBC)
  for (unsigned int l=0; l < length;) {
 
    // Load counter and encrypt it
    AT91C_BASE_TDES->TDES_IDATAxR[0] = ((int *) &cipherText[l])[0];
    AT91C_BASE_TDES->TDES_IDATAxR[1] = ((int *) &cipherText[l])[1];
    
    AT91F_TDES_StartProcessing(AT91C_BASE_TDES);
    while (!AT91F_TDES_IsStatusSet(AT91C_BASE_TDES, AT91C_TDES_DATRDY));
    
    ((int *) &plainText[l])[0] = AT91C_BASE_TDES->TDES_ODATAxR[0];
    ((int *) &plainText[l])[1] = AT91C_BASE_TDES->TDES_ODATAxR[1];
    
    l += ENCRYPTION_BLOCK_LENGTH;
  }
  
#elif defined(ENCRYPTION_CTR)
  // Local variables
  unsigned int bytes;
  unsigned char block[ENCRYPTION_BLOCK_LENGTH];
  
  // Decrypt
  for (unsigned int e=0; e < length;) {
   
    // Load counter and encrypt it
    AT91C_BASE_TDES->TDES_IDATAxR[0] = ((int *) CTR)[0];
    AT91C_BASE_TDES->TDES_IDATAxR[1] = ((int *) CTR)[1];
    
    AT91F_TDES_StartProcessing(AT91C_BASE_TDES);
    while (!AT91F_TDES_IsStatusSet(AT91C_BASE_TDES, AT91C_TDES_DATRDY));
    
    ((int *) block)[0] = AT91C_BASE_TDES->TDES_ODATAxR[0];
    ((int *) block)[1] = AT91C_BASE_TDES->TDES_ODATAxR[1];
    
    // XOR current plain text block with encrypted counter
    if ((length-e) < ENCRYPTION_BLOCK_LENGTH) {
      
      bytes = length - e;
    }
    else {
      
      bytes = ENCRYPTION_BLOCK_LENGTH;
    }
    
    for (unsigned int i=0; i < bytes; i++) {
     
      plainText[e+i] = cipherText[e+i] ^ ((char *) block)[i];
    }

    // Increment counter (big-endian) and number of encrypted bytes
    for (int i=ENCRYPTION_BLOCK_LENGTH-1; i >= 0; i--) {
        
      if (++((char *) CTR)[i] != 0) {
        
        break;
      }
    }
    
    e += bytes;
  }
#endif // ENCRYPTION_CTR
  
  return OK;
}

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色中色一区二区| av成人免费在线观看| 亚洲国产精品一区二区尤物区| 国产精品理伦片| 亚洲欧洲在线观看av| 中文字幕一区二区在线观看 | 毛片不卡一区二区| 日韩综合小视频| 久久精品国产亚洲5555| 国产精选一区二区三区| 不卡视频在线观看| 99精品黄色片免费大全| 色嗨嗨av一区二区三区| 在线视频国内自拍亚洲视频| 欧美性xxxxxx少妇| 欧美电影免费观看完整版| 欧美成人激情免费网| 久久久一区二区三区捆绑**| 国产精品美女久久福利网站| 亚洲色图在线看| 精品一区二区三区的国产在线播放 | 欧美日韩色一区| 日本二三区不卡| 欧美一区二区三区视频在线观看| 欧洲视频一区二区| 欧美一区二区三区人| 日本一区二区三区四区| 中文字幕一区不卡| 日韩电影在线免费观看| 国产传媒欧美日韩成人| 欧美专区日韩专区| 精品成人一区二区三区| 亚洲色大成网站www久久九九| 亚洲1区2区3区4区| 国产成人av影院| 欧美性欧美巨大黑白大战| 欧美伦理影视网| 国产精品欧美综合在线| 视频一区在线播放| 99麻豆久久久国产精品免费| 欧美一级爆毛片| 亚洲欧美aⅴ...| 国产精品99精品久久免费| 欧美吻胸吃奶大尺度电影| 久久精品人人爽人人爽| 日韩av中文字幕一区二区三区| 盗摄精品av一区二区三区| 91精品国产综合久久久久久久久久| 国产精品丝袜黑色高跟| 久久黄色级2电影| 欧美亚洲禁片免费| 中文字幕一区二区三区在线不卡| 国产**成人网毛片九色| 8v天堂国产在线一区二区| 亚洲视频一区二区在线观看| 国产精品888| 日韩欧美中文字幕制服| 亚洲不卡av一区二区三区| 91片在线免费观看| 国产免费观看久久| 国内精品伊人久久久久影院对白| 欧美日韩成人一区二区| 亚洲欧美日韩系列| 成人动漫av在线| 国产精品日日摸夜夜摸av| 国产成人丝袜美腿| 亚洲精品一区二区三区精华液 | 麻豆91免费看| 精品污污网站免费看| 一区二区三区日韩欧美| 91女人视频在线观看| 国产精品久久久久影院色老大| 国产一区二区福利| 久久久久久久精| 成人黄色软件下载| 欧美极品另类videosde| 成人精品视频网站| 亚洲欧洲日产国码二区| 成人av影视在线观看| 亚洲欧洲在线观看av| 色琪琪一区二区三区亚洲区| 亚洲高清中文字幕| 欧洲精品一区二区三区在线观看| 欧美视频一区二区三区四区| 国产欧美1区2区3区| 国产精品一区一区三区| 久久亚洲二区三区| 亚洲欧美视频在线观看| 欧美午夜视频网站| 欧美欧美欧美欧美首页| 99精品国产视频| 国产制服丝袜一区| 婷婷夜色潮精品综合在线| 国产精品色哟哟| 久久亚区不卡日本| 91麻豆精品久久久久蜜臀| 成人黄色网址在线观看| 经典一区二区三区| 免费成人在线影院| 五月综合激情网| 亚洲综合在线第一页| 中文字幕日韩精品一区| 国产性天天综合网| 2023国产一二三区日本精品2022| 51久久夜色精品国产麻豆| 欧美午夜片在线看| 在线国产亚洲欧美| 色综合天天综合狠狠| 99精品视频中文字幕| 国产精品一二三区| 国产一区二区三区免费看| 蜜臀精品久久久久久蜜臀| 日本成人在线一区| 日本欧洲一区二区| 青椒成人免费视频| 麻豆成人免费电影| 久久国产乱子精品免费女| 久久精品免费观看| 精品一区二区在线免费观看| 日韩国产欧美在线播放| 日本在线不卡视频一二三区| 美女一区二区视频| 国产一区二区在线观看视频| 国产成人精品网址| 99久久精品国产精品久久| 色域天天综合网| 欧美日本韩国一区二区三区视频 | 国产盗摄一区二区| 成人动漫中文字幕| 欧美中文字幕亚洲一区二区va在线| 色综合久久久久久久久| 欧美日韩一区三区| 日韩欧美不卡一区| 久久久久免费观看| 最新欧美精品一区二区三区| 亚洲国产中文字幕在线视频综合| 天天影视色香欲综合网老头| 精油按摩中文字幕久久| 成人久久视频在线观看| 色噜噜久久综合| 欧美成人a视频| 国产精品麻豆久久久| 亚洲第一福利一区| 国产盗摄一区二区| 欧美少妇bbb| 久久免费电影网| 一区二区在线免费| 久久99最新地址| av电影在线观看一区| 欧美久久婷婷综合色| 国产欧美一区二区三区在线看蜜臀 | 欧美在线小视频| 欧美一级理论性理论a| 欧美经典一区二区| 亚洲精品欧美激情| 另类小说综合欧美亚洲| 91麻豆免费观看| 精品久久国产97色综合| 一二三四社区欧美黄| 国产一区视频导航| 欧美日韩精品是欧美日韩精品| 国产午夜一区二区三区| 婷婷综合另类小说色区| 成人美女视频在线看| 日韩一级大片在线| 成人欧美一区二区三区白人| 久久av资源网| 欧美乱妇15p| 激情文学综合网| 欧美日韩国产免费一区二区| 中文字幕欧美日韩一区| 六月丁香综合在线视频| 91成人在线观看喷潮| 国产精品国产精品国产专区不蜜| 久久超碰97人人做人人爱| 欧美唯美清纯偷拍| 综合久久久久久久| 国产馆精品极品| 精品对白一区国产伦| 日韩不卡免费视频| 欧美日韩aaaaa| 亚洲妇女屁股眼交7| 一本大道综合伊人精品热热| 国产日产亚洲精品系列| 国产一区二区三区在线观看精品| 88在线观看91蜜桃国自产| 亚洲国产sm捆绑调教视频| 91论坛在线播放| 亚洲欧洲精品一区二区精品久久久 | 天涯成人国产亚洲精品一区av| 国产成人aaa| 久久久久久久久一| 国模套图日韩精品一区二区| 日韩精品一区二区三区中文精品| 亚洲成人你懂的| 欧美日韩二区三区| 日本中文字幕一区二区视频| 欧美一区二区美女| 久草热8精品视频在线观看| 日韩精品一区二|