X-Git-Url: https://git.distorted.org.uk/~mdw/secnet/blobdiff_plain/af43f0b77a10716921d13c047d1d3c39570cae17..1fc8a4acb3ef658696038c9c4bd3c155fbc27ac3:/serpent.c diff --git a/serpent.c b/serpent.c index 6407c57..a8bfe2a 100644 --- a/serpent.c +++ b/serpent.c @@ -1,27 +1,40 @@ /* - * This file is - * Copyright (C) 1998 Ross Anderson, Eli Biham, Lars Knudsen + * serpent.c: Implementation of the Serpent block cipher + */ +/* + * This file is Free Software. It has been modified to as part of its + * incorporation into secnet. + * + * Copyright 1998 Ross Anderson, Eli Biham, Lars Knudsen + * Copyright 1995-2001 Stephen Early + * Copyright 2011-2013 Ian Jackson + * + * For more information about Serpent see + * http://www.cl.cam.ac.uk/users/rja14/serpent.html + * + * You may redistribute secnet as a whole and/or modify it under the + * terms of the GNU General Public License as published by the Free + * Software Foundation; either version 3, or (at your option) any + * later version. * - * For more information see http://www.cl.cam.ac.uk/users/rja14/serpent.html + * You may redistribute this file and/or modify it under the terms of + * the GNU General Public License as published by the Free Software + * Foundation; either version 2, or (at your option) any later + * version. * - * 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 2, 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, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * This software 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 software; if not, see + * https://www.gnu.org/licenses/gpl.html. */ #include +#include "hexdebug.h" #include "serpent.h" #include "serpentsboxes.h" @@ -41,6 +54,26 @@ #endif /* !defined(SERPENT_BIGENDIAN) */ +#if 0 + +#include + +static void SERP_DEBUG(const char *str1, + const void *ary, int sz, + const char *str2) +{ + fprintf(stderr,"%s",str1); + hexdebug(stderr,ary,sz); + fprintf(stderr,"%s",str2); +} + +#else + +#define SERP_DEBUG(str1,aryv,sz,str2) /*empty*/ + +#endif + + static uint32_t serpent_get_32bit(const uint8_t *basep, int lenbytes, int offset) { @@ -65,6 +98,8 @@ void SERPENT_DECORATE(makekey)(struct keyInstance *key, int keyLen, uint32_t j; uint32_t w[132],k[132]; + SERP_DEBUG("SERPENT makekey ",keyMaterial,keyLen/8,"\n"); + for(i=0; i"); + x0=serpent_get_32bit(plaintext,16,+0); x1=serpent_get_32bit(plaintext,16,+4); x2=serpent_get_32bit(plaintext,16,+8); @@ -234,6 +271,8 @@ void SERPENT_DECORATE(encrypt)(struct keyInstance *key, serpent_put_32bit(ciphertext,16,+4, x1); serpent_put_32bit(ciphertext,16,+8, x2); serpent_put_32bit(ciphertext,16,12, x3); + + SERP_DEBUG(" ",ciphertext,16,"\n"); } void SERPENT_DECORATE(decrypt)(struct keyInstance *key, @@ -243,6 +282,8 @@ void SERPENT_DECORATE(decrypt)(struct keyInstance *key, register uint32_t x0, x1, x2, x3; register uint32_t y0, y1, y2, y3; + SERP_DEBUG("SERPENT decrypt ",ciphertext,16," ->"); + x0=serpent_get_32bit(ciphertext,16,+0); x1=serpent_get_32bit(ciphertext,16,+4); x2=serpent_get_32bit(ciphertext,16,+8); @@ -352,4 +393,6 @@ void SERPENT_DECORATE(decrypt)(struct keyInstance *key, serpent_put_32bit(plaintext,16,+4, x1); serpent_put_32bit(plaintext,16,+8, x2); serpent_put_32bit(plaintext,16,12, x3); + + SERP_DEBUG(" ",plaintext,16,"\n"); }