@@ -17,7 +17,7 @@
# include <stdlib.h>
# include "board.h"
# include "mcu/clk_gpio_init-stm32.c"
# include "mcu/clk_gpio_init-stm32f103 .c"
static void
@@ -330,7 +330,7 @@ nvic_system_reset (void)
static void __attribute__ ( ( naked ) )
reset ( void )
{
extern const unsigned long * FT0 , * FT1 , * FT2 ;
extern const uint32_t FT0 [ 256 ] , FT1 [ 256 ] , FT2 [ 256 ] ;
/*
* This code may not be at the start of flash ROM , because of DFU .
@@ -392,3 +392,149 @@ sys_board_id = BOARD_ID;
const uint8_t __attribute__ ( ( section ( " .sys.board_name " ) ) )
sys_board_name [ ] = BOARD_NAME ;
/*
* aes - constant - ft . c - AES forward tables .
*
* We need something useful for the initial flash ROM page ( 4 Ki
* bytes ) , which cannot be modified after installation . Even after
* upgrade of the firmware , it stays intact .
*
* We decide to put 3 / 4 of AES forward tables to fill 3 Ki bytes , as
* its useful and it won ' t change .
*
* The code was taken from aes . c of PolarSSL version 0.14 , and then ,
* modified to add section names .
*
* Since this is just a data , it wouldn ' t be copyright - able , but the
* original auther would claim so . Thus , we put original copyright
* notice here . It is highly likely that there will be no such a
* thing for copyright . Nevertheless , we think that PolarSSL is good
* software to address here , and encourage people using it .
*
*/
# include <stdint.h>
/*
* Original copyright notice is below :
*/
/*
* FIPS - 197 compliant AES implementation
*
* Copyright ( C ) 2006 - 2010 , Brainspark B . V .
*
* This file is part of PolarSSL ( http : //www.polarssl.org)
* Lead Maintainer : Paul Bakker < polarssl_maintainer at polarssl . org >
*
* All rights reserved .
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License along
* with this program ; if not , write to the Free Software Foundation , Inc . ,
* 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 USA .
*/
/*
* The AES block cipher was designed by Vincent Rijmen and Joan Daemen .
*
* http : //csrc.nist.gov/encryption/aes/rijndael/Rijndael.pdf
* http : //csrc.nist.gov/publications/fips/fips197/fips-197.pdf
*/
/*
* Forward tables
*/
# define FT \
\
V ( A5 , 63 , 63 , C6 ) , V ( 84 , 7 C , 7 C , F8 ) , V ( 99 , 77 , 77 , EE ) , V ( 8 D , 7 B , 7 B , F6 ) , \
V ( 0 D , F2 , F2 , FF ) , V ( BD , 6 B , 6 B , D6 ) , V ( B1 , 6F , 6F , DE ) , V ( 54 , C5 , C5 , 91 ) , \
V ( 50 , 30 , 30 , 60 ) , V ( 03 , 01 , 01 , 02 ) , V ( A9 , 67 , 67 , CE ) , V ( 7 D , 2 B , 2 B , 56 ) , \
V ( 19 , FE , FE , E7 ) , V ( 62 , D7 , D7 , B5 ) , V ( E6 , AB , AB , 4 D ) , V ( 9 A , 76 , 76 , EC ) , \
V ( 45 , CA , CA , 8F ) , V ( 9 D , 82 , 82 , 1F ) , V ( 40 , C9 , C9 , 89 ) , V ( 87 , 7 D , 7 D , FA ) , \
V ( 15 , FA , FA , EF ) , V ( EB , 59 , 59 , B2 ) , V ( C9 , 47 , 47 , 8 E ) , V ( 0 B , F0 , F0 , FB ) , \
V ( EC , AD , AD , 41 ) , V ( 67 , D4 , D4 , B3 ) , V ( FD , A2 , A2 , 5F ) , V ( EA , AF , AF , 45 ) , \
V ( BF , 9 C , 9 C , 23 ) , V ( F7 , A4 , A4 , 53 ) , V ( 96 , 72 , 72 , E4 ) , V ( 5 B , C0 , C0 , 9 B ) , \
V ( C2 , B7 , B7 , 75 ) , V ( 1 C , FD , FD , E1 ) , V ( AE , 93 , 93 , 3 D ) , V ( 6 A , 26 , 26 , 4 C ) , \
V ( 5 A , 36 , 36 , 6 C ) , V ( 41 , 3F , 3F , 7 E ) , V ( 02 , F7 , F7 , F5 ) , V ( 4F , CC , CC , 83 ) , \
V ( 5 C , 34 , 34 , 68 ) , V ( F4 , A5 , A5 , 51 ) , V ( 34 , E5 , E5 , D1 ) , V ( 08 , F1 , F1 , F9 ) , \
V ( 93 , 71 , 71 , E2 ) , V ( 73 , D8 , D8 , AB ) , V ( 53 , 31 , 31 , 62 ) , V ( 3F , 15 , 15 , 2 A ) , \
V ( 0 C , 04 , 04 , 08 ) , V ( 52 , C7 , C7 , 95 ) , V ( 65 , 23 , 23 , 46 ) , V ( 5 E , C3 , C3 , 9 D ) , \
V ( 28 , 18 , 18 , 30 ) , V ( A1 , 96 , 96 , 37 ) , V ( 0F , 05 , 05 , 0 A ) , V ( B5 , 9 A , 9 A , 2F ) , \
V ( 09 , 07 , 07 , 0 E ) , V ( 36 , 12 , 12 , 24 ) , V ( 9 B , 80 , 80 , 1 B ) , V ( 3 D , E2 , E2 , DF ) , \
V ( 26 , EB , EB , CD ) , V ( 69 , 27 , 27 , 4 E ) , V ( CD , B2 , B2 , 7F ) , V ( 9F , 75 , 75 , EA ) , \
V ( 1 B , 09 , 09 , 12 ) , V ( 9 E , 83 , 83 , 1 D ) , V ( 74 , 2 C , 2 C , 58 ) , V ( 2 E , 1 A , 1 A , 34 ) , \
V ( 2 D , 1 B , 1 B , 36 ) , V ( B2 , 6 E , 6 E , DC ) , V ( EE , 5 A , 5 A , B4 ) , V ( FB , A0 , A0 , 5 B ) , \
V ( F6 , 52 , 52 , A4 ) , V ( 4 D , 3 B , 3 B , 76 ) , V ( 61 , D6 , D6 , B7 ) , V ( CE , B3 , B3 , 7 D ) , \
V ( 7 B , 29 , 29 , 52 ) , V ( 3 E , E3 , E3 , DD ) , V ( 71 , 2F , 2F , 5 E ) , V ( 97 , 84 , 84 , 13 ) , \
V ( F5 , 53 , 53 , A6 ) , V ( 68 , D1 , D1 , B9 ) , V ( 00 , 00 , 00 , 00 ) , V ( 2 C , ED , ED , C1 ) , \
V ( 60 , 20 , 20 , 40 ) , V ( 1F , FC , FC , E3 ) , V ( C8 , B1 , B1 , 79 ) , V ( ED , 5 B , 5 B , B6 ) , \
V ( BE , 6 A , 6 A , D4 ) , V ( 46 , CB , CB , 8 D ) , V ( D9 , BE , BE , 67 ) , V ( 4 B , 39 , 39 , 72 ) , \
V ( DE , 4 A , 4 A , 94 ) , V ( D4 , 4 C , 4 C , 98 ) , V ( E8 , 58 , 58 , B0 ) , V ( 4 A , CF , CF , 85 ) , \
V ( 6 B , D0 , D0 , BB ) , V ( 2 A , EF , EF , C5 ) , V ( E5 , AA , AA , 4F ) , V ( 16 , FB , FB , ED ) , \
V ( C5 , 43 , 43 , 86 ) , V ( D7 , 4 D , 4 D , 9 A ) , V ( 55 , 33 , 33 , 66 ) , V ( 94 , 85 , 85 , 11 ) , \
V ( CF , 45 , 45 , 8 A ) , V ( 10 , F9 , F9 , E9 ) , V ( 06 , 02 , 02 , 04 ) , V ( 81 , 7F , 7F , FE ) , \
V ( F0 , 50 , 50 , A0 ) , V ( 44 , 3 C , 3 C , 78 ) , V ( BA , 9F , 9F , 25 ) , V ( E3 , A8 , A8 , 4 B ) , \
V ( F3 , 51 , 51 , A2 ) , V ( FE , A3 , A3 , 5 D ) , V ( C0 , 40 , 40 , 80 ) , V ( 8 A , 8F , 8F , 05 ) , \
V ( AD , 92 , 92 , 3F ) , V ( BC , 9 D , 9 D , 21 ) , V ( 48 , 38 , 38 , 70 ) , V ( 04 , F5 , F5 , F1 ) , \
V ( DF , BC , BC , 63 ) , V ( C1 , B6 , B6 , 77 ) , V ( 75 , DA , DA , AF ) , V ( 63 , 21 , 21 , 42 ) , \
V ( 30 , 10 , 10 , 20 ) , V ( 1 A , FF , FF , E5 ) , V ( 0 E , F3 , F3 , FD ) , V ( 6 D , D2 , D2 , BF ) , \
V ( 4 C , CD , CD , 81 ) , V ( 14 , 0 C , 0 C , 18 ) , V ( 35 , 13 , 13 , 26 ) , V ( 2F , EC , EC , C3 ) , \
V ( E1 , 5F , 5F , BE ) , V ( A2 , 97 , 97 , 35 ) , V ( CC , 44 , 44 , 88 ) , V ( 39 , 17 , 17 , 2 E ) , \
V ( 57 , C4 , C4 , 93 ) , V ( F2 , A7 , A7 , 55 ) , V ( 82 , 7 E , 7 E , FC ) , V ( 47 , 3 D , 3 D , 7 A ) , \
V ( AC , 64 , 64 , C8 ) , V ( E7 , 5 D , 5 D , BA ) , V ( 2 B , 19 , 19 , 32 ) , V ( 95 , 73 , 73 , E6 ) , \
V ( A0 , 60 , 60 , C0 ) , V ( 98 , 81 , 81 , 19 ) , V ( D1 , 4F , 4F , 9 E ) , V ( 7F , DC , DC , A3 ) , \
V ( 66 , 22 , 22 , 44 ) , V ( 7 E , 2 A , 2 A , 54 ) , V ( AB , 90 , 90 , 3 B ) , V ( 83 , 88 , 88 , 0 B ) , \
V ( CA , 46 , 46 , 8 C ) , V ( 29 , EE , EE , C7 ) , V ( D3 , B8 , B8 , 6 B ) , V ( 3 C , 14 , 14 , 28 ) , \
V ( 79 , DE , DE , A7 ) , V ( E2 , 5 E , 5 E , BC ) , V ( 1 D , 0 B , 0 B , 16 ) , V ( 76 , DB , DB , AD ) , \
V ( 3 B , E0 , E0 , DB ) , V ( 56 , 32 , 32 , 64 ) , V ( 4 E , 3 A , 3 A , 74 ) , V ( 1 E , 0 A , 0 A , 14 ) , \
V ( DB , 49 , 49 , 92 ) , V ( 0 A , 06 , 06 , 0 C ) , V ( 6 C , 24 , 24 , 48 ) , V ( E4 , 5 C , 5 C , B8 ) , \
V ( 5 D , C2 , C2 , 9F ) , V ( 6 E , D3 , D3 , BD ) , V ( EF , AC , AC , 43 ) , V ( A6 , 62 , 62 , C4 ) , \
V ( A8 , 91 , 91 , 39 ) , V ( A4 , 95 , 95 , 31 ) , V ( 37 , E4 , E4 , D3 ) , V ( 8 B , 79 , 79 , F2 ) , \
V ( 32 , E7 , E7 , D5 ) , V ( 43 , C8 , C8 , 8 B ) , V ( 59 , 37 , 37 , 6 E ) , V ( B7 , 6 D , 6 D , DA ) , \
V ( 8 C , 8 D , 8 D , 01 ) , V ( 64 , D5 , D5 , B1 ) , V ( D2 , 4 E , 4 E , 9 C ) , V ( E0 , A9 , A9 , 49 ) , \
V ( B4 , 6 C , 6 C , D8 ) , V ( FA , 56 , 56 , AC ) , V ( 07 , F4 , F4 , F3 ) , V ( 25 , EA , EA , CF ) , \
V ( AF , 65 , 65 , CA ) , V ( 8 E , 7 A , 7 A , F4 ) , V ( E9 , AE , AE , 47 ) , V ( 18 , 08 , 08 , 10 ) , \
V ( D5 , BA , BA , 6F ) , V ( 88 , 78 , 78 , F0 ) , V ( 6F , 25 , 25 , 4 A ) , V ( 72 , 2 E , 2 E , 5 C ) , \
V ( 24 , 1 C , 1 C , 38 ) , V ( F1 , A6 , A6 , 57 ) , V ( C7 , B4 , B4 , 73 ) , V ( 51 , C6 , C6 , 97 ) , \
V ( 23 , E8 , E8 , CB ) , V ( 7 C , DD , DD , A1 ) , V ( 9 C , 74 , 74 , E8 ) , V ( 21 , 1F , 1F , 3 E ) , \
V ( DD , 4 B , 4 B , 96 ) , V ( DC , BD , BD , 61 ) , V ( 86 , 8 B , 8 B , 0 D ) , V ( 85 , 8 A , 8 A , 0F ) , \
V ( 90 , 70 , 70 , E0 ) , V ( 42 , 3 E , 3 E , 7 C ) , V ( C4 , B5 , B5 , 71 ) , V ( AA , 66 , 66 , CC ) , \
V ( D8 , 48 , 48 , 90 ) , V ( 05 , 03 , 03 , 06 ) , V ( 01 , F6 , F6 , F7 ) , V ( 12 , 0 E , 0 E , 1 C ) , \
V ( A3 , 61 , 61 , C2 ) , V ( 5F , 35 , 35 , 6 A ) , V ( F9 , 57 , 57 , AE ) , V ( D0 , B9 , B9 , 69 ) , \
V ( 91 , 86 , 86 , 17 ) , V ( 58 , C1 , C1 , 99 ) , V ( 27 , 1 D , 1 D , 3 A ) , V ( B9 , 9 E , 9 E , 27 ) , \
V ( 38 , E1 , E1 , D9 ) , V ( 13 , F8 , F8 , EB ) , V ( B3 , 98 , 98 , 2 B ) , V ( 33 , 11 , 11 , 22 ) , \
V ( BB , 69 , 69 , D2 ) , V ( 70 , D9 , D9 , A9 ) , V ( 89 , 8 E , 8 E , 07 ) , V ( A7 , 94 , 94 , 33 ) , \
V ( B6 , 9 B , 9 B , 2 D ) , V ( 22 , 1 E , 1 E , 3 C ) , V ( 92 , 87 , 87 , 15 ) , V ( 20 , E9 , E9 , C9 ) , \
V ( 49 , CE , CE , 87 ) , V ( FF , 55 , 55 , AA ) , V ( 78 , 28 , 28 , 50 ) , V ( 7 A , DF , DF , A5 ) , \
V ( 8F , 8 C , 8 C , 03 ) , V ( F8 , A1 , A1 , 59 ) , V ( 80 , 89 , 89 , 09 ) , V ( 17 , 0 D , 0 D , 1 A ) , \
V ( DA , BF , BF , 65 ) , V ( 31 , E6 , E6 , D7 ) , V ( C6 , 42 , 42 , 84 ) , V ( B8 , 68 , 68 , D0 ) , \
V ( C3 , 41 , 41 , 82 ) , V ( B0 , 99 , 99 , 29 ) , V ( 77 , 2 D , 2 D , 5 A ) , V ( 11 , 0F , 0F , 1 E ) , \
V ( CB , B0 , B0 , 7 B ) , V ( FC , 54 , 54 , A8 ) , V ( D6 , BB , BB , 6 D ) , V ( 3 A , 16 , 16 , 2 C )
# define V(a,b,c,d) 0x##a##b##c##d
const uint32_t FT0 [ 256 ] __attribute__ ( ( section ( " .sys.0 " ) ) ) = { FT } ;
# undef V
# define V(a,b,c,d) 0x##b##c##d##a
const uint32_t FT1 [ 256 ] __attribute__ ( ( section ( " .sys.1 " ) ) ) = { FT } ;
# undef V
# define V(a,b,c,d) 0x##c##d##a##b
const uint32_t FT2 [ 256 ] __attribute__ ( ( section ( " .sys.2 " ) ) ) = { FT } ;
# undef V
# ifdef ORIGINAL_IMPLEMENTATION
# define V(a,b,c,d) 0x##d##a##b##c
const uint32_t FT3 [ 256 ] = { FT } ;
# undef V
# endif