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