X-Git-Url: https://git.cryptolib.org/?p=avr-crypto-lib.git;a=blobdiff_plain;f=skein%2Fthreefish512_enc.c;h=b447403a79da357f8cb217806a11a68e5070871a;hp=620276fed44a24cf2174c7eae8b482e12d0707fe;hb=4b5da1dc27a791b5c448274a3db09cd035b33493;hpb=4f50c75ee5a6cc88bf7ea71957ed509e298e6c25 diff --git a/skein/threefish512_enc.c b/skein/threefish512_enc.c index 620276f..b447403 100644 --- a/skein/threefish512_enc.c +++ b/skein/threefish512_enc.c @@ -1,7 +1,7 @@ /* threefish512_enc.c */ /* This file is part of the AVR-Crypto-Lib. - Copyright (C) 2009 Daniel Otte (daniel.otte@rub.de) + Copyright (C) 2006-2015 Daniel Otte (bg@nerilex.org) 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 @@ -18,12 +18,12 @@ */ /* * \author Daniel Otte - * \email daniel.otte@rub.de + * \email bg@nerilex.org * \date 2009-03-12 * \license GPLv3 or later - * - * - * + * + * + * */ #include @@ -35,7 +35,7 @@ static -void permute_8(void* data){ +void permute_8(void *data){ uint64_t t; t = X(0); X(0) = X(2); @@ -48,7 +48,7 @@ void permute_8(void* data){ } /* static -void permute_inv8(void* data){ +void permute_inv8(void *data){ uint64_t t; t = X(6); X(6) = X(4); @@ -61,12 +61,13 @@ void permute_inv8(void* data){ } */ -#define THREEFISH_KEY_CONST 0x5555555555555555LL /* 2**64/3 */ +//#define THREEFISH_KEY_CONST 0x5555555555555555LL /* 2**64/3 */ +#define THREEFISH_KEY_CONST 0x1BD11BDAA9FC1A22LL #define K(s) (((uint64_t*)key)[(s)]) #define T(s) (((uint64_t*)tweak)[(s)]) -void threefish512_init(const void* key, const void* tweak, threefish512_ctx_t* ctx){ +void threefish512_init(const void *key, const void *tweak, threefish512_ctx_t *ctx){ memcpy(ctx->k, key, 8*8); if(tweak){ memcpy(ctx->t, tweak, 2*8); @@ -82,7 +83,7 @@ void threefish512_init(const void* key, const void* tweak, threefish512_ctx_t* c } static -void add_key_8(void* data, const threefish512_ctx_t* ctx, uint8_t s){ +void add_key_8(void *data, const threefish512_ctx_t *ctx, uint8_t s){ uint8_t i; for(i=0; i<5; ++i){ X(i) += ctx->k[(s+i)%9]; @@ -92,12 +93,18 @@ void add_key_8(void* data, const threefish512_ctx_t* ctx, uint8_t s){ X(7) += ctx->k[(s+7)%9] + s; } -void threefish512_enc(void* data, const threefish512_ctx_t* ctx){ +void threefish512_enc(void *data, const threefish512_ctx_t *ctx){ uint8_t i=0,s=0; - uint8_t r0[8] = {38, 48, 34, 26, 33, 39, 29, 33}; + /* old constans, changed at round 2 of the SHA-3 contest + uint8_t r0[8] = {38, 48, 34, 26, 33, 39, 29, 33}; uint8_t r1[8] = {30, 20, 14, 12, 49, 27, 26, 51}; uint8_t r2[8] = {50, 43, 15, 58, 8, 41, 11, 39}; uint8_t r3[8] = {53, 31, 27, 7, 42, 14, 9, 35}; + */ + uint8_t r0[8] = {46, 33, 17, 44, 39, 13, 25, 8}; + uint8_t r1[8] = {36, 27, 49, 9, 30, 50, 29, 35}; + uint8_t r2[8] = {19, 14, 36, 54, 34, 10, 39, 56}; + uint8_t r3[8] = {37, 42, 39, 56, 24, 17, 43, 22}; do{ if(i%4==0){ add_key_8(data, ctx, s);