]> git.cryptolib.org Git - avr-crypto-lib.git/blob - main-xtea-test.c
7f67f0f9782f06af7a1d0cbd6f4a5da19e44241c
[avr-crypto-lib.git] / main-xtea-test.c
1 /*
2  * XTEA test-suit
3  * 
4 */
5
6 #include "config.h"
7 #include "serial-tools.h"
8 #include "uart.h"
9 #include "debug.h"
10
11 #include "xtea.h"
12 #include "nessie_bc_test.h"
13 #include "performance_test.h"
14 #include "cli.h"
15
16 #include <stdint.h>
17 #include <string.h>
18
19 char* cipher_name = "XTEA";
20
21 void xtea_genctx_dummy(uint8_t* key, uint16_t keysize, void* ctx){
22         memcpy(ctx, key, (keysize+7)/8);
23 }
24
25 void xtea_enc_dummy(uint8_t* buffer, void* ctx){
26         xtea_enc((uint32_t*)buffer, (uint32_t*)buffer, ctx);
27 }
28
29 void xtea_dec_dummy(uint8_t* buffer, void* ctx){
30         xtea_dec((uint32_t*)buffer, (uint32_t*)buffer, ctx);
31 }
32
33 void testrun_nessie_xtea(void){
34         nessie_bc_ctx.blocksize_B =   8;
35         nessie_bc_ctx.keysize_b   = 128;
36         nessie_bc_ctx.name        = cipher_name;
37         nessie_bc_ctx.ctx_size_B  = 128/8;
38         nessie_bc_ctx.cipher_enc  = (nessie_bc_enc_fpt)xtea_enc_dummy;
39         nessie_bc_ctx.cipher_dec  = (nessie_bc_dec_fpt)xtea_dec_dummy;
40         nessie_bc_ctx.cipher_genctx  = (nessie_bc_gen_fpt)xtea_genctx_dummy;
41         
42         nessie_bc_run();        
43 }
44
45 void testrun_performance_xtea(void){
46         uint64_t t;
47         uint8_t key[16], data[8];
48         
49         calibrateTimer();
50         print_overhead();
51         
52         memset(key,  0, 16);
53         memset(data, 0,  8);
54         
55         startTimer(1);
56         xtea_enc(data, data, key);
57         t = stopTimer();
58         print_time_P(PSTR("\tencrypt time: "), t);
59         
60         startTimer(1);
61         xtea_dec(data, data, key);
62         t = stopTimer();
63         print_time_P(PSTR("\tdecrypt time: "), t);
64         
65         uart_putstr_P(PSTR("\r\n"));
66 }
67
68 /*****************************************************************************
69  *  main                                                                                                                                         *
70  *****************************************************************************/
71
72 int main (void){
73         char  str[20];
74         DEBUG_INIT();
75         uart_putstr("\r\n");
76
77         uart_putstr_P(PSTR("\r\n\r\nCrypto-VS ("));
78         uart_putstr(cipher_name);
79         uart_putstr_P(PSTR(")\r\nloaded and running\r\n"));
80
81         PGM_P    u   = PSTR("nessie\0test\0performance\0");
82         void_fpt v[] = {testrun_nessie_xtea, testrun_nessie_xtea, testrun_performance_xtea};
83
84         while(1){ 
85                 if (!getnextwordn(str,20)){DEBUG_S("DBG: W1\r\n"); goto error;}
86                 if(execcommand_d0_P(str, u, v)<0){
87                         uart_putstr_P(PSTR("\r\nunknown command\r\n"));
88                 }
89                 continue;
90         error:
91                 uart_putstr("ERROR\r\n");
92         }
93 }