1 /* main-blake-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/>.
29 #include "blake_small.h"
30 #include "blake_large.h"
31 #include "hfal_blake_small.h"
32 #include "hfal_blake_large.h"
33 #include "hfal-nessie.h"
34 #include "hfal-test.h"
35 #include "hfal-performance.h"
38 #include "nessie_hash_test.h"
39 #include "performance_test.h"
45 char* algo_name = "Blake";
48 const hfdesc_t* algolist[] PROGMEM = {
49 (hfdesc_t*)&blake28_desc,
50 (hfdesc_t*)&blake32_desc,
51 (hfdesc_t*)&blake48_desc,
52 (hfdesc_t*)&blake64_desc,
56 /*****************************************************************************
57 * additional validation-functions *
58 *****************************************************************************/
60 void testrun_nessie_blake(void){
61 hfal_nessie_multiple(algolist);
63 void blake28_test(void* msg, uint32_t length_b){
64 hfal_test(&blake28_desc, msg, length_b);
67 void blake32_test(void* msg, uint32_t length_b){
68 hfal_test(&blake32_desc, msg, length_b);
71 void blake48_test(void* msg, uint32_t length_b){
72 hfal_test(&blake48_desc, msg, length_b);
75 void blake64_test(void* msg, uint32_t length_b){
76 hfal_test(&blake64_desc, msg, length_b);
78 void testrun_stdtest_blake(void){
82 blake28_test(msg1, 576);
84 blake32_test(msg1, 576);
86 blake48_test(msg1, 1152);
88 blake64_test(msg1, 1152);
95 void testlshort(void){
99 void test512_32(void){
100 uint8_t d[] = { 0xE9, 0x26, 0xAE, 0x8B, 0x0A, 0xF6, 0xE5, 0x31,
101 0x76, 0xDB, 0xFF, 0xCC, 0x2A, 0x6B, 0x88, 0xC6,
102 0xBD, 0x76, 0x5F, 0x93, 0x9D, 0x3D, 0x17, 0x8A,
103 0x9B, 0xDE, 0x9E, 0xF3, 0xAA, 0x13, 0x1C, 0x61,
104 0xE3, 0x1C, 0x1E, 0x42, 0xCD, 0xFA, 0xF4, 0xB4,
105 0xDC, 0xDE, 0x57, 0x9A, 0x37, 0xE1, 0x50, 0xEF,
106 0xBE, 0xF5, 0x55, 0x5B, 0x4C, 0x1C, 0xB4, 0x04,
107 0x39, 0xD8, 0x35, 0xA7, 0x24, 0xE2, 0xFA, 0xE7 };
108 blake32_test(d, 512);
111 void performance_blake(void){
112 hfal_performance_multiple(algolist);
115 /*****************************************************************************
117 *****************************************************************************/
120 const char nessie_str[] PROGMEM = "nessie";
121 const char test_str[] PROGMEM = "test";
122 const char testshort_str[] PROGMEM = "short";
123 const char testlshort_str[] PROGMEM = "lshort";
124 const char test512_str[] PROGMEM = "test512";
125 const char performance_str[] PROGMEM = "performance";
126 const char echo_str[] PROGMEM = "echo";
127 const char shavs_list_str[] PROGMEM = "shavs_list";
128 const char shavs_set_str[] PROGMEM = "shavs_set";
129 const char shavs_test1_str[] PROGMEM = "shavs_test1";
131 cmdlist_entry_t cmdlist[] PROGMEM = {
132 { nessie_str, NULL, testrun_nessie_blake},
133 { test_str, NULL, testrun_stdtest_blake},
134 { testshort_str, NULL, testshort},
135 { testlshort_str, NULL, testlshort},
136 { test512_str, NULL, test512_32},
137 { performance_str, NULL, performance_blake},
138 { shavs_list_str, NULL, shavs_listalgos},
139 { shavs_set_str, (void*)1, (void_fpt)shavs_setalgo},
140 { shavs_test1_str, NULL, shavs_test1},
141 { echo_str, (void*)1, (void_fpt)echo_ctrl},
148 cli_rx = (cli_rx_fpt)uart0_getc;
149 cli_tx = (cli_tx_fpt)uart0_putc;
150 shavs_algolist=(hfdesc_t**)algolist;
151 shavs_algo=(hfdesc_t*)&blake32_desc;
153 cli_putstr_P(PSTR("\r\n\r\nCrypto-VS ("));
154 cli_putstr(algo_name);
155 cli_putstr_P(PSTR("; "));
156 cli_putstr(__DATE__);
157 cli_putstr_P(PSTR(" "));
158 cli_putstr(__TIME__);
159 cli_putstr_P(PSTR(")\r\nloaded and running\r\n"));
161 cmd_interface(cmdlist);