The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/openzfs/module/icp/asm-x86_64/aes/aestab.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    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 /*
   69  * OpenSolaris OS modifications
   70  *
   71  * 1. Added __cplusplus and _AESTAB_H header guards
   72  * 2. Added header file sys/types.h
   73  * 3. Remove code defined for _MSC_VER
   74  * 4. Changed all variables to "static const"
   75  * 5. Changed uint_8t and uint_32t to uint8_t and uint32_t
   76  * 6. Cstyled and hdrchk code
   77  */
   78 
   79 #ifndef _AESTAB_H
   80 #define _AESTAB_H
   81 
   82 #ifdef  __cplusplus
   83 extern "C" {
   84 #endif
   85 
   86 #include <sys/types.h>
   87 
   88 #define t_dec(m, n) t_##m##n
   89 #define t_set(m, n) t_##m##n
   90 #define t_use(m, n) t_##m##n
   91 
   92 #if defined(DO_TABLES) && defined(FIXED_TABLES)
   93 #define d_1(t, n, b, e)          static const t n[256]    =   b(e)
   94 #define d_4(t, n, b, e, f, g, h) static const t n[4][256] = \
   95                                         {b(e), b(f), b(g), b(h)}
   96 static const uint32_t t_dec(r, c)[RC_LENGTH] = rc_data(w0);
   97 #else
   98 #define d_1(t, n, b, e)                 static const t n[256]
   99 #define d_4(t, n, b, e, f, g, h)        static const t n[4][256]
  100 static const uint32_t t_dec(r, c)[RC_LENGTH];
  101 #endif
  102 
  103 #if defined(SBX_SET)
  104         d_1(uint8_t, t_dec(s, box), sb_data, h0);
  105 #endif
  106 #if defined(ISB_SET)
  107         d_1(uint8_t, t_dec(i, box), isb_data, h0);
  108 #endif
  109 
  110 #if defined(FT1_SET)
  111         d_1(uint32_t, t_dec(f, n), sb_data, u0);
  112 #endif
  113 #if defined(FT4_SET)
  114         d_4(uint32_t, t_dec(f, n), sb_data, u0, u1, u2, u3);
  115 #endif
  116 
  117 #if defined(FL1_SET)
  118         d_1(uint32_t, t_dec(f, l), sb_data, w0);
  119 #endif
  120 #if defined(FL4_SET)
  121         d_4(uint32_t, t_dec(f, l), sb_data, w0, w1, w2, w3);
  122 #endif
  123 
  124 #if defined(IT1_SET)
  125         d_1(uint32_t, t_dec(i, n), isb_data, v0);
  126 #endif
  127 #if defined(IT4_SET)
  128         d_4(uint32_t, t_dec(i, n), isb_data, v0, v1, v2, v3);
  129 #endif
  130 
  131 #if defined(IL1_SET)
  132         d_1(uint32_t, t_dec(i, l), isb_data, w0);
  133 #endif
  134 #if defined(IL4_SET)
  135         d_4(uint32_t, t_dec(i, l), isb_data, w0, w1, w2, w3);
  136 #endif
  137 
  138 #if defined(LS1_SET)
  139 #if defined(FL1_SET)
  140 #undef  LS1_SET
  141 #else
  142         d_1(uint32_t, t_dec(l, s), sb_data, w0);
  143 #endif
  144 #endif
  145 
  146 #if defined(LS4_SET)
  147 #if defined(FL4_SET)
  148 #undef  LS4_SET
  149 #else
  150         d_4(uint32_t, t_dec(l, s), sb_data, w0, w1, w2, w3);
  151 #endif
  152 #endif
  153 
  154 #if defined(IM1_SET)
  155         d_1(uint32_t, t_dec(i, m), mm_data, v0);
  156 #endif
  157 #if defined(IM4_SET)
  158         d_4(uint32_t, t_dec(i, m), mm_data, v0, v1, v2, v3);
  159 #endif
  160 
  161 #ifdef  __cplusplus
  162 }
  163 #endif
  164 
  165 #endif  /* _AESTAB_H */

Cache object: fdabcf5f1f74c3e0d35b44bd3c592386


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.