]> git.cryptolib.org Git - avr-crypto-lib.git/blobdiff - seed.c
camellia seems broken
[avr-crypto-lib.git] / seed.c
diff --git a/seed.c b/seed.c
index 8568fdf30fe62ed1bd97c497196b08113cc7de0c..29cd9913a11838749c898773f58d4a0790135ee0 100644 (file)
--- 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 <http://www.gnu.org/licenses/>.
+*/
  /**
  * \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_encrypt(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_decrypt(void * buffer, seed_ctx_t * ctx){
        int8_t r;
        keypair_t k;
        for(r=7; r>=0; --r){