"Fossies" - the Fresh Open Source Software Archive

Member "src/Crypto/Aestab.h" (10 Oct 2018, 5288 Bytes) of package /windows/misc/VeraCrypt_1.23-Hotfix-2_Source.zip:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "Aestab.h" see the Fossies "Dox" file reference documentation.

    1 /*
    2  ---------------------------------------------------------------------------
    3  Copyright (c) 1998-2007, Brian Gladman, Worcester, UK. All rights reserved.
    4 
    5  LICENSE TERMS
    6 
    7  The free distribution and use of this software is allowed (with or without
    8  changes) provided that:
    9 
   10   1. source code distributions include the above copyright notice, this
   11      list of conditions and the following disclaimer;
   12 
   13   2. binary distributions include the above copyright notice, this list
   14      of conditions and the following disclaimer in their documentation;
   15 
   16   3. the name of the copyright holder is not used to endorse products
   17      built using this software without specific written permission.
   18 
   19  DISCLAIMER
   20 
   21  This software is provided 'as is' with no explicit or implied warranties
   22  in respect of its properties, including, but not limited to, correctness
   23  and/or fitness for purpose.
   24  ---------------------------------------------------------------------------
   25  Issue Date: 20/12/2007
   26 
   27  This file contains the code for declaring the tables needed to implement
   28  AES. The file aesopt.h is assumed to be included before this header file.
   29  If there are no global variables, the definitions here can be used to put
   30  the AES tables in a structure so that a pointer can then be added to the
   31  AES context to pass them to the AES routines that need them.   If this
   32  facility is used, the calling program has to ensure that this pointer is
   33  managed appropriately.  In particular, the value of the t_dec(in,it) item
   34  in the table structure must be set to zero in order to ensure that the
   35  tables are initialised. In practice the three code sequences in aeskey.c
   36  that control the calls to aes_init() and the aes_init() routine itself will
   37  have to be changed for a specific implementation. If global variables are
   38  available it will generally be preferable to use them with the precomputed
   39  FIXED_TABLES option that uses static global tables.
   40 
   41  The following defines can be used to control the way the tables
   42  are defined, initialised and used in embedded environments that
   43  require special features for these purposes
   44 
   45     the 't_dec' construction is used to declare fixed table arrays
   46     the 't_set' construction is used to set fixed table values
   47     the 't_use' construction is used to access fixed table values
   48 
   49     256 byte tables:
   50 
   51         t_xxx(s,box)    => forward S box
   52         t_xxx(i,box)    => inverse S box
   53 
   54     256 32-bit word OR 4 x 256 32-bit word tables:
   55 
   56         t_xxx(f,n)      => forward normal round
   57         t_xxx(f,l)      => forward last round
   58         t_xxx(i,n)      => inverse normal round
   59         t_xxx(i,l)      => inverse last round
   60         t_xxx(l,s)      => key schedule table
   61         t_xxx(i,m)      => key schedule table
   62 
   63     Other variables and tables:
   64 
   65         t_xxx(r,c)      => the rcon table
   66 */
   67 
   68 #if !defined( _AESTAB_H )
   69 #define _AESTAB_H
   70 
   71 #define t_dec(m,n) t_##m##n
   72 #define t_set(m,n) t_##m##n
   73 #define t_use(m,n) t_##m##n
   74 
   75 #if defined(FIXED_TABLES)
   76 #  if !defined( __GNUC__ ) && (defined( __MSDOS__ ) || defined( __WIN16__ ))
   77 /*   make tables far data to avoid using too much DGROUP space (PG) */
   78 #    define CONST const far
   79 #  else
   80 #    define CONST const
   81 #  endif
   82 #else
   83 #  define CONST
   84 #endif
   85 
   86 #if defined(__cplusplus)
   87 #  define EXTERN extern "C"
   88 #elif defined(DO_TABLES)
   89 #  define EXTERN
   90 #else
   91 #  define EXTERN extern
   92 #endif
   93 
   94 #if defined(_MSC_VER) && defined(TABLE_ALIGN)
   95 #define ALIGN __declspec(align(TABLE_ALIGN))
   96 #else
   97 #define ALIGN
   98 #endif
   99 
  100 #if defined( __WATCOMC__ ) && ( __WATCOMC__ >= 1100 )
  101 #  define XP_DIR __cdecl
  102 #else
  103 #  define XP_DIR
  104 #endif
  105 
  106 #if defined(DO_TABLES) && defined(FIXED_TABLES)
  107 #define d_1(t,n,b,e)       EXTERN ALIGN CONST XP_DIR t n[256]    =   b(e)
  108 #define d_4(t,n,b,e,f,g,h) EXTERN ALIGN CONST XP_DIR t n[4][256] = { b(e), b(f), b(g), b(h) }
  109 EXTERN ALIGN CONST uint_32t t_dec(r,c)[RC_LENGTH] = rc_data(w0);
  110 #else
  111 #define d_1(t,n,b,e)       EXTERN ALIGN CONST XP_DIR t n[256]
  112 #define d_4(t,n,b,e,f,g,h) EXTERN ALIGN CONST XP_DIR t n[4][256]
  113 EXTERN ALIGN CONST uint_32t t_dec(r,c)[RC_LENGTH];
  114 #endif
  115 
  116 #if defined( SBX_SET )
  117     d_1(uint_8t, t_dec(s,box), sb_data, h0);
  118 #endif
  119 #if defined( ISB_SET )
  120     d_1(uint_8t, t_dec(i,box), isb_data, h0);
  121 #endif
  122 
  123 #if defined( FT1_SET )
  124     d_1(uint_32t, t_dec(f,n), sb_data, u0);
  125 #endif
  126 #if defined( FT4_SET )
  127     d_4(uint_32t, t_dec(f,n), sb_data, u0, u1, u2, u3);
  128 #endif
  129 
  130 #if defined( FL1_SET )
  131     d_1(uint_32t, t_dec(f,l), sb_data, w0);
  132 #endif
  133 #if defined( FL4_SET )
  134     d_4(uint_32t, t_dec(f,l), sb_data, w0, w1, w2, w3);
  135 #endif
  136 
  137 #if defined( IT1_SET )
  138     d_1(uint_32t, t_dec(i,n), isb_data, v0);
  139 #endif
  140 #if defined( IT4_SET )
  141     d_4(uint_32t, t_dec(i,n), isb_data, v0, v1, v2, v3);
  142 #endif
  143 
  144 #if defined( IL1_SET )
  145     d_1(uint_32t, t_dec(i,l), isb_data, w0);
  146 #endif
  147 #if defined( IL4_SET )
  148     d_4(uint_32t, t_dec(i,l), isb_data, w0, w1, w2, w3);
  149 #endif
  150 
  151 #if defined( LS1_SET )
  152 #if defined( FL1_SET )
  153 #undef  LS1_SET
  154 #else
  155     d_1(uint_32t, t_dec(l,s), sb_data, w0);
  156 #endif
  157 #endif
  158 
  159 #if defined( LS4_SET )
  160 #if defined( FL4_SET )
  161 #undef  LS4_SET
  162 #else
  163     d_4(uint_32t, t_dec(l,s), sb_data, w0, w1, w2, w3);
  164 #endif
  165 #endif
  166 
  167 #if defined( IM1_SET )
  168     d_1(uint_32t, t_dec(i,m), mm_data, v0);
  169 #endif
  170 #if defined( IM4_SET )
  171     d_4(uint_32t, t_dec(i,m), mm_data, v0, v1, v2, v3);
  172 #endif
  173 
  174 #endif