1 /* main-sha256-test.c */
3 This file is part of the AVR-Crypto-Lib.
4 Copyright (C) 2008 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/>.
30 #include "nessie_hash_test.h"
31 #include "performance_test.h"
32 #include "hfal-performance.h"
33 #include "hfal-nessie.h"
40 #include "hfal_sha256.h"
43 char* algo_name = "SHA-256";
45 const hfdesc_t* algolist[] PROGMEM = {
46 (hfdesc_t*)&sha256_desc,
50 /*****************************************************************************
51 * additional validation-functions *
52 *****************************************************************************/
54 void testrun_nessie_sha256(void){
55 hfal_nessie_multiple(algolist);
58 void testrun_performance_sha256(void){
59 hfal_performance_multiple(algolist);
62 void test_monte(void){
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 };
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);
99 void test_monte2(void){
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 };
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);
124 /*****************************************************************************
126 *****************************************************************************/
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";
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 },
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;
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);