]> git.cryptolib.org Git - arm-crypto-lib.git/blob - test_src/main-blake-test.c
fixing bugs reported by Christian Dernehl
[arm-crypto-lib.git] / test_src / main-blake-test.c
1 /* main-blake-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  * blake 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 "blake_small.h"
41 #include "blake_large.h"
42 #include "hfal_blake_small.h"
43 #include "hfal_blake_large.h"
44
45
46 char* algo_name = "Blake";
47
48 void uart0_putc(char byte){
49         uart_putc(UART_0, byte);
50 }
51
52 char uart0_getc(void){
53         return uart_getc(UART_0);
54 }
55
56
57 const hfdesc_t* algolist[] = {
58         (hfdesc_t*)&blake224_desc,
59         (hfdesc_t*)&blake256_desc,
60         (hfdesc_t*)&blake384_desc,
61         (hfdesc_t*)&blake512_desc,
62         NULL
63 };
64
65 /*****************************************************************************
66  *  additional validation-functions                                                                                      *
67  *****************************************************************************/
68
69 void testrun_nessie_blake(void){
70         hfal_nessie_multiple(algolist);
71 }
72 void blake224_test(void* msg, uint32_t length_b){
73         hfal_test(&blake224_desc, msg, length_b);
74 }
75
76 void blake256_test(void* msg, uint32_t length_b){
77         hfal_test(&blake256_desc, msg, length_b);
78 }
79
80 void blake384_test(void* msg, uint32_t length_b){
81         hfal_test(&blake384_desc, msg, length_b);
82 }
83
84 void blake512_test(void* msg, uint32_t length_b){
85         hfal_test(&blake512_desc, msg, length_b);
86 }
87 void testrun_stdtest_blake(void){
88         uint8_t msg1[144];
89         memset(msg1, 0, 144);
90         blake224_test("", 8);
91         blake224_test(msg1, 576);
92         blake256_test("", 8);
93         blake256_test(msg1, 576);
94         blake384_test("", 8);
95         blake384_test(msg1, 1152);
96         blake512_test("", 8);
97         blake512_test(msg1, 1152);
98 }
99
100 void testshort(void){
101         blake256_test("", 8);
102 }
103
104 void testlshort(void){
105         blake512_test("", 8);
106 }
107
108 void test512_32(void){
109   uint8_t d[] = { 0xE9, 0x26, 0xAE, 0x8B, 0x0A, 0xF6, 0xE5, 0x31,
110                                  0x76, 0xDB, 0xFF, 0xCC, 0x2A, 0x6B, 0x88, 0xC6,
111                                  0xBD, 0x76, 0x5F, 0x93, 0x9D, 0x3D, 0x17, 0x8A,
112                                  0x9B, 0xDE, 0x9E, 0xF3, 0xAA, 0x13, 0x1C, 0x61,
113                                  0xE3, 0x1C, 0x1E, 0x42, 0xCD, 0xFA, 0xF4, 0xB4,
114                                  0xDC, 0xDE, 0x57, 0x9A, 0x37, 0xE1, 0x50, 0xEF,
115                                  0xBE, 0xF5, 0x55, 0x5B, 0x4C, 0x1C, 0xB4, 0x04,
116                                  0x39, 0xD8, 0x35, 0xA7, 0x24, 0xE2, 0xFA, 0xE7 };
117         blake256_test(d, 512);
118 }
119
120 void performance_blake(void){
121         hfal_performance_multiple(algolist);
122 }
123
124 /*****************************************************************************
125  *  main                                                                                                                                         *
126  *****************************************************************************/
127
128
129 const char nessie_str[]        = "nessie";
130 const char test_str[]          = "test";
131 const char testshort_str[]     = "short";
132 const char testlshort_str[]    = "lshort";
133 const char test512_str[]       = "test512";
134 const char performance_str[]   = "performance";
135 const char echo_str[]          = "echo";
136 const char shavs_list_str[]    = "shavs_list";
137 const char shavs_set_str[]     = "shavs_set";
138 const char shavs_test1_str[]   = "shavs_test1";
139 const char shavs_test3_str[]   = "shavs_test3";
140
141 cmdlist_entry_t cmdlist[]  = {
142         { nessie_str,          NULL, testrun_nessie_blake},
143         { test_str,            NULL, testrun_stdtest_blake},
144         { testshort_str,       NULL, testshort},
145         { testlshort_str,      NULL, testlshort},
146         { test512_str,         NULL, test512_32},
147         { performance_str,     NULL, performance_blake},
148         { shavs_list_str,      NULL, shavs_listalgos},
149         { shavs_set_str,   (void*)1, (void_fpt)shavs_setalgo},
150         { shavs_test1_str,     NULL, shavs_test1},
151         { shavs_test3_str,     NULL, shavs_test3},
152         { echo_str,        (void*)1, (void_fpt)echo_ctrl},
153         { NULL,                NULL, NULL}
154 };
155
156 int main(void) {
157         sysclk_set_freq(SYS_FREQ);
158         sysclk_mosc_verify_enable();
159     uart_init(UART_0, 115200, 8, UART_PARATY_NONE, UART_STOPBITS_ONE);
160     gptm_set_timer_32periodic(TIMER0);
161
162         cli_rx = uart0_getc;
163     cli_tx = uart0_putc;
164
165         shavs_algolist=(hfdesc_t**)algolist;
166         shavs_algo=(hfdesc_t*)&blake256_desc;
167
168         for(;;){
169                 cli_putstr("\r\n\r\nARM-Crypto-Lib VS (");
170                 cli_putstr(algo_name);
171                 cli_putstr("; ");
172                 cli_putstr(__DATE__);
173                 cli_putc(' ');
174                 cli_putstr(__TIME__);
175                 cli_putstr(")\r\nloaded and running\r\n");
176         cmd_interface(cmdlist);
177     }
178
179 }