X-Git-Url: https://git.cryptolib.org/?a=blobdiff_plain;f=skein%2Fthreefish256_dec.c;h=b2b4fc51ef06d2c09d1f911ff342d5a5521a83da;hb=b8aa8d06134ce687993cb3148d66ebd86dbf1d6f;hp=d23eb9377ecdd9a3109ff62463c37286e140e8d4;hpb=4f50c75ee5a6cc88bf7ea71957ed509e298e6c25;p=avr-crypto-lib.git diff --git a/skein/threefish256_dec.c b/skein/threefish256_dec.c index d23eb93..b2b4fc5 100644 --- a/skein/threefish256_dec.c +++ b/skein/threefish256_dec.c @@ -1,7 +1,7 @@ /* threefish256_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 @@ -32,7 +32,7 @@ #define X(a) (((uint64_t*)data)[(a)]) static -void permute_4(void* data){ +void permute_4(void *data){ uint64_t t; t = X(1); X(1) = X(3); @@ -43,17 +43,22 @@ void permute_4(void* data){ #define T(s) (((uint64_t*)tweak)[(s)]) static -void add_key_4(void* data, const threefish256_ctx_t* ctx, uint8_t s){ +void add_key_4(void *data, const threefish256_ctx_t *ctx, uint8_t s){ X(0) -= ctx->k[(s+0)%5]; X(1) -= ctx->k[(s+1)%5] + ctx->t[s%3]; X(2) -= ctx->k[(s+2)%5] + ctx->t[(s+1)%3]; X(3) -= ctx->k[(s+3)%5] + s; } -void threefish256_dec(void* data, const threefish256_ctx_t* ctx){ +void threefish256_dec(void *data, const threefish256_ctx_t *ctx){ uint8_t i=0,s=18; - uint8_t r0[8] = {59, 11, 53, 26, 58, 13, 36, 5}; +/* old constans, changed at round 2 of the SHA-3 contest + uint8_t r0[8] = {59, 11, 53, 26, 58, 13, 36, 5}; uint8_t r1[8] = {50, 42, 35, 20, 44, 46, 28, 56}; +*/ + uint8_t r0[8] = { 32, 58, 46, 25, 5, 23, 52, 14}; + uint8_t r1[8] = { 32, 22, 12, 33, 37, 40, 57, 16}; + do{ if(i%4==0){ add_key_4(data, ctx, s);