]> git.cryptolib.org Git - arm-crypto-lib.git/blob - test_src/main-echo-test.c
switching to dedicated endian switching function
[arm-crypto-lib.git] / test_src / main-echo-test.c
1 /* main-echo-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  * Echo test-suit
21  *
22 */
23 #include <stdint.h>
24 #include <stdlib.h>
25 #include <string.h>
26 #include "config.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 "echo.h"
41 #include "hfal_echo.h"
42
43 char* algo_name = "Echo";
44
45
46 const hfdesc_t* algolist[] = {
47         (hfdesc_t*)&echo224_desc,
48         (hfdesc_t*)&echo256_desc,
49         (hfdesc_t*)&echo384_desc,
50         (hfdesc_t*)&echo512_desc,
51         NULL
52 };
53
54 void uart0_putc(char byte){
55         uart_putc(UART_0, byte);
56 }
57
58 char uart0_getc(void){
59         return uart_getc(UART_0);
60 }
61
62 /*****************************************************************************
63  *  additional validation-functions                                                                                      *
64  *****************************************************************************/
65 /* IntermediateKAT1_256.txt */
66 static const
67 uint8_t intermediate_data[] = {
68         0xDB, 0x11, 0xF6, 0x09, 0xBA, 0xBA, 0x7B, 0x0C,
69         0xA6, 0x34, 0x92, 0x6B, 0x1D, 0xD5, 0x39, 0xC8,
70         0xCB, 0xAD, 0xA2, 0x49, 0x67, 0xD7, 0xAD, 0xD4,
71         0xD9, 0x87, 0x6F, 0x77, 0xC2, 0xD8, 0x0C, 0x0F,
72         0x4D, 0xCE, 0xFB, 0xD7, 0x12, 0x15, 0x48, 0x37,
73         0x35, 0x82, 0x70, 0x5C, 0xCA, 0x24, 0x95, 0xBD,
74         0x2A, 0x43, 0x71, 0x6F, 0xE6, 0x4E, 0xD2, 0x6D,
75         0x05, 0x9C, 0xFB, 0x56, 0x6B, 0x33, 0x64, 0xBD,
76         0x49, 0xEE, 0x07, 0x17, 0xBD, 0xD9, 0x81, 0x0D,
77         0xD1, 0x4D, 0x8F, 0xAD, 0x80, 0xDB, 0xBD, 0xC4,
78         0xCA, 0xFB, 0x37, 0xCC, 0x60, 0xFB, 0x0F, 0xE2,
79         0xA8, 0x0F, 0xB4, 0x54, 0x1B, 0x8C, 0xA9, 0xD5,
80         0x9D, 0xCE, 0x45, 0x77, 0x38, 0xA9, 0xD3, 0xD8,
81         0xF6, 0x41, 0xAF, 0x8C, 0x3F, 0xD6, 0xDA, 0x16,
82         0x2D, 0xC1, 0x6F, 0xC0, 0x1A, 0xAC, 0x52, 0x7A,
83         0x4A, 0x02, 0x55, 0xB4, 0xD2, 0x31, 0xC0, 0xBE,
84         0x50, 0xF4, 0x4F, 0x0D, 0xB0, 0xB7, 0x13, 0xAF,
85         0x03, 0xD9, 0x68, 0xFE, 0x7F, 0x0F, 0x61, 0xED,
86         0x08, 0x24, 0xC5, 0x5C, 0x4B, 0x52, 0x65, 0x54,
87         0x8F, 0xEB, 0xD6, 0xAA, 0xD5, 0xC5, 0xEE, 0xDF,
88         0x63, 0xEF, 0xE7, 0x93, 0x48, 0x9C, 0x39, 0xB8,
89         0xFD, 0x29, 0xD1, 0x04, 0xCE
90         };
91
92 static const
93 uint8_t intermediate_data2[] = {
94         0x75, 0x8E, 0xA3, 0xFE, 0xA7, 0x38, 0x97, 0x3D,
95         0xB0, 0xB8, 0xBE, 0x7E, 0x59, 0x9B, 0xBE, 0xF4,
96         0x51, 0x93, 0x73, 0xD6, 0xE6, 0xDC, 0xD7, 0x19,
97         0x5E, 0xA8, 0x85, 0xFC, 0x99, 0x1D, 0x89, 0x67,
98         0x62, 0x99, 0x27, 0x59, 0xC2, 0xA0, 0x90, 0x02,
99         0x91, 0x2F, 0xB0, 0x8E, 0x0C, 0xB5, 0xB7, 0x6F,
100         0x49, 0x16, 0x2A, 0xEB, 0x8C, 0xF8, 0x7B, 0x17,
101         0x2C, 0xF3, 0xAD, 0x19, 0x02, 0x53, 0xDF, 0x61,
102         0x2F, 0x77, 0xB1, 0xF0, 0xC5, 0x32, 0xE3, 0xB5,
103         0xFC, 0x99, 0xC2, 0xD3, 0x1F, 0x8F, 0x65, 0x01,
104         0x16, 0x95, 0xA0, 0x87, 0xA3, 0x5E, 0xE4, 0xEE,
105         0xE5, 0xE3, 0x34, 0xC3, 0x69, 0xD8, 0xEE, 0x5D,
106         0x29, 0xF6, 0x95, 0x81, 0x5D, 0x86, 0x6D, 0xA9,
107         0x9D, 0xF3, 0xF7, 0x94, 0x03
108 };
109
110 void echo256_interm(void){
111         echo_small_ctx_t ctx;
112         uint8_t data[1384/8];
113         uint8_t hash[32];
114         echo256_init(&ctx);
115         memcpy(data, intermediate_data, 173);
116         cli_putstr("\r\ninit done ");
117         echo_small_lastBlock(&ctx, data, 1384);
118         cli_putstr("\r\nlastblock done ");
119         echo256_ctx2hash(hash, &ctx);
120         cli_putstr("\r\nhash = ");
121         cli_hexdump(hash, 32);
122 }
123
124 void echo512_interm(void){
125         echo_large_ctx_t ctx;
126         uint8_t data[872/8];
127         uint8_t hash[64];
128         echo512_init(&ctx);
129         memcpy(data, intermediate_data2, 872/8);
130         cli_putstr("\r\ninit done ");
131         echo_large_lastBlock(&ctx, data, 872);
132         cli_putstr("\r\nlastblock done ");
133         echo512_ctx2hash(hash, &ctx);
134         cli_putstr("\r\nhash = ");
135         cli_hexdump(hash, 64);
136 }
137
138 void echo256_test0(void){
139         echo_small_ctx_t ctx;
140         uint8_t hash[32];
141         echo256_init(&ctx);
142         cli_putstr("\r\ninit done ");
143         echo_small_lastBlock(&ctx, NULL, 0);
144         cli_putstr("\r\nlastblock done ");
145         echo256_ctx2hash(hash, &ctx);
146         cli_putstr("\r\nhash = ");
147         cli_hexdump(hash, 32);
148 }
149
150 void performance_echo(void){
151         hfal_performance_multiple(algolist);
152 }
153
154 void testrun_nessie_echo(void){
155         hfal_nessie_multiple(algolist);
156 }
157 /*****************************************************************************
158  *  main                                                                                                                                         *
159  *****************************************************************************/
160
161 const char nessie_str[]       = "nessie";
162 const char test256_str[]      = "test256";
163 const char interm_str[]       = "interm";
164 const char interm2_str[]      = "interm2";
165 const char performance_str[]  = "performance";
166 const char echo_str[]         = "echo";
167 const char shavs_list_str[]   = "shavs_list";
168 const char shavs_set_str[]    = "shavs_set";
169 const char shavs_test1_str[]  = "shavs_test1";
170 const char shavs_test3_str[]  = "shavs_test3";
171
172 cmdlist_entry_t cmdlist[]  = {
173         { nessie_str,                NULL, testrun_nessie_echo         },
174         { interm_str,                NULL, echo256_interm              },
175         { interm2_str,               NULL, echo512_interm              },
176         { test256_str,               NULL, echo256_test0               },
177         { performance_str,           NULL, performance_echo            },
178         { shavs_list_str,            NULL, shavs_listalgos             },
179         { shavs_set_str,         (void*)1, (void_fpt)shavs_setalgo     },
180         { shavs_test1_str,           NULL, shavs_test1                 },
181         { shavs_test3_str,           NULL, shavs_test3                 },
182         { echo_str,              (void*)1, (void_fpt)echo_ctrl         },
183         { NULL,                      NULL, NULL                        }
184 };
185
186 int main(void) {
187         sysclk_set_freq(SYS_FREQ);
188         sysclk_mosc_verify_enable();
189     uart_init(UART_0, 115200, 8, UART_PARATY_NONE, UART_STOPBITS_ONE);
190     gptm_set_timer_32periodic(TIMER0);
191
192         cli_rx = uart0_getc;
193     cli_tx = uart0_putc;
194
195         shavs_algolist=(hfdesc_t**)algolist;
196         shavs_algo=(hfdesc_t*)&echo256_desc;
197
198         for(;;){
199                 cli_putstr("\r\n\r\nARM-Crypto-Lib VS (");
200                 cli_putstr(algo_name);
201                 cli_putstr("; ");
202                 cli_putstr(__DATE__);
203                 cli_putc(' ');
204                 cli_putstr(__TIME__);
205                 cli_putstr(")\r\nloaded and running\r\n");
206         cmd_interface(cmdlist);
207     }
208
209 }