1 /* main-sha256-test.c */
3 This file is part of the ARM-Crypto-Lib.
4 Copyright (C) 2006-2010 Daniel Otte (daniel.otte@rub.de)
6 This program is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program. If not, see <http://www.gnu.org/licenses/>.
29 #include "uart_lowlevel.h"
34 #include "nessie_hash_test.h"
35 #include "performance_test.h"
36 #include "hfal-nessie.h"
37 #include "hfal-performance.h"
38 #include "hfal-test.h"
41 #include "hfal_sha256.h"
43 void uart0_putc(char byte){
44 uart_putc(UART_0, byte);
47 char uart0_getc(void){
48 return uart_getc(UART_0);
51 const char* algo_name = "SHA-256";
53 const hfdesc_t* algolist[] = {
54 (hfdesc_t*)&sha256_desc,
58 /*****************************************************************************
59 * additional validation-functions *
60 *****************************************************************************/
62 void testrun_nessie_sha256(void){
63 hfal_nessie_multiple(algolist);
66 void testrun_performance_sha256(void){
67 hfal_performance_multiple(algolist);
70 void test_monte(void){
72 0xF4, 0x1E, 0xCE, 0x26, 0x13, 0xE4, 0x57, 0x39,
73 0x15, 0x69, 0x6B, 0x5A, 0xDC, 0xD5, 0x1C, 0xA3,
74 0x28, 0xBE, 0x3B, 0xF5, 0x66, 0xA9, 0xCA, 0x99,
75 0xC9, 0xCE, 0xB0, 0x27, 0x9C, 0x1C, 0xB0, 0xA7,
76 0xF4, 0x1E, 0xCE, 0x26, 0x13, 0xE4, 0x57, 0x39,
77 0x15, 0x69, 0x6B, 0x5A, 0xDC, 0xD5, 0x1C, 0xA3,
78 0x28, 0xBE, 0x3B, 0xF5, 0x66, 0xA9, 0xCA, 0x99,
79 0xC9, 0xCE, 0xB0, 0x27, 0x9C, 0x1C, 0xB0, 0xA7,
80 0xF4, 0x1E, 0xCE, 0x26, 0x13, 0xE4, 0x57, 0x39,
81 0x15, 0x69, 0x6B, 0x5A, 0xDC, 0xD5, 0x1C, 0xA3,
82 0x28, 0xBE, 0x3B, 0xF5, 0x66, 0xA9, 0xCA, 0x99,
83 0xC9, 0xCE, 0xB0, 0x27, 0x9C, 0x1C, 0xB0, 0xA7 };
86 0xF4, 0x1E, 0xCE, 0x26, 0x13, 0xE4, 0x57, 0x39,
87 0x15, 0x69, 0x6B, 0x5A, 0xDC, 0xD5, 0x1C, 0xA3,
88 0x28, 0xBE, 0x3B, 0xF5, 0x66, 0xA9, 0xCA, 0x99,
89 0xC9, 0xCE, 0xB0, 0x27, 0x9C, 0x1C, 0xB0, 0xA7,
90 0xF4, 0x1E, 0xCE, 0x26, 0x13, 0xE4, 0x57, 0x39,
91 0x15, 0x69, 0x6B, 0x5A, 0xDC, 0xD5, 0x1C, 0xA3,
92 0x28, 0xBE, 0x3B, 0xF5, 0x66, 0xA9, 0xCA, 0x99,
93 0xC9, 0xCE, 0xB0, 0x27, 0x9C, 0x1C, 0xB0, 0xA7,
94 0xFD, 0xDF, 0x1B, 0x37, 0xDD, 0x34, 0xB3, 0xB2,
95 0x01, 0xD4, 0x3C, 0x57, 0xBC, 0xDE, 0x11, 0x58,
96 0x38, 0xF0, 0xDF, 0x70, 0x1D, 0xA9, 0x3C, 0x3B,
97 0xF2, 0xC9, 0xC8, 0x68, 0x96, 0xE7, 0xE6, 0xC7 };
98 uint8_t hash[SHA256_HASH_BYTES];
99 sha256((sha256_hash_t*)hash, data1, 3*32*8);
100 cli_putstr("\r\n hash(data1) = ");
101 cli_hexdump(hash, 32);
102 sha256((sha256_hash_t*)hash, data2, 3*32*8);
103 cli_putstr("\r\n hash(data2) = ");
104 cli_hexdump(hash, 32);
107 void test_monte2(void){
109 0x6c, 0xd4, 0xc0, 0xc5, 0xcb, 0x2c, 0xa2, 0xa0,
110 0xf1, 0xd1, 0xae, 0xce, 0xba, 0xc0, 0x3b, 0x52,
111 0xe6, 0x4e, 0xa0, 0x3d, 0x1a, 0x16, 0x54, 0x37,
112 0x29, 0x36, 0x54, 0x5b, 0x92, 0xbb, 0xc5, 0x48,
113 0x4a, 0x59, 0xdb, 0x74, 0xbb, 0x60, 0xf9, 0xc4,
114 0x0c, 0xeb, 0x1a, 0x5a, 0xa3, 0x5a, 0x6f, 0xaf,
115 0xe8, 0x03, 0x49, 0xe1, 0x4c, 0x25, 0x3a, 0x4e,
116 0x8b, 0x1d, 0x77, 0x61, 0x2d, 0xdd, 0x81, 0xac,
117 0xe9, 0x26, 0xae, 0x8b, 0x0a, 0xf6, 0xe5, 0x31,
118 0x76, 0xdb, 0xff, 0xcc, 0x2a, 0x6b, 0x88, 0xc6,
119 0xbd, 0x76, 0x5f, 0x93, 0x9d, 0x3d, 0x17, 0x8a,
120 0x9b, 0xde, 0x9e, 0xf3, 0xaa, 0x13, 0x1c, 0x61,
121 0xe3, 0x1c, 0x1e, 0x42, 0xcd, 0xfa, 0xf4, 0xb4,
122 0xdc, 0xde, 0x57, 0x9a, 0x37, 0xe1, 0x50, 0xef,
123 0xbe, 0xf5, 0x55, 0x5b, 0x4c, 0x1c, 0xb4, 0x04,
124 0x39, 0xd8, 0x35, 0xa7, 0x24, 0xe2, 0xfa, 0xe7 };
126 uint8_t hash[SHA256_HASH_BYTES];
127 sha256((sha256_hash_t*)hash, data, 1024);
128 cli_putstr("\r\n hash(data) = ");
129 cli_hexdump(hash, 32);
132 /*****************************************************************************
134 *****************************************************************************/
136 const char nessie_str[] = "nessie";
137 const char test_str[] = "test";
138 const char monte_str[] = "monte";
139 const char monte2_str[] = "monte2";
140 const char performance_str[] = "performance";
141 const char echo_str[] = "echo";
142 const char shavs_list_str[] = "shavs_list";
143 const char shavs_set_str[] = "shavs_set";
144 const char shavs_test1_str[] = "shavs_test1";
145 const char shavs_test2_str[] = "shavs_test2";
146 const char shavs_test3_str[] = "shavs_test3";
147 const char dump_str[] = "dump";
149 const cmdlist_entry_t cmdlist[] = {
150 { nessie_str, NULL, testrun_nessie_sha256 },
151 { test_str, NULL, testrun_nessie_sha256 },
152 { monte_str, NULL, test_monte },
153 { monte2_str, NULL, test_monte2 },
154 { performance_str, NULL, testrun_performance_sha256 },
155 { echo_str, (void*)1, (void_fpt)echo_ctrl },
156 { shavs_list_str, NULL, shavs_listalgos },
157 { shavs_set_str, (void*)1, (void_fpt)shavs_setalgo },
158 { shavs_test1_str, NULL, shavs_test1 },
159 { shavs_test2_str, NULL, shavs_test2 },
160 { shavs_test3_str, NULL, shavs_test3 },
161 { dump_str, (void*)1, (void_fpt)dump },
167 sysclk_mosc_verify_enable();
168 uart_init(UART_0, 115200, 8, UART_PARATY_NONE, UART_STOPBITS_ONE);
169 gptm_set_timer_32periodic(TIMER0);
174 shavs_algolist=(hfdesc_t**)algolist;
175 shavs_algo=(hfdesc_t*)&sha256_desc;
178 cli_putstr("\r\n\r\nARM-Crypto-Lib VS (");
179 cli_putstr(algo_name);
181 cli_putstr(__DATE__);
183 cli_putstr(__TIME__);
184 cli_putstr(")\r\nloaded and running\r\n");
185 cmd_interface(cmdlist);