From a875cd62ff0638897c05ef0aefd6718ebca6e4a1 Mon Sep 17 00:00:00 2001 From: Stefan `Sec` Zehl Date: Thu, 4 Aug 2011 21:49:33 +0200 Subject: [PATCH] add pwgen from mazzoo --- firmware/l0dable/pwgen.c | 55 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 firmware/l0dable/pwgen.c diff --git a/firmware/l0dable/pwgen.c b/firmware/l0dable/pwgen.c new file mode 100644 index 0000000..81575ef --- /dev/null +++ b/firmware/l0dable/pwgen.c @@ -0,0 +1,55 @@ +#include "basic/basic.h" + +#include "usetable.h" + +#define PW_LEN 8 + +void ram(void) +{ + char pw[PW_LEN+1]; + uint16_t k[8]; + int button; + memset(k, 0, 16); + while(1){ + lcdClear(); + lcdNl(); + lcdPrintln(" password"); + lcdPrintln(" generator"); + lcdNl(); + lcdNl(); + pw_set(pw,&k); + pw_cleanup(pw); + lcdPrint(" "); + lcdPrintln(pw); + lcdRefresh(); + delayms(23); + while((button=getInputRaw())==BTN_NONE) + delayms(23); + if(button==BTN_LEFT) return; + } +} + +void pw_cleanup(char * pw) +{ + int i; + for(i=0;i0x7a)pw[i]-=0x10; + if((pw[i]>'Z')&&(pw[i]<'a')) + pw[i]-=0x10; + } +} + +void pw_set(char * pw, uint16_t * k) +{ + int i; + memset(pw,0,PW_LEN); /* wipe old PW */ + for(i=0;i<4;i++) + k[1]=getRandom(); + xxtea_encode_words(pw,PW_LEN/4,k); + pw[PW_LEN]=0; +} +