]> git.cryptolib.org Git - avr-crypto-lib.git/blob - test_src/main-sha256-test.c
fixing E-Mail-Address & Copyright
[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) 2006-2015 Daniel Otte (bg@nerilex.org)
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
25 #include "main-test-common.h"
26
27 #include "sha256.h"
28 #include "nessie_hash_test.h"
29 #include "performance_test.h"
30 #include "hfal-performance.h"
31 #include "hfal-nessie.h"
32
33 #include "shavs.h"
34 #include "hfal_sha256.h"
35
36 #include "dump.h"
37
38 char *algo_name = "SHA-256";
39
40 const hfdesc_t *const algolist[] PROGMEM = {
41         (hfdesc_t*)&sha256_desc,
42         NULL
43 };
44
45 /*****************************************************************************
46  *  additional validation-functions                                                                                      *
47  *****************************************************************************/
48
49 void testrun_nessie_sha256(void){
50         hfal_nessie_multiple(algolist);
51 }
52
53 void testrun_performance_sha256(void){
54         hfal_performance_multiple(algolist);
55 }
56
57 void test_monte(void){
58         uint8_t data1[] = {
59      0xF4, 0x1E, 0xCE, 0x26, 0x13, 0xE4, 0x57, 0x39,
60      0x15, 0x69, 0x6B, 0x5A, 0xDC, 0xD5, 0x1C, 0xA3,
61          0x28, 0xBE, 0x3B, 0xF5, 0x66, 0xA9, 0xCA, 0x99,
62          0xC9, 0xCE, 0xB0, 0x27, 0x9C, 0x1C, 0xB0, 0xA7,
63      0xF4, 0x1E, 0xCE, 0x26, 0x13, 0xE4, 0x57, 0x39,
64      0x15, 0x69, 0x6B, 0x5A, 0xDC, 0xD5, 0x1C, 0xA3,
65          0x28, 0xBE, 0x3B, 0xF5, 0x66, 0xA9, 0xCA, 0x99,
66          0xC9, 0xCE, 0xB0, 0x27, 0x9C, 0x1C, 0xB0, 0xA7,
67      0xF4, 0x1E, 0xCE, 0x26, 0x13, 0xE4, 0x57, 0x39,
68      0x15, 0x69, 0x6B, 0x5A, 0xDC, 0xD5, 0x1C, 0xA3,
69          0x28, 0xBE, 0x3B, 0xF5, 0x66, 0xA9, 0xCA, 0x99,
70          0xC9, 0xCE, 0xB0, 0x27, 0x9C, 0x1C, 0xB0, 0xA7 };
71
72    uint8_t data2[] = {
73      0xF4, 0x1E, 0xCE, 0x26, 0x13, 0xE4, 0x57, 0x39,
74      0x15, 0x69, 0x6B, 0x5A, 0xDC, 0xD5, 0x1C, 0xA3,
75          0x28, 0xBE, 0x3B, 0xF5, 0x66, 0xA9, 0xCA, 0x99,
76          0xC9, 0xCE, 0xB0, 0x27, 0x9C, 0x1C, 0xB0, 0xA7,
77      0xF4, 0x1E, 0xCE, 0x26, 0x13, 0xE4, 0x57, 0x39,
78      0x15, 0x69, 0x6B, 0x5A, 0xDC, 0xD5, 0x1C, 0xA3,
79          0x28, 0xBE, 0x3B, 0xF5, 0x66, 0xA9, 0xCA, 0x99,
80          0xC9, 0xCE, 0xB0, 0x27, 0x9C, 0x1C, 0xB0, 0xA7,
81      0xFD, 0xDF, 0x1B, 0x37, 0xDD, 0x34, 0xB3, 0xB2,
82      0x01, 0xD4, 0x3C, 0x57, 0xBC, 0xDE, 0x11, 0x58,
83      0x38, 0xF0, 0xDF, 0x70, 0x1D, 0xA9, 0x3C, 0x3B,
84      0xF2, 0xC9, 0xC8, 0x68, 0x96, 0xE7, 0xE6, 0xC7 };
85    uint8_t hash[SHA256_HASH_BYTES];
86    sha256((sha256_hash_t*)hash, data1, 3*32*8);
87    cli_putstr_P(PSTR("\r\n hash(data1) = "));
88    cli_hexdump(hash, 32);
89    sha256((sha256_hash_t*)hash, data2, 3*32*8);
90    cli_putstr_P(PSTR("\r\n hash(data2) = "));
91    cli_hexdump(hash, 32);
92 }
93
94 void test_monte2(void){
95         uint8_t data[] = {
96         0x6c, 0xd4, 0xc0, 0xc5, 0xcb, 0x2c, 0xa2, 0xa0,
97         0xf1, 0xd1, 0xae, 0xce, 0xba, 0xc0, 0x3b, 0x52,
98         0xe6, 0x4e, 0xa0, 0x3d, 0x1a, 0x16, 0x54, 0x37,
99         0x29, 0x36, 0x54, 0x5b, 0x92, 0xbb, 0xc5, 0x48,
100         0x4a, 0x59, 0xdb, 0x74, 0xbb, 0x60, 0xf9, 0xc4,
101         0x0c, 0xeb, 0x1a, 0x5a, 0xa3, 0x5a, 0x6f, 0xaf,
102         0xe8, 0x03, 0x49, 0xe1, 0x4c, 0x25, 0x3a, 0x4e,
103         0x8b, 0x1d, 0x77, 0x61, 0x2d, 0xdd, 0x81, 0xac,
104         0xe9, 0x26, 0xae, 0x8b, 0x0a, 0xf6, 0xe5, 0x31,
105         0x76, 0xdb, 0xff, 0xcc, 0x2a, 0x6b, 0x88, 0xc6,
106         0xbd, 0x76, 0x5f, 0x93, 0x9d, 0x3d, 0x17, 0x8a,
107         0x9b, 0xde, 0x9e, 0xf3, 0xaa, 0x13, 0x1c, 0x61,
108         0xe3, 0x1c, 0x1e, 0x42, 0xcd, 0xfa, 0xf4, 0xb4,
109         0xdc, 0xde, 0x57, 0x9a, 0x37, 0xe1, 0x50, 0xef,
110         0xbe, 0xf5, 0x55, 0x5b, 0x4c, 0x1c, 0xb4, 0x04,
111         0x39, 0xd8, 0x35, 0xa7, 0x24, 0xe2, 0xfa, 0xe7 };
112
113    uint8_t hash[SHA256_HASH_BYTES];
114    sha256((sha256_hash_t*)hash, data, 1024);
115    cli_putstr_P(PSTR("\r\n hash(data) = "));
116    cli_hexdump(hash, 32);
117 }
118
119 /*****************************************************************************
120  *  main                                                                                                                                         *
121  *****************************************************************************/
122
123 const char nessie_str[]      PROGMEM = "nessie";
124 const char test_str[]        PROGMEM = "test";
125 const char monte_str[]       PROGMEM = "monte";
126 const char monte2_str[]      PROGMEM = "monte2";
127 const char performance_str[] PROGMEM = "performance";
128 const char echo_str[]        PROGMEM = "echo";
129 const char shavs_list_str[]  PROGMEM = "shavs_list";
130 const char shavs_set_str[]   PROGMEM = "shavs_set";
131 const char shavs_test1_str[] PROGMEM = "shavs_test1";
132 const char shavs_test2_str[] PROGMEM = "shavs_test2";
133 const char shavs_test3_str[] PROGMEM = "shavs_test3";
134 const char dump_str[]        PROGMEM = "dump";
135
136 const cmdlist_entry_t cmdlist[] PROGMEM = {
137         { nessie_str,          NULL, testrun_nessie_sha256          },
138         { test_str,            NULL, testrun_nessie_sha256          },
139         { monte_str,           NULL, test_monte                     },
140         { monte2_str,          NULL, test_monte2                    },
141         { performance_str,     NULL, testrun_performance_sha256     },
142         { echo_str,        (void*)1, (void_fpt)echo_ctrl            },
143         { shavs_list_str,      NULL, shavs_listalgos                },
144         { shavs_set_str,   (void*)1, (void_fpt)shavs_setalgo        },
145         { shavs_test1_str,     NULL, shavs_test1                    },
146         { shavs_test2_str,     NULL, shavs_test2                    },
147         { shavs_test3_str,     NULL, shavs_test3                    },
148         { dump_str,        (void*)1, (void_fpt)dump                 },
149         { NULL,                NULL, NULL                           }
150 };
151
152 int main (void){
153     main_setup();
154
155     shavs_algolist=(hfdesc_t**)algolist;
156         shavs_algo=(hfdesc_t*)&sha256_desc;
157
158         for(;;){
159             welcome_msg(algo_name);
160             cmd_interface(cmdlist);
161         }
162 }