X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/8dd8c294e9f330eb6b975c2b96cf9bbfcd087e5e..813390c45f438f411662b1a55678e63f11681eb4:/serpent-sbox.h diff --git a/serpent-sbox.h b/serpent-sbox.h index 7285bb2..1612330 100644 --- a/serpent-sbox.h +++ b/serpent-sbox.h @@ -1,13 +1,13 @@ /* -*-c-*- * - * $Id: serpent-sbox.h,v 1.1 2000/06/17 12:08:43 mdw Exp $ + * $Id: serpent-sbox.h,v 1.2 2004/04/08 01:36:15 mdw Exp $ * * Bitslice S-box implementations * * (c) 2000 Straylight/Edgeware */ -/*----- Licensing notice --------------------------------------------------* +/*----- Licensing notice --------------------------------------------------* * * This file is part of Catacomb. * @@ -15,26 +15,18 @@ * it under the terms of the GNU Library General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. - * + * * Catacomb 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 Library General Public License for more details. - * + * * You should have received a copy of the GNU Library General Public * License along with Catacomb; if not, write to the Free * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, * MA 02111-1307, USA. */ -/*----- Revision history --------------------------------------------------* - * - * $Log: serpent-sbox.h,v $ - * Revision 1.1 2000/06/17 12:08:43 mdw - * New cipher. - * - */ - /*----- Credit where it's due ---------------------------------------------* * * These S-box expressions are taken from the paper `Speeding up Serpent', by @@ -58,7 +50,7 @@ #define S0(r0, r1, r2, r3) do { \ uint32 r4; \ - r3 ^= r0; r4 = r1; r1 &= r3; r4 ^= r2; \ + r3 ^= r0; r4 = r1; r1 &= r3; r4 ^= r2; \ r1 ^= r0; r0 |= r3; r0 ^= r4; r4 ^= r3; \ r3 ^= r2; r2 |= r1; r2 ^= r4; r4 = ~r4; \ r4 |= r1; r1 ^= r3; r1 ^= r4; r3 |= r0; \ @@ -68,7 +60,7 @@ #define IS0(r0, r1, r2, r3) do { \ uint32 r4; \ - r2 = ~r2; r4 = r1; r1 |= r0; r4 = ~r4; \ + r2 = ~r2; r4 = r1; r1 |= r0; r4 = ~r4; \ r1 ^= r2; r2 |= r4; r1 ^= r3; r0 ^= r4; \ r2 ^= r0; r0 &= r3; r4 ^= r0; r0 |= r1; \ r0 ^= r2; r3 ^= r4; r2 ^= r1; r3 ^= r0; \ @@ -177,7 +169,7 @@ #define IS5(r0, r1, r2, r3) do { \ uint32 r4; \ - r1 = ~r1; r4 = r3; r2 ^= r1; r3 |= r0; \ + r1 = ~r1; r4 = r3; r2 ^= r1; r3 |= r0; \ r3 ^= r2; r2 |= r1; r2 &= r0; r4 ^= r3; \ r2 ^= r4; r4 |= r0; r4 ^= r1; r1 &= r2; \ r1 ^= r3; r4 ^= r2; r3 &= r4; r4 ^= r1; \ @@ -189,7 +181,7 @@ #define S6(r0, r1, r2, r3) do { \ uint32 r4; \ - r2 = ~r2; r4 = r3; r3 &= r0; r0 ^= r4; \ + r2 = ~r2; r4 = r3; r3 &= r0; r0 ^= r4; \ r3 ^= r2; r2 |= r4; r1 ^= r3; r2 ^= r0; \ r0 |= r1; r2 ^= r1; r4 ^= r0; r0 |= r3; \ r0 ^= r2; r4 ^= r3; r4 ^= r0; r3 = ~r3; \ @@ -199,7 +191,7 @@ #define IS6(r0, r1, r2, r3) do { \ uint32 r4; \ - r0 ^= r2; r4 = r2; r2 &= r0; r4 ^= r3; \ + r0 ^= r2; r4 = r2; r2 &= r0; r4 ^= r3; \ r2 = ~r2; r3 ^= r1; r2 ^= r3; r4 |= r0; \ r0 ^= r2; r3 ^= r4; r4 ^= r1; r1 &= r3; \ r1 ^= r0; r0 ^= r3; r0 |= r2; r3 ^= r1; \