]> git.cryptolib.org Git - avr-crypto-lib.git/blob - main-trivium-test.c
feeb52e2d1518f1eb5e77828ff6aad2d36e362b6
[avr-crypto-lib.git] / main-trivium-test.c
1 /*
2  * Mickey128 test-suit
3  * 
4 */
5
6 #include "config.h"
7 #include "serial-tools.h"
8 #include "uart.h"
9 #include "debug.h"
10 #include "cli.h"
11
12 #include "trivium.h"
13 #include "nessie_stream_test.h"
14 #include "performance_test.h"
15
16 #include <stdlib.h>
17 #include <stdint.h>
18 #include <string.h>
19
20 char* cipher_name = "Trivium";
21
22 /*****************************************************************************
23  *  additional validation-functions                                                                                      *
24  *****************************************************************************/
25 void trivium_genctx_dummy(uint8_t* key, uint16_t keysize_b, void* ctx){
26         uint32_t iv=0;
27         trivium_init(key, 80, &iv, 32, ctx);
28 }
29
30 uint8_t trivium_getbyte_dummy(trivium_ctx_t* ctx){
31         uint8_t i,ret=0;
32         for(i=0; i<8; ++i){
33                 ret<<=1;
34                 ret |= trivium_enc(ctx);
35         }
36         return ret;
37 }
38
39 void testrun_nessie_trivium(void){
40         nessie_stream_ctx.outsize_b =   8; /* actually unused */
41         nessie_stream_ctx.keysize_b =  80; /* this is the one we have refrence vectors for */
42         nessie_stream_ctx.ivsize_b  =  32;
43         nessie_stream_ctx.name = cipher_name;
44         nessie_stream_ctx.ctx_size_B = sizeof(trivium_ctx_t);
45         nessie_stream_ctx.cipher_genctx = (nessie_stream_genctx_fpt)trivium_genctx_dummy;
46         nessie_stream_ctx.cipher_enc = (nessie_stream_genenc_fpt)trivium_getbyte_dummy;
47         
48         nessie_stream_run();    
49 }
50
51 void testrun_performance_trivium(void){
52         uint16_t i,c;
53         uint64_t t;
54         char str[16];
55         uint8_t key[10], iv[10];
56         trivium_ctx_t ctx;
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, 10);
69         memset(iv,  0, 10);
70         
71         startTimer(1);
72         trivium_init(key, 80, iv, 80, &ctx);
73         t = stopTimer();
74         uart_putstr_P(PSTR("\r\n\tctx-gen time: "));
75         ultoa((unsigned long)t, str, 10);
76         uart_putstr(str);       
77         
78         startTimer(1);
79         trivium_enc(&ctx);
80         t = stopTimer();
81         uart_putstr_P(PSTR("\r\n\tencrypt time: "));
82         ultoa((unsigned long)t, str, 10);
83         uart_putstr(str);       
84         
85         uart_putstr_P(PSTR("\r\n"));
86 }
87
88 /*****************************************************************************
89  *  main                                                                                                                                         *
90  *****************************************************************************/
91
92 int main (void){
93         char  str[20];
94         DEBUG_INIT();
95         uart_putstr("\r\n");
96
97         uart_putstr_P(PSTR("\r\n\r\nCrypto-VS ("));
98         uart_putstr(cipher_name);
99         uart_putstr_P(PSTR(")\r\nloaded and running\r\n"));
100
101         PGM_P    u   = PSTR("nessie\0test\0performance\0");
102         void_fpt v[] = {testrun_nessie_trivium, testrun_nessie_trivium, testrun_performance_trivium};
103
104         while(1){ 
105                 if (!getnextwordn(str,20)){DEBUG_S("DBG: W1\r\n"); goto error;}
106                 if(execcommand_d0_P(str, u, v)<0){
107                         uart_putstr_P(PSTR("\r\nunknown command\r\n"));
108                 }
109                 continue;
110         error:
111                 uart_putstr("ERROR\r\n");
112         }       
113 }