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