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/>.
25 #include "main-test-common.h"
28 #include "nessie_hash_test.h"
29 #include "performance_test.h"
30 #include "hfal-performance.h"
31 #include "hfal-nessie.h"
34 #include "hfal_sha256.h"
38 char* algo_name = "SHA-256";
40 const hfdesc_t* const algolist[] PROGMEM = {
41 (hfdesc_t*)&sha256_desc,
45 /*****************************************************************************
46 * additional validation-functions *
47 *****************************************************************************/
49 void testrun_nessie_sha256(void){
50 hfal_nessie_multiple(algolist);
53 void testrun_performance_sha256(void){
54 hfal_performance_multiple(algolist);
57 void test_monte(void){
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 };
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);
94 void test_monte2(void){
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 };
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);
119 /*****************************************************************************
121 *****************************************************************************/
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";
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 },
155 shavs_algolist=(hfdesc_t**)algolist;
156 shavs_algo=(hfdesc_t*)&sha256_desc;
159 welcome_msg(algo_name);
160 cmd_interface(cmdlist);