From 079e93231b2a1227137399f064f13914938b2f67 Mon Sep 17 00:00:00 2001 From: bg Date: Fri, 3 Apr 2009 22:58:48 +0000 Subject: [PATCH] forgotten files --- bcal_cast6.c | 52 +++++++++++ bcal_cast6.h | 33 +++++++ test_src/main-aes128-test.c | 182 ++++++++++++++++++++++++++++++++++++ test_src/main-aes192-test.c | 161 +++++++++++++++++++++++++++++++ test_src/main-aes256-test.c | 164 ++++++++++++++++++++++++++++++++ test_src/main-cast6-test.c | 167 +++++++++++++++++++++++++++++++++ 6 files changed, 759 insertions(+) create mode 100644 bcal_cast6.c create mode 100644 bcal_cast6.h create mode 100644 test_src/main-aes128-test.c create mode 100644 test_src/main-aes192-test.c create mode 100644 test_src/main-aes256-test.c create mode 100644 test_src/main-cast6-test.c diff --git a/bcal_cast6.c b/bcal_cast6.c new file mode 100644 index 0000000..7df7825 --- /dev/null +++ b/bcal_cast6.c @@ -0,0 +1,52 @@ +/* bcal_cast6.c */ +/* + This file is part of the AVR-Crypto-Lib. + Copyright (C) 2008 Daniel Otte (daniel.otte@rub.de) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ +/** + * \file bcal_cast6.c + * \email daniel.otte@rub.de + * \author Daniel Otte + * \date 2009-04-03 + * \license GPLv3 or later + * + */ + +#include +#include +#include "blockcipher_descriptor.h" +#include "cast6.h" +#include "keysize_descriptor.h" + +const char cast6_str[] PROGMEM = "CAST-256"; + +const uint8_t cast6_keysize_desc[] PROGMEM = { KS_TYPE_RANGE, KS_INT(0), KS_INT(256), + KS_TYPE_TERMINATOR }; + +const bcdesc_t cast6_desc PROGMEM = { + BCDESC_TYPE_BLOCKCIPHER, + BC_INIT_TYPE_2, + cast6_str, + sizeof(cast6_ctx_t), + 128, + {(void_fpt)cast6_init}, + {(void_fpt)cast6_enc}, + {(void_fpt)cast6_dec}, + (bc_free_fpt)NULL, + cast6_keysize_desc +}; + + diff --git a/bcal_cast6.h b/bcal_cast6.h new file mode 100644 index 0000000..eb527cd --- /dev/null +++ b/bcal_cast6.h @@ -0,0 +1,33 @@ +/* bcal_cast6.h */ +/* + This file is part of the AVR-Crypto-Lib. + Copyright (C) 2008 Daniel Otte (daniel.otte@rub.de) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ +/** + * \file bcal_cast6.h + * \email daniel.otte@rub.de + * \author Daniel Otte + * \date 2009-04-03 + * \license GPLv3 or later + * + */ + +#include +#include "blopckcipher_descriptor.h" +#include "cast6.h" +#include "keysize_descriptor.h" + +extern const bcdesc_t cast6_desc; diff --git a/test_src/main-aes128-test.c b/test_src/main-aes128-test.c new file mode 100644 index 0000000..aa23163 --- /dev/null +++ b/test_src/main-aes128-test.c @@ -0,0 +1,182 @@ +/* main-aes128-test.c */ +/* + This file is part of the AVR-Crypto-Lib. + Copyright (C) 2008 Daniel Otte (daniel.otte@rub.de) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ +/* + * AES-128 test-suit + * +*/ + +#include "config.h" +#include "serial-tools.h" +#include "uart.h" +#include "debug.h" + +#include "aes.h" +#include "aes128_enc.h" +#include "aes128_dec.h" +#include "aes_keyschedule.h" + +#include "nessie_bc_test.h" +#include "cli.h" +#include "performance_test.h" + +#include +#include +#include + +char* algo_name = "AES-128"; + +/***************************************************************************** + * additional validation-functions * + *****************************************************************************/ + +void testrun_nessie_aes(void){ + nessie_bc_ctx.blocksize_B = 16; + nessie_bc_ctx.keysize_b = 128; + nessie_bc_ctx.name = algo_name; + nessie_bc_ctx.ctx_size_B = sizeof(aes128_ctx_t); + nessie_bc_ctx.cipher_enc = (nessie_bc_enc_fpt)aes128_enc; + nessie_bc_ctx.cipher_dec = (nessie_bc_dec_fpt)aes128_dec; + nessie_bc_ctx.cipher_genctx = (nessie_bc_gen_fpt)aes_init; + nessie_bc_run(); +} + +void testrun_test_aes(void){ + uint8_t key[16] = { 0x2b, 0x7e, 0x15, 0x16, + 0x28, 0xae, 0xd2, 0xa6, + 0xab, 0xf7, 0x15, 0x88, + 0x09, 0xcf, 0x4f, 0x3c }; + uint8_t data[16] = { 0x32, 0x43, 0xf6, 0xa8, + 0x88, 0x5a, 0x30, 0x8d, + 0x31, 0x31, 0x98, 0xa2, + 0xe0, 0x37, 0x07, 0x34 }; + aes128_ctx_t ctx; + aes128_init(key, &ctx); + cli_putstr_P(PSTR("\r\n\r\n cipher test (FIPS 197):\r\n key: ")); + cli_hexdump(key, 16); + cli_putstr_P(PSTR("\r\n plaintext: ")); + cli_hexdump(data, 16); + aes128_enc(data, &ctx); + cli_putstr_P(PSTR("\r\n ciphertext: ")); + cli_hexdump(data, 16); + aes128_dec(data, &ctx); + cli_putstr_P(PSTR("\r\n plaintext: ")); + cli_hexdump(data, 16); + + +} + +void testrun_testkey_aes128(void){ + uint8_t key[16] = { 0x2b, 0x7e, 0x15, 0x16, + 0x28, 0xae, 0xd2, 0xa6, + 0xab, 0xf7, 0x15, 0x88, + 0x09, 0xcf, 0x4f, 0x3c}; + aes128_ctx_t ctx; + uint8_t i; + aes128_init(key, &ctx); + cli_putstr_P(PSTR("\r\n\r\n keyschedule test (FIPS 197):\r\n key: ")); + cli_hexdump(key, 16); + for(i=0; i<11; ++i){ + cli_putstr_P(PSTR("\r\n index: ")); + cli_putc('0'+i/10); + cli_putc('0'+i%10); + cli_putstr_P(PSTR(" roundkey ")); + cli_hexdump(ctx.key[i].ks, 16); + } +} + +void testrun_testkey_aes(void){ + testrun_testkey_aes128(); +} +/*****************************************************************************/ + +void testrun_performance_aes128(void){ + uint64_t t; + char str[16]; + uint8_t key[32], data[16]; + aes128_ctx_t ctx; + + calibrateTimer(); + print_overhead(); + + memset(key, 0, 32); + memset(data, 0, 16); + + startTimer(1); + aes128_init(key, &ctx); + t = stopTimer(); + cli_putstr_P(PSTR("\r\n\tctx-gen time: ")); + ultoa((unsigned long)t, str, 10); + cli_putstr(str); + + + startTimer(1); + aes128_enc(data, &ctx); + t = stopTimer(); + cli_putstr_P(PSTR("\r\n\tencrypt time: ")); + ultoa((unsigned long)t, str, 10); + cli_putstr(str); + + + startTimer(1); + aes128_dec(data, &ctx); + t = stopTimer(); + cli_putstr_P(PSTR("\r\n\tdecrypt time: ")); + ultoa((unsigned long)t, str, 10); + cli_putstr(str); + + cli_putstr_P(PSTR("\r\n")); +} + +void testrun_performance_aes(void){ + cli_putstr_P(PSTR("\r\n -=AES Performance Test=-\r\n")); + cli_putstr_P(PSTR("\r\n AES-128\r\n")); + testrun_performance_aes128(); +} + +/***************************************************************************** + * main * + *****************************************************************************/ +const char nessie_str[] PROGMEM = "nessie"; +const char test_str[] PROGMEM = "test"; +const char testkey_str[] PROGMEM = "testkey"; +const char performance_str[] PROGMEM = "performance"; +const char echo_str[] PROGMEM = "echo"; + +cmdlist_entry_t cmdlist[] PROGMEM = { + { nessie_str, NULL, testrun_nessie_aes }, + { test_str, NULL, testrun_test_aes}, + { testkey_str, NULL, testrun_testkey_aes}, + { performance_str, NULL, testrun_performance_aes}, + { echo_str, (void*)1, (void_fpt)echo_ctrl}, + { NULL, NULL, NULL} +}; + +int main (void){ + DEBUG_INIT(); + + cli_rx = uart_getc; + cli_tx = uart_putc; + for(;;){ + cli_putstr_P(PSTR("\r\n\r\nCrypto-VS (")); + cli_putstr(algo_name); + cli_putstr_P(PSTR(")\r\nloaded and running\r\n")); + cmd_interface(cmdlist); + } +} + diff --git a/test_src/main-aes192-test.c b/test_src/main-aes192-test.c new file mode 100644 index 0000000..2dc0f0e --- /dev/null +++ b/test_src/main-aes192-test.c @@ -0,0 +1,161 @@ +/* main-aes192-test.c */ +/* + This file is part of the AVR-Crypto-Lib. + Copyright (C) 2008 Daniel Otte (daniel.otte@rub.de) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ +/* + * AES-192 test-suit + * +*/ + +#include "config.h" +#include "serial-tools.h" +#include "uart.h" +#include "debug.h" + +#include "aes.h" +#include "aes192_enc.h" +#include "aes192_dec.h" +#include "aes_keyschedule.h" + +#include "nessie_bc_test.h" +#include "cli.h" +#include "performance_test.h" + +#include +#include +#include + +char* algo_name = "AES-192"; + +/***************************************************************************** + * additional validation-functions * + *****************************************************************************/ + +void testrun_nessie_aes(void){ + nessie_bc_ctx.blocksize_B = 16; + nessie_bc_ctx.keysize_b = 192; + nessie_bc_ctx.name = algo_name; + nessie_bc_ctx.ctx_size_B = sizeof(aes192_ctx_t); + nessie_bc_ctx.cipher_enc = (nessie_bc_enc_fpt)aes192_enc; + nessie_bc_ctx.cipher_dec = (nessie_bc_dec_fpt)aes192_dec; + nessie_bc_ctx.cipher_genctx = (nessie_bc_gen_fpt)aes_init; + nessie_bc_run(); +} + +void testrun_testkey_aes192(void){ + uint8_t key[24] = { 0x8e, 0x73, 0xb0, 0xf7, + 0xda, 0x0e, 0x64, 0x52, + 0xc8, 0x10, 0xf3, 0x2b, + 0x80, 0x90, 0x79, 0xe5, + 0x62, 0xf8, 0xea, 0xd2, + 0x52, 0x2c, 0x6b, 0x7b}; + aes192_ctx_t ctx; + uint8_t i; + memset(&ctx, 0, sizeof(aes192_ctx_t)); + aes192_init(key, &ctx); + cli_putstr_P(PSTR("\r\n\r\n keyschedule test (FIPS 197):\r\n key: ")); + cli_hexdump(key, 24); + for(i=0; i<13; ++i){ + cli_putstr_P(PSTR("\r\n index: ")); + cli_putc('0'+i/10); + cli_putc('0'+i%10); + cli_putstr_P(PSTR(" roundkey ")); + cli_hexdump(ctx.key[i].ks, 16); + } +} + +void testrun_testkey_aes(void){ + testrun_testkey_aes192(); +} +/*****************************************************************************/ + +void testrun_performance_aes192(void){ + uint64_t t; + char str[16]; + uint8_t key[32], data[16]; + aes192_ctx_t ctx; + + calibrateTimer(); + print_overhead(); + + memset(key, 0, 32); + memset(data, 0, 16); + + startTimer(1); + aes192_init(key, &ctx); + t = stopTimer(); + cli_putstr_P(PSTR("\r\n\tctx-gen time: ")); + ultoa((unsigned long)t, str, 10); + cli_putstr(str); + + + startTimer(1); + aes192_enc(data, &ctx); + t = stopTimer(); + cli_putstr_P(PSTR("\r\n\tencrypt time: ")); + ultoa((unsigned long)t, str, 10); + cli_putstr(str); + + + startTimer(1); + aes192_dec(data, &ctx); + t = stopTimer(); + cli_putstr_P(PSTR("\r\n\tdecrypt time: ")); + ultoa((unsigned long)t, str, 10); + cli_putstr(str); + + cli_putstr_P(PSTR("\r\n")); +} + +void testrun_performance_aes(void){ + cli_putstr_P(PSTR("\r\n -=AES Performance Test=-\r\n")); + cli_putstr_P(PSTR("\r\n AES-192\r\n")); + testrun_performance_aes192(); +} + +/***************************************************************************** + * main * + *****************************************************************************/ + +const char nessie_str[] PROGMEM = "nessie"; +const char test_str[] PROGMEM = "test"; +const char testkey_str[] PROGMEM = "testkey"; +const char performance_str[] PROGMEM = "performance"; +const char echo_str[] PROGMEM = "echo"; + +cmdlist_entry_t cmdlist[] PROGMEM = { + { nessie_str, NULL, testrun_nessie_aes }, + { test_str, NULL, testrun_nessie_aes}, + { testkey_str, NULL, testrun_testkey_aes}, + { performance_str, NULL, testrun_performance_aes}, + { echo_str, (void*)1, (void_fpt)echo_ctrl}, + { NULL, NULL, NULL} +}; + +int main (void){ + DEBUG_INIT(); + + cli_rx = uart_getc; + cli_tx = uart_putc; + for(;;){ + cli_putstr_P(PSTR("\r\n\r\nCrypto-VS (")); + cli_putstr(algo_name); + cli_putstr_P(PSTR(")\r\nloaded and running\r\n")); + cmd_interface(cmdlist); + } +} + diff --git a/test_src/main-aes256-test.c b/test_src/main-aes256-test.c new file mode 100644 index 0000000..d800b7f --- /dev/null +++ b/test_src/main-aes256-test.c @@ -0,0 +1,164 @@ +/* main-aes256-test.c */ +/* + This file is part of the AVR-Crypto-Lib. + Copyright (C) 2008 Daniel Otte (daniel.otte@rub.de) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ +/* + * AES-256 test-suit + * +*/ + +#include "config.h" +#include "serial-tools.h" +#include "uart.h" +#include "debug.h" + +#include "aes.h" +#include "aes256_enc.h" +#include "aes256_dec.h" +#include "aes_keyschedule.h" + +#include "nessie_bc_test.h" +#include "cli.h" +#include "performance_test.h" + +#include +#include +#include + +char* algo_name = "AES-256"; + +/***************************************************************************** + * additional validation-functions * + *****************************************************************************/ + +void testrun_nessie_aes(void){ + nessie_bc_ctx.blocksize_B = 16; + nessie_bc_ctx.keysize_b = 256; + nessie_bc_ctx.name = algo_name; + nessie_bc_ctx.ctx_size_B = sizeof(aes256_ctx_t); + nessie_bc_ctx.cipher_enc = (nessie_bc_enc_fpt)aes256_enc; + nessie_bc_ctx.cipher_dec = (nessie_bc_dec_fpt)aes256_dec; + nessie_bc_ctx.cipher_genctx = (nessie_bc_gen_fpt)aes_init; + nessie_bc_run(); +} + +void testrun_testkey_aes256(void){ + uint8_t key[32] = { 0x60, 0x3d, 0xeb, 0x10, + 0x15, 0xca, 0x71, 0xbe, + 0x2b, 0x73, 0xae, 0xf0, + 0x85, 0x7d, 0x77, 0x81, + 0x1f, 0x35, 0x2c, 0x07, + 0x3b, 0x61, 0x08, 0xd7, + 0x2d, 0x98, 0x10, 0xa3, + 0x09, 0x14, 0xdf, 0xf4}; + aes256_ctx_t ctx; + uint8_t i; + memset(&ctx, 0, sizeof(aes256_ctx_t)); + aes256_init(key, &ctx); + cli_putstr_P(PSTR("\r\n\r\n keyschedule test (FIPS 197):\r\n key: ")); + cli_hexdump(key, 32); + for(i=0; i<15; ++i){ + cli_putstr_P(PSTR("\r\n index: ")); + cli_putc('0'+i/10); + cli_putc('0'+i%10); + cli_putstr_P(PSTR(" roundkey ")); + cli_hexdump(ctx.key[i].ks, 16); + } +} + +void testrun_testkey_aes(void){ + testrun_testkey_aes256(); +} +/*****************************************************************************/ + +void testrun_performance_aes256(void){ + uint64_t t; + char str[16]; + uint8_t key[32], data[16]; + aes256_ctx_t ctx; + + calibrateTimer(); + print_overhead(); + + memset(key, 0, 32); + memset(data, 0, 16); + + startTimer(1); + aes256_init(key, &ctx); + t = stopTimer(); + cli_putstr_P(PSTR("\r\n\tctx-gen time: ")); + ultoa((unsigned long)t, str, 10); + cli_putstr(str); + + + startTimer(1); + aes256_enc(data, &ctx); + t = stopTimer(); + cli_putstr_P(PSTR("\r\n\tencrypt time: ")); + ultoa((unsigned long)t, str, 10); + cli_putstr(str); + + + startTimer(1); + aes256_dec(data, &ctx); + t = stopTimer(); + cli_putstr_P(PSTR("\r\n\tdecrypt time: ")); + ultoa((unsigned long)t, str, 10); + cli_putstr(str); + + cli_putstr_P(PSTR("\r\n")); +} + +void testrun_performance_aes(void){ + cli_putstr_P(PSTR("\r\n -=AES Performance Test=-\r\n")); + cli_putstr_P(PSTR("\r\n AES-256\r\n")); + testrun_performance_aes256(); +} + +/***************************************************************************** + * main * + *****************************************************************************/ + +const char nessie_str[] PROGMEM = "nessie"; +const char test_str[] PROGMEM = "test"; +const char testkey_str[] PROGMEM = "testkey"; +const char performance_str[] PROGMEM = "performance"; +const char echo_str[] PROGMEM = "echo"; + +cmdlist_entry_t cmdlist[] PROGMEM = { + { nessie_str, NULL, testrun_nessie_aes }, + { test_str, NULL, testrun_nessie_aes}, + { testkey_str, NULL, testrun_testkey_aes}, + { performance_str, NULL, testrun_performance_aes}, + { echo_str, (void*)1, (void_fpt)echo_ctrl}, + { NULL, NULL, NULL} +}; + +int main (void){ + DEBUG_INIT(); + + cli_rx = uart_getc; + cli_tx = uart_putc; + for(;;){ + cli_putstr_P(PSTR("\r\n\r\nCrypto-VS (")); + cli_putstr(algo_name); + cli_putstr_P(PSTR(")\r\nloaded and running\r\n")); + cmd_interface(cmdlist); + } +} + + diff --git a/test_src/main-cast6-test.c b/test_src/main-cast6-test.c new file mode 100644 index 0000000..a259974 --- /dev/null +++ b/test_src/main-cast6-test.c @@ -0,0 +1,167 @@ +/* + * rc6 test-suit + * +*/ + +#include "config.h" +#include "serial-tools.h" +#include "uart.h" +#include "debug.h" + +#include "cast6.h" +#include "nessie_bc_test.h" +#include "cli.h" +#include "performance_test.h" + +#include +#include +#include +#include + +char* algo_name = "CAST-256"; + +/***************************************************************************** + * additional validation-functions * + *****************************************************************************/ + + +void testrun_nessie_cast6(void){ + nessie_bc_init(); + nessie_bc_ctx.blocksize_B = 16; + nessie_bc_ctx.keysize_b = 128; + nessie_bc_ctx.name = algo_name; + nessie_bc_ctx.ctx_size_B = sizeof(cast6_ctx_t); + nessie_bc_ctx.cipher_enc = (nessie_bc_enc_fpt)cast6_enc; + nessie_bc_ctx.cipher_dec = (nessie_bc_dec_fpt)cast6_dec; + nessie_bc_ctx.cipher_genctx = (nessie_bc_gen_fpt)cast6_init; + + nessie_bc_run(); + + nessie_bc_ctx.keysize_b = 192; + nessie_bc_run(); + + nessie_bc_ctx.keysize_b = 256; + nessie_bc_run(); +} + +void testrun_rfc_cast6(void){ + cli_putstr_P(PSTR("\r\n testvalues from rfc-2612\r\n")); + uint8_t key[32], data[16]; + cast6_ctx_t ctx; + memcpy_P(key, PSTR("\x23\x42\xbb\x9e\xfa\x38\x54\x2c" + "\x0a\xf7\x56\x47\xf2\x9f\x61\x5d"), 16); + memset(data, 0, 16); + + cli_putstr_P(PSTR("\r\n key: ")); + cli_hexdump(key, 16); + cli_putstr_P(PSTR("\r\n PT: ")); + cli_hexdump(data, 16); + cast6_init(key, 128, &ctx); + cast6_enc(data, &ctx); + cli_putstr_P(PSTR("\r\n CT: ")); + cli_hexdump(data, 16); + cast6_dec(data, &ctx); + cli_putstr_P(PSTR("\r\n PT: ")); + cli_hexdump(data, 16); + + cli_putstr_P(PSTR("\r\n\r\n")); + + memcpy_P(key, PSTR("\x23\x42\xbb\x9e\xfa\x38\x54\x2c" + "\xbe\xd0\xac\x83\x94\x0a\xc2\x98" + "\xba\xc7\x7a\x77\x17\x94\x28\x63"), 24); + + cli_putstr_P(PSTR("\r\n key: ")); + cli_hexdump(key, 24); + cli_putstr_P(PSTR("\r\n PT: ")); + cli_hexdump(data, 16); + cast6_init(key, 192, &ctx); + cast6_enc(data, &ctx); + cli_putstr_P(PSTR("\r\n CT: ")); + cli_hexdump(data, 16); + cast6_dec(data, &ctx); + cli_putstr_P(PSTR("\r\n PT: ")); + cli_hexdump(data, 16); + + cli_putstr_P(PSTR("\r\n\r\n")); + + memcpy_P(key, PSTR("\x23\x42\xbb\x9e\xfa\x38\x54\x2c" + "\xbe\xd0\xac\x83\x94\x0a\xc2\x98" + "\x8d\x7c\x47\xce\x26\x49\x08\x46" + "\x1c\xc1\xb5\x13\x7a\xe6\xb6\x04"), 32); + cli_putstr_P(PSTR("\r\n key: ")); + cli_hexdump(key, 32); + cli_putstr_P(PSTR("\r\n PT: ")); + cli_hexdump(data, 16); + cast6_init(key, 256, &ctx); + cast6_enc(data, &ctx); + cli_putstr_P(PSTR("\r\n CT: ")); + cli_hexdump(data, 16); + cast6_dec(data, &ctx); + cli_putstr_P(PSTR("\r\n PT: ")); + cli_hexdump(data, 16); + + cli_putstr_P(PSTR("\r\n\r\n")); +} + +void testrun_performance_cast6(void){ + uint64_t t; + char str[16]; + uint8_t key[16], data[16]; + cast6_ctx_t ctx; + + calibrateTimer(); + print_overhead(); + + memset(key, 0, 16); + memset(data, 0, 16); + + startTimer(1); + cast6_init(key, 128, &ctx); + t = stopTimer(); + cli_putstr_P(PSTR("\r\n\tctx-gen time: ")); + ultoa((unsigned long)t, str, 10); + cli_putstr(str); + + startTimer(1); + cast6_enc(data, &ctx); + t = stopTimer(); + cli_putstr_P(PSTR("\r\n\tencrypt time: ")); + ultoa((unsigned long)t, str, 10); + cli_putstr(str); + + startTimer(1); + cast6_dec(data, &ctx); + t = stopTimer(); + cli_putstr_P(PSTR("\r\n\tdecrypt time: ")); + ultoa((unsigned long)t, str, 10); + cli_putstr(str); + cli_putstr_P(PSTR("\r\n")); +} +/***************************************************************************** + * main * + *****************************************************************************/ + +const char nessie_str[] PROGMEM = "nessie"; +const char test_str[] PROGMEM = "test"; +const char performance_str[] PROGMEM = "performance"; +const char echo_str[] PROGMEM = "echo"; + +cmdlist_entry_t cmdlist[] PROGMEM = { + { nessie_str, NULL, testrun_nessie_cast6 }, + { test_str, NULL, testrun_rfc_cast6}, + { performance_str, NULL, testrun_performance_cast6}, + { echo_str, (void*)1, (void_fpt)echo_ctrl}, + { NULL, NULL, NULL} +}; + +int main (void){ + DEBUG_INIT(); + cli_rx = uart_getc; + cli_tx = uart_putc; + for(;;){ + cli_putstr_P(PSTR("\r\n\r\nCrypto-VS (")); + cli_putstr(algo_name); + cli_putstr_P(PSTR(")\r\nloaded and running\r\n")); + cmd_interface(cmdlist); + } +} -- 2.39.2