]> git.cryptolib.org Git - arm-crypto-lib.git/blob - test_src/main-sha256-test.c
more files
[arm-crypto-lib.git] / test_src / main-sha256-test.c
1 /* main-sha256-test.c */
2 /*
3     This file is part of the ARM-Crypto-Lib.
4     Copyright (C) 2006-2010  Daniel Otte (daniel.otte@rub.de)
5
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.
10
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.
15
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/>.
18 */
19 /*
20  * SHA-256 test-suit
21  *
22 */
23
24 #include <stdint.h>
25 #include <stdlib.h>
26 #include <string.h>
27 #include "cli.h"
28 #include "dump.h"
29 #include "uart_lowlevel.h"
30 #include "sysclock.h"
31 #include "hw_gptm.h"
32
33 #include "shavs.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"
39
40 #include "sha256.h"
41 #include "hfal_sha256.h"
42
43 void uart0_putc(char byte){
44         uart_putc(UART_0, byte);
45 }
46
47 char uart0_getc(void){
48         return uart_getc(UART_0);
49 }
50
51 const char* algo_name = "SHA-256";
52
53 const hfdesc_t* algolist[] = {
54         (hfdesc_t*)&sha256_desc,
55         NULL
56 };
57
58 /*****************************************************************************
59  *  additional validation-functions                                                                                      *
60  *****************************************************************************/
61
62 void testrun_nessie_sha256(void){
63         hfal_nessie_multiple(algolist);
64 }
65
66 void testrun_performance_sha256(void){
67         hfal_performance_multiple(algolist);
68 }
69
70 void test_monte(void){
71         uint8_t data1[] = {
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 };
84
85    uint8_t data2[] = {
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);
105 }
106
107 void test_monte2(void){
108         uint8_t data[] = {
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 };
125
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);
130 }
131
132 /*****************************************************************************
133  *  main                                                                                                                                         *
134  *****************************************************************************/
135
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";
148
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                 },
162         { NULL,                NULL, NULL                           }
163 };
164
165 int main(void) {
166         sysclk_set_80MHz();
167         sysclk_mosc_verify_enable();
168     uart_init(UART_0, 115200, 8, UART_PARATY_NONE, UART_STOPBITS_ONE);
169     gptm_set_timer_32periodic(TIMER0);
170
171         cli_rx = uart0_getc;
172     cli_tx = uart0_putc;
173
174         shavs_algolist=(hfdesc_t**)algolist;
175         shavs_algo=(hfdesc_t*)&sha256_desc;
176
177         for(;;){
178                 cli_putstr("\r\n\r\nARM-Crypto-Lib VS (");
179                 cli_putstr(algo_name);
180                 cli_putstr("; ");
181                 cli_putstr(__DATE__);
182                 cli_putc(' ');
183                 cli_putstr(__TIME__);
184                 cli_putstr(")\r\nloaded and running\r\n");
185         cmd_interface(cmdlist);
186     }
187
188 }