]> git.cryptolib.org Git - avr-crypto-lib.git/blob - main-des-test.c
289f25b6f48aea318eea5fb5550cc380f87d6a86
[avr-crypto-lib.git] / main-des-test.c
1 /*
2  * des 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 "des.h"
12 #include "nessie_bc_test.h"
13 #include "cli.h"
14 #include "performance_test.h"
15
16 #include <stdint.h>
17 #include <string.h>
18 #include <stdlib.h>
19
20 char* cipher_name = "DES";
21
22 /*****************************************************************************
23  *  additional validation-functions                                                                                      *
24  *****************************************************************************/
25 void des_init_dummy(const void* key, uint16_t keysize_b, void* ctx){
26         memcpy(ctx, key, 8);
27 }
28
29 void des_enc_dummy(void* buffer, void* ctx){
30         des_encrypt(buffer, buffer, ctx);
31
32
33 void des_dec_dummy(void* buffer, void* ctx){
34         des_decrypt(buffer, buffer, ctx);
35
36
37 void testrun_nessie_des(void){
38         nessie_bc_init();
39         nessie_bc_ctx.blocksize_B =   8;
40         nessie_bc_ctx.keysize_b   =  64;
41         nessie_bc_ctx.name        = cipher_name;
42         nessie_bc_ctx.ctx_size_B  = sizeof(8);
43         nessie_bc_ctx.cipher_enc  = (nessie_bc_enc_fpt)des_enc_dummy;
44         nessie_bc_ctx.cipher_dec  = (nessie_bc_dec_fpt)des_dec_dummy;
45         nessie_bc_ctx.cipher_genctx  = (nessie_bc_gen_fpt)des_init_dummy;
46         
47         nessie_bc_run();
48 }
49
50
51 void testrun_performance_des(void){
52         uint16_t i,c;
53         uint64_t t;
54         char str[16];
55         uint8_t key[8], data[8];
56         
57         
58         calibrateTimer();
59         getOverhead(&c, &i);
60         uart_putstr_P(PSTR("\r\n\r\n=== benchmark ==="));
61         utoa(c, str, 10);
62         uart_putstr_P(PSTR("\r\n\tconst overhead:     "));
63         uart_putstr(str);
64         utoa(i, str, 10);
65         uart_putstr_P(PSTR("\r\n\tinterrupt overhead: "));
66         uart_putstr(str);
67         
68         memset(key,  0, 8);
69         memset(data, 0, 8);
70         
71         startTimer(1);
72         des_encrypt(data, data, key);
73         t = stopTimer();
74         uart_putstr_P(PSTR("\r\n\tencrypt time: "));
75         ultoa((unsigned long)t, str, 10);
76         uart_putstr(str);
77         
78         startTimer(1);
79         des_decrypt(data, data, key);
80         t = stopTimer();
81         uart_putstr_P(PSTR("\r\n\tdecrypt time: "));
82         ultoa((unsigned long)t, str, 10);
83         uart_putstr(str);
84         uart_putstr_P(PSTR("\r\n"));
85 }
86 /*****************************************************************************
87  *  main                                                                                                                                         *
88  *****************************************************************************/
89
90 int main (void){
91         char  str[20];
92         DEBUG_INIT();
93         uart_putstr("\r\n");
94
95         uart_putstr_P(PSTR("\r\n\r\nCrypto-VS ("));
96         uart_putstr(cipher_name);
97         uart_putstr_P(PSTR(")\r\nloaded and running\r\n"));
98
99         PGM_P    u   = PSTR("nessie\0test\0performance\0");
100         void_fpt v[] = {testrun_nessie_des, testrun_nessie_des, testrun_performance_des};
101
102         while(1){ 
103                 if (!getnextwordn(str,20)){DEBUG_S("DBG: W1\r\n"); goto error;}
104                 if(execcommand_d0_P(str, u, v)<0){
105                         uart_putstr_P(PSTR("\r\nunknown command\r\n"));
106                 }
107                 continue;
108         error:
109                 uart_putstr("ERROR\r\n");
110         }
111         
112 }
113