X-Git-Url: https://git.cryptolib.org/?a=blobdiff_plain;f=seed.c;h=ba26fa2683f41e5b13695bd6e738bff8d234053a;hb=11a70cc550260f2f35c6e0d106bf38c3e97e5720;hp=8568fdf30fe62ed1bd97c497196b08113cc7de0c;hpb=79c9a6582ba071646a3062175715f59ebe210603;p=avr-crypto-lib.git diff --git a/seed.c b/seed.c index 8568fdf..ba26fa2 100644 --- a/seed.c +++ b/seed.c @@ -1,3 +1,21 @@ +/* seed.c */ +/* + This file is part of the Crypto-avr-lib/microcrypt-lib. + Copyright (C) 2008 Daniel Otte (daniel.otte@rub.de) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ /** * \file seed.c * \author Daniel Otte @@ -49,9 +67,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 +77,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 +162,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 +191,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) */ @@ -200,7 +220,7 @@ typedef struct{ /******************************************************************************/ -void seed_init(seed_ctx_t * ctx, uint8_t * key){ +void seed_init(uint8_t * key, seed_ctx_t * ctx){ memcpy(ctx->k, key, 128/8); } @@ -209,7 +229,7 @@ void seed_init(seed_ctx_t * ctx, uint8_t * key){ #define L (((uint64_t*)buffer)[0]) #define R (((uint64_t*)buffer)[1]) -void seed_encrypt(seed_ctx_t * ctx, void * buffer){ +void seed_enc(void * buffer, seed_ctx_t * ctx){ uint8_t r; keypair_t k; for(r=0; r<8; ++r){ @@ -242,7 +262,7 @@ void seed_encrypt(seed_ctx_t * ctx, void * buffer){ #define L (((uint64_t*)buffer)[0]) #define R (((uint64_t*)buffer)[1]) -void seed_decrypt(seed_ctx_t * ctx, void * buffer){ +void seed_dec(void * buffer, seed_ctx_t * ctx){ int8_t r; keypair_t k; for(r=7; r>=0; --r){