crypto/weakcryptospi/source/symmetric/destables.h
changeset 19 cd501b96611d
equal deleted inserted replaced
15:da2ae96f639b 19:cd501b96611d
       
     1 /*
       
     2 * Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the License "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 * DES Tables
       
    16 *
       
    17 */
       
    18 
       
    19 
       
    20 /**
       
    21  @file 
       
    22  @internalComponent 
       
    23 */
       
    24  
       
    25 #ifndef __DESTABLES_H__
       
    26 #define __DESTABLES_H__
       
    27 
       
    28 #include <e32std.h>
       
    29 
       
    30 namespace DES_TABLE
       
    31 {
       
    32 /* initial permutation IP */
       
    33 const TUint8 ip[] = {
       
    34 	   58, 50, 42, 34, 26, 18, 10,  2,
       
    35 	   60, 52, 44, 36, 28, 20, 12,  4,
       
    36 	   62, 54, 46, 38, 30, 22, 14,  6,
       
    37 	   64, 56, 48, 40, 32, 24, 16,  8,
       
    38 	   57, 49, 41, 33, 25, 17,  9,  1,
       
    39 	   59, 51, 43, 35, 27, 19, 11,  3,
       
    40 	   61, 53, 45, 37, 29, 21, 13,  5,
       
    41 	   63, 55, 47, 39, 31, 23, 15,  7
       
    42 };
       
    43 
       
    44 /* final permutation IP^-1 */
       
    45 const TUint8 fp[] = {
       
    46 	   40,  8, 48, 16, 56, 24, 64, 32,
       
    47 	   39,  7, 47, 15, 55, 23, 63, 31,
       
    48 	   38,  6, 46, 14, 54, 22, 62, 30,
       
    49 	   37,  5, 45, 13, 53, 21, 61, 29,
       
    50 	   36,  4, 44, 12, 52, 20, 60, 28,
       
    51 	   35,  3, 43, 11, 51, 19, 59, 27,
       
    52 	   34,  2, 42, 10, 50, 18, 58, 26,
       
    53 	   33,  1, 41,  9, 49, 17, 57, 25
       
    54 };
       
    55 
       
    56 /* expansion operation matrix */
       
    57 const TUint8 ei[] = {
       
    58 	   32,  1,  2,  3,  4,  5,
       
    59 		4,  5,  6,  7,  8,  9,
       
    60 		8,  9, 10, 11, 12, 13,
       
    61 	   12, 13, 14, 15, 16, 17,
       
    62 	   16, 17, 18, 19, 20, 21,
       
    63 	   20, 21, 22, 23, 24, 25,
       
    64 	   24, 25, 26, 27, 28, 29,
       
    65 	   28, 29, 30, 31, 32,  1
       
    66 };
       
    67 
       
    68 const TUint32 sbox[8][64] = {
       
    69 {
       
    70 0x01010400,0x00000000,0x00010000,0x01010404, 0x01010004,0x00010404,0x00000004,0x00010000,
       
    71 0x00000400,0x01010400,0x01010404,0x00000400, 0x01000404,0x01010004,0x01000000,0x00000004,
       
    72 0x00000404,0x01000400,0x01000400,0x00010400, 0x00010400,0x01010000,0x01010000,0x01000404,
       
    73 0x00010004,0x01000004,0x01000004,0x00010004, 0x00000000,0x00000404,0x00010404,0x01000000,
       
    74 0x00010000,0x01010404,0x00000004,0x01010000, 0x01010400,0x01000000,0x01000000,0x00000400,
       
    75 0x01010004,0x00010000,0x00010400,0x01000004, 0x00000400,0x00000004,0x01000404,0x00010404,
       
    76 0x01010404,0x00010004,0x01010000,0x01000404, 0x01000004,0x00000404,0x00010404,0x01010400,
       
    77 0x00000404,0x01000400,0x01000400,0x00000000, 0x00010004,0x00010400,0x00000000,0x01010004},
       
    78 {
       
    79 0x80108020,0x80008000,0x00008000,0x00108020, 0x00100000,0x00000020,0x80100020,0x80008020,
       
    80 0x80000020,0x80108020,0x80108000,0x80000000, 0x80008000,0x00100000,0x00000020,0x80100020,
       
    81 0x00108000,0x00100020,0x80008020,0x00000000, 0x80000000,0x00008000,0x00108020,0x80100000,
       
    82 0x00100020,0x80000020,0x00000000,0x00108000, 0x00008020,0x80108000,0x80100000,0x00008020,
       
    83 0x00000000,0x00108020,0x80100020,0x00100000, 0x80008020,0x80100000,0x80108000,0x00008000,
       
    84 0x80100000,0x80008000,0x00000020,0x80108020, 0x00108020,0x00000020,0x00008000,0x80000000,
       
    85 0x00008020,0x80108000,0x00100000,0x80000020, 0x00100020,0x80008020,0x80000020,0x00100020,
       
    86 0x00108000,0x00000000,0x80008000,0x00008020, 0x80000000,0x80100020,0x80108020,0x00108000},
       
    87 {
       
    88 0x00000208,0x08020200,0x00000000,0x08020008, 0x08000200,0x00000000,0x00020208,0x08000200,
       
    89 0x00020008,0x08000008,0x08000008,0x00020000, 0x08020208,0x00020008,0x08020000,0x00000208,
       
    90 0x08000000,0x00000008,0x08020200,0x00000200, 0x00020200,0x08020000,0x08020008,0x00020208,
       
    91 0x08000208,0x00020200,0x00020000,0x08000208, 0x00000008,0x08020208,0x00000200,0x08000000,
       
    92 0x08020200,0x08000000,0x00020008,0x00000208, 0x00020000,0x08020200,0x08000200,0x00000000,
       
    93 0x00000200,0x00020008,0x08020208,0x08000200, 0x08000008,0x00000200,0x00000000,0x08020008,
       
    94 0x08000208,0x00020000,0x08000000,0x08020208, 0x00000008,0x00020208,0x00020200,0x08000008,
       
    95 0x08020000,0x08000208,0x00000208,0x08020000, 0x00020208,0x00000008,0x08020008,0x00020200},
       
    96 {
       
    97 0x00802001,0x00002081,0x00002081,0x00000080, 0x00802080,0x00800081,0x00800001,0x00002001,
       
    98 0x00000000,0x00802000,0x00802000,0x00802081, 0x00000081,0x00000000,0x00800080,0x00800001,
       
    99 0x00000001,0x00002000,0x00800000,0x00802001, 0x00000080,0x00800000,0x00002001,0x00002080,
       
   100 0x00800081,0x00000001,0x00002080,0x00800080, 0x00002000,0x00802080,0x00802081,0x00000081,
       
   101 0x00800080,0x00800001,0x00802000,0x00802081, 0x00000081,0x00000000,0x00000000,0x00802000,
       
   102 0x00002080,0x00800080,0x00800081,0x00000001, 0x00802001,0x00002081,0x00002081,0x00000080,
       
   103 0x00802081,0x00000081,0x00000001,0x00002000, 0x00800001,0x00002001,0x00802080,0x00800081,
       
   104 0x00002001,0x00002080,0x00800000,0x00802001, 0x00000080,0x00800000,0x00002000,0x00802080},
       
   105 {
       
   106 0x00000100,0x02080100,0x02080000,0x42000100, 0x00080000,0x00000100,0x40000000,0x02080000,
       
   107 0x40080100,0x00080000,0x02000100,0x40080100, 0x42000100,0x42080000,0x00080100,0x40000000,
       
   108 0x02000000,0x40080000,0x40080000,0x00000000, 0x40000100,0x42080100,0x42080100,0x02000100,
       
   109 0x42080000,0x40000100,0x00000000,0x42000000, 0x02080100,0x02000000,0x42000000,0x00080100,
       
   110 0x00080000,0x42000100,0x00000100,0x02000000, 0x40000000,0x02080000,0x42000100,0x40080100,
       
   111 0x02000100,0x40000000,0x42080000,0x02080100, 0x40080100,0x00000100,0x02000000,0x42080000,
       
   112 0x42080100,0x00080100,0x42000000,0x42080100, 0x02080000,0x00000000,0x40080000,0x42000000,
       
   113 0x00080100,0x02000100,0x40000100,0x00080000, 0x00000000,0x40080000,0x02080100,0x40000100},
       
   114 {
       
   115 0x20000010,0x20400000,0x00004000,0x20404010, 0x20400000,0x00000010,0x20404010,0x00400000,
       
   116 0x20004000,0x00404010,0x00400000,0x20000010, 0x00400010,0x20004000,0x20000000,0x00004010,
       
   117 0x00000000,0x00400010,0x20004010,0x00004000, 0x00404000,0x20004010,0x00000010,0x20400010,
       
   118 0x20400010,0x00000000,0x00404010,0x20404000, 0x00004010,0x00404000,0x20404000,0x20000000,
       
   119 0x20004000,0x00000010,0x20400010,0x00404000, 0x20404010,0x00400000,0x00004010,0x20000010,
       
   120 0x00400000,0x20004000,0x20000000,0x00004010, 0x20000010,0x20404010,0x00404000,0x20400000,
       
   121 0x00404010,0x20404000,0x00000000,0x20400010, 0x00000010,0x00004000,0x20400000,0x00404010,
       
   122 0x00004000,0x00400010,0x20004010,0x00000000, 0x20404000,0x20000000,0x00400010,0x20004010},
       
   123 {
       
   124 0x00200000,0x04200002,0x04000802,0x00000000, 0x00000800,0x04000802,0x00200802,0x04200800,
       
   125 0x04200802,0x00200000,0x00000000,0x04000002, 0x00000002,0x04000000,0x04200002,0x00000802,
       
   126 0x04000800,0x00200802,0x00200002,0x04000800, 0x04000002,0x04200000,0x04200800,0x00200002,
       
   127 0x04200000,0x00000800,0x00000802,0x04200802, 0x00200800,0x00000002,0x04000000,0x00200800,
       
   128 0x04000000,0x00200800,0x00200000,0x04000802, 0x04000802,0x04200002,0x04200002,0x00000002,
       
   129 0x00200002,0x04000000,0x04000800,0x00200000, 0x04200800,0x00000802,0x00200802,0x04200800,
       
   130 0x00000802,0x04000002,0x04200802,0x04200000, 0x00200800,0x00000000,0x00000002,0x04200802,
       
   131 0x00000000,0x00200802,0x04200000,0x00000800, 0x04000002,0x04000800,0x00000800,0x00200002},
       
   132 {
       
   133 0x10001040,0x00001000,0x00040000,0x10041040, 0x10000000,0x10001040,0x00000040,0x10000000,
       
   134 0x00040040,0x10040000,0x10041040,0x00041000, 0x10041000,0x00041040,0x00001000,0x00000040,
       
   135 0x10040000,0x10000040,0x10001000,0x00001040, 0x00041000,0x00040040,0x10040040,0x10041000,
       
   136 0x00001040,0x00000000,0x00000000,0x10040040, 0x10000040,0x10001000,0x00041040,0x00040000,
       
   137 0x00041040,0x00040000,0x10041000,0x00001000, 0x00000040,0x10040040,0x00001000,0x00041040,
       
   138 0x10001000,0x00000040,0x10000040,0x10040000, 0x10040040,0x10000000,0x00040000,0x10001040,
       
   139 0x00000000,0x10041040,0x00040040,0x10000040, 0x10040000,0x10001000,0x10001040,0x00000000,
       
   140 0x10041040,0x00041000,0x00041000,0x00001040, 0x00001040,0x00040040,0x10000000,0x10041000}
       
   141 };
       
   142 
       
   143 
       
   144 /* 32-bit permutation function P used on the output of the S-boxes */
       
   145 const TUint8 p32i[] = {
       
   146 	   16,  7, 20, 21,
       
   147 	   29, 12, 28, 17,
       
   148 		1, 15, 23, 26,
       
   149 		5, 18, 31, 10,
       
   150 		2,  8, 24, 14,
       
   151 	   32, 27,  3,  9,
       
   152 	   19, 13, 30,  6,
       
   153 	   22, 11,  4, 25
       
   154 };
       
   155 
       
   156 /* permuted choice table (key) */
       
   157 const TUint8 pc1[] = {
       
   158 	   57, 49, 41, 33, 25, 17,  9,
       
   159 		1, 58, 50, 42, 34, 26, 18,
       
   160 	   10,  2, 59, 51, 43, 35, 27,
       
   161 	   19, 11,  3, 60, 52, 44, 36,
       
   162 
       
   163 	   63, 55, 47, 39, 31, 23, 15,
       
   164 		7, 62, 54, 46, 38, 30, 22,
       
   165 	   14,  6, 61, 53, 45, 37, 29,
       
   166 	   21, 13,  5, 28, 20, 12,  4
       
   167 };
       
   168 
       
   169 /* number left rotations of pc1 */
       
   170 const TUint8 totrot[] = {1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28};
       
   171 
       
   172 /* permuted choice key (table) */
       
   173 const TUint8 pc2[] = {
       
   174 	   14, 17, 11, 24,  1,  5,
       
   175 		3, 28, 15,  6, 21, 10,
       
   176 	   23, 19, 12,  4, 26,  8,
       
   177 	   16,  7, 27, 20, 13,  2,
       
   178 	   41, 52, 31, 37, 47, 55,
       
   179 	   30, 40, 51, 45, 33, 48,
       
   180 	   44, 49, 39, 56, 34, 53,
       
   181 	   46, 42, 50, 36, 29, 32
       
   182 };
       
   183 }	//	namespace DES_TABLE
       
   184 #endif	//	__DESTABLES_H__