]> git.cryptolib.org Git - arm-crypto-lib.git/blob - test_src/main-sha256-test.c
switching to dedicated endian switching function
[arm-crypto-lib.git] / test_src / main-sha256-test.c
1 /* main-sha256-test.c */
2 /*
3     This file is part of the ARM-Crypto-Lib.
4     Copyright (C) 2006-2010  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 "main-test-common.h"
25
26 #include "shavs.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"
32
33 #include "sha256.h"
34 #include "hfal_sha256.h"
35
36 const char* algo_name = "SHA-256";
37
38 const hfdesc_t* algolist[] = {
39         (hfdesc_t*)&sha256_desc,
40         NULL
41 };
42
43 /*****************************************************************************
44  *  additional validation-functions                                                                                      *
45  *****************************************************************************/
46
47 void testrun_nessie_sha256(void){
48         hfal_nessie_multiple(algolist);
49 }
50
51 void testrun_performance_sha256(void){
52         hfal_performance_multiple(algolist);
53 }
54
55 void test_monte(void){
56         uint8_t data1[] = {
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 };
69
70    uint8_t data2[] = {
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);
90 }
91
92 void test_monte2(void){
93         uint8_t data[] = {
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 };
110
111    uint8_t hash[SHA256_HASH_BYTES];
112    sha256(hash, data, 1024);
113    cli_putstr("\r\n hash(data) = ");
114    cli_hexdump(hash, 32);
115 }
116
117 /*****************************************************************************
118  *  main                                                                                                                                         *
119  *****************************************************************************/
120
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";
133
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                 },
147         { NULL,                NULL, NULL                           }
148 };
149
150 int main(void) {
151         main_setup();
152
153         shavs_algolist=(hfdesc_t**)algolist;
154         shavs_algo=(hfdesc_t*)&sha256_desc;
155
156         for(;;){
157                 welcome_msg(algo_name);
158                 cmd_interface(cmdlist);
159     }
160
161 }