From be13e6b437c341f290ab1fd379816527369fdd75 Mon Sep 17 00:00:00 2001 From: bg Date: Tue, 18 Sep 2012 17:43:21 +0200 Subject: [PATCH] more of the present stuff --- mkfiles/present.mk | 6 +- test_src/main-present-test.c | 146 +++++++++++++++++------------------ 2 files changed, 74 insertions(+), 78 deletions(-) diff --git a/mkfiles/present.mk b/mkfiles/present.mk index e3154a7..7571b28 100644 --- a/mkfiles/present.mk +++ b/mkfiles/present.mk @@ -5,9 +5,9 @@ ALGO_NAME := PRESENT BLOCK_CIPHERS += $(ALGO_NAME) $(ALGO_NAME)_DIR := present/ -$(ALGO_NAME)_OBJ := present.o -$(ALGO_NAME)_INCDIR := bcal/ -$(ALGO_NAME)_TESTBIN := main-present-test.o bcal_present.o $(CLI_STD) $(BCAL_STD) +$(ALGO_NAME)_INCDIR := bcal/ memxor/ +$(ALGO_NAME)_OBJ := present_common.o present80.o present128.o memxor.o +$(ALGO_NAME)_TESTBIN := main-present-test.o bcal_present80.o bcal_present128.o $(CLI_STD) $(BCAL_STD) $(ALGO_NAME)_NESSIE_TEST := "nessie" $(ALGO_NAME)_PERFORMANCE_TEST := "performance" diff --git a/test_src/main-present-test.c b/test_src/main-present-test.c index 8dd2468..cb2d2e7 100644 --- a/test_src/main-present-test.c +++ b/test_src/main-present-test.c @@ -1,7 +1,7 @@ /* main-present-test.c */ /* - This file is part of the ARM-Crypto-Lib. - Copyright (C) 2006-2010 Daniel Otte (daniel.otte@rub.de) + 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 @@ -20,92 +20,98 @@ * present test-suit * */ -#include -#include -#include -#include "config.h" -#include "cli.h" -#include "dump.h" -#include "uart_lowlevel.h" -#include "sysclock.h" -#include "hw_gptm.h" -#include "config.h" - -#include -#include "nessie_bc_test.h" +#include "main-test-common.h" +#include +#include + #include "performance_test.h" #include "bcal-performance.h" -#include "bcal_present.h" - -const char* algo_name = "Present"; +#include "bcal-nessie.h" +#include "bcal_present80.h" +#include "bcal_present128.h" -void uart0_putc(char byte){ - uart_putc(UART_0, byte); -} - -char uart0_getc(void){ - return uart_getc(UART_0); -} +char* algo_name = "Present"; -const bcdesc_t* algolist[] = { - (bcdesc_t*)&present_desc, +const bcdesc_t* const algolist[] = { + (bcdesc_t*)&present80_desc, + (bcdesc_t*)&present128_desc, NULL }; - /***************************************************************************** * additional validation-functions * *****************************************************************************/ -void present_genctx_dummy(uint8_t* key, uint16_t keysize_b, present_ctx_t* ctx){ - present_init(key, keysize_b, ctx); -} - void testrun_nessie_present(void){ - nessie_bc_ctx.blocksize_B = 8; - nessie_bc_ctx.keysize_b = 80; - nessie_bc_ctx.name = algo_name; - nessie_bc_ctx.ctx_size_B = sizeof(present_ctx_t); - nessie_bc_ctx.cipher_enc = (nessie_bc_enc_fpt)present_enc; - nessie_bc_ctx.cipher_dec = (nessie_bc_dec_fpt)present_dec; - nessie_bc_ctx.cipher_genctx = (nessie_bc_gen_fpt)present_genctx_dummy; - - nessie_bc_run(); + bcal_nessie_multiple(algolist); } void testrun_selfenc(uint8_t* key, uint8_t* buffer){ - present_ctx_t ctx; + + present80_ctx_t ctx; cli_putstr("\r\nkey : "); cli_hexdump(key, 10); cli_putstr("\r\nplain : "); cli_hexdump(buffer, 8); - present_init(key, 80, &ctx); - present_enc(buffer, &ctx); + present80_init(key, 80, &ctx); + present80_enc(buffer, &ctx); cli_putstr("\r\ncipher: "); cli_hexdump(buffer, 8); - present_dec(buffer, &ctx); + present80_dec(buffer, &ctx); cli_putstr("\r\nplain : "); cli_hexdump(buffer, 8); cli_putstr("\r\n"); } +void testrun_selfenc_128(uint8_t* key, uint8_t* buffer){ + + present128_ctx_t ctx; + cli_putstr("\r\nkey : "); + cli_hexdump(key, 16); + cli_putstr("\r\nplain : "); + cli_hexdump(buffer, 8); + present128_init(key, 128, &ctx); + present128_enc(buffer, &ctx); + cli_putstr("\r\ncipher: "); + cli_hexdump(buffer, 8); + present128_dec(buffer, &ctx); + cli_putstr("\r\nplain : "); + cli_hexdump(buffer, 8); + cli_putstr("\r\n"); +} +// void present_key_test(const uint8_t* key); + + void testrun_self_present(void){ - uint8_t buffer[8], key[10]; + uint8_t buffer[8], key[10], i; cli_putstr("\r\n\r\n=== Testvectors from the paper ===\r\n"); - - memset(buffer, 0, 8); - memset(key, 0, 10); - testrun_selfenc(key, buffer); - - memset(buffer, 0, 8); - memset(key, 0xFF, 10); - testrun_selfenc(key, buffer); - - memset(buffer, 0xFF, 8); - memset(key, 0, 10); - testrun_selfenc(key, buffer); - - memset(buffer, 0xFF, 8); - memset(key, 0xFF, 10); + for(i=0; i<4; ++i){ + memset(buffer, (i&2)?0xff:0x00, 8); + memset(key, (i&1)?0xff:0x00, 10); + testrun_selfenc(key, buffer); + } + memset(buffer, 0x00, 8); + memset(key, 0x00, 10); + key[0] = 0x80; testrun_selfenc(key, buffer); + +// present_key_test(key); + +} + +void testrun_self_present_128(void){ + uint8_t buffer[8], key[16], i; + cli_putstr("\r\n\r\n=== Testvectors from the paper ===\r\n"); + for(i=0; i<4; ++i){ + memset(buffer, (i&2)?0xff:0x00, 8); + memset(key, (i&1)?0xff:0x00, 16); + testrun_selfenc_128(key, buffer); + } + memset(buffer, 0x00, 8); + memset(key, 0x00, 16); + key[0] = 0x80; + testrun_selfenc_128(key, buffer); + +// present_key_test(key); + } void testrun_performance_present(void){ @@ -118,34 +124,24 @@ void testrun_performance_present(void){ const char nessie_str[] = "nessie"; const char test_str[] = "test"; +const char test_128_str[] = "test-128"; const char performance_str[] = "performance"; const char echo_str[] = "echo"; const cmdlist_entry_t cmdlist[] = { { nessie_str, NULL, testrun_nessie_present}, { test_str, NULL, testrun_self_present}, + { test_128_str, NULL, testrun_self_present_128}, { performance_str, NULL, testrun_performance_present}, { echo_str, (void*)1, (void_fpt)echo_ctrl}, { NULL, NULL, NULL} }; int main (void){ - sysclk_set_freq(SYS_FREQ); - sysclk_mosc_verify_enable(); - uart_init(UART_0, 115200, 8, UART_PARATY_NONE, UART_STOPBITS_ONE); - gptm_set_timer_32periodic(TIMER0); - - cli_rx = uart0_getc; - cli_tx = uart0_putc; + main_setup(); for(;;){ - cli_putstr("\r\n\r\nARM-Crypto-Lib VS ("); - cli_putstr(algo_name); - cli_putstr("; "); - cli_putstr(__DATE__); - cli_putc(' '); - cli_putstr(__TIME__); - cli_putstr(")\r\nloaded and running\r\n"); + welcome_msg(algo_name); cmd_interface(cmdlist); } } -- 2.39.2