Revert "Merge branch 'upstream' into tizen"
[platform/upstream/nettle.git] / camellia-table.c
1 /* camellia-table.c
2  *
3  * SBOX tables used by both encryption and key setup.
4  */
5
6 /* Copyright (C) 2006,2007
7  * NTT (Nippon Telegraph and Telephone Corporation).
8  *
9  * Copyright (C) 2010 Niels Möller
10  *
11  * This library is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU Lesser General Public
13  * License as published by the Free Software Foundation; either
14  * version 2.1 of the License, or (at your option) any later version.
15  *
16  * This library is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19  * Lesser General Public License for more details.
20  *
21  * You should have received a copy of the GNU Lesser General Public
22  * License along with this library; if not, write to the Free Software
23  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
24  */
25
26 /*
27  * Algorithm Specification 
28  *  http://info.isl.ntt.co.jp/crypt/eng/camellia/specifications.html
29  */
30
31 /* Based on camellia.c ver 1.2.0, see
32    http://info.isl.ntt.co.jp/crypt/eng/camellia/dl/camellia-LGPL-1.2.0.tar.gz.
33  */
34
35 #if HAVE_CONFIG_H
36 # include "config.h"
37 #endif
38
39 #include "camellia-internal.h"
40
41 const struct camellia_table _camellia_table = {
42   /* sp1110 */
43   {
44     0x70707000,0x82828200,0x2c2c2c00,0xececec00,
45     0xb3b3b300,0x27272700,0xc0c0c000,0xe5e5e500,
46     0xe4e4e400,0x85858500,0x57575700,0x35353500,
47     0xeaeaea00,0x0c0c0c00,0xaeaeae00,0x41414100,
48     0x23232300,0xefefef00,0x6b6b6b00,0x93939300,
49     0x45454500,0x19191900,0xa5a5a500,0x21212100,
50     0xededed00,0x0e0e0e00,0x4f4f4f00,0x4e4e4e00,
51     0x1d1d1d00,0x65656500,0x92929200,0xbdbdbd00,
52     0x86868600,0xb8b8b800,0xafafaf00,0x8f8f8f00,
53     0x7c7c7c00,0xebebeb00,0x1f1f1f00,0xcecece00,
54     0x3e3e3e00,0x30303000,0xdcdcdc00,0x5f5f5f00,
55     0x5e5e5e00,0xc5c5c500,0x0b0b0b00,0x1a1a1a00,
56     0xa6a6a600,0xe1e1e100,0x39393900,0xcacaca00,
57     0xd5d5d500,0x47474700,0x5d5d5d00,0x3d3d3d00,
58     0xd9d9d900,0x01010100,0x5a5a5a00,0xd6d6d600,
59     0x51515100,0x56565600,0x6c6c6c00,0x4d4d4d00,
60     0x8b8b8b00,0x0d0d0d00,0x9a9a9a00,0x66666600,
61     0xfbfbfb00,0xcccccc00,0xb0b0b000,0x2d2d2d00,
62     0x74747400,0x12121200,0x2b2b2b00,0x20202000,
63     0xf0f0f000,0xb1b1b100,0x84848400,0x99999900,
64     0xdfdfdf00,0x4c4c4c00,0xcbcbcb00,0xc2c2c200,
65     0x34343400,0x7e7e7e00,0x76767600,0x05050500,
66     0x6d6d6d00,0xb7b7b700,0xa9a9a900,0x31313100,
67     0xd1d1d100,0x17171700,0x04040400,0xd7d7d700,
68     0x14141400,0x58585800,0x3a3a3a00,0x61616100,
69     0xdedede00,0x1b1b1b00,0x11111100,0x1c1c1c00,
70     0x32323200,0x0f0f0f00,0x9c9c9c00,0x16161600,
71     0x53535300,0x18181800,0xf2f2f200,0x22222200,
72     0xfefefe00,0x44444400,0xcfcfcf00,0xb2b2b200,
73     0xc3c3c300,0xb5b5b500,0x7a7a7a00,0x91919100,
74     0x24242400,0x08080800,0xe8e8e800,0xa8a8a800,
75     0x60606000,0xfcfcfc00,0x69696900,0x50505000,
76     0xaaaaaa00,0xd0d0d000,0xa0a0a000,0x7d7d7d00,
77     0xa1a1a100,0x89898900,0x62626200,0x97979700,
78     0x54545400,0x5b5b5b00,0x1e1e1e00,0x95959500,
79     0xe0e0e000,0xffffff00,0x64646400,0xd2d2d200,
80     0x10101000,0xc4c4c400,0x00000000,0x48484800,
81     0xa3a3a300,0xf7f7f700,0x75757500,0xdbdbdb00,
82     0x8a8a8a00,0x03030300,0xe6e6e600,0xdadada00,
83     0x09090900,0x3f3f3f00,0xdddddd00,0x94949400,
84     0x87878700,0x5c5c5c00,0x83838300,0x02020200,
85     0xcdcdcd00,0x4a4a4a00,0x90909000,0x33333300,
86     0x73737300,0x67676700,0xf6f6f600,0xf3f3f300,
87     0x9d9d9d00,0x7f7f7f00,0xbfbfbf00,0xe2e2e200,
88     0x52525200,0x9b9b9b00,0xd8d8d800,0x26262600,
89     0xc8c8c800,0x37373700,0xc6c6c600,0x3b3b3b00,
90     0x81818100,0x96969600,0x6f6f6f00,0x4b4b4b00,
91     0x13131300,0xbebebe00,0x63636300,0x2e2e2e00,
92     0xe9e9e900,0x79797900,0xa7a7a700,0x8c8c8c00,
93     0x9f9f9f00,0x6e6e6e00,0xbcbcbc00,0x8e8e8e00,
94     0x29292900,0xf5f5f500,0xf9f9f900,0xb6b6b600,
95     0x2f2f2f00,0xfdfdfd00,0xb4b4b400,0x59595900,
96     0x78787800,0x98989800,0x06060600,0x6a6a6a00,
97     0xe7e7e700,0x46464600,0x71717100,0xbababa00,
98     0xd4d4d400,0x25252500,0xababab00,0x42424200,
99     0x88888800,0xa2a2a200,0x8d8d8d00,0xfafafa00,
100     0x72727200,0x07070700,0xb9b9b900,0x55555500,
101     0xf8f8f800,0xeeeeee00,0xacacac00,0x0a0a0a00,
102     0x36363600,0x49494900,0x2a2a2a00,0x68686800,
103     0x3c3c3c00,0x38383800,0xf1f1f100,0xa4a4a400,
104     0x40404000,0x28282800,0xd3d3d300,0x7b7b7b00,
105     0xbbbbbb00,0xc9c9c900,0x43434300,0xc1c1c100,
106     0x15151500,0xe3e3e300,0xadadad00,0xf4f4f400,
107     0x77777700,0xc7c7c700,0x80808000,0x9e9e9e00,
108   },
109   /* sp0222 */
110   {
111     0x00e0e0e0,0x00050505,0x00585858,0x00d9d9d9,
112     0x00676767,0x004e4e4e,0x00818181,0x00cbcbcb,
113     0x00c9c9c9,0x000b0b0b,0x00aeaeae,0x006a6a6a,
114     0x00d5d5d5,0x00181818,0x005d5d5d,0x00828282,
115     0x00464646,0x00dfdfdf,0x00d6d6d6,0x00272727,
116     0x008a8a8a,0x00323232,0x004b4b4b,0x00424242,
117     0x00dbdbdb,0x001c1c1c,0x009e9e9e,0x009c9c9c,
118     0x003a3a3a,0x00cacaca,0x00252525,0x007b7b7b,
119     0x000d0d0d,0x00717171,0x005f5f5f,0x001f1f1f,
120     0x00f8f8f8,0x00d7d7d7,0x003e3e3e,0x009d9d9d,
121     0x007c7c7c,0x00606060,0x00b9b9b9,0x00bebebe,
122     0x00bcbcbc,0x008b8b8b,0x00161616,0x00343434,
123     0x004d4d4d,0x00c3c3c3,0x00727272,0x00959595,
124     0x00ababab,0x008e8e8e,0x00bababa,0x007a7a7a,
125     0x00b3b3b3,0x00020202,0x00b4b4b4,0x00adadad,
126     0x00a2a2a2,0x00acacac,0x00d8d8d8,0x009a9a9a,
127     0x00171717,0x001a1a1a,0x00353535,0x00cccccc,
128     0x00f7f7f7,0x00999999,0x00616161,0x005a5a5a,
129     0x00e8e8e8,0x00242424,0x00565656,0x00404040,
130     0x00e1e1e1,0x00636363,0x00090909,0x00333333,
131     0x00bfbfbf,0x00989898,0x00979797,0x00858585,
132     0x00686868,0x00fcfcfc,0x00ececec,0x000a0a0a,
133     0x00dadada,0x006f6f6f,0x00535353,0x00626262,
134     0x00a3a3a3,0x002e2e2e,0x00080808,0x00afafaf,
135     0x00282828,0x00b0b0b0,0x00747474,0x00c2c2c2,
136     0x00bdbdbd,0x00363636,0x00222222,0x00383838,
137     0x00646464,0x001e1e1e,0x00393939,0x002c2c2c,
138     0x00a6a6a6,0x00303030,0x00e5e5e5,0x00444444,
139     0x00fdfdfd,0x00888888,0x009f9f9f,0x00656565,
140     0x00878787,0x006b6b6b,0x00f4f4f4,0x00232323,
141     0x00484848,0x00101010,0x00d1d1d1,0x00515151,
142     0x00c0c0c0,0x00f9f9f9,0x00d2d2d2,0x00a0a0a0,
143     0x00555555,0x00a1a1a1,0x00414141,0x00fafafa,
144     0x00434343,0x00131313,0x00c4c4c4,0x002f2f2f,
145     0x00a8a8a8,0x00b6b6b6,0x003c3c3c,0x002b2b2b,
146     0x00c1c1c1,0x00ffffff,0x00c8c8c8,0x00a5a5a5,
147     0x00202020,0x00898989,0x00000000,0x00909090,
148     0x00474747,0x00efefef,0x00eaeaea,0x00b7b7b7,
149     0x00151515,0x00060606,0x00cdcdcd,0x00b5b5b5,
150     0x00121212,0x007e7e7e,0x00bbbbbb,0x00292929,
151     0x000f0f0f,0x00b8b8b8,0x00070707,0x00040404,
152     0x009b9b9b,0x00949494,0x00212121,0x00666666,
153     0x00e6e6e6,0x00cecece,0x00ededed,0x00e7e7e7,
154     0x003b3b3b,0x00fefefe,0x007f7f7f,0x00c5c5c5,
155     0x00a4a4a4,0x00373737,0x00b1b1b1,0x004c4c4c,
156     0x00919191,0x006e6e6e,0x008d8d8d,0x00767676,
157     0x00030303,0x002d2d2d,0x00dedede,0x00969696,
158     0x00262626,0x007d7d7d,0x00c6c6c6,0x005c5c5c,
159     0x00d3d3d3,0x00f2f2f2,0x004f4f4f,0x00191919,
160     0x003f3f3f,0x00dcdcdc,0x00797979,0x001d1d1d,
161     0x00525252,0x00ebebeb,0x00f3f3f3,0x006d6d6d,
162     0x005e5e5e,0x00fbfbfb,0x00696969,0x00b2b2b2,
163     0x00f0f0f0,0x00313131,0x000c0c0c,0x00d4d4d4,
164     0x00cfcfcf,0x008c8c8c,0x00e2e2e2,0x00757575,
165     0x00a9a9a9,0x004a4a4a,0x00575757,0x00848484,
166     0x00111111,0x00454545,0x001b1b1b,0x00f5f5f5,
167     0x00e4e4e4,0x000e0e0e,0x00737373,0x00aaaaaa,
168     0x00f1f1f1,0x00dddddd,0x00595959,0x00141414,
169     0x006c6c6c,0x00929292,0x00545454,0x00d0d0d0,
170     0x00787878,0x00707070,0x00e3e3e3,0x00494949,
171     0x00808080,0x00505050,0x00a7a7a7,0x00f6f6f6,
172     0x00777777,0x00939393,0x00868686,0x00838383,
173     0x002a2a2a,0x00c7c7c7,0x005b5b5b,0x00e9e9e9,
174     0x00eeeeee,0x008f8f8f,0x00010101,0x003d3d3d,
175   },
176   /* sp3033 */
177   {
178     0x38003838,0x41004141,0x16001616,0x76007676,
179     0xd900d9d9,0x93009393,0x60006060,0xf200f2f2,
180     0x72007272,0xc200c2c2,0xab00abab,0x9a009a9a,
181     0x75007575,0x06000606,0x57005757,0xa000a0a0,
182     0x91009191,0xf700f7f7,0xb500b5b5,0xc900c9c9,
183     0xa200a2a2,0x8c008c8c,0xd200d2d2,0x90009090,
184     0xf600f6f6,0x07000707,0xa700a7a7,0x27002727,
185     0x8e008e8e,0xb200b2b2,0x49004949,0xde00dede,
186     0x43004343,0x5c005c5c,0xd700d7d7,0xc700c7c7,
187     0x3e003e3e,0xf500f5f5,0x8f008f8f,0x67006767,
188     0x1f001f1f,0x18001818,0x6e006e6e,0xaf00afaf,
189     0x2f002f2f,0xe200e2e2,0x85008585,0x0d000d0d,
190     0x53005353,0xf000f0f0,0x9c009c9c,0x65006565,
191     0xea00eaea,0xa300a3a3,0xae00aeae,0x9e009e9e,
192     0xec00ecec,0x80008080,0x2d002d2d,0x6b006b6b,
193     0xa800a8a8,0x2b002b2b,0x36003636,0xa600a6a6,
194     0xc500c5c5,0x86008686,0x4d004d4d,0x33003333,
195     0xfd00fdfd,0x66006666,0x58005858,0x96009696,
196     0x3a003a3a,0x09000909,0x95009595,0x10001010,
197     0x78007878,0xd800d8d8,0x42004242,0xcc00cccc,
198     0xef00efef,0x26002626,0xe500e5e5,0x61006161,
199     0x1a001a1a,0x3f003f3f,0x3b003b3b,0x82008282,
200     0xb600b6b6,0xdb00dbdb,0xd400d4d4,0x98009898,
201     0xe800e8e8,0x8b008b8b,0x02000202,0xeb00ebeb,
202     0x0a000a0a,0x2c002c2c,0x1d001d1d,0xb000b0b0,
203     0x6f006f6f,0x8d008d8d,0x88008888,0x0e000e0e,
204     0x19001919,0x87008787,0x4e004e4e,0x0b000b0b,
205     0xa900a9a9,0x0c000c0c,0x79007979,0x11001111,
206     0x7f007f7f,0x22002222,0xe700e7e7,0x59005959,
207     0xe100e1e1,0xda00dada,0x3d003d3d,0xc800c8c8,
208     0x12001212,0x04000404,0x74007474,0x54005454,
209     0x30003030,0x7e007e7e,0xb400b4b4,0x28002828,
210     0x55005555,0x68006868,0x50005050,0xbe00bebe,
211     0xd000d0d0,0xc400c4c4,0x31003131,0xcb00cbcb,
212     0x2a002a2a,0xad00adad,0x0f000f0f,0xca00caca,
213     0x70007070,0xff00ffff,0x32003232,0x69006969,
214     0x08000808,0x62006262,0x00000000,0x24002424,
215     0xd100d1d1,0xfb00fbfb,0xba00baba,0xed00eded,
216     0x45004545,0x81008181,0x73007373,0x6d006d6d,
217     0x84008484,0x9f009f9f,0xee00eeee,0x4a004a4a,
218     0xc300c3c3,0x2e002e2e,0xc100c1c1,0x01000101,
219     0xe600e6e6,0x25002525,0x48004848,0x99009999,
220     0xb900b9b9,0xb300b3b3,0x7b007b7b,0xf900f9f9,
221     0xce00cece,0xbf00bfbf,0xdf00dfdf,0x71007171,
222     0x29002929,0xcd00cdcd,0x6c006c6c,0x13001313,
223     0x64006464,0x9b009b9b,0x63006363,0x9d009d9d,
224     0xc000c0c0,0x4b004b4b,0xb700b7b7,0xa500a5a5,
225     0x89008989,0x5f005f5f,0xb100b1b1,0x17001717,
226     0xf400f4f4,0xbc00bcbc,0xd300d3d3,0x46004646,
227     0xcf00cfcf,0x37003737,0x5e005e5e,0x47004747,
228     0x94009494,0xfa00fafa,0xfc00fcfc,0x5b005b5b,
229     0x97009797,0xfe00fefe,0x5a005a5a,0xac00acac,
230     0x3c003c3c,0x4c004c4c,0x03000303,0x35003535,
231     0xf300f3f3,0x23002323,0xb800b8b8,0x5d005d5d,
232     0x6a006a6a,0x92009292,0xd500d5d5,0x21002121,
233     0x44004444,0x51005151,0xc600c6c6,0x7d007d7d,
234     0x39003939,0x83008383,0xdc00dcdc,0xaa00aaaa,
235     0x7c007c7c,0x77007777,0x56005656,0x05000505,
236     0x1b001b1b,0xa400a4a4,0x15001515,0x34003434,
237     0x1e001e1e,0x1c001c1c,0xf800f8f8,0x52005252,
238     0x20002020,0x14001414,0xe900e9e9,0xbd00bdbd,
239     0xdd00dddd,0xe400e4e4,0xa100a1a1,0xe000e0e0,
240     0x8a008a8a,0xf100f1f1,0xd600d6d6,0x7a007a7a,
241     0xbb00bbbb,0xe300e3e3,0x40004040,0x4f004f4f,
242   },
243   /* sp4404 */
244   {
245     0x70700070,0x2c2c002c,0xb3b300b3,0xc0c000c0,
246     0xe4e400e4,0x57570057,0xeaea00ea,0xaeae00ae,
247     0x23230023,0x6b6b006b,0x45450045,0xa5a500a5,
248     0xeded00ed,0x4f4f004f,0x1d1d001d,0x92920092,
249     0x86860086,0xafaf00af,0x7c7c007c,0x1f1f001f,
250     0x3e3e003e,0xdcdc00dc,0x5e5e005e,0x0b0b000b,
251     0xa6a600a6,0x39390039,0xd5d500d5,0x5d5d005d,
252     0xd9d900d9,0x5a5a005a,0x51510051,0x6c6c006c,
253     0x8b8b008b,0x9a9a009a,0xfbfb00fb,0xb0b000b0,
254     0x74740074,0x2b2b002b,0xf0f000f0,0x84840084,
255     0xdfdf00df,0xcbcb00cb,0x34340034,0x76760076,
256     0x6d6d006d,0xa9a900a9,0xd1d100d1,0x04040004,
257     0x14140014,0x3a3a003a,0xdede00de,0x11110011,
258     0x32320032,0x9c9c009c,0x53530053,0xf2f200f2,
259     0xfefe00fe,0xcfcf00cf,0xc3c300c3,0x7a7a007a,
260     0x24240024,0xe8e800e8,0x60600060,0x69690069,
261     0xaaaa00aa,0xa0a000a0,0xa1a100a1,0x62620062,
262     0x54540054,0x1e1e001e,0xe0e000e0,0x64640064,
263     0x10100010,0x00000000,0xa3a300a3,0x75750075,
264     0x8a8a008a,0xe6e600e6,0x09090009,0xdddd00dd,
265     0x87870087,0x83830083,0xcdcd00cd,0x90900090,
266     0x73730073,0xf6f600f6,0x9d9d009d,0xbfbf00bf,
267     0x52520052,0xd8d800d8,0xc8c800c8,0xc6c600c6,
268     0x81810081,0x6f6f006f,0x13130013,0x63630063,
269     0xe9e900e9,0xa7a700a7,0x9f9f009f,0xbcbc00bc,
270     0x29290029,0xf9f900f9,0x2f2f002f,0xb4b400b4,
271     0x78780078,0x06060006,0xe7e700e7,0x71710071,
272     0xd4d400d4,0xabab00ab,0x88880088,0x8d8d008d,
273     0x72720072,0xb9b900b9,0xf8f800f8,0xacac00ac,
274     0x36360036,0x2a2a002a,0x3c3c003c,0xf1f100f1,
275     0x40400040,0xd3d300d3,0xbbbb00bb,0x43430043,
276     0x15150015,0xadad00ad,0x77770077,0x80800080,
277     0x82820082,0xecec00ec,0x27270027,0xe5e500e5,
278     0x85850085,0x35350035,0x0c0c000c,0x41410041,
279     0xefef00ef,0x93930093,0x19190019,0x21210021,
280     0x0e0e000e,0x4e4e004e,0x65650065,0xbdbd00bd,
281     0xb8b800b8,0x8f8f008f,0xebeb00eb,0xcece00ce,
282     0x30300030,0x5f5f005f,0xc5c500c5,0x1a1a001a,
283     0xe1e100e1,0xcaca00ca,0x47470047,0x3d3d003d,
284     0x01010001,0xd6d600d6,0x56560056,0x4d4d004d,
285     0x0d0d000d,0x66660066,0xcccc00cc,0x2d2d002d,
286     0x12120012,0x20200020,0xb1b100b1,0x99990099,
287     0x4c4c004c,0xc2c200c2,0x7e7e007e,0x05050005,
288     0xb7b700b7,0x31310031,0x17170017,0xd7d700d7,
289     0x58580058,0x61610061,0x1b1b001b,0x1c1c001c,
290     0x0f0f000f,0x16160016,0x18180018,0x22220022,
291     0x44440044,0xb2b200b2,0xb5b500b5,0x91910091,
292     0x08080008,0xa8a800a8,0xfcfc00fc,0x50500050,
293     0xd0d000d0,0x7d7d007d,0x89890089,0x97970097,
294     0x5b5b005b,0x95950095,0xffff00ff,0xd2d200d2,
295     0xc4c400c4,0x48480048,0xf7f700f7,0xdbdb00db,
296     0x03030003,0xdada00da,0x3f3f003f,0x94940094,
297     0x5c5c005c,0x02020002,0x4a4a004a,0x33330033,
298     0x67670067,0xf3f300f3,0x7f7f007f,0xe2e200e2,
299     0x9b9b009b,0x26260026,0x37370037,0x3b3b003b,
300     0x96960096,0x4b4b004b,0xbebe00be,0x2e2e002e,
301     0x79790079,0x8c8c008c,0x6e6e006e,0x8e8e008e,
302     0xf5f500f5,0xb6b600b6,0xfdfd00fd,0x59590059,
303     0x98980098,0x6a6a006a,0x46460046,0xbaba00ba,
304     0x25250025,0x42420042,0xa2a200a2,0xfafa00fa,
305     0x07070007,0x55550055,0xeeee00ee,0x0a0a000a,
306     0x49490049,0x68680068,0x38380038,0xa4a400a4,
307     0x28280028,0x7b7b007b,0xc9c900c9,0xc1c100c1,
308     0xe3e300e3,0xf4f400f4,0xc7c700c7,0x9e9e009e,
309   }
310 };