1 /* main-camellia-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 "serial-tools.h"
30 #include "nessie_bc_test.h"
31 #include "performance_test.h"
34 char* algo_name = "Camellia";
40 #include <avr/pgmspace.h>
43 /*****************************************************************************
44 * additional validation-functions *
45 *****************************************************************************/
46 void camellia128_init_dummy(void* key, uint16_t keysize_b, void* ctx){
47 camellia128_init(key, ctx);
50 void testrun_nessie_camellia(void){
51 nessie_bc_ctx.blocksize_B = 16;
52 nessie_bc_ctx.keysize_b = 128;
53 nessie_bc_ctx.name = algo_name;
54 nessie_bc_ctx.ctx_size_B = sizeof(camellia128_ctx_t);
55 nessie_bc_ctx.cipher_enc = (nessie_bc_enc_fpt)camellia128_enc;
56 nessie_bc_ctx.cipher_dec = (nessie_bc_dec_fpt)camellia128_dec;
57 nessie_bc_ctx.cipher_genctx = (nessie_bc_gen_fpt)camellia128_init_dummy;
63 void test_performance_camellia(void){
66 uint8_t key[16], data[16];
67 camellia128_ctx_t ctx;
76 camellia128_init(key, &ctx);
78 cli_putstr_P(PSTR("\r\n\tctx-gen time: "));
79 ultoa((unsigned long)t, str, 10);
84 camellia128_enc(data, &ctx);
86 cli_putstr_P(PSTR("\r\n\tencrypt time: "));
87 ultoa((unsigned long)t, str, 10);
92 camellia128_dec(data, &ctx);
94 cli_putstr_P(PSTR("\r\n\tdecrypt time: "));
95 ultoa((unsigned long)t, str, 10);
98 cli_putstr_P(PSTR("\r\n"));
103 /*****************************************************************************
105 *****************************************************************************/
108 key 01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10
109 plaintext 01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10
110 ciphertext 67 67 31 38 54 96 69 73 08 57 06 56 48 ea be 43
112 void testrun_camellia(void){
114 uint8_t data[16] = { 0x01, 0x23, 0x45, 0x67,
115 0x89, 0xab, 0xcd, 0xef,
116 0xfe, 0xdc, 0xba, 0x98,
117 0x76, 0x54, 0x32, 0x10 };
119 uint8_t key[16] = { 0x01, 0x23, 0x45, 0x67,
120 0x89, 0xab, 0xcd, 0xef,
121 0xfe, 0xdc, 0xba, 0x98,
122 0x76, 0x54, 0x32, 0x10 };
125 camellia128_ctx_t ctx;
126 camellia128_init(key, &ctx);
127 cli_putstr_P(PSTR("\r\n key: "));
128 cli_hexdump(data, 16);
129 cli_putstr_P(PSTR("\r\n plaintext: "));
130 cli_hexdump(data, 16);
131 camellia128_enc(data, &ctx);
132 cli_putstr_P(PSTR("\r\n ciphertext: "));
133 cli_hexdump(data, 16);
134 camellia128_dec(data, &ctx);
135 cli_putstr_P(PSTR("\r\n decrypted: "));
136 cli_hexdump(data, 16);
141 /*****************************************************************************
143 *****************************************************************************/
145 const char nessie_str[] PROGMEM = "nessie";
146 const char test_str[] PROGMEM = "test";
147 const char performance_str[] PROGMEM = "performance";
148 const char echo_str[] PROGMEM = "echo";
150 cmdlist_entry_t cmdlist[] PROGMEM = {
151 { nessie_str, NULL, testrun_nessie_camellia },
152 { test_str, NULL, testrun_camellia},
153 { performance_str, NULL, test_performance_camellia},
154 { echo_str, (void*)1, (void_fpt)echo_ctrl},
164 cli_putstr_P(PSTR("\r\n\r\nCrypto-VS ("));
165 cli_putstr(algo_name);
166 cli_putstr_P(PSTR(")\r\nloaded and running\r\n"));
167 cmd_interface(cmdlist);