]> git.cryptolib.org Git - avr-crypto-lib.git/blob - test_src/main-sha256-test.c
clean up
[avr-crypto-lib.git] / test_src / main-sha256-test.c
1 /* main-sha256-test.c */
2 /*
3     This file is part of the AVR-Crypto-Lib.
4     Copyright (C) 2008  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 "config.h"
25
26 #include "uart_i.h"
27 #include "debug.h"
28
29 #include "sha256.h"
30 #include "nessie_hash_test.h"
31 #include "performance_test.h"
32 #include "hfal/hfal-performance.h"
33 #include "hfal/hfal-nessie.h"
34
35 #include <stdint.h>
36 #include <string.h>
37 #include <stdlib.h>
38 #include "cli.h"
39 #include "shavs.h"
40 #include "hfal/hfal_sha256.h"
41 #include "dump.h"
42
43 char* algo_name = "SHA-256";
44
45 const hfdesc_t* algolist[] PROGMEM = {
46         (hfdesc_t*)&sha256_desc,
47         NULL
48 };
49
50 /*****************************************************************************
51  *  additional validation-functions                                                                                      *
52  *****************************************************************************/
53
54 void testrun_nessie_sha256(void){
55         hfal_nessie_multiple(algolist);
56 }
57
58 void testrun_performance_sha256(void){
59         hfal_performance_multiple(algolist);
60 }
61
62 void test_monte(void){
63         uint8_t data1[] = {
64      0xF4, 0x1E, 0xCE, 0x26, 0x13, 0xE4, 0x57, 0x39,
65      0x15, 0x69, 0x6B, 0x5A, 0xDC, 0xD5, 0x1C, 0xA3,
66          0x28, 0xBE, 0x3B, 0xF5, 0x66, 0xA9, 0xCA, 0x99,
67          0xC9, 0xCE, 0xB0, 0x27, 0x9C, 0x1C, 0xB0, 0xA7,
68      0xF4, 0x1E, 0xCE, 0x26, 0x13, 0xE4, 0x57, 0x39,
69      0x15, 0x69, 0x6B, 0x5A, 0xDC, 0xD5, 0x1C, 0xA3,
70          0x28, 0xBE, 0x3B, 0xF5, 0x66, 0xA9, 0xCA, 0x99,
71          0xC9, 0xCE, 0xB0, 0x27, 0x9C, 0x1C, 0xB0, 0xA7,
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
77    uint8_t data2[] = {
78      0xF4, 0x1E, 0xCE, 0x26, 0x13, 0xE4, 0x57, 0x39,
79      0x15, 0x69, 0x6B, 0x5A, 0xDC, 0xD5, 0x1C, 0xA3,
80          0x28, 0xBE, 0x3B, 0xF5, 0x66, 0xA9, 0xCA, 0x99,
81          0xC9, 0xCE, 0xB0, 0x27, 0x9C, 0x1C, 0xB0, 0xA7,
82      0xF4, 0x1E, 0xCE, 0x26, 0x13, 0xE4, 0x57, 0x39,
83      0x15, 0x69, 0x6B, 0x5A, 0xDC, 0xD5, 0x1C, 0xA3,
84          0x28, 0xBE, 0x3B, 0xF5, 0x66, 0xA9, 0xCA, 0x99,
85          0xC9, 0xCE, 0xB0, 0x27, 0x9C, 0x1C, 0xB0, 0xA7,
86      0xFD, 0xDF, 0x1B, 0x37, 0xDD, 0x34, 0xB3, 0xB2,
87      0x01, 0xD4, 0x3C, 0x57, 0xBC, 0xDE, 0x11, 0x58,
88      0x38, 0xF0, 0xDF, 0x70, 0x1D, 0xA9, 0x3C, 0x3B,
89      0xF2, 0xC9, 0xC8, 0x68, 0x96, 0xE7, 0xE6, 0xC7 };
90    uint8_t hash[SHA256_HASH_BYTES];
91    sha256((sha256_hash_t*)hash, data1, 3*32*8);
92    cli_putstr_P(PSTR("\r\n hash(data1) = "));
93    cli_hexdump(hash, 32);
94    sha256((sha256_hash_t*)hash, data2, 3*32*8);
95    cli_putstr_P(PSTR("\r\n hash(data2) = "));
96    cli_hexdump(hash, 32);
97 }
98
99 void test_monte2(void){
100         uint8_t data[] = {
101         0x6c, 0xd4, 0xc0, 0xc5, 0xcb, 0x2c, 0xa2, 0xa0,
102         0xf1, 0xd1, 0xae, 0xce, 0xba, 0xc0, 0x3b, 0x52,
103         0xe6, 0x4e, 0xa0, 0x3d, 0x1a, 0x16, 0x54, 0x37,
104         0x29, 0x36, 0x54, 0x5b, 0x92, 0xbb, 0xc5, 0x48,
105         0x4a, 0x59, 0xdb, 0x74, 0xbb, 0x60, 0xf9, 0xc4,
106         0x0c, 0xeb, 0x1a, 0x5a, 0xa3, 0x5a, 0x6f, 0xaf,
107         0xe8, 0x03, 0x49, 0xe1, 0x4c, 0x25, 0x3a, 0x4e,
108         0x8b, 0x1d, 0x77, 0x61, 0x2d, 0xdd, 0x81, 0xac,
109         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
118    uint8_t hash[SHA256_HASH_BYTES];
119    sha256((sha256_hash_t*)hash, data, 1024);
120    cli_putstr_P(PSTR("\r\n hash(data) = "));
121    cli_hexdump(hash, 32);
122 }
123
124 /*****************************************************************************
125  *  main                                                                                                                                         *
126  *****************************************************************************/
127
128 const char nessie_str[]      PROGMEM = "nessie";
129 const char test_str[]        PROGMEM = "test";
130 const char monte_str[]       PROGMEM = "monte";
131 const char monte2_str[]      PROGMEM = "monte2";
132 const char performance_str[] PROGMEM = "performance";
133 const char echo_str[]        PROGMEM = "echo";
134 const char shavs_list_str[]  PROGMEM = "shavs_list";
135 const char shavs_set_str[]   PROGMEM = "shavs_set";
136 const char shavs_test1_str[] PROGMEM = "shavs_test1";
137 const char shavs_test2_str[] PROGMEM = "shavs_test2";
138 const char shavs_test3_str[] PROGMEM = "shavs_test3";
139 const char dump_str[]        PROGMEM = "dump";
140
141 cmdlist_entry_t cmdlist[] PROGMEM = {
142         { nessie_str,          NULL, testrun_nessie_sha256          },
143         { test_str,            NULL, testrun_nessie_sha256          },
144         { monte_str,           NULL, test_monte                     },
145         { monte2_str,          NULL, test_monte2                    },
146         { performance_str,     NULL, testrun_performance_sha256     },
147         { echo_str,        (void*)1, (void_fpt)echo_ctrl            },
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_test2_str,     NULL, shavs_test2                    },
152         { shavs_test3_str,     NULL, shavs_test3                    },
153         { dump_str,        (void*)1, (void_fpt)dump                 },
154         { NULL,                NULL, NULL                           }
155 };
156
157 int main (void){
158         DEBUG_INIT();
159
160         cli_rx = (cli_rx_fpt)uart0_getc;
161         cli_tx = (cli_tx_fpt)uart0_putc;
162         shavs_algolist=(hfdesc_t**)algolist;
163         shavs_algo=(hfdesc_t*)&sha256_desc;
164         for(;;){
165                 cli_putstr_P(PSTR("\r\n\r\nCrypto-VS ("));
166                 cli_putstr(algo_name);
167                 cli_putstr_P(PSTR(")\r\nloaded and running\r\n"));
168                 cmd_interface(cmdlist);
169         }
170 }