diff --git a/Makefile b/Makefile index 3761ed5..fc63924 100644 --- a/Makefile +++ b/Makefile @@ -1,55 +1,82 @@ +# Makefile for the micro-crypt project +# author: Daniel Otte + +BLOCK_CIPHERS = +STREAM_CIPHERS = +HASHES = + + +include avr-makefile.inc +include *.mk + +ALGORITHMS = $(BLOCK_CIPHERS) $(STREAM_CIPHERS) $(HASHES) +ALGORITHMS_OBJ = $(patsubst %,%_OBJ, $(ALGORITHMS)) +ALGORITHMS_OBJ_IMM = $(foreach a, $(ALGORITHMS_OBJ), $($(a))) +ALGORITHMS_TEST_BIN = $(patsubst %,%_TEST_BIN, $(ALGORITHMS)) +ALGORITHMS_TEST_BIN_MAIN = $(foreach a, $(ALGORITHMS_TEST_BIN), $(firstword $($(a)))) +ALGORITHMS_TEST_BIN_MAIN_ELF = $(patsubst %.o, %.elf, $(ALGORITHMS_TEST_BIN_MAIN)) +ALGORITHMS_TEST_BIN_MAIN_HEX = $(patsubst %.o, %.hex, $(ALGORITHMS_TEST_BIN_MAIN)) + +ALGORITHMS_TEST_BIN_IMM = $(foreach a, $(ALGORITHMS_TEST_BIN), $($(a))) +ALGORITHMS_NESSIE_TEST = $(patsubst %,%_NESSIE_TEST, $(ALGORITHMS)) +ALGORITHMS_PERFORMANCE_TEST = $(patsubst %,%_PERORMANCE_TEST, $(ALGORITHMS)) + + PRG = serpent-test -#PRG = tdes-test -# camellia -# cryptotest -SERPENT_OBJ = main-serpent-test.o debug.o uart.o serial-tools.o serpent.o nessie_bc_test.o -CAMELLIA_OBJ = main-camellia-test.o debug.o uart.o serial-tools.o camellia.o camellia-asm.o -SKIPJACK_OBJ = main-skipjack-test.o debug.o uart.o serial-tools.o skipjack.o -SHA1_OBJ = main-sha1-test.o debug.o uart.o serial-tools.o sha1-asm.o -MD5_OBJ = main-md5-test.o debug.o uart.o serial-tools.o md5.o -CAST5_OBJ = main-cast5-test.o debug.o uart.o serial-tools.o cast5.o -RC6_OBJ = main-rc6-test.o debug.o uart.o serial-tools.o rc6.o -Multi_OBJ = main.o debug.o uart.o serial-tools.o sha256-asm.o xtea-asm.o arcfour-asm.o prng.o cast5.o -DES_OBJ = main-des-test.o debug.o uart.o serial-tools.o des.o -TDES_OBJ = main-tdes-test.o debug.o uart.o serial-tools.o des.o -SEED_OBJ = main-seed-test.o debug.o uart.o serial-tools.o seed.o seed-asm.o -SHABEA_OBJ = main-shabea-test.o debug.o uart.o serial-tools.o shabea.o sha256-asm.o -OBJ = $(SERPENT_OBJ) -MCU_TARGET = atmega32 -OPTIMIZE = -Os +#SHA1_OBJ = main-sha1-test.o debug.o uart.o serial-tools.o sha1-asm.o +#MD5_OBJ = main-md5-test.o debug.o uart.o serial-tools.o md5.o -FLASHCMD = avrdude -p $(MCU_TARGET) -P /dev/ttyUSB0 -c avr911 -U flash:w:$(PRG).hex -# -U eeprom:w:$(PRG)_eeprom.hex -#uisp -dprog=bsd -dlpt=/dev/parport1 --upload if=$(PRG).hex -ERASECMD = +#Multi_OBJ = main.o debug.o uart.o serial-tools.o sha256-asm.o xtea-asm.o arcfour-asm.o prng.o cast5.o + +#OBJ = $(SERPENT_OBJ) DEFS = LIBS = -# You should not have to change anything below here. +define BLA_TEMPLATE2 +$(2): $(3) + echo $$@ + echo $$^ + $(CC) $(CFLAGS) $(LDFLAGS)$(patsubst %.elf,%.map,$(2)) -o \ + $(2) \ + $(3) \ + $(LIBS) +endef -CC = avr-gcc +$(foreach algo, $(ALGORITHMS), $(eval $(call BLA_TEMPLATE2, $(algo), $(patsubst %.o,%.elf,$(firstword $($(algo)_TEST_BIN))), $($(algo)_TEST_BIN) ))) -# Override is only needed by avr-lib build system. +.PHONY: info +info: + echo $(ALGORITHMS_TEST_BIN_MAIN) + echo $(ALGORITHMS) + echo $(firstword $(XTEA_TEST_BIN)) + echo $(patsubst %.o,%.elf,$(firstword $(XTEA_TEST_BIN))) +# echo $(ALGORITHMS_OBJ) +# echo $(ALGORITHMS_OBJ_IMM) +# echo $(ALGORITHMS_TEST_BIN) +# echo $(ALGORITHMS_NESSIE_TEST) +# echo $(ALGORITHMS_PERFORMANCE_TEST) -override CFLAGS = -pedantic -std=c99 -Wall -Wstrict-prototypes $(OPTIMIZE) -mmcu=$(MCU_TARGET) -$(DEFS) -override LDFLAGS = -Wl,-Map,$(PRG).map -override ASFLAGS = -mmcu=$(MCU_TARGET) +bc: $(ALGORITHMS_OBJ) -OBJCOPY = avr-objcopy -OBJDUMP = avr-objdump +tests: $(ALGORITHMS_TEST_BIN) \ + $(ALGORITHMS_TEST_BIN_MAIN_ELF) \ + $(ALGORITHMS_TEST_BIN_MAIN_HEX) + +$(ALGORITHMS_OBJ): $(ALGORITHMS_OBJ_IMM) +$(ALGORITHMS_TEST_BIN): $(ALGORITHMS_TEST_BIN_IMM) + +$(ALGORITHMS): + +.PHONY: all all: $(PRG).elf lst text eeprom -$(PRG).elf: $(OBJ) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) - -#rc6-test: +.PHONY: clean clean: - rm -rf *.o $(PRG).elf *.eps *.png *.pdf *.bak + rm -rf *.o *.elf *.eps *.png *.pdf *.bak rm -rf *.lst *.map $(EXTRA_CLEAN_FILES) flash: @@ -95,6 +122,11 @@ esrec: $(PRG)_eeprom.srec %_eeprom.bin: %.elf $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O binary $< $@ +%_size.txt: %.o + $(SIZE) $< > $@ + + + # Every thing below here is used by avr-libc's build system and can be ignored # by the casual user. @@ -107,6 +139,7 @@ eps: $(PRG).eps png: $(PRG).png pdf: $(PRG).pdf + %.eps: %.fig $(FIG2DEV) -L eps $< $@ diff --git a/arcfour.mk b/arcfour.mk new file mode 100644 index 0000000..611a649 --- /dev/null +++ b/arcfour.mk @@ -0,0 +1,12 @@ +# Makefile for ARCFOUR (RC4 compatible) +ALGO_NAME := ARCFOUR + +# comment out the following line for removement of ARCFOUR from the build process +BLOCK_CIPHERS := $(BLOCK_CIPHERS) $(ALGO_NAME) + +$(ALGO_NAME)_OBJ := arcfour-asm.o +$(ALGO_NAME)_TEST_BIN := main.o debug.o uart.o serial-tools.o sha256-asm.o \ + xtea-asm.o arcfour-asm.o prng.o cast5.o +$(ALGO_NAME)_NESSIE_TEST := "nessie" +$(ALGO_NAME)_PEROFRMANCE_TEST := "performance" + diff --git a/avr-makefile.inc b/avr-makefile.inc new file mode 100644 index 0000000..4db2606 --- /dev/null +++ b/avr-makefile.inc @@ -0,0 +1,20 @@ + +OBJ = $(SERPENT_OBJ) +MCU_TARGET = atmega32 +OPTIMIZE = -Os + +FLASHCMD = avrdude -p $(MCU_TARGET) -P /dev/ttyUSB0 -c avr911 -U flash:w:$(PRG).hex +# -U eeprom:w:$(PRG)_eeprom.hex +#uisp -dprog=bsd -dlpt=/dev/parport1 --upload if=$(PRG).hex +ERASECMD = + +CC = avr-gcc + +override CFLAGS = -pedantic -std=c99 -Wall -Wstrict-prototypes $(OPTIMIZE) -mmcu=$(MCU_TARGET) +$(DEFS) +override LDFLAGS = -Wl,-Map, +override ASFLAGS = -mmcu=$(MCU_TARGET) + +OBJCOPY = avr-objcopy +OBJDUMP = avr-objdump +SIZE = avr-size diff --git a/camellia.c b/camellia.c index 513c320..cfcd561 100644 --- a/camellia.c +++ b/camellia.c @@ -21,8 +21,8 @@ uint64_t camellia_fl(uint64_t x, uint64_t k); uint64_t camellia_fl_inv(uint64_t y, uint64_t k); /*****************************************************************************/ void change_endian(void* data, uint8_t length); - -uint64_t PROGMEM camellia_sigma[6]={ /* 64 byte table */ +/* +uint64_t PROGMEM camellia_sigma[6]={ / * 64 byte table * / 0xA09E667F3BCC908BLL, 0xB67AE8584CAA73B2LL, 0xC6EF372FE94F82BELL, @@ -30,10 +30,23 @@ uint64_t PROGMEM camellia_sigma[6]={ /* 64 byte table */ 0x10E527FADE682D1DLL, 0xB05688C2B3E6C1FDLL }; +*/ +uint32_t PROGMEM camellia_sigma[12]={ /* 64 byte table */ + 0x3BCC908BL, 0xA09E667FL, + 0x4CAA73B2L, 0xB67AE858L, + 0xE94F82BEL, 0xC6EF372FL, + 0xF1D36F1CL, 0x54FF53A5L, + 0xDE682D1DL, 0x10E527FAL, + 0xB3E6C1FDL, 0xB05688C2L +}; /* an ugly macro to load an entry form the table above */ -#define SIGMA(p) (( ((uint64_t)(pgm_read_dword((prog_uint32_t*)camellia_sigma+2*(p)+1)))<<32) + \ - ((uint64_t)(pgm_read_dword((prog_uint32_t*)camellia_sigma+2*(p)+0) )) ) +/* +#define SIGMA(p) (( ((uint64_t)(pgm_read_dword((prog_uint32_t*)camellia_sigma+2*(p)+1)))<<32) | \ + ((uint64_t)(pgm_read_dword((prog_uint32_t*)camellia_sigma+2*(p)+0))) ) +*/ +#define SIGMA(p) (( ((uint64_t)(pgm_read_dword(((prog_uint32_t*)camellia_sigma)[2*(p)+1])))<<32) | \ + ((uint64_t)(pgm_read_dword(((prog_uint32_t*)camellia_sigma)[2*(p)+0]))) ) diff --git a/camellia.mk b/camellia.mk new file mode 100644 index 0000000..f749184 --- /dev/null +++ b/camellia.mk @@ -0,0 +1,13 @@ +# Makefile for camellia +ALGO_NAME := CAMELLIA + +# comment out the following line for removement of serpent from the build process +BLOCK_CIPHERS := $(BLOCK_CIPHERS) $(ALGO_NAME) + +# main-camellia-test.o debug.o uart.o serial-tools.o camellia.o camellia-asm.o +$(ALGO_NAME)_OBJ := camellia.o camellia-asm.o +$(ALGO_NAME)_TEST_BIN := main-camellia-test.o debug.o uart.o serial-tools.o \ + camellia.o camellia-asm.o +$(ALGO_NAME)_NESSIE_TEST := "nessie" +$(ALGO_NAME)_PEROFRMANCE_TEST := "performance" + diff --git a/cast5.mk b/cast5.mk new file mode 100644 index 0000000..c5df6e5 --- /dev/null +++ b/cast5.mk @@ -0,0 +1,11 @@ +# Makefile for CAST5 +ALGO_NAME := CAST5 + +# comment out the following line for removement of CAST5 from the build process +BLOCK_CIPHERS := $(BLOCK_CIPHERS) $(ALGO_NAME) + +$(ALGO_NAME)_OBJ := cast5.o +$(ALGO_NAME)_TEST_BIN := main-cast5-test.o debug.o uart.o serial-tools.o cast5.o +$(ALGO_NAME)_NESSIE_TEST := "nessie" +$(ALGO_NAME)_PEROFRMANCE_TEST := "performance" + diff --git a/des.mk b/des.mk new file mode 100644 index 0000000..6e37b71 --- /dev/null +++ b/des.mk @@ -0,0 +1,11 @@ +# Makefile for DES +ALGO_NAME := DES + +# comment out the following line for removement of DES from the build process +BLOCK_CIPHERS := $(BLOCK_CIPHERS) $(ALGO_NAME) + +$(ALGO_NAME)_OBJ := des.o +$(ALGO_NAME)_TEST_BIN := main-des-test.o debug.o uart.o serial-tools.o des.o +$(ALGO_NAME)_NESSIE_TEST := "nessie" +$(ALGO_NAME)_PEROFRMANCE_TEST := "performance" + diff --git a/main-camellia-test.c b/main-camellia-test.c index f9848d7..649cf21 100644 --- a/main-camellia-test.c +++ b/main-camellia-test.c @@ -111,7 +111,7 @@ prog_uint8_t ntt_test_values_out[16] = { 0x67, 0x67, 0x31, 0x38, 0x54, 0x96, 0x69, 0x73, 0x08, 0x57, 0x06, 0x56, 0x48, 0xea, 0xbe, 0x43 }; - +/* memcmp_P() is now implemented in avr-libc int memcmp_P(const void *s1, PGM_P s2, size_t n){ uint8_t b; while(n--){ @@ -122,7 +122,7 @@ int memcmp_P(const void *s1, PGM_P s2, size_t n){ } return 0; } - +*/ void testrun_camellia(void){ /* we run the NESSIE test for Camellia here see * https://www.cosic.esat.kuleuven.be/nessie/testvectors/bc/camellia/Camellia-128-128.verified.test-vectors diff --git a/main-cast5-test.c b/main-cast5-test.c index 2da7c1d..9b3795a 100644 --- a/main-cast5-test.c +++ b/main-cast5-test.c @@ -77,8 +77,8 @@ void test_decrypt(uint8_t *block, uint8_t *key, uint8_t keylength, bool print){ void testrun_cast5(void){ uint8_t block[8]; uint8_t key[16]; - uint8_t *tda = "\x01\x23\x45\x67\x89\xAB\xCD\xEF", - *tka = "\x01\x23\x45\x67\x12\x34\x56\x78\x23\x45\x67\x89\x34\x56\x78\x9A"; + uint8_t *tda = (uint8_t*)"\x01\x23\x45\x67\x89\xAB\xCD\xEF", + *tka = (uint8_t*)"\x01\x23\x45\x67\x12\x34\x56\x78\x23\x45\x67\x89\x34\x56\x78\x9A"; memcpy(block, tda, 8); memcpy(key, tka, 16); test_encrypt(block, key, 128, true); diff --git a/main-des-test.c b/main-des-test.c index 22a8942..22dee88 100644 --- a/main-des-test.c +++ b/main-des-test.c @@ -89,7 +89,6 @@ Set 8, vector# 0: encrypted=0011223344556677 */ void nessie_testdec(uint8_t* data, uint8_t* key){ - uint16_t i; uart_putstr("\r\n\t key = \t"); uart_hexdump(key, 8); uart_putstr("\r\n\t cipher = \t"); uart_hexdump(data, 8); des_decrypt(data,data,key); diff --git a/main-serpent-test.c b/main-serpent-test.c index 6e2ce8c..ed8cf70 100644 --- a/main-serpent-test.c +++ b/main-serpent-test.c @@ -28,9 +28,9 @@ void testrun_serpent(void){ nessie_ctx.keysize = 128; nessie_ctx.name = cipher_name; nessie_ctx.ctx_size_B = sizeof(serpent_ctx_t); - nessie_ctx.cipher_enc = serpent_enc; - nessie_ctx.cipher_dec = serpent_dec; - nessie_ctx.cipher_genctx = serpent_genctx_dummy; + nessie_ctx.cipher_enc = (nessie_enc_fpt)serpent_enc; + nessie_ctx.cipher_dec = (nessie_dec_fpt)serpent_dec; + nessie_ctx.cipher_genctx = (nessie_gen_fpt)serpent_genctx_dummy; nessie_run(); diff --git a/main-shabea-test.c b/main-shabea-test.c index 1fde509..fb9c87c 100644 --- a/main-shabea-test.c +++ b/main-shabea-test.c @@ -30,11 +30,11 @@ void testencrypt(uint8_t* block, uint8_t* key){ uart_putstr("\r\n==testy-encrypt==\r\n key: "); uart_hexdump(key,16); uart_putstr("\r\n plain: "); - uart_hexdump(block,16); + uart_hexdump(block,32); _delay_ms(50); - shabea128(block,key,128,1,16); + shabea256(block,key,128,1,16); uart_putstr("\r\n crypt: "); - uart_hexdump(block,16); + uart_hexdump(block,32); } void testdecrypt(uint8_t* block, uint8_t* key){ @@ -42,11 +42,11 @@ void testdecrypt(uint8_t* block, uint8_t* key){ uart_putstr("\r\n==testy-decrypt==\r\n key: "); uart_hexdump(key,16); uart_putstr("\r\n crypt: "); - uart_hexdump(block,16); + uart_hexdump(block,32); _delay_ms(50); - shabea128(block,key,128,0,16); + shabea256(block,key,128,0,16); uart_putstr("\r\n plain: "); - uart_hexdump(block,16); + uart_hexdump(block,32); } void testrun_shabea(void){ @@ -60,14 +60,22 @@ void testrun_shabea(void){ { 0x28, 0xDB, 0xC3, 0xBC, 0x49, 0xFF, 0xD8, 0x7D, 0xCF, 0xA5, 0x09, 0xB1, 0x1D, 0x42, 0x2B, 0xE7,} }; - uint8_t datas[4][16]= + uint8_t datas[4][32]= { { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, { 0x83, 0xA2, 0xF8, 0xA2, 0x88, 0x64, 0x1F, 0xB9, + 0xA4, 0xE9, 0xA5, 0xCC, 0x2F, 0x13, 0x1C, 0x7D, + 0x83, 0xA2, 0xF8, 0xA2, 0x88, 0x64, 0x1F, 0xB9, 0xA4, 0xE9, 0xA5, 0xCC, 0x2F, 0x13, 0x1C, 0x7D }, { 0xB4, 0x1E, 0x6B, 0xE2, 0xEB, 0xA8, 0x4A, 0x14, + 0x8E, 0x2E, 0xED, 0x84, 0x59, 0x3C, 0x5E, 0xC7, + 0xB4, 0x1E, 0x6B, 0xE2, 0xEB, 0xA8, 0x4A, 0x14, 0x8E, 0x2E, 0xED, 0x84, 0x59, 0x3C, 0x5E, 0xC7 } }; uint8_t i=0; diff --git a/main.c b/main.c index ad0fda4..cc8a72f 100644 --- a/main.c +++ b/main.c @@ -148,28 +148,28 @@ void testrun_arcfour(void){ * RC4( "Secret", "Attack at dawn" ) == "45a01f64 5fc35b38 3552544b 9bf5" **/ uart_putstr("\r\narcfour(\"Plaintext\", \"Key\")="); - arcfour_init(&s, "Key", 3); + arcfour_init(&s, (uint8_t*)"Key", 3); b="Plaintext"; while (*b) *b++ ^= arcfour_gen(&s); uart_hexdump(b-9, 9); uart_putstr("\r\narcfour(\"pedia\", \"Wiki\")="); - arcfour_init(&s, "Wiki", 4); + arcfour_init(&s, (uint8_t*)"Wiki", 4); b="pedia"; while (*b) *b++ ^= arcfour_gen(&s); uart_hexdump(b-5, 5); uart_putstr("\r\narcfour(\"Attack at dawn\", \"Secret\")="); - arcfour_init(&s, "Secret", 6); + arcfour_init(&s, (uint8_t*)"Secret", 6); b="Attack at dawn"; while (*b) *b++ ^= arcfour_gen(&s); uart_hexdump(b-14, 14); uart_putstr("\r\narcfour(00.00.00.00.00.00.00.00, 01.23.45.67.89.AB.CD.EF)="); - arcfour_init(&s, "\x01\x23\x45\x67\x89\xAB\xCD\xEF", 8); + arcfour_init(&s, (uint8_t*)"\x01\x23\x45\x67\x89\xAB\xCD\xEF", 8); int i=0; uint8_t a[8]; memset(a, 0 , 8); @@ -193,7 +193,7 @@ void testrun_cast5(void){ cast5_ctx_t s; uint8_t i; uart_putstr("\r\nCAST5:\r\nkey: 01 23 45 67 34 56 78 23 45 67 89 34 56 78 9A"); - cast5_init(&s, "\x01\x23\x45\x67\x12\x34\x56\x78\x23\x45\x67\x89\x34\x56\x78\x9A", 128); + cast5_init(&s, (uint8_t*)"\x01\x23\x45\x67\x12\x34\x56\x78\x23\x45\x67\x89\x34\x56\x78\x9A", 128); uint8_t block[] = {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF}; uart_putstr("\r\nplaintext: "); uart_hexdump(block, 8); diff --git a/nessie_bc_test.h b/nessie_bc_test.h index b510810..ad5d44e 100644 --- a/nessie_bc_test.h +++ b/nessie_bc_test.h @@ -3,6 +3,11 @@ #include +typedef void (*nessie_gen_fpt)(uint8_t*, uint16_t, void*); +typedef void (*nessie_enc_fpt)(void*, void*); +typedef void (*nessie_dec_fpt)(void*, void*); + + typedef struct nessie_ctx_st{ uint16_t keysize; uint16_t blocksize_B; diff --git a/seed-asm.S b/seed-asm.S index 3f757d8..1c3c288 100644 --- a/seed-asm.S +++ b/seed-asm.S @@ -87,4 +87,4 @@ bigendian_sub32: - \ No newline at end of file + diff --git a/seed.c b/seed.c index 8568fdf..f0c3a85 100644 --- a/seed.c +++ b/seed.c @@ -49,9 +49,9 @@ uint32_t bigendian_sum32(uint32_t a, uint32_t b);/*{ changeendian32(&a); return a; } - +*/ /******************************************************************************/ -static +/* static */ uint32_t bigendian_sub32(uint32_t a, uint32_t b);/*{ changeendian32(&a); changeendian32(&b); @@ -59,7 +59,7 @@ uint32_t bigendian_sub32(uint32_t a, uint32_t b);/*{ changeendian32(&a); return a; } - +*/ /******************************************************************************/ static inline uint64_t bigendian_rotl8_64(uint64_t a){ @@ -144,6 +144,7 @@ keypair_t getnextkeys(uint32_t *keystate, uint8_t curround){ keypair_t ret; if (curround>15){ /* ERROR */ + ret.k0 = ret.k1 = 0; } else { /* ret.k0 = g_function(keystate[0] + keystate[2] - pgm_read_dword(&(seed_kc[curround]))); ret.k1 = g_function(keystate[1] - keystate[3] + pgm_read_dword(&(seed_kc[curround]))); */ @@ -172,6 +173,7 @@ keypair_t getprevkeys(uint32_t *keystate, uint8_t curround){ keypair_t ret; if (curround>15){ /* ERROR */ + ret.k0 = ret.k1 = 0; } else { if (curround & 1){ /* odd round (1,3,5, ..., 15) */ diff --git a/seed.mk b/seed.mk new file mode 100644 index 0000000..55ebd2f --- /dev/null +++ b/seed.mk @@ -0,0 +1,12 @@ +# Makefile for SEED +ALGO_NAME := SEED + +# comment out the following line for removement of SEED from the build process +BLOCK_CIPHERS := $(BLOCK_CIPHERS) $(ALGO_NAME) + +$(ALGO_NAME)_OBJ := seed.o seed-asm.o +$(ALGO_NAME)_TEST_BIN := main-seed-test.o debug.o uart.o serial-tools.o \ + seed.o seed-asm.o +$(ALGO_NAME)_NESSIE_TEST := "nessie" +$(ALGO_NAME)_PEROFRMANCE_TEST := "performance" + diff --git a/serpent.mk b/serpent.mk new file mode 100644 index 0000000..44d437c --- /dev/null +++ b/serpent.mk @@ -0,0 +1,13 @@ +# Makefile for serpent +ALGO_NAME := SERPENT + +# comment out the following line for removement of serpent from the build process +BLOCK_CIPHERS := $(BLOCK_CIPHERS) $(ALGO_NAME) + + +$(ALGO_NAME)_OBJ := serpent.o +$(ALGO_NAME)_TEST_BIN := main-serpent-test.o debug.o uart.o serial-tools.o \ + serpent.o nessie_bc_test.o +$(ALGO_NAME)_NESSIE_TEST := "nessie" +$(ALGO_NAME)_PEROFRMANCE_TEST := "performance" + diff --git a/shabea.c b/shabea.c index 844788a..e786139 100644 --- a/shabea.c +++ b/shabea.c @@ -39,13 +39,12 @@ void memxor(uint8_t * dest, uint8_t * src, uint8_t length){ #define R ((uint8_t*)block+16) void shabea256(void * block, void * key, uint16_t keysize, uint8_t enc, uint8_t rounds){ int8_t r; /**/ - uint8_t *tb; /**/ + uint8_t tb[HALFSIZEB+2+(keysize+7)/8]; /**/ uint16_t kbs; /* bytes used for the key / temporary block */ sha256_hash_t hash; r = (enc?0:(rounds-1)); kbs = (keysize+7)/8; - tb = malloc(HALFSIZEB+2+kbs); memcpy(tb+HALFSIZEB+2, key, kbs); /* copy key to temporary block */ tb[HALFSIZEB+0] = 0; /* set round counter high value to zero */ @@ -63,7 +62,6 @@ void shabea256(void * block, void * key, uint16_t keysize, uint8_t enc, uint8_t memxor(L, hash, HALFSIZE); } } - free(tb); } diff --git a/shabea.mk b/shabea.mk new file mode 100644 index 0000000..3f3cc40 --- /dev/null +++ b/shabea.mk @@ -0,0 +1,12 @@ +# Makefile for SHABEA +ALGO_NAME := SHABEA + +# comment out the following line for removement of SHABEA from the build process +BLOCK_CIPHERS := $(BLOCK_CIPHERS) $(ALGO_NAME) + +$(ALGO_NAME)_OBJ := shabea.o sha256-asm.o +$(ALGO_NAME)_TEST_BIN := main-shabea-test.o debug.o uart.o serial-tools.o \ + shabea.o sha256-asm.o +$(ALGO_NAME)_NESSIE_TEST := "nessie" +$(ALGO_NAME)_PEROFRMANCE_TEST := "performance" + diff --git a/skipjack.mk b/skipjack.mk new file mode 100644 index 0000000..f8475c3 --- /dev/null +++ b/skipjack.mk @@ -0,0 +1,12 @@ +# Makefile for SKIPJACK +ALGO_NAME := SKIPJACK + +# comment out the following line for removement of skipjack from the build process +BLOCK_CIPHERS := $(BLOCK_CIPHERS) $(ALGO_NAME) + +$(ALGO_NAME)_OBJ := skipjack.o +$(ALGO_NAME)_TEST_BIN := main-skipjack-test.o debug.o uart.o serial-tools.o \ + skipjack.o +$(ALGO_NAME)_NESSIE_TEST := "nessie" +$(ALGO_NAME)_PEROFRMANCE_TEST := "performance" + diff --git a/tdes.mk b/tdes.mk new file mode 100644 index 0000000..a015cce --- /dev/null +++ b/tdes.mk @@ -0,0 +1,11 @@ +# Makefile for triple-DES +ALGO_NAME := TDES + +# comment out the following line for removement of triple-DES from the build process +BLOCK_CIPHERS := $(BLOCK_CIPHERS) $(ALGO_NAME) + +$(ALGO_NAME)_OBJ := des.o +$(ALGO_NAME)_TEST_BIN := main-tdes-test.o debug.o uart.o serial-tools.o des.o +$(ALGO_NAME)_NESSIE_TEST := "nessie" +$(ALGO_NAME)_PEROFRMANCE_TEST := "performance" + diff --git a/xtea.mk b/xtea.mk new file mode 100644 index 0000000..8d35377 --- /dev/null +++ b/xtea.mk @@ -0,0 +1,12 @@ +# Makefile for XTEA +ALGO_NAME := XTEA + +# comment out the following line for removement of XTEA from the build process +BLOCK_CIPHERS := $(BLOCK_CIPHERS) $(ALGO_NAME) + +$(ALGO_NAME)_OBJ := xtea-asm.o +$(ALGO_NAME)_TEST_BIN := main.o debug.o uart.o serial-tools.o sha256-asm.o \ + xtea-asm.o arcfour-asm.o prng.o cast5.o +$(ALGO_NAME)_NESSIE_TEST := "nessie" +$(ALGO_NAME)_PEROFRMANCE_TEST := "performance" +