2N/A * Copyright (C) 2005 Free Software Foundation, Inc. 2N/A * This file is part of Libgcrypt. 2N/A * Libgcrypt is free software; you can redistribute it and/or modify 2N/A * it under the terms of the GNU Lesser General Public License as 2N/A * published by the Free Software Foundation; either version 2.1 of 2N/A * the License, or (at your option) any later version. 2N/A * Libgcrypt is distributed in the hope that it will be useful, 2N/A * but WITHOUT ANY WARRANTY; without even the implied warranty of 2N/A * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 2N/A * GNU Lesser General Public License for more details. 2N/A * You should have received a copy of the GNU Lesser General Public 2N/A * License along with this program; if not, write to the Free Software 2N/A * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA 2N/A/* This is an implementation of the Whirlpool hashing algorithm, which 2N/A has been developed by Vincent Rijmen and Paulo S. L. M. Barreto; 2N/A it's homepage is located at: 2N/A The S-Boxes and the structure of the main transformation function, 2N/A which implements an optimized version of the algorithm, is taken 2N/A from the reference implementation available from 2N/A/* Size of a whirlpool block (in bytes). */ 2N/A/* Number of rounds. */ 2N/A/* Convert the the buffer BUFFER into a block BLOCK, using I as 2N/A for (i = 0; i <
8; i++) \
2N/A/* Convert the block BLOCK into a buffer BUFFER, using I as 2N/A for (i = 0; i <
8; i++) \
2N/A/* Copy the block BLOCK_SRC to BLOCK_DST, using I as counter. */ 2N/A for (i = 0; i <
8; i++) \
2N/A/* XOR the block BLOCK_SRC into BLOCK_DST, using I as counter. */ 2N/A for (i = 0; i <
8; i++) \
2N/A/* Round constants. */ 2N/A/* Main lookup boxes. */ 2N/A for (r = 0; r < R; r++)
2N/A /* Compute round key K^r. */ 2N/A /* Apply r-th round transformation. */ 2N/A /* Flush the buffer. */ 2N/A /*_gcry_burn_stack (80+6*sizeof(void*));*/ /* FIXME */ 2N/A return;
/* Nothing to add. */ 2N/A /*_gcry_burn_stack (80+6*sizeof(void*));*/ /* FIXME */ 2N/A /* Update bit counter. */ 2N/A for (i =
1; i <=
32; i++)
2N/A /* An extra block is necessary. */ 2N/A /* Add length of message. */