]> git.cryptolib.org Git - arm-crypto-lib.git/blob - test_src/main-groestl-test.c
more files
[arm-crypto-lib.git] / test_src / main-groestl-test.c
1 /* main-groestl-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  * groestl 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 "groestl_small.h"
41 #include "groestl_large.h"
42 #include "hfal_groestl_small.h"
43 #include "hfal_groestl_large.h"
44
45 const char* algo_name = "Groestl";
46
47 void uart0_putc(char byte){
48         uart_putc(UART_0, byte);
49 }
50
51 char uart0_getc(void){
52         return uart_getc(UART_0);
53 }
54
55
56 const hfdesc_t* algolist[] = {
57         (hfdesc_t*)&groestl224_desc,
58         (hfdesc_t*)&groestl256_desc,
59         (hfdesc_t*)&groestl384_desc,
60         (hfdesc_t*)&groestl512_desc,
61         NULL
62 };
63
64 /*****************************************************************************
65  *  additional validation-functions                                                                                      *
66  *****************************************************************************/
67
68 void testrun_nessie_groestl(void){
69         hfal_nessie_multiple(algolist);
70 }
71 void groestl224_test(void* msg, uint32_t length_b){
72         hfal_test(&groestl224_desc, msg, length_b);
73 }
74
75 void groestl256_test(void* msg, uint32_t length_b){
76         hfal_test(&groestl256_desc, msg, length_b);
77 }
78
79 void groestl384_test(void* msg, uint32_t length_b){
80         hfal_test(&groestl384_desc, msg, length_b);
81 }
82
83 void groestl512_test(void* msg, uint32_t length_b){
84         hfal_test(&groestl512_desc, msg, length_b);
85 }
86
87
88 void testrun_stdtest_groestl(void){
89         uint8_t msg1[144];
90         memset(msg1, 0, 144);
91         groestl224_test("", 8);
92         groestl224_test(msg1, 576);
93         groestl256_test("", 8);
94         groestl256_test(msg1, 576);
95         groestl384_test("", 8);
96         groestl384_test(msg1, 1152);
97         groestl512_test("", 8);
98         groestl512_test(msg1, 1152);
99 }
100
101 void testshort(void){
102         groestl256_test("abc", 24);
103 }
104
105 void testlshort(void){
106         groestl512_test("abc", 24);
107 }
108
109 void test505(void){
110         const uint8_t data[] = {
111                 0x84, 0x73, 0xDC, 0x53, 0x82, 0xDE, 0x32, 0x95,
112                 0x7E, 0x3A, 0x15, 0xCA, 0x3D, 0x79, 0x1C, 0x67,
113                 0xD2, 0x0C, 0xF9, 0xEF, 0xBE, 0x3E, 0x46, 0x40,
114                 0x7D, 0xCA, 0x5D, 0x02, 0x63, 0x5A, 0xC8, 0x6D,
115                 0x2E, 0x0B, 0x22, 0xC7, 0x6D, 0x7D, 0x08, 0x0D,
116                 0x36, 0x2E, 0x82, 0x75, 0x89, 0x14, 0xCC, 0x0A,
117                 0xE2, 0xB8, 0x9B, 0xD3, 0x5F, 0x71, 0xD8, 0x44,
118                 0x92, 0xD9, 0x43, 0x07, 0x42, 0x78, 0x9C, 0x80 };
119         groestl224_test(data, 505);
120 }
121
122
123 void performance_groestl(void){
124         hfal_performance_multiple(algolist);
125 }
126
127 /*****************************************************************************
128  *  main                                                                                                                                         *
129  *****************************************************************************/
130
131
132 const char nessie_str[]        = "nessie";
133 const char test_str[]          = "test";
134 const char testshort_str[]     = "short";
135 const char testlshort_str[]    = "lshort";
136 const char test505_str[]       = "test505";
137 const char performance_str[]   = "performance";
138 const char echo_str[]          = "echo";
139 const char shavs_list_str[]    = "shavs_list";
140 const char shavs_set_str[]     = "shavs_set";
141 const char shavs_test1_str[]   = "shavs_test1";
142
143 cmdlist_entry_t cmdlist[]  = {
144         { nessie_str,          NULL, testrun_nessie_groestl},
145         { test_str,            NULL, testrun_stdtest_groestl},
146         { testshort_str,       NULL, testshort},
147         { testlshort_str,      NULL, testlshort},
148         { test505_str,         NULL, test505},
149         { performance_str,     NULL, performance_groestl},
150         { shavs_list_str,      NULL, shavs_listalgos},
151         { shavs_set_str,   (void*)1, (void_fpt)shavs_setalgo},
152         { shavs_test1_str,     NULL, shavs_test1},
153         { echo_str,        (void*)1, (void_fpt)echo_ctrl},
154         { NULL,                NULL, NULL}
155 };
156
157
158 int main(void) {
159         sysclk_set_80MHz();
160         sysclk_mosc_verify_enable();
161     uart_init(UART_0, 115200, 8, UART_PARATY_NONE, UART_STOPBITS_ONE);
162     gptm_set_timer_32periodic(TIMER0);
163
164         cli_rx = uart0_getc;
165     cli_tx = uart0_putc;
166
167         shavs_algolist=(hfdesc_t**)algolist;
168         shavs_algo=(hfdesc_t*)&groestl256_desc;
169
170         for(;;){
171                 cli_putstr("\r\n\r\nARM-Crypto-Lib VS (");
172                 cli_putstr(algo_name);
173                 cli_putstr("; ");
174                 cli_putstr(__DATE__);
175                 cli_putc(' ');
176                 cli_putstr(__TIME__);
177                 cli_putstr(")\r\nloaded and running\r\n");
178         cmd_interface(cmdlist);
179     }
180
181 }