1 /* main-groestl-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"
40 #include "groestl_small.h"
41 #include "groestl_large.h"
42 #include "hfal_groestl_small.h"
43 #include "hfal_groestl_large.h"
45 const char* algo_name = "Groestl";
47 void uart0_putc(char byte){
48 uart_putc(UART_0, byte);
51 char uart0_getc(void){
52 return uart_getc(UART_0);
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,
64 /*****************************************************************************
65 * additional validation-functions *
66 *****************************************************************************/
68 void testrun_nessie_groestl(void){
69 hfal_nessie_multiple(algolist);
71 void groestl224_test(void* msg, uint32_t length_b){
72 hfal_test(&groestl224_desc, msg, length_b);
75 void groestl256_test(void* msg, uint32_t length_b){
76 hfal_test(&groestl256_desc, msg, length_b);
79 void groestl384_test(void* msg, uint32_t length_b){
80 hfal_test(&groestl384_desc, msg, length_b);
83 void groestl512_test(void* msg, uint32_t length_b){
84 hfal_test(&groestl512_desc, msg, length_b);
88 void testrun_stdtest_groestl(void){
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);
101 void testshort(void){
102 groestl256_test("abc", 24);
105 void testlshort(void){
106 groestl512_test("abc", 24);
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);
123 void performance_groestl(void){
124 hfal_performance_multiple(algolist);
127 /*****************************************************************************
129 *****************************************************************************/
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";
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},
160 sysclk_mosc_verify_enable();
161 uart_init(UART_0, 115200, 8, UART_PARATY_NONE, UART_STOPBITS_ONE);
162 gptm_set_timer_32periodic(TIMER0);
167 shavs_algolist=(hfdesc_t**)algolist;
168 shavs_algo=(hfdesc_t*)&groestl256_desc;
171 cli_putstr("\r\n\r\nARM-Crypto-Lib VS (");
172 cli_putstr(algo_name);
174 cli_putstr(__DATE__);
176 cli_putstr(__TIME__);
177 cli_putstr(")\r\nloaded and running\r\n");
178 cmd_interface(cmdlist);