X-Git-Url: https://git.cryptolib.org/?a=blobdiff_plain;f=seed_C.c;h=7a9afc03bc18860c093543c485fa6db79c1180f3;hb=8f855d283a31a468ea014774c4723a8b77b81644;hp=2f9b8d0a196bd243ac14aa2d882310ef43184999;hpb=0896c282ff85cedfa7205695420c916eb08eafed;p=avr-crypto-lib.git diff --git a/seed_C.c b/seed_C.c index 2f9b8d0..7a9afc0 100644 --- a/seed_C.c +++ b/seed_C.c @@ -1,6 +1,6 @@ /* seed_C.c */ /* - This file is part of the Crypto-avr-lib/microcrypt-lib. + This file is part of the AVR-Crypto-Lib. Copyright (C) 2008 Daniel Otte (daniel.otte@rub.de) This program is free software: you can redistribute it and/or modify @@ -29,7 +29,7 @@ #include #include #include "seed_sbox.h" -#include "uart.h" +#include "cli.h" #include "debug.h" @@ -91,13 +91,13 @@ uint64_t bigendian_rotr8_64(uint64_t a){ /******************************************************************************/ static -uint64_t f_function(uint64_t a, uint32_t k0, uint32_t k1){ +uint64_t f_function(const uint64_t* a, uint32_t k0, uint32_t k1){ uint32_t c,d; - c = a & 0x00000000FFFFFFFFLL; - d = (a>>32) & 0x00000000FFFFFFFFLL; + c = *a & 0x00000000FFFFFFFFLL; + d = (*a>>32) & 0x00000000FFFFFFFFLL; - c ^= k0; d ^= k1; + c ^= k0; d ^= k1; d ^= c; d = g_function(d); c = bigendian_sum32(c,d); @@ -105,8 +105,7 @@ uint64_t f_function(uint64_t a, uint32_t k0, uint32_t k1){ d = bigendian_sum32(c,d); d = g_function(d); c = bigendian_sum32(c,d); - a = ((uint64_t)d << 32) | c; - return a; + return ((uint64_t)d << 32) | c; } /******************************************************************************/ @@ -207,7 +206,7 @@ typedef struct{ /******************************************************************************/ -void seed_init(uint8_t * key, seed_ctx_t * ctx){ +void seed_init(const void * key, seed_ctx_t * ctx){ memcpy(ctx->k, key, 128/8); } @@ -216,27 +215,27 @@ void seed_init(uint8_t * key, seed_ctx_t * ctx){ #define L (((uint64_t*)buffer)[0]) #define R (((uint64_t*)buffer)[1]) -void seed_enc(void * buffer, seed_ctx_t * ctx){ +void seed_enc(void * buffer, const seed_ctx_t * ctx){ uint8_t r; keypair_t k; for(r=0; r<8; ++r){ - k = getnextkeys(ctx->k, 2*r); + k = getnextkeys(((seed_ctx_t*)ctx)->k, 2*r); /* - DEBUG_S("\r\n\tDBG ka,0: "); uart_hexdump(&k.k0, 4); - DEBUG_S("\r\n\tDBG ka,1: "); uart_hexdump(&k.k1, 4); - DEBUG_S("\r\n\t DBG L: "); uart_hexdump((uint8_t*)buffer+0, 8); - DEBUG_S("\r\n\t DBG R: "); uart_hexdump((uint8_t*)buffer+8, 8); + DEBUG_S("\r\n\tDBG ka,0: "); cli_hexdump(&k.k0, 4); + DEBUG_S("\r\n\tDBG ka,1: "); cli_hexdump(&k.k1, 4); + DEBUG_S("\r\n\t DBG L: "); cli_hexdump((uint8_t*)buffer+0, 8); + DEBUG_S("\r\n\t DBG R: "); cli_hexdump((uint8_t*)buffer+8, 8); */ - L ^= f_function(R,k.k0,k.k1); + L ^= f_function(&R,k.k0,k.k1); - k = getnextkeys(ctx->k, 2*r+1); + k = getnextkeys(((seed_ctx_t*)ctx)->k, 2*r+1); /* - DEBUG_S("\r\n\tDBG kb,0: "); uart_hexdump(&k.k0, 4); - DEBUG_S("\r\n\tDBG kb,1: "); uart_hexdump(&k.k1, 4); - DEBUG_S("\r\n\t DBG L: "); uart_hexdump((uint8_t*)buffer+8, 8); - DEBUG_S("\r\n\t DBG R: "); uart_hexdump((uint8_t*)buffer+0, 8); + DEBUG_S("\r\n\tDBG kb,0: "); cli_hexdump(&k.k0, 4); + DEBUG_S("\r\n\tDBG kb,1: "); cli_hexdump(&k.k1, 4); + DEBUG_S("\r\n\t DBG L: "); cli_hexdump((uint8_t*)buffer+8, 8); + DEBUG_S("\r\n\t DBG R: "); cli_hexdump((uint8_t*)buffer+0, 8); */ - R ^= f_function(L,k.k0,k.k1); + R ^= f_function(&L,k.k0,k.k1); } /* just an exchange without temp. variable */ L ^= R; @@ -253,23 +252,23 @@ void seed_dec(void * buffer, seed_ctx_t * ctx){ int8_t r; keypair_t k; for(r=7; r>=0; --r){ - k = getprevkeys(ctx->k, 2*r+1); + k = getprevkeys(((seed_ctx_t*)ctx)->k, 2*r+1); /* - DEBUG_S("\r\n\tDBG ka,0: "); uart_hexdump(&k.k0, 4); - DEBUG_S("\r\n\tDBG ka,1: "); uart_hexdump(&k.k1, 4); - DEBUG_S("\r\n\t DBG L: "); uart_hexdump((uint8_t*)buffer+0, 8); - DEBUG_S("\r\n\t DBG R: "); uart_hexdump((uint8_t*)buffer+8, 8); + DEBUG_S("\r\n\tDBG ka,0: "); cli_hexdump(&k.k0, 4); + DEBUG_S("\r\n\tDBG ka,1: "); cli_hexdump(&k.k1, 4); + DEBUG_S("\r\n\t DBG L: "); cli_hexdump((uint8_t*)buffer+0, 8); + DEBUG_S("\r\n\t DBG R: "); cli_hexdump((uint8_t*)buffer+8, 8); */ - L ^= f_function(R,k.k0,k.k1); + L ^= f_function(&R,k.k0,k.k1); - k = getprevkeys(ctx->k, 2*r+0); + k = getprevkeys(((seed_ctx_t*)ctx)->k, 2*r+0); /* - DEBUG_S("\r\n\tDBG kb,0: "); uart_hexdump(&k.k0, 4); - DEBUG_S("\r\n\tDBG kb,1: "); uart_hexdump(&k.k1, 4); - DEBUG_S("\r\n\t DBG L: "); uart_hexdump((uint8_t*)buffer+8, 8); - DEBUG_S("\r\n\t DBG R: "); uart_hexdump((uint8_t*)buffer+0, 8); + DEBUG_S("\r\n\tDBG kb,0: "); cli_hexdump(&k.k0, 4); + DEBUG_S("\r\n\tDBG kb,1: "); cli_hexdump(&k.k1, 4); + DEBUG_S("\r\n\t DBG L: "); cli_hexdump((uint8_t*)buffer+8, 8); + DEBUG_S("\r\n\t DBG R: "); cli_hexdump((uint8_t*)buffer+0, 8); */ - R ^= f_function(L,k.k0,k.k1); + R ^= f_function(&L,k.k0,k.k1); } /* just an exchange without temp. variable */ L ^= R;