1 /** 2 ***************************************************************************** 3 * @file cmem7_aes.c 4 * 5 * @brief CMEM7 AES source file 6 * 7 * 8 * @version V1.0 9 * @date 3. September 2013 10 * 11 * @note 12 * 13 ***************************************************************************** 14 * @attention 15 * 16 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 17 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE 18 * TIME. AS A RESULT, CAPITAL-MICRO SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 19 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING 20 * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE 21 * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 22 * 23 * <h2><center>© COPYRIGHT 2013 Capital-micro </center></h2> 24 ***************************************************************************** 25 */ 26 27 #include "cmem7_aes.h" 28 AES_Decrypt(const void * src,void * dst,uint32_t len)29BOOL AES_Decrypt(const void *src, void *dst, uint32_t len) 30 { 31 uint32_t *po = dst; 32 const uint32_t *pi = src; 33 34 if (len & 0xF) 35 return FALSE; 36 37 AES->FIFO_CLEAR = 1; 38 AES->FIFO_CLEAR = 0; 39 GLOBAL_CTRL->AES_BURST_TYPE = 0x1; // Cannot be 0 40 while (len > 0) { 41 while (0 == GLOBAL_CTRL->AES_STATUS_b.IDLE); // 0x41007010 42 udelay(2); 43 GLOBAL_CTRL->AES_TARGET_ADDR = (uint32_t)po; // 0x41800000; 44 po += 4; 45 len -= 4 * sizeof(uint32_t); 46 while (0 == GLOBAL_CTRL->AES_STATUS_b.RD_EMPTY); // 0x41007010 47 AES->FIFO = *pi++; 48 AES->FIFO = *pi++; 49 AES->FIFO = *pi++; 50 AES->FIFO = *pi++; 51 } 52 return TRUE; 53 } 54