text: /**
   * rijndael-alg-fstplus.h
   *  
   * this is the same as rijndael-alg-fst.h
   * with one extra function at the end that is needed for Silver.
   * extra function added by Daniel Penazzi.
   * rijndael-alg-fst.h is:
   *
   * @version 3.0 (December 2000)
   *
   * Optimised ANSI C code for the Rijndael cipher (now AES)
   *
   * @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be>
   * @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be>
   * @author Paulo Barreto <paulo.barreto@terra.com.br>
   *
   * This code is hereby placed in the public domain.
   *
   * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS
   * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
   * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE
   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
   * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
   * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
   * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
   * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
  #ifndef __RIJNDAEL_ALG_FSTplus_H
  #define __RIJNDAEL_ALG_FSTplus_H
  
  #define MAXKC	(256/32)
  #define MAXKB	(256/8)
  #define MAXNR	14
  
  typedef unsigned char	u8;	
  typedef unsigned short	u16;	
  typedef unsigned int	u32;
  
  int rijndaelKeySetupEnc(u32 rk[/*4*(Nr + 1)*/], const u8 cipherKey[], int keyBits);
  int rijndaelKeySetupDec(u32 rk[/*4*(Nr + 1)*/], const u8 cipherKey[], int keyBits);
  void rijndaelEncrypt(const u32 rk[/*4*(Nr + 1)*/], int Nr, const u8 pt[16], u8 ct[16]);
  void rijndaelDecrypt(const u32 rk[/*4*(Nr + 1)*/], int Nr, const u8 ct[16], u8 pt[16]);
  
  #ifdef INTERMEDIATE_VALUE_KAT
  void rijndaelEncryptRound(const u32 rk[/*4*(Nr + 1)*/], int Nr, u8 block[16], int rounds);
  void rijndaelDecryptRound(const u32 rk[/*4*(Nr + 1)*/], int Nr, u8 block[16], int rounds);
  #endif /* INTERMEDIATE_VALUE_KAT */
  
  /*the following is not in the original rijndael-alg-fst but we need it*/
  
  /*inverts a rk*/
  u32 INVERT(u32 rk);
  
  
  #endif /* __RIJNDAEL_ALG_FSTplus_H */
  