Coverage Report

Created: 2023-03-26 08:33

/src/gnutls/lib/nettle/gost/gost28147.c
Line
Count
Source (jump to first uncovered line)
1
/* gost28147.c - GOST 28147-89 (Magma) cipher implementation
2
 *
3
 * based on Russian standard GOST 28147-89
4
 * For English description, check RFC 5830.
5
 * S-Boxes are expanded from the tables defined in RFC4357:
6
 *   https://tools.ietf.org/html/rfc4357
7
 *
8
 * Copyright: 2015-2015 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
9
 * Copyright: 2009-2012 Aleksey Kravchenko <rhash.admin@gmail.com>
10
 *
11
 * Permission is hereby granted, free of charge, to any person obtaining a
12
 * copy of this software and associated documentation files (the
13
 * "Software"), to deal in the Software without restriction, including
14
 * without limitation the rights to use, copy, modify, merge, publish,
15
 * distribute, sublicense, and/or sell copies of the Software, and to
16
 * permit persons to whom the Software is furnished to do so, subject to
17
 * the following conditions:
18
 *
19
 * The above copyright notice and this permission notice shall be included
20
 * in all copies or substantial portions of the Software.
21
 *
22
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
23
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
25
 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
26
 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
27
 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
28
 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29
 */
30
31
#if HAVE_CONFIG_H
32
# include "config.h"
33
#endif
34
35
#ifndef HAVE_NETTLE_GOST28147_SET_KEY
36
37
# include <gnutls_int.h>
38
39
# include <string.h>
40
41
# include <nettle/macros.h>
42
# include "nettle-write.h"
43
# include "gost28147.h"
44
# include <nettle/memxor.h>
45
46
/* pre-initialized GOST lookup tables based on rotated S-Box */
47
const struct gost28147_param gost28147_param_test_3411 = {
48
  0,
49
  {
50
   /* 0 */
51
   0x00072000, 0x00075000, 0x00074800, 0x00071000,
52
   0x00076800, 0x00074000, 0x00070000, 0x00077000,
53
   0x00073000, 0x00075800, 0x00070800, 0x00076000,
54
   0x00073800, 0x00077800, 0x00072800, 0x00071800,
55
   0x0005a000, 0x0005d000, 0x0005c800, 0x00059000,
56
   0x0005e800, 0x0005c000, 0x00058000, 0x0005f000,
57
   0x0005b000, 0x0005d800, 0x00058800, 0x0005e000,
58
   0x0005b800, 0x0005f800, 0x0005a800, 0x00059800,
59
   0x00022000, 0x00025000, 0x00024800, 0x00021000,
60
   0x00026800, 0x00024000, 0x00020000, 0x00027000,
61
   0x00023000, 0x00025800, 0x00020800, 0x00026000,
62
   0x00023800, 0x00027800, 0x00022800, 0x00021800,
63
   0x00062000, 0x00065000, 0x00064800, 0x00061000,
64
   0x00066800, 0x00064000, 0x00060000, 0x00067000,
65
   0x00063000, 0x00065800, 0x00060800, 0x00066000,
66
   0x00063800, 0x00067800, 0x00062800, 0x00061800,
67
   0x00032000, 0x00035000, 0x00034800, 0x00031000,
68
   0x00036800, 0x00034000, 0x00030000, 0x00037000,
69
   0x00033000, 0x00035800, 0x00030800, 0x00036000,
70
   0x00033800, 0x00037800, 0x00032800, 0x00031800,
71
   0x0006a000, 0x0006d000, 0x0006c800, 0x00069000,
72
   0x0006e800, 0x0006c000, 0x00068000, 0x0006f000,
73
   0x0006b000, 0x0006d800, 0x00068800, 0x0006e000,
74
   0x0006b800, 0x0006f800, 0x0006a800, 0x00069800,
75
   0x0007a000, 0x0007d000, 0x0007c800, 0x00079000,
76
   0x0007e800, 0x0007c000, 0x00078000, 0x0007f000,
77
   0x0007b000, 0x0007d800, 0x00078800, 0x0007e000,
78
   0x0007b800, 0x0007f800, 0x0007a800, 0x00079800,
79
   0x00052000, 0x00055000, 0x00054800, 0x00051000,
80
   0x00056800, 0x00054000, 0x00050000, 0x00057000,
81
   0x00053000, 0x00055800, 0x00050800, 0x00056000,
82
   0x00053800, 0x00057800, 0x00052800, 0x00051800,
83
   0x00012000, 0x00015000, 0x00014800, 0x00011000,
84
   0x00016800, 0x00014000, 0x00010000, 0x00017000,
85
   0x00013000, 0x00015800, 0x00010800, 0x00016000,
86
   0x00013800, 0x00017800, 0x00012800, 0x00011800,
87
   0x0001a000, 0x0001d000, 0x0001c800, 0x00019000,
88
   0x0001e800, 0x0001c000, 0x00018000, 0x0001f000,
89
   0x0001b000, 0x0001d800, 0x00018800, 0x0001e000,
90
   0x0001b800, 0x0001f800, 0x0001a800, 0x00019800,
91
   0x00042000, 0x00045000, 0x00044800, 0x00041000,
92
   0x00046800, 0x00044000, 0x00040000, 0x00047000,
93
   0x00043000, 0x00045800, 0x00040800, 0x00046000,
94
   0x00043800, 0x00047800, 0x00042800, 0x00041800,
95
   0x0000a000, 0x0000d000, 0x0000c800, 0x00009000,
96
   0x0000e800, 0x0000c000, 0x00008000, 0x0000f000,
97
   0x0000b000, 0x0000d800, 0x00008800, 0x0000e000,
98
   0x0000b800, 0x0000f800, 0x0000a800, 0x00009800,
99
   0x00002000, 0x00005000, 0x00004800, 0x00001000,
100
   0x00006800, 0x00004000, 0x00000000, 0x00007000,
101
   0x00003000, 0x00005800, 0x00000800, 0x00006000,
102
   0x00003800, 0x00007800, 0x00002800, 0x00001800,
103
   0x0003a000, 0x0003d000, 0x0003c800, 0x00039000,
104
   0x0003e800, 0x0003c000, 0x00038000, 0x0003f000,
105
   0x0003b000, 0x0003d800, 0x00038800, 0x0003e000,
106
   0x0003b800, 0x0003f800, 0x0003a800, 0x00039800,
107
   0x0002a000, 0x0002d000, 0x0002c800, 0x00029000,
108
   0x0002e800, 0x0002c000, 0x00028000, 0x0002f000,
109
   0x0002b000, 0x0002d800, 0x00028800, 0x0002e000,
110
   0x0002b800, 0x0002f800, 0x0002a800, 0x00029800,
111
   0x0004a000, 0x0004d000, 0x0004c800, 0x00049000,
112
   0x0004e800, 0x0004c000, 0x00048000, 0x0004f000,
113
   0x0004b000, 0x0004d800, 0x00048800, 0x0004e000,
114
   0x0004b800, 0x0004f800, 0x0004a800, 0x00049800,
115
   /* 1 */
116
   0x03a80000, 0x03c00000, 0x03880000, 0x03e80000,
117
   0x03d00000, 0x03980000, 0x03a00000, 0x03900000,
118
   0x03f00000, 0x03f80000, 0x03e00000, 0x03b80000,
119
   0x03b00000, 0x03800000, 0x03c80000, 0x03d80000,
120
   0x06a80000, 0x06c00000, 0x06880000, 0x06e80000,
121
   0x06d00000, 0x06980000, 0x06a00000, 0x06900000,
122
   0x06f00000, 0x06f80000, 0x06e00000, 0x06b80000,
123
   0x06b00000, 0x06800000, 0x06c80000, 0x06d80000,
124
   0x05280000, 0x05400000, 0x05080000, 0x05680000,
125
   0x05500000, 0x05180000, 0x05200000, 0x05100000,
126
   0x05700000, 0x05780000, 0x05600000, 0x05380000,
127
   0x05300000, 0x05000000, 0x05480000, 0x05580000,
128
   0x00a80000, 0x00c00000, 0x00880000, 0x00e80000,
129
   0x00d00000, 0x00980000, 0x00a00000, 0x00900000,
130
   0x00f00000, 0x00f80000, 0x00e00000, 0x00b80000,
131
   0x00b00000, 0x00800000, 0x00c80000, 0x00d80000,
132
   0x00280000, 0x00400000, 0x00080000, 0x00680000,
133
   0x00500000, 0x00180000, 0x00200000, 0x00100000,
134
   0x00700000, 0x00780000, 0x00600000, 0x00380000,
135
   0x00300000, 0x00000000, 0x00480000, 0x00580000,
136
   0x04280000, 0x04400000, 0x04080000, 0x04680000,
137
   0x04500000, 0x04180000, 0x04200000, 0x04100000,
138
   0x04700000, 0x04780000, 0x04600000, 0x04380000,
139
   0x04300000, 0x04000000, 0x04480000, 0x04580000,
140
   0x04a80000, 0x04c00000, 0x04880000, 0x04e80000,
141
   0x04d00000, 0x04980000, 0x04a00000, 0x04900000,
142
   0x04f00000, 0x04f80000, 0x04e00000, 0x04b80000,
143
   0x04b00000, 0x04800000, 0x04c80000, 0x04d80000,
144
   0x07a80000, 0x07c00000, 0x07880000, 0x07e80000,
145
   0x07d00000, 0x07980000, 0x07a00000, 0x07900000,
146
   0x07f00000, 0x07f80000, 0x07e00000, 0x07b80000,
147
   0x07b00000, 0x07800000, 0x07c80000, 0x07d80000,
148
   0x07280000, 0x07400000, 0x07080000, 0x07680000,
149
   0x07500000, 0x07180000, 0x07200000, 0x07100000,
150
   0x07700000, 0x07780000, 0x07600000, 0x07380000,
151
   0x07300000, 0x07000000, 0x07480000, 0x07580000,
152
   0x02280000, 0x02400000, 0x02080000, 0x02680000,
153
   0x02500000, 0x02180000, 0x02200000, 0x02100000,
154
   0x02700000, 0x02780000, 0x02600000, 0x02380000,
155
   0x02300000, 0x02000000, 0x02480000, 0x02580000,
156
   0x03280000, 0x03400000, 0x03080000, 0x03680000,
157
   0x03500000, 0x03180000, 0x03200000, 0x03100000,
158
   0x03700000, 0x03780000, 0x03600000, 0x03380000,
159
   0x03300000, 0x03000000, 0x03480000, 0x03580000,
160
   0x06280000, 0x06400000, 0x06080000, 0x06680000,
161
   0x06500000, 0x06180000, 0x06200000, 0x06100000,
162
   0x06700000, 0x06780000, 0x06600000, 0x06380000,
163
   0x06300000, 0x06000000, 0x06480000, 0x06580000,
164
   0x05a80000, 0x05c00000, 0x05880000, 0x05e80000,
165
   0x05d00000, 0x05980000, 0x05a00000, 0x05900000,
166
   0x05f00000, 0x05f80000, 0x05e00000, 0x05b80000,
167
   0x05b00000, 0x05800000, 0x05c80000, 0x05d80000,
168
   0x01280000, 0x01400000, 0x01080000, 0x01680000,
169
   0x01500000, 0x01180000, 0x01200000, 0x01100000,
170
   0x01700000, 0x01780000, 0x01600000, 0x01380000,
171
   0x01300000, 0x01000000, 0x01480000, 0x01580000,
172
   0x02a80000, 0x02c00000, 0x02880000, 0x02e80000,
173
   0x02d00000, 0x02980000, 0x02a00000, 0x02900000,
174
   0x02f00000, 0x02f80000, 0x02e00000, 0x02b80000,
175
   0x02b00000, 0x02800000, 0x02c80000, 0x02d80000,
176
   0x01a80000, 0x01c00000, 0x01880000, 0x01e80000,
177
   0x01d00000, 0x01980000, 0x01a00000, 0x01900000,
178
   0x01f00000, 0x01f80000, 0x01e00000, 0x01b80000,
179
   0x01b00000, 0x01800000, 0x01c80000, 0x01d80000,
180
   /* 2 */
181
   0x30000002, 0x60000002, 0x38000002, 0x08000002,
182
   0x28000002, 0x78000002, 0x68000002, 0x40000002,
183
   0x20000002, 0x50000002, 0x48000002, 0x70000002,
184
   0x00000002, 0x18000002, 0x58000002, 0x10000002,
185
   0xb0000005, 0xe0000005, 0xb8000005, 0x88000005,
186
   0xa8000005, 0xf8000005, 0xe8000005, 0xc0000005,
187
   0xa0000005, 0xd0000005, 0xc8000005, 0xf0000005,
188
   0x80000005, 0x98000005, 0xd8000005, 0x90000005,
189
   0x30000005, 0x60000005, 0x38000005, 0x08000005,
190
   0x28000005, 0x78000005, 0x68000005, 0x40000005,
191
   0x20000005, 0x50000005, 0x48000005, 0x70000005,
192
   0x00000005, 0x18000005, 0x58000005, 0x10000005,
193
   0x30000000, 0x60000000, 0x38000000, 0x08000000,
194
   0x28000000, 0x78000000, 0x68000000, 0x40000000,
195
   0x20000000, 0x50000000, 0x48000000, 0x70000000,
196
   0x00000000, 0x18000000, 0x58000000, 0x10000000,
197
   0xb0000003, 0xe0000003, 0xb8000003, 0x88000003,
198
   0xa8000003, 0xf8000003, 0xe8000003, 0xc0000003,
199
   0xa0000003, 0xd0000003, 0xc8000003, 0xf0000003,
200
   0x80000003, 0x98000003, 0xd8000003, 0x90000003,
201
   0x30000001, 0x60000001, 0x38000001, 0x08000001,
202
   0x28000001, 0x78000001, 0x68000001, 0x40000001,
203
   0x20000001, 0x50000001, 0x48000001, 0x70000001,
204
   0x00000001, 0x18000001, 0x58000001, 0x10000001,
205
   0xb0000000, 0xe0000000, 0xb8000000, 0x88000000,
206
   0xa8000000, 0xf8000000, 0xe8000000, 0xc0000000,
207
   0xa0000000, 0xd0000000, 0xc8000000, 0xf0000000,
208
   0x80000000, 0x98000000, 0xd8000000, 0x90000000,
209
   0xb0000006, 0xe0000006, 0xb8000006, 0x88000006,
210
   0xa8000006, 0xf8000006, 0xe8000006, 0xc0000006,
211
   0xa0000006, 0xd0000006, 0xc8000006, 0xf0000006,
212
   0x80000006, 0x98000006, 0xd8000006, 0x90000006,
213
   0xb0000001, 0xe0000001, 0xb8000001, 0x88000001,
214
   0xa8000001, 0xf8000001, 0xe8000001, 0xc0000001,
215
   0xa0000001, 0xd0000001, 0xc8000001, 0xf0000001,
216
   0x80000001, 0x98000001, 0xd8000001, 0x90000001,
217
   0x30000003, 0x60000003, 0x38000003, 0x08000003,
218
   0x28000003, 0x78000003, 0x68000003, 0x40000003,
219
   0x20000003, 0x50000003, 0x48000003, 0x70000003,
220
   0x00000003, 0x18000003, 0x58000003, 0x10000003,
221
   0x30000004, 0x60000004, 0x38000004, 0x08000004,
222
   0x28000004, 0x78000004, 0x68000004, 0x40000004,
223
   0x20000004, 0x50000004, 0x48000004, 0x70000004,
224
   0x00000004, 0x18000004, 0x58000004, 0x10000004,
225
   0xb0000002, 0xe0000002, 0xb8000002, 0x88000002,
226
   0xa8000002, 0xf8000002, 0xe8000002, 0xc0000002,
227
   0xa0000002, 0xd0000002, 0xc8000002, 0xf0000002,
228
   0x80000002, 0x98000002, 0xd8000002, 0x90000002,
229
   0xb0000004, 0xe0000004, 0xb8000004, 0x88000004,
230
   0xa8000004, 0xf8000004, 0xe8000004, 0xc0000004,
231
   0xa0000004, 0xd0000004, 0xc8000004, 0xf0000004,
232
   0x80000004, 0x98000004, 0xd8000004, 0x90000004,
233
   0x30000006, 0x60000006, 0x38000006, 0x08000006,
234
   0x28000006, 0x78000006, 0x68000006, 0x40000006,
235
   0x20000006, 0x50000006, 0x48000006, 0x70000006,
236
   0x00000006, 0x18000006, 0x58000006, 0x10000006,
237
   0xb0000007, 0xe0000007, 0xb8000007, 0x88000007,
238
   0xa8000007, 0xf8000007, 0xe8000007, 0xc0000007,
239
   0xa0000007, 0xd0000007, 0xc8000007, 0xf0000007,
240
   0x80000007, 0x98000007, 0xd8000007, 0x90000007,
241
   0x30000007, 0x60000007, 0x38000007, 0x08000007,
242
   0x28000007, 0x78000007, 0x68000007, 0x40000007,
243
   0x20000007, 0x50000007, 0x48000007, 0x70000007,
244
   0x00000007, 0x18000007, 0x58000007, 0x10000007,
245
   /* 3 */
246
   0x000000e8, 0x000000d8, 0x000000a0, 0x00000088,
247
   0x00000098, 0x000000f8, 0x000000a8, 0x000000c8,
248
   0x00000080, 0x000000d0, 0x000000f0, 0x000000b8,
249
   0x000000b0, 0x000000c0, 0x00000090, 0x000000e0,
250
   0x000007e8, 0x000007d8, 0x000007a0, 0x00000788,
251
   0x00000798, 0x000007f8, 0x000007a8, 0x000007c8,
252
   0x00000780, 0x000007d0, 0x000007f0, 0x000007b8,
253
   0x000007b0, 0x000007c0, 0x00000790, 0x000007e0,
254
   0x000006e8, 0x000006d8, 0x000006a0, 0x00000688,
255
   0x00000698, 0x000006f8, 0x000006a8, 0x000006c8,
256
   0x00000680, 0x000006d0, 0x000006f0, 0x000006b8,
257
   0x000006b0, 0x000006c0, 0x00000690, 0x000006e0,
258
   0x00000068, 0x00000058, 0x00000020, 0x00000008,
259
   0x00000018, 0x00000078, 0x00000028, 0x00000048,
260
   0x00000000, 0x00000050, 0x00000070, 0x00000038,
261
   0x00000030, 0x00000040, 0x00000010, 0x00000060,
262
   0x000002e8, 0x000002d8, 0x000002a0, 0x00000288,
263
   0x00000298, 0x000002f8, 0x000002a8, 0x000002c8,
264
   0x00000280, 0x000002d0, 0x000002f0, 0x000002b8,
265
   0x000002b0, 0x000002c0, 0x00000290, 0x000002e0,
266
   0x000003e8, 0x000003d8, 0x000003a0, 0x00000388,
267
   0x00000398, 0x000003f8, 0x000003a8, 0x000003c8,
268
   0x00000380, 0x000003d0, 0x000003f0, 0x000003b8,
269
   0x000003b0, 0x000003c0, 0x00000390, 0x000003e0,
270
   0x00000568, 0x00000558, 0x00000520, 0x00000508,
271
   0x00000518, 0x00000578, 0x00000528, 0x00000548,
272
   0x00000500, 0x00000550, 0x00000570, 0x00000538,
273
   0x00000530, 0x00000540, 0x00000510, 0x00000560,
274
   0x00000268, 0x00000258, 0x00000220, 0x00000208,
275
   0x00000218, 0x00000278, 0x00000228, 0x00000248,
276
   0x00000200, 0x00000250, 0x00000270, 0x00000238,
277
   0x00000230, 0x00000240, 0x00000210, 0x00000260,
278
   0x000004e8, 0x000004d8, 0x000004a0, 0x00000488,
279
   0x00000498, 0x000004f8, 0x000004a8, 0x000004c8,
280
   0x00000480, 0x000004d0, 0x000004f0, 0x000004b8,
281
   0x000004b0, 0x000004c0, 0x00000490, 0x000004e0,
282
   0x00000168, 0x00000158, 0x00000120, 0x00000108,
283
   0x00000118, 0x00000178, 0x00000128, 0x00000148,
284
   0x00000100, 0x00000150, 0x00000170, 0x00000138,
285
   0x00000130, 0x00000140, 0x00000110, 0x00000160,
286
   0x000001e8, 0x000001d8, 0x000001a0, 0x00000188,
287
   0x00000198, 0x000001f8, 0x000001a8, 0x000001c8,
288
   0x00000180, 0x000001d0, 0x000001f0, 0x000001b8,
289
   0x000001b0, 0x000001c0, 0x00000190, 0x000001e0,
290
   0x00000768, 0x00000758, 0x00000720, 0x00000708,
291
   0x00000718, 0x00000778, 0x00000728, 0x00000748,
292
   0x00000700, 0x00000750, 0x00000770, 0x00000738,
293
   0x00000730, 0x00000740, 0x00000710, 0x00000760,
294
   0x00000368, 0x00000358, 0x00000320, 0x00000308,
295
   0x00000318, 0x00000378, 0x00000328, 0x00000348,
296
   0x00000300, 0x00000350, 0x00000370, 0x00000338,
297
   0x00000330, 0x00000340, 0x00000310, 0x00000360,
298
   0x000005e8, 0x000005d8, 0x000005a0, 0x00000588,
299
   0x00000598, 0x000005f8, 0x000005a8, 0x000005c8,
300
   0x00000580, 0x000005d0, 0x000005f0, 0x000005b8,
301
   0x000005b0, 0x000005c0, 0x00000590, 0x000005e0,
302
   0x00000468, 0x00000458, 0x00000420, 0x00000408,
303
   0x00000418, 0x00000478, 0x00000428, 0x00000448,
304
   0x00000400, 0x00000450, 0x00000470, 0x00000438,
305
   0x00000430, 0x00000440, 0x00000410, 0x00000460,
306
   0x00000668, 0x00000658, 0x00000620, 0x00000608,
307
   0x00000618, 0x00000678, 0x00000628, 0x00000648,
308
   0x00000600, 0x00000650, 0x00000670, 0x00000638,
309
   0x00000630, 0x00000640, 0x00000610, 0x00000660,
310
   }
311
};
312
313
const struct gost28147_param gost28147_param_CryptoPro_3411 = {
314
  0,
315
  {
316
   /* 0 */
317
   0x0002d000, 0x0002a000, 0x0002a800, 0x0002b000,
318
   0x0002c000, 0x00028800, 0x00029800, 0x0002b800,
319
   0x0002e800, 0x0002e000, 0x0002f000, 0x00028000,
320
   0x0002c800, 0x00029000, 0x0002d800, 0x0002f800,
321
   0x0007d000, 0x0007a000, 0x0007a800, 0x0007b000,
322
   0x0007c000, 0x00078800, 0x00079800, 0x0007b800,
323
   0x0007e800, 0x0007e000, 0x0007f000, 0x00078000,
324
   0x0007c800, 0x00079000, 0x0007d800, 0x0007f800,
325
   0x00025000, 0x00022000, 0x00022800, 0x00023000,
326
   0x00024000, 0x00020800, 0x00021800, 0x00023800,
327
   0x00026800, 0x00026000, 0x00027000, 0x00020000,
328
   0x00024800, 0x00021000, 0x00025800, 0x00027800,
329
   0x00005000, 0x00002000, 0x00002800, 0x00003000,
330
   0x00004000, 0x00000800, 0x00001800, 0x00003800,
331
   0x00006800, 0x00006000, 0x00007000, 0x00000000,
332
   0x00004800, 0x00001000, 0x00005800, 0x00007800,
333
   0x00015000, 0x00012000, 0x00012800, 0x00013000,
334
   0x00014000, 0x00010800, 0x00011800, 0x00013800,
335
   0x00016800, 0x00016000, 0x00017000, 0x00010000,
336
   0x00014800, 0x00011000, 0x00015800, 0x00017800,
337
   0x0006d000, 0x0006a000, 0x0006a800, 0x0006b000,
338
   0x0006c000, 0x00068800, 0x00069800, 0x0006b800,
339
   0x0006e800, 0x0006e000, 0x0006f000, 0x00068000,
340
   0x0006c800, 0x00069000, 0x0006d800, 0x0006f800,
341
   0x0005d000, 0x0005a000, 0x0005a800, 0x0005b000,
342
   0x0005c000, 0x00058800, 0x00059800, 0x0005b800,
343
   0x0005e800, 0x0005e000, 0x0005f000, 0x00058000,
344
   0x0005c800, 0x00059000, 0x0005d800, 0x0005f800,
345
   0x0004d000, 0x0004a000, 0x0004a800, 0x0004b000,
346
   0x0004c000, 0x00048800, 0x00049800, 0x0004b800,
347
   0x0004e800, 0x0004e000, 0x0004f000, 0x00048000,
348
   0x0004c800, 0x00049000, 0x0004d800, 0x0004f800,
349
   0x0000d000, 0x0000a000, 0x0000a800, 0x0000b000,
350
   0x0000c000, 0x00008800, 0x00009800, 0x0000b800,
351
   0x0000e800, 0x0000e000, 0x0000f000, 0x00008000,
352
   0x0000c800, 0x00009000, 0x0000d800, 0x0000f800,
353
   0x0003d000, 0x0003a000, 0x0003a800, 0x0003b000,
354
   0x0003c000, 0x00038800, 0x00039800, 0x0003b800,
355
   0x0003e800, 0x0003e000, 0x0003f000, 0x00038000,
356
   0x0003c800, 0x00039000, 0x0003d800, 0x0003f800,
357
   0x00035000, 0x00032000, 0x00032800, 0x00033000,
358
   0x00034000, 0x00030800, 0x00031800, 0x00033800,
359
   0x00036800, 0x00036000, 0x00037000, 0x00030000,
360
   0x00034800, 0x00031000, 0x00035800, 0x00037800,
361
   0x0001d000, 0x0001a000, 0x0001a800, 0x0001b000,
362
   0x0001c000, 0x00018800, 0x00019800, 0x0001b800,
363
   0x0001e800, 0x0001e000, 0x0001f000, 0x00018000,
364
   0x0001c800, 0x00019000, 0x0001d800, 0x0001f800,
365
   0x00065000, 0x00062000, 0x00062800, 0x00063000,
366
   0x00064000, 0x00060800, 0x00061800, 0x00063800,
367
   0x00066800, 0x00066000, 0x00067000, 0x00060000,
368
   0x00064800, 0x00061000, 0x00065800, 0x00067800,
369
   0x00075000, 0x00072000, 0x00072800, 0x00073000,
370
   0x00074000, 0x00070800, 0x00071800, 0x00073800,
371
   0x00076800, 0x00076000, 0x00077000, 0x00070000,
372
   0x00074800, 0x00071000, 0x00075800, 0x00077800,
373
   0x00055000, 0x00052000, 0x00052800, 0x00053000,
374
   0x00054000, 0x00050800, 0x00051800, 0x00053800,
375
   0x00056800, 0x00056000, 0x00057000, 0x00050000,
376
   0x00054800, 0x00051000, 0x00055800, 0x00057800,
377
   0x00045000, 0x00042000, 0x00042800, 0x00043000,
378
   0x00044000, 0x00040800, 0x00041800, 0x00043800,
379
   0x00046800, 0x00046000, 0x00047000, 0x00040000,
380
   0x00044800, 0x00041000, 0x00045800, 0x00047800,
381
   /* 1 */
382
   0x02380000, 0x02780000, 0x02600000, 0x02700000,
383
   0x02480000, 0x02200000, 0x02080000, 0x02000000,
384
   0x02180000, 0x02580000, 0x02280000, 0x02100000,
385
   0x02300000, 0x02500000, 0x02400000, 0x02680000,
386
   0x05380000, 0x05780000, 0x05600000, 0x05700000,
387
   0x05480000, 0x05200000, 0x05080000, 0x05000000,
388
   0x05180000, 0x05580000, 0x05280000, 0x05100000,
389
   0x05300000, 0x05500000, 0x05400000, 0x05680000,
390
   0x03b80000, 0x03f80000, 0x03e00000, 0x03f00000,
391
   0x03c80000, 0x03a00000, 0x03880000, 0x03800000,
392
   0x03980000, 0x03d80000, 0x03a80000, 0x03900000,
393
   0x03b00000, 0x03d00000, 0x03c00000, 0x03e80000,
394
   0x06380000, 0x06780000, 0x06600000, 0x06700000,
395
   0x06480000, 0x06200000, 0x06080000, 0x06000000,
396
   0x06180000, 0x06580000, 0x06280000, 0x06100000,
397
   0x06300000, 0x06500000, 0x06400000, 0x06680000,
398
   0x00380000, 0x00780000, 0x00600000, 0x00700000,
399
   0x00480000, 0x00200000, 0x00080000, 0x00000000,
400
   0x00180000, 0x00580000, 0x00280000, 0x00100000,
401
   0x00300000, 0x00500000, 0x00400000, 0x00680000,
402
   0x07b80000, 0x07f80000, 0x07e00000, 0x07f00000,
403
   0x07c80000, 0x07a00000, 0x07880000, 0x07800000,
404
   0x07980000, 0x07d80000, 0x07a80000, 0x07900000,
405
   0x07b00000, 0x07d00000, 0x07c00000, 0x07e80000,
406
   0x01380000, 0x01780000, 0x01600000, 0x01700000,
407
   0x01480000, 0x01200000, 0x01080000, 0x01000000,
408
   0x01180000, 0x01580000, 0x01280000, 0x01100000,
409
   0x01300000, 0x01500000, 0x01400000, 0x01680000,
410
   0x04380000, 0x04780000, 0x04600000, 0x04700000,
411
   0x04480000, 0x04200000, 0x04080000, 0x04000000,
412
   0x04180000, 0x04580000, 0x04280000, 0x04100000,
413
   0x04300000, 0x04500000, 0x04400000, 0x04680000,
414
   0x07380000, 0x07780000, 0x07600000, 0x07700000,
415
   0x07480000, 0x07200000, 0x07080000, 0x07000000,
416
   0x07180000, 0x07580000, 0x07280000, 0x07100000,
417
   0x07300000, 0x07500000, 0x07400000, 0x07680000,
418
   0x00b80000, 0x00f80000, 0x00e00000, 0x00f00000,
419
   0x00c80000, 0x00a00000, 0x00880000, 0x00800000,
420
   0x00980000, 0x00d80000, 0x00a80000, 0x00900000,
421
   0x00b00000, 0x00d00000, 0x00c00000, 0x00e80000,
422
   0x03380000, 0x03780000, 0x03600000, 0x03700000,
423
   0x03480000, 0x03200000, 0x03080000, 0x03000000,
424
   0x03180000, 0x03580000, 0x03280000, 0x03100000,
425
   0x03300000, 0x03500000, 0x03400000, 0x03680000,
426
   0x02b80000, 0x02f80000, 0x02e00000, 0x02f00000,
427
   0x02c80000, 0x02a00000, 0x02880000, 0x02800000,
428
   0x02980000, 0x02d80000, 0x02a80000, 0x02900000,
429
   0x02b00000, 0x02d00000, 0x02c00000, 0x02e80000,
430
   0x06b80000, 0x06f80000, 0x06e00000, 0x06f00000,
431
   0x06c80000, 0x06a00000, 0x06880000, 0x06800000,
432
   0x06980000, 0x06d80000, 0x06a80000, 0x06900000,
433
   0x06b00000, 0x06d00000, 0x06c00000, 0x06e80000,
434
   0x05b80000, 0x05f80000, 0x05e00000, 0x05f00000,
435
   0x05c80000, 0x05a00000, 0x05880000, 0x05800000,
436
   0x05980000, 0x05d80000, 0x05a80000, 0x05900000,
437
   0x05b00000, 0x05d00000, 0x05c00000, 0x05e80000,
438
   0x04b80000, 0x04f80000, 0x04e00000, 0x04f00000,
439
   0x04c80000, 0x04a00000, 0x04880000, 0x04800000,
440
   0x04980000, 0x04d80000, 0x04a80000, 0x04900000,
441
   0x04b00000, 0x04d00000, 0x04c00000, 0x04e80000,
442
   0x01b80000, 0x01f80000, 0x01e00000, 0x01f00000,
443
   0x01c80000, 0x01a00000, 0x01880000, 0x01800000,
444
   0x01980000, 0x01d80000, 0x01a80000, 0x01900000,
445
   0x01b00000, 0x01d00000, 0x01c00000, 0x01e80000,
446
   /* 2 */
447
   0xb8000003, 0xb0000003, 0xa0000003, 0xd8000003,
448
   0xc8000003, 0xe0000003, 0x90000003, 0xd0000003,
449
   0x88000003, 0xc0000003, 0x80000003, 0xf0000003,
450
   0xf8000003, 0xe8000003, 0x98000003, 0xa8000003,
451
   0x38000003, 0x30000003, 0x20000003, 0x58000003,
452
   0x48000003, 0x60000003, 0x10000003, 0x50000003,
453
   0x08000003, 0x40000003, 0x00000003, 0x70000003,
454
   0x78000003, 0x68000003, 0x18000003, 0x28000003,
455
   0x38000001, 0x30000001, 0x20000001, 0x58000001,
456
   0x48000001, 0x60000001, 0x10000001, 0x50000001,
457
   0x08000001, 0x40000001, 0x00000001, 0x70000001,
458
   0x78000001, 0x68000001, 0x18000001, 0x28000001,
459
   0x38000002, 0x30000002, 0x20000002, 0x58000002,
460
   0x48000002, 0x60000002, 0x10000002, 0x50000002,
461
   0x08000002, 0x40000002, 0x00000002, 0x70000002,
462
   0x78000002, 0x68000002, 0x18000002, 0x28000002,
463
   0xb8000006, 0xb0000006, 0xa0000006, 0xd8000006,
464
   0xc8000006, 0xe0000006, 0x90000006, 0xd0000006,
465
   0x88000006, 0xc0000006, 0x80000006, 0xf0000006,
466
   0xf8000006, 0xe8000006, 0x98000006, 0xa8000006,
467
   0xb8000004, 0xb0000004, 0xa0000004, 0xd8000004,
468
   0xc8000004, 0xe0000004, 0x90000004, 0xd0000004,
469
   0x88000004, 0xc0000004, 0x80000004, 0xf0000004,
470
   0xf8000004, 0xe8000004, 0x98000004, 0xa8000004,
471
   0xb8000007, 0xb0000007, 0xa0000007, 0xd8000007,
472
   0xc8000007, 0xe0000007, 0x90000007, 0xd0000007,
473
   0x88000007, 0xc0000007, 0x80000007, 0xf0000007,
474
   0xf8000007, 0xe8000007, 0x98000007, 0xa8000007,
475
   0x38000000, 0x30000000, 0x20000000, 0x58000000,
476
   0x48000000, 0x60000000, 0x10000000, 0x50000000,
477
   0x08000000, 0x40000000, 0x00000000, 0x70000000,
478
   0x78000000, 0x68000000, 0x18000000, 0x28000000,
479
   0x38000005, 0x30000005, 0x20000005, 0x58000005,
480
   0x48000005, 0x60000005, 0x10000005, 0x50000005,
481
   0x08000005, 0x40000005, 0x00000005, 0x70000005,
482
   0x78000005, 0x68000005, 0x18000005, 0x28000005,
483
   0xb8000000, 0xb0000000, 0xa0000000, 0xd8000000,
484
   0xc8000000, 0xe0000000, 0x90000000, 0xd0000000,
485
   0x88000000, 0xc0000000, 0x80000000, 0xf0000000,
486
   0xf8000000, 0xe8000000, 0x98000000, 0xa8000000,
487
   0xb8000002, 0xb0000002, 0xa0000002, 0xd8000002,
488
   0xc8000002, 0xe0000002, 0x90000002, 0xd0000002,
489
   0x88000002, 0xc0000002, 0x80000002, 0xf0000002,
490
   0xf8000002, 0xe8000002, 0x98000002, 0xa8000002,
491
   0xb8000005, 0xb0000005, 0xa0000005, 0xd8000005,
492
   0xc8000005, 0xe0000005, 0x90000005, 0xd0000005,
493
   0x88000005, 0xc0000005, 0x80000005, 0xf0000005,
494
   0xf8000005, 0xe8000005, 0x98000005, 0xa8000005,
495
   0x38000004, 0x30000004, 0x20000004, 0x58000004,
496
   0x48000004, 0x60000004, 0x10000004, 0x50000004,
497
   0x08000004, 0x40000004, 0x00000004, 0x70000004,
498
   0x78000004, 0x68000004, 0x18000004, 0x28000004,
499
   0x38000007, 0x30000007, 0x20000007, 0x58000007,
500
   0x48000007, 0x60000007, 0x10000007, 0x50000007,
501
   0x08000007, 0x40000007, 0x00000007, 0x70000007,
502
   0x78000007, 0x68000007, 0x18000007, 0x28000007,
503
   0x38000006, 0x30000006, 0x20000006, 0x58000006,
504
   0x48000006, 0x60000006, 0x10000006, 0x50000006,
505
   0x08000006, 0x40000006, 0x00000006, 0x70000006,
506
   0x78000006, 0x68000006, 0x18000006, 0x28000006,
507
   0xb8000001, 0xb0000001, 0xa0000001, 0xd8000001,
508
   0xc8000001, 0xe0000001, 0x90000001, 0xd0000001,
509
   0x88000001, 0xc0000001, 0x80000001, 0xf0000001,
510
   0xf8000001, 0xe8000001, 0x98000001, 0xa8000001,
511
   /* 3 */
512
   0x000000e8, 0x000000f0, 0x000000a0, 0x00000088,
513
   0x000000b8, 0x00000080, 0x000000a8, 0x000000d0,
514
   0x00000098, 0x000000e0, 0x000000c0, 0x000000f8,
515
   0x000000b0, 0x00000090, 0x000000c8, 0x000000d8,
516
   0x000001e8, 0x000001f0, 0x000001a0, 0x00000188,
517
   0x000001b8, 0x00000180, 0x000001a8, 0x000001d0,
518
   0x00000198, 0x000001e0, 0x000001c0, 0x000001f8,
519
   0x000001b0, 0x00000190, 0x000001c8, 0x000001d8,
520
   0x00000568, 0x00000570, 0x00000520, 0x00000508,
521
   0x00000538, 0x00000500, 0x00000528, 0x00000550,
522
   0x00000518, 0x00000560, 0x00000540, 0x00000578,
523
   0x00000530, 0x00000510, 0x00000548, 0x00000558,
524
   0x000004e8, 0x000004f0, 0x000004a0, 0x00000488,
525
   0x000004b8, 0x00000480, 0x000004a8, 0x000004d0,
526
   0x00000498, 0x000004e0, 0x000004c0, 0x000004f8,
527
   0x000004b0, 0x00000490, 0x000004c8, 0x000004d8,
528
   0x000002e8, 0x000002f0, 0x000002a0, 0x00000288,
529
   0x000002b8, 0x00000280, 0x000002a8, 0x000002d0,
530
   0x00000298, 0x000002e0, 0x000002c0, 0x000002f8,
531
   0x000002b0, 0x00000290, 0x000002c8, 0x000002d8,
532
   0x000005e8, 0x000005f0, 0x000005a0, 0x00000588,
533
   0x000005b8, 0x00000580, 0x000005a8, 0x000005d0,
534
   0x00000598, 0x000005e0, 0x000005c0, 0x000005f8,
535
   0x000005b0, 0x00000590, 0x000005c8, 0x000005d8,
536
   0x00000268, 0x00000270, 0x00000220, 0x00000208,
537
   0x00000238, 0x00000200, 0x00000228, 0x00000250,
538
   0x00000218, 0x00000260, 0x00000240, 0x00000278,
539
   0x00000230, 0x00000210, 0x00000248, 0x00000258,
540
   0x000007e8, 0x000007f0, 0x000007a0, 0x00000788,
541
   0x000007b8, 0x00000780, 0x000007a8, 0x000007d0,
542
   0x00000798, 0x000007e0, 0x000007c0, 0x000007f8,
543
   0x000007b0, 0x00000790, 0x000007c8, 0x000007d8,
544
   0x00000468, 0x00000470, 0x00000420, 0x00000408,
545
   0x00000438, 0x00000400, 0x00000428, 0x00000450,
546
   0x00000418, 0x00000460, 0x00000440, 0x00000478,
547
   0x00000430, 0x00000410, 0x00000448, 0x00000458,
548
   0x00000368, 0x00000370, 0x00000320, 0x00000308,
549
   0x00000338, 0x00000300, 0x00000328, 0x00000350,
550
   0x00000318, 0x00000360, 0x00000340, 0x00000378,
551
   0x00000330, 0x00000310, 0x00000348, 0x00000358,
552
   0x000003e8, 0x000003f0, 0x000003a0, 0x00000388,
553
   0x000003b8, 0x00000380, 0x000003a8, 0x000003d0,
554
   0x00000398, 0x000003e0, 0x000003c0, 0x000003f8,
555
   0x000003b0, 0x00000390, 0x000003c8, 0x000003d8,
556
   0x00000768, 0x00000770, 0x00000720, 0x00000708,
557
   0x00000738, 0x00000700, 0x00000728, 0x00000750,
558
   0x00000718, 0x00000760, 0x00000740, 0x00000778,
559
   0x00000730, 0x00000710, 0x00000748, 0x00000758,
560
   0x000006e8, 0x000006f0, 0x000006a0, 0x00000688,
561
   0x000006b8, 0x00000680, 0x000006a8, 0x000006d0,
562
   0x00000698, 0x000006e0, 0x000006c0, 0x000006f8,
563
   0x000006b0, 0x00000690, 0x000006c8, 0x000006d8,
564
   0x00000068, 0x00000070, 0x00000020, 0x00000008,
565
   0x00000038, 0x00000000, 0x00000028, 0x00000050,
566
   0x00000018, 0x00000060, 0x00000040, 0x00000078,
567
   0x00000030, 0x00000010, 0x00000048, 0x00000058,
568
   0x00000168, 0x00000170, 0x00000120, 0x00000108,
569
   0x00000138, 0x00000100, 0x00000128, 0x00000150,
570
   0x00000118, 0x00000160, 0x00000140, 0x00000178,
571
   0x00000130, 0x00000110, 0x00000148, 0x00000158,
572
   0x00000668, 0x00000670, 0x00000620, 0x00000608,
573
   0x00000638, 0x00000600, 0x00000628, 0x00000650,
574
   0x00000618, 0x00000660, 0x00000640, 0x00000678,
575
   0x00000630, 0x00000610, 0x00000648, 0x00000658,
576
   }
577
};
578
579
const struct gost28147_param gost28147_param_Test_89 = {
580
  0,
581
  {
582
   /* 0 */
583
   0x00062000, 0x00061000, 0x00067800, 0x00062800,
584
   0x00064800, 0x00060800, 0x00060000, 0x00064000,
585
   0x00067000, 0x00061800, 0x00065800, 0x00066000,
586
   0x00066800, 0x00063800, 0x00065000, 0x00063000,
587
   0x0004a000, 0x00049000, 0x0004f800, 0x0004a800,
588
   0x0004c800, 0x00048800, 0x00048000, 0x0004c000,
589
   0x0004f000, 0x00049800, 0x0004d800, 0x0004e000,
590
   0x0004e800, 0x0004b800, 0x0004d000, 0x0004b000,
591
   0x0007a000, 0x00079000, 0x0007f800, 0x0007a800,
592
   0x0007c800, 0x00078800, 0x00078000, 0x0007c000,
593
   0x0007f000, 0x00079800, 0x0007d800, 0x0007e000,
594
   0x0007e800, 0x0007b800, 0x0007d000, 0x0007b000,
595
   0x00072000, 0x00071000, 0x00077800, 0x00072800,
596
   0x00074800, 0x00070800, 0x00070000, 0x00074000,
597
   0x00077000, 0x00071800, 0x00075800, 0x00076000,
598
   0x00076800, 0x00073800, 0x00075000, 0x00073000,
599
   0x00042000, 0x00041000, 0x00047800, 0x00042800,
600
   0x00044800, 0x00040800, 0x00040000, 0x00044000,
601
   0x00047000, 0x00041800, 0x00045800, 0x00046000,
602
   0x00046800, 0x00043800, 0x00045000, 0x00043000,
603
   0x0000a000, 0x00009000, 0x0000f800, 0x0000a800,
604
   0x0000c800, 0x00008800, 0x00008000, 0x0000c000,
605
   0x0000f000, 0x00009800, 0x0000d800, 0x0000e000,
606
   0x0000e800, 0x0000b800, 0x0000d000, 0x0000b000,
607
   0x0001a000, 0x00019000, 0x0001f800, 0x0001a800,
608
   0x0001c800, 0x00018800, 0x00018000, 0x0001c000,
609
   0x0001f000, 0x00019800, 0x0001d800, 0x0001e000,
610
   0x0001e800, 0x0001b800, 0x0001d000, 0x0001b000,
611
   0x00052000, 0x00051000, 0x00057800, 0x00052800,
612
   0x00054800, 0x00050800, 0x00050000, 0x00054000,
613
   0x00057000, 0x00051800, 0x00055800, 0x00056000,
614
   0x00056800, 0x00053800, 0x00055000, 0x00053000,
615
   0x00012000, 0x00011000, 0x00017800, 0x00012800,
616
   0x00014800, 0x00010800, 0x00010000, 0x00014000,
617
   0x00017000, 0x00011800, 0x00015800, 0x00016000,
618
   0x00016800, 0x00013800, 0x00015000, 0x00013000,
619
   0x0003a000, 0x00039000, 0x0003f800, 0x0003a800,
620
   0x0003c800, 0x00038800, 0x00038000, 0x0003c000,
621
   0x0003f000, 0x00039800, 0x0003d800, 0x0003e000,
622
   0x0003e800, 0x0003b800, 0x0003d000, 0x0003b000,
623
   0x00022000, 0x00021000, 0x00027800, 0x00022800,
624
   0x00024800, 0x00020800, 0x00020000, 0x00024000,
625
   0x00027000, 0x00021800, 0x00025800, 0x00026000,
626
   0x00026800, 0x00023800, 0x00025000, 0x00023000,
627
   0x0006a000, 0x00069000, 0x0006f800, 0x0006a800,
628
   0x0006c800, 0x00068800, 0x00068000, 0x0006c000,
629
   0x0006f000, 0x00069800, 0x0006d800, 0x0006e000,
630
   0x0006e800, 0x0006b800, 0x0006d000, 0x0006b000,
631
   0x00032000, 0x00031000, 0x00037800, 0x00032800,
632
   0x00034800, 0x00030800, 0x00030000, 0x00034000,
633
   0x00037000, 0x00031800, 0x00035800, 0x00036000,
634
   0x00036800, 0x00033800, 0x00035000, 0x00033000,
635
   0x00002000, 0x00001000, 0x00007800, 0x00002800,
636
   0x00004800, 0x00000800, 0x00000000, 0x00004000,
637
   0x00007000, 0x00001800, 0x00005800, 0x00006000,
638
   0x00006800, 0x00003800, 0x00005000, 0x00003000,
639
   0x0005a000, 0x00059000, 0x0005f800, 0x0005a800,
640
   0x0005c800, 0x00058800, 0x00058000, 0x0005c000,
641
   0x0005f000, 0x00059800, 0x0005d800, 0x0005e000,
642
   0x0005e800, 0x0005b800, 0x0005d000, 0x0005b000,
643
   0x0002a000, 0x00029000, 0x0002f800, 0x0002a800,
644
   0x0002c800, 0x00028800, 0x00028000, 0x0002c000,
645
   0x0002f000, 0x00029800, 0x0002d800, 0x0002e000,
646
   0x0002e800, 0x0002b800, 0x0002d000, 0x0002b000,
647
   /* 1 */
648
   0x07680000, 0x07400000, 0x07700000, 0x07600000,
649
   0x07380000, 0x07180000, 0x07480000, 0x07500000,
650
   0x07080000, 0x07280000, 0x07100000, 0x07200000,
651
   0x07300000, 0x07780000, 0x07000000, 0x07580000,
652
   0x04e80000, 0x04c00000, 0x04f00000, 0x04e00000,
653
   0x04b80000, 0x04980000, 0x04c80000, 0x04d00000,
654
   0x04880000, 0x04a80000, 0x04900000, 0x04a00000,
655
   0x04b00000, 0x04f80000, 0x04800000, 0x04d80000,
656
   0x05e80000, 0x05c00000, 0x05f00000, 0x05e00000,
657
   0x05b80000, 0x05980000, 0x05c80000, 0x05d00000,
658
   0x05880000, 0x05a80000, 0x05900000, 0x05a00000,
659
   0x05b00000, 0x05f80000, 0x05800000, 0x05d80000,
660
   0x01680000, 0x01400000, 0x01700000, 0x01600000,
661
   0x01380000, 0x01180000, 0x01480000, 0x01500000,
662
   0x01080000, 0x01280000, 0x01100000, 0x01200000,
663
   0x01300000, 0x01780000, 0x01000000, 0x01580000,
664
   0x02e80000, 0x02c00000, 0x02f00000, 0x02e00000,
665
   0x02b80000, 0x02980000, 0x02c80000, 0x02d00000,
666
   0x02880000, 0x02a80000, 0x02900000, 0x02a00000,
667
   0x02b00000, 0x02f80000, 0x02800000, 0x02d80000,
668
   0x07e80000, 0x07c00000, 0x07f00000, 0x07e00000,
669
   0x07b80000, 0x07980000, 0x07c80000, 0x07d00000,
670
   0x07880000, 0x07a80000, 0x07900000, 0x07a00000,
671
   0x07b00000, 0x07f80000, 0x07800000, 0x07d80000,
672
   0x03e80000, 0x03c00000, 0x03f00000, 0x03e00000,
673
   0x03b80000, 0x03980000, 0x03c80000, 0x03d00000,
674
   0x03880000, 0x03a80000, 0x03900000, 0x03a00000,
675
   0x03b00000, 0x03f80000, 0x03800000, 0x03d80000,
676
   0x00e80000, 0x00c00000, 0x00f00000, 0x00e00000,
677
   0x00b80000, 0x00980000, 0x00c80000, 0x00d00000,
678
   0x00880000, 0x00a80000, 0x00900000, 0x00a00000,
679
   0x00b00000, 0x00f80000, 0x00800000, 0x00d80000,
680
   0x00680000, 0x00400000, 0x00700000, 0x00600000,
681
   0x00380000, 0x00180000, 0x00480000, 0x00500000,
682
   0x00080000, 0x00280000, 0x00100000, 0x00200000,
683
   0x00300000, 0x00780000, 0x00000000, 0x00580000,
684
   0x06e80000, 0x06c00000, 0x06f00000, 0x06e00000,
685
   0x06b80000, 0x06980000, 0x06c80000, 0x06d00000,
686
   0x06880000, 0x06a80000, 0x06900000, 0x06a00000,
687
   0x06b00000, 0x06f80000, 0x06800000, 0x06d80000,
688
   0x06680000, 0x06400000, 0x06700000, 0x06600000,
689
   0x06380000, 0x06180000, 0x06480000, 0x06500000,
690
   0x06080000, 0x06280000, 0x06100000, 0x06200000,
691
   0x06300000, 0x06780000, 0x06000000, 0x06580000,
692
   0x03680000, 0x03400000, 0x03700000, 0x03600000,
693
   0x03380000, 0x03180000, 0x03480000, 0x03500000,
694
   0x03080000, 0x03280000, 0x03100000, 0x03200000,
695
   0x03300000, 0x03780000, 0x03000000, 0x03580000,
696
   0x05680000, 0x05400000, 0x05700000, 0x05600000,
697
   0x05380000, 0x05180000, 0x05480000, 0x05500000,
698
   0x05080000, 0x05280000, 0x05100000, 0x05200000,
699
   0x05300000, 0x05780000, 0x05000000, 0x05580000,
700
   0x02680000, 0x02400000, 0x02700000, 0x02600000,
701
   0x02380000, 0x02180000, 0x02480000, 0x02500000,
702
   0x02080000, 0x02280000, 0x02100000, 0x02200000,
703
   0x02300000, 0x02780000, 0x02000000, 0x02580000,
704
   0x01e80000, 0x01c00000, 0x01f00000, 0x01e00000,
705
   0x01b80000, 0x01980000, 0x01c80000, 0x01d00000,
706
   0x01880000, 0x01a80000, 0x01900000, 0x01a00000,
707
   0x01b00000, 0x01f80000, 0x01800000, 0x01d80000,
708
   0x04680000, 0x04400000, 0x04700000, 0x04600000,
709
   0x04380000, 0x04180000, 0x04480000, 0x04500000,
710
   0x04080000, 0x04280000, 0x04100000, 0x04200000,
711
   0x04300000, 0x04780000, 0x04000000, 0x04580000,
712
   /* 2 */
713
   0x18000004, 0x70000004, 0x28000004, 0x48000004,
714
   0x30000004, 0x40000004, 0x00000004, 0x68000004,
715
   0x50000004, 0x58000004, 0x38000004, 0x60000004,
716
   0x10000004, 0x08000004, 0x78000004, 0x20000004,
717
   0x98000007, 0xf0000007, 0xa8000007, 0xc8000007,
718
   0xb0000007, 0xc0000007, 0x80000007, 0xe8000007,
719
   0xd0000007, 0xd8000007, 0xb8000007, 0xe0000007,
720
   0x90000007, 0x88000007, 0xf8000007, 0xa0000007,
721
   0x18000003, 0x70000003, 0x28000003, 0x48000003,
722
   0x30000003, 0x40000003, 0x00000003, 0x68000003,
723
   0x50000003, 0x58000003, 0x38000003, 0x60000003,
724
   0x10000003, 0x08000003, 0x78000003, 0x20000003,
725
   0x98000005, 0xf0000005, 0xa8000005, 0xc8000005,
726
   0xb0000005, 0xc0000005, 0x80000005, 0xe8000005,
727
   0xd0000005, 0xd8000005, 0xb8000005, 0xe0000005,
728
   0x90000005, 0x88000005, 0xf8000005, 0xa0000005,
729
   0x98000000, 0xf0000000, 0xa8000000, 0xc8000000,
730
   0xb0000000, 0xc0000000, 0x80000000, 0xe8000000,
731
   0xd0000000, 0xd8000000, 0xb8000000, 0xe0000000,
732
   0x90000000, 0x88000000, 0xf8000000, 0xa0000000,
733
   0x98000004, 0xf0000004, 0xa8000004, 0xc8000004,
734
   0xb0000004, 0xc0000004, 0x80000004, 0xe8000004,
735
   0xd0000004, 0xd8000004, 0xb8000004, 0xe0000004,
736
   0x90000004, 0x88000004, 0xf8000004, 0xa0000004,
737
   0x18000006, 0x70000006, 0x28000006, 0x48000006,
738
   0x30000006, 0x40000006, 0x00000006, 0x68000006,
739
   0x50000006, 0x58000006, 0x38000006, 0x60000006,
740
   0x10000006, 0x08000006, 0x78000006, 0x20000006,
741
   0x98000002, 0xf0000002, 0xa8000002, 0xc8000002,
742
   0xb0000002, 0xc0000002, 0x80000002, 0xe8000002,
743
   0xd0000002, 0xd8000002, 0xb8000002, 0xe0000002,
744
   0x90000002, 0x88000002, 0xf8000002, 0xa0000002,
745
   0x98000006, 0xf0000006, 0xa8000006, 0xc8000006,
746
   0xb0000006, 0xc0000006, 0x80000006, 0xe8000006,
747
   0xd0000006, 0xd8000006, 0xb8000006, 0xe0000006,
748
   0x90000006, 0x88000006, 0xf8000006, 0xa0000006,
749
   0x98000001, 0xf0000001, 0xa8000001, 0xc8000001,
750
   0xb0000001, 0xc0000001, 0x80000001, 0xe8000001,
751
   0xd0000001, 0xd8000001, 0xb8000001, 0xe0000001,
752
   0x90000001, 0x88000001, 0xf8000001, 0xa0000001,
753
   0x98000003, 0xf0000003, 0xa8000003, 0xc8000003,
754
   0xb0000003, 0xc0000003, 0x80000003, 0xe8000003,
755
   0xd0000003, 0xd8000003, 0xb8000003, 0xe0000003,
756
   0x90000003, 0x88000003, 0xf8000003, 0xa0000003,
757
   0x18000005, 0x70000005, 0x28000005, 0x48000005,
758
   0x30000005, 0x40000005, 0x00000005, 0x68000005,
759
   0x50000005, 0x58000005, 0x38000005, 0x60000005,
760
   0x10000005, 0x08000005, 0x78000005, 0x20000005,
761
   0x18000000, 0x70000000, 0x28000000, 0x48000000,
762
   0x30000000, 0x40000000, 0x00000000, 0x68000000,
763
   0x50000000, 0x58000000, 0x38000000, 0x60000000,
764
   0x10000000, 0x08000000, 0x78000000, 0x20000000,
765
   0x18000007, 0x70000007, 0x28000007, 0x48000007,
766
   0x30000007, 0x40000007, 0x00000007, 0x68000007,
767
   0x50000007, 0x58000007, 0x38000007, 0x60000007,
768
   0x10000007, 0x08000007, 0x78000007, 0x20000007,
769
   0x18000001, 0x70000001, 0x28000001, 0x48000001,
770
   0x30000001, 0x40000001, 0x00000001, 0x68000001,
771
   0x50000001, 0x58000001, 0x38000001, 0x60000001,
772
   0x10000001, 0x08000001, 0x78000001, 0x20000001,
773
   0x18000002, 0x70000002, 0x28000002, 0x48000002,
774
   0x30000002, 0x40000002, 0x00000002, 0x68000002,
775
   0x50000002, 0x58000002, 0x38000002, 0x60000002,
776
   0x10000002, 0x08000002, 0x78000002, 0x20000002,
777
   /* 3 */
778
   0x00000648, 0x00000658, 0x00000660, 0x00000600,
779
   0x00000618, 0x00000630, 0x00000638, 0x00000628,
780
   0x00000620, 0x00000640, 0x00000670, 0x00000678,
781
   0x00000608, 0x00000650, 0x00000610, 0x00000668,
782
   0x00000348, 0x00000358, 0x00000360, 0x00000300,
783
   0x00000318, 0x00000330, 0x00000338, 0x00000328,
784
   0x00000320, 0x00000340, 0x00000370, 0x00000378,
785
   0x00000308, 0x00000350, 0x00000310, 0x00000368,
786
   0x000002c8, 0x000002d8, 0x000002e0, 0x00000280,
787
   0x00000298, 0x000002b0, 0x000002b8, 0x000002a8,
788
   0x000002a0, 0x000002c0, 0x000002f0, 0x000002f8,
789
   0x00000288, 0x000002d0, 0x00000290, 0x000002e8,
790
   0x00000148, 0x00000158, 0x00000160, 0x00000100,
791
   0x00000118, 0x00000130, 0x00000138, 0x00000128,
792
   0x00000120, 0x00000140, 0x00000170, 0x00000178,
793
   0x00000108, 0x00000150, 0x00000110, 0x00000168,
794
   0x000005c8, 0x000005d8, 0x000005e0, 0x00000580,
795
   0x00000598, 0x000005b0, 0x000005b8, 0x000005a8,
796
   0x000005a0, 0x000005c0, 0x000005f0, 0x000005f8,
797
   0x00000588, 0x000005d0, 0x00000590, 0x000005e8,
798
   0x00000048, 0x00000058, 0x00000060, 0x00000000,
799
   0x00000018, 0x00000030, 0x00000038, 0x00000028,
800
   0x00000020, 0x00000040, 0x00000070, 0x00000078,
801
   0x00000008, 0x00000050, 0x00000010, 0x00000068,
802
   0x000004c8, 0x000004d8, 0x000004e0, 0x00000480,
803
   0x00000498, 0x000004b0, 0x000004b8, 0x000004a8,
804
   0x000004a0, 0x000004c0, 0x000004f0, 0x000004f8,
805
   0x00000488, 0x000004d0, 0x00000490, 0x000004e8,
806
   0x000006c8, 0x000006d8, 0x000006e0, 0x00000680,
807
   0x00000698, 0x000006b0, 0x000006b8, 0x000006a8,
808
   0x000006a0, 0x000006c0, 0x000006f0, 0x000006f8,
809
   0x00000688, 0x000006d0, 0x00000690, 0x000006e8,
810
   0x000001c8, 0x000001d8, 0x000001e0, 0x00000180,
811
   0x00000198, 0x000001b0, 0x000001b8, 0x000001a8,
812
   0x000001a0, 0x000001c0, 0x000001f0, 0x000001f8,
813
   0x00000188, 0x000001d0, 0x00000190, 0x000001e8,
814
   0x00000748, 0x00000758, 0x00000760, 0x00000700,
815
   0x00000718, 0x00000730, 0x00000738, 0x00000728,
816
   0x00000720, 0x00000740, 0x00000770, 0x00000778,
817
   0x00000708, 0x00000750, 0x00000710, 0x00000768,
818
   0x000003c8, 0x000003d8, 0x000003e0, 0x00000380,
819
   0x00000398, 0x000003b0, 0x000003b8, 0x000003a8,
820
   0x000003a0, 0x000003c0, 0x000003f0, 0x000003f8,
821
   0x00000388, 0x000003d0, 0x00000390, 0x000003e8,
822
   0x00000548, 0x00000558, 0x00000560, 0x00000500,
823
   0x00000518, 0x00000530, 0x00000538, 0x00000528,
824
   0x00000520, 0x00000540, 0x00000570, 0x00000578,
825
   0x00000508, 0x00000550, 0x00000510, 0x00000568,
826
   0x000007c8, 0x000007d8, 0x000007e0, 0x00000780,
827
   0x00000798, 0x000007b0, 0x000007b8, 0x000007a8,
828
   0x000007a0, 0x000007c0, 0x000007f0, 0x000007f8,
829
   0x00000788, 0x000007d0, 0x00000790, 0x000007e8,
830
   0x00000248, 0x00000258, 0x00000260, 0x00000200,
831
   0x00000218, 0x00000230, 0x00000238, 0x00000228,
832
   0x00000220, 0x00000240, 0x00000270, 0x00000278,
833
   0x00000208, 0x00000250, 0x00000210, 0x00000268,
834
   0x000000c8, 0x000000d8, 0x000000e0, 0x00000080,
835
   0x00000098, 0x000000b0, 0x000000b8, 0x000000a8,
836
   0x000000a0, 0x000000c0, 0x000000f0, 0x000000f8,
837
   0x00000088, 0x000000d0, 0x00000090, 0x000000e8,
838
   0x00000448, 0x00000458, 0x00000460, 0x00000400,
839
   0x00000418, 0x00000430, 0x00000438, 0x00000428,
840
   0x00000420, 0x00000440, 0x00000470, 0x00000478,
841
   0x00000408, 0x00000450, 0x00000410, 0x00000468,
842
   }
843
};
844
845
const struct gost28147_param gost28147_param_CryptoPro_A = {
846
  1,
847
  {
848
   /* 0 */
849
   0x0001c800, 0x0001b000, 0x00019800, 0x00019000,
850
   0x0001c000, 0x0001d800, 0x00018800, 0x0001b800,
851
   0x0001d000, 0x0001a000, 0x0001f000, 0x0001f800,
852
   0x0001e000, 0x00018000, 0x0001e800, 0x0001a800,
853
   0x0003c800, 0x0003b000, 0x00039800, 0x00039000,
854
   0x0003c000, 0x0003d800, 0x00038800, 0x0003b800,
855
   0x0003d000, 0x0003a000, 0x0003f000, 0x0003f800,
856
   0x0003e000, 0x00038000, 0x0003e800, 0x0003a800,
857
   0x00074800, 0x00073000, 0x00071800, 0x00071000,
858
   0x00074000, 0x00075800, 0x00070800, 0x00073800,
859
   0x00075000, 0x00072000, 0x00077000, 0x00077800,
860
   0x00076000, 0x00070000, 0x00076800, 0x00072800,
861
   0x0004c800, 0x0004b000, 0x00049800, 0x00049000,
862
   0x0004c000, 0x0004d800, 0x00048800, 0x0004b800,
863
   0x0004d000, 0x0004a000, 0x0004f000, 0x0004f800,
864
   0x0004e000, 0x00048000, 0x0004e800, 0x0004a800,
865
   0x00044800, 0x00043000, 0x00041800, 0x00041000,
866
   0x00044000, 0x00045800, 0x00040800, 0x00043800,
867
   0x00045000, 0x00042000, 0x00047000, 0x00047800,
868
   0x00046000, 0x00040000, 0x00046800, 0x00042800,
869
   0x00054800, 0x00053000, 0x00051800, 0x00051000,
870
   0x00054000, 0x00055800, 0x00050800, 0x00053800,
871
   0x00055000, 0x00052000, 0x00057000, 0x00057800,
872
   0x00056000, 0x00050000, 0x00056800, 0x00052800,
873
   0x0007c800, 0x0007b000, 0x00079800, 0x00079000,
874
   0x0007c000, 0x0007d800, 0x00078800, 0x0007b800,
875
   0x0007d000, 0x0007a000, 0x0007f000, 0x0007f800,
876
   0x0007e000, 0x00078000, 0x0007e800, 0x0007a800,
877
   0x00004800, 0x00003000, 0x00001800, 0x00001000,
878
   0x00004000, 0x00005800, 0x00000800, 0x00003800,
879
   0x00005000, 0x00002000, 0x00007000, 0x00007800,
880
   0x00006000, 0x00000000, 0x00006800, 0x00002800,
881
   0x0002c800, 0x0002b000, 0x00029800, 0x00029000,
882
   0x0002c000, 0x0002d800, 0x00028800, 0x0002b800,
883
   0x0002d000, 0x0002a000, 0x0002f000, 0x0002f800,
884
   0x0002e000, 0x00028000, 0x0002e800, 0x0002a800,
885
   0x00014800, 0x00013000, 0x00011800, 0x00011000,
886
   0x00014000, 0x00015800, 0x00010800, 0x00013800,
887
   0x00015000, 0x00012000, 0x00017000, 0x00017800,
888
   0x00016000, 0x00010000, 0x00016800, 0x00012800,
889
   0x00034800, 0x00033000, 0x00031800, 0x00031000,
890
   0x00034000, 0x00035800, 0x00030800, 0x00033800,
891
   0x00035000, 0x00032000, 0x00037000, 0x00037800,
892
   0x00036000, 0x00030000, 0x00036800, 0x00032800,
893
   0x00064800, 0x00063000, 0x00061800, 0x00061000,
894
   0x00064000, 0x00065800, 0x00060800, 0x00063800,
895
   0x00065000, 0x00062000, 0x00067000, 0x00067800,
896
   0x00066000, 0x00060000, 0x00066800, 0x00062800,
897
   0x0005c800, 0x0005b000, 0x00059800, 0x00059000,
898
   0x0005c000, 0x0005d800, 0x00058800, 0x0005b800,
899
   0x0005d000, 0x0005a000, 0x0005f000, 0x0005f800,
900
   0x0005e000, 0x00058000, 0x0005e800, 0x0005a800,
901
   0x00024800, 0x00023000, 0x00021800, 0x00021000,
902
   0x00024000, 0x00025800, 0x00020800, 0x00023800,
903
   0x00025000, 0x00022000, 0x00027000, 0x00027800,
904
   0x00026000, 0x00020000, 0x00026800, 0x00022800,
905
   0x0006c800, 0x0006b000, 0x00069800, 0x00069000,
906
   0x0006c000, 0x0006d800, 0x00068800, 0x0006b800,
907
   0x0006d000, 0x0006a000, 0x0006f000, 0x0006f800,
908
   0x0006e000, 0x00068000, 0x0006e800, 0x0006a800,
909
   0x0000c800, 0x0000b000, 0x00009800, 0x00009000,
910
   0x0000c000, 0x0000d800, 0x00008800, 0x0000b800,
911
   0x0000d000, 0x0000a000, 0x0000f000, 0x0000f800,
912
   0x0000e000, 0x00008000, 0x0000e800, 0x0000a800,
913
   /* 1 */
914
   0x07700000, 0x07200000, 0x07300000, 0x07100000,
915
   0x07580000, 0x07180000, 0x07680000, 0x07400000,
916
   0x07600000, 0x07780000, 0x07280000, 0x07500000,
917
   0x07000000, 0x07380000, 0x07080000, 0x07480000,
918
   0x03f00000, 0x03a00000, 0x03b00000, 0x03900000,
919
   0x03d80000, 0x03980000, 0x03e80000, 0x03c00000,
920
   0x03e00000, 0x03f80000, 0x03a80000, 0x03d00000,
921
   0x03800000, 0x03b80000, 0x03880000, 0x03c80000,
922
   0x05700000, 0x05200000, 0x05300000, 0x05100000,
923
   0x05580000, 0x05180000, 0x05680000, 0x05400000,
924
   0x05600000, 0x05780000, 0x05280000, 0x05500000,
925
   0x05000000, 0x05380000, 0x05080000, 0x05480000,
926
   0x06700000, 0x06200000, 0x06300000, 0x06100000,
927
   0x06580000, 0x06180000, 0x06680000, 0x06400000,
928
   0x06600000, 0x06780000, 0x06280000, 0x06500000,
929
   0x06000000, 0x06380000, 0x06080000, 0x06480000,
930
   0x06f00000, 0x06a00000, 0x06b00000, 0x06900000,
931
   0x06d80000, 0x06980000, 0x06e80000, 0x06c00000,
932
   0x06e00000, 0x06f80000, 0x06a80000, 0x06d00000,
933
   0x06800000, 0x06b80000, 0x06880000, 0x06c80000,
934
   0x00f00000, 0x00a00000, 0x00b00000, 0x00900000,
935
   0x00d80000, 0x00980000, 0x00e80000, 0x00c00000,
936
   0x00e00000, 0x00f80000, 0x00a80000, 0x00d00000,
937
   0x00800000, 0x00b80000, 0x00880000, 0x00c80000,
938
   0x01f00000, 0x01a00000, 0x01b00000, 0x01900000,
939
   0x01d80000, 0x01980000, 0x01e80000, 0x01c00000,
940
   0x01e00000, 0x01f80000, 0x01a80000, 0x01d00000,
941
   0x01800000, 0x01b80000, 0x01880000, 0x01c80000,
942
   0x04f00000, 0x04a00000, 0x04b00000, 0x04900000,
943
   0x04d80000, 0x04980000, 0x04e80000, 0x04c00000,
944
   0x04e00000, 0x04f80000, 0x04a80000, 0x04d00000,
945
   0x04800000, 0x04b80000, 0x04880000, 0x04c80000,
946
   0x00700000, 0x00200000, 0x00300000, 0x00100000,
947
   0x00580000, 0x00180000, 0x00680000, 0x00400000,
948
   0x00600000, 0x00780000, 0x00280000, 0x00500000,
949
   0x00000000, 0x00380000, 0x00080000, 0x00480000,
950
   0x01700000, 0x01200000, 0x01300000, 0x01100000,
951
   0x01580000, 0x01180000, 0x01680000, 0x01400000,
952
   0x01600000, 0x01780000, 0x01280000, 0x01500000,
953
   0x01000000, 0x01380000, 0x01080000, 0x01480000,
954
   0x05f00000, 0x05a00000, 0x05b00000, 0x05900000,
955
   0x05d80000, 0x05980000, 0x05e80000, 0x05c00000,
956
   0x05e00000, 0x05f80000, 0x05a80000, 0x05d00000,
957
   0x05800000, 0x05b80000, 0x05880000, 0x05c80000,
958
   0x02700000, 0x02200000, 0x02300000, 0x02100000,
959
   0x02580000, 0x02180000, 0x02680000, 0x02400000,
960
   0x02600000, 0x02780000, 0x02280000, 0x02500000,
961
   0x02000000, 0x02380000, 0x02080000, 0x02480000,
962
   0x07f00000, 0x07a00000, 0x07b00000, 0x07900000,
963
   0x07d80000, 0x07980000, 0x07e80000, 0x07c00000,
964
   0x07e00000, 0x07f80000, 0x07a80000, 0x07d00000,
965
   0x07800000, 0x07b80000, 0x07880000, 0x07c80000,
966
   0x04700000, 0x04200000, 0x04300000, 0x04100000,
967
   0x04580000, 0x04180000, 0x04680000, 0x04400000,
968
   0x04600000, 0x04780000, 0x04280000, 0x04500000,
969
   0x04000000, 0x04380000, 0x04080000, 0x04480000,
970
   0x02f00000, 0x02a00000, 0x02b00000, 0x02900000,
971
   0x02d80000, 0x02980000, 0x02e80000, 0x02c00000,
972
   0x02e00000, 0x02f80000, 0x02a80000, 0x02d00000,
973
   0x02800000, 0x02b80000, 0x02880000, 0x02c80000,
974
   0x03700000, 0x03200000, 0x03300000, 0x03100000,
975
   0x03580000, 0x03180000, 0x03680000, 0x03400000,
976
   0x03600000, 0x03780000, 0x03280000, 0x03500000,
977
   0x03000000, 0x03380000, 0x03080000, 0x03480000,
978
   /* 2 */
979
   0xd8000001, 0xa8000001, 0x88000001, 0xc8000001,
980
   0xc0000001, 0xe8000001, 0xf8000001, 0x80000001,
981
   0xf0000001, 0xa0000001, 0x90000001, 0x98000001,
982
   0xe0000001, 0xb8000001, 0xd0000001, 0xb0000001,
983
   0x58000005, 0x28000005, 0x08000005, 0x48000005,
984
   0x40000005, 0x68000005, 0x78000005, 0x00000005,
985
   0x70000005, 0x20000005, 0x10000005, 0x18000005,
986
   0x60000005, 0x38000005, 0x50000005, 0x30000005,
987
   0xd8000006, 0xa8000006, 0x88000006, 0xc8000006,
988
   0xc0000006, 0xe8000006, 0xf8000006, 0x80000006,
989
   0xf0000006, 0xa0000006, 0x90000006, 0x98000006,
990
   0xe0000006, 0xb8000006, 0xd0000006, 0xb0000006,
991
   0x58000006, 0x28000006, 0x08000006, 0x48000006,
992
   0x40000006, 0x68000006, 0x78000006, 0x00000006,
993
   0x70000006, 0x20000006, 0x10000006, 0x18000006,
994
   0x60000006, 0x38000006, 0x50000006, 0x30000006,
995
   0xd8000000, 0xa8000000, 0x88000000, 0xc8000000,
996
   0xc0000000, 0xe8000000, 0xf8000000, 0x80000000,
997
   0xf0000000, 0xa0000000, 0x90000000, 0x98000000,
998
   0xe0000000, 0xb8000000, 0xd0000000, 0xb0000000,
999
   0x58000001, 0x28000001, 0x08000001, 0x48000001,
1000
   0x40000001, 0x68000001, 0x78000001, 0x00000001,
1001
   0x70000001, 0x20000001, 0x10000001, 0x18000001,
1002
   0x60000001, 0x38000001, 0x50000001, 0x30000001,
1003
   0x58000000, 0x28000000, 0x08000000, 0x48000000,
1004
   0x40000000, 0x68000000, 0x78000000, 0x00000000,
1005
   0x70000000, 0x20000000, 0x10000000, 0x18000000,
1006
   0x60000000, 0x38000000, 0x50000000, 0x30000000,
1007
   0xd8000005, 0xa8000005, 0x88000005, 0xc8000005,
1008
   0xc0000005, 0xe8000005, 0xf8000005, 0x80000005,
1009
   0xf0000005, 0xa0000005, 0x90000005, 0x98000005,
1010
   0xe0000005, 0xb8000005, 0xd0000005, 0xb0000005,
1011
   0xd8000003, 0xa8000003, 0x88000003, 0xc8000003,
1012
   0xc0000003, 0xe8000003, 0xf8000003, 0x80000003,
1013
   0xf0000003, 0xa0000003, 0x90000003, 0x98000003,
1014
   0xe0000003, 0xb8000003, 0xd0000003, 0xb0000003,
1015
   0xd8000002, 0xa8000002, 0x88000002, 0xc8000002,
1016
   0xc0000002, 0xe8000002, 0xf8000002, 0x80000002,
1017
   0xf0000002, 0xa0000002, 0x90000002, 0x98000002,
1018
   0xe0000002, 0xb8000002, 0xd0000002, 0xb0000002,
1019
   0xd8000004, 0xa8000004, 0x88000004, 0xc8000004,
1020
   0xc0000004, 0xe8000004, 0xf8000004, 0x80000004,
1021
   0xf0000004, 0xa0000004, 0x90000004, 0x98000004,
1022
   0xe0000004, 0xb8000004, 0xd0000004, 0xb0000004,
1023
   0x58000002, 0x28000002, 0x08000002, 0x48000002,
1024
   0x40000002, 0x68000002, 0x78000002, 0x00000002,
1025
   0x70000002, 0x20000002, 0x10000002, 0x18000002,
1026
   0x60000002, 0x38000002, 0x50000002, 0x30000002,
1027
   0x58000004, 0x28000004, 0x08000004, 0x48000004,
1028
   0x40000004, 0x68000004, 0x78000004, 0x00000004,
1029
   0x70000004, 0x20000004, 0x10000004, 0x18000004,
1030
   0x60000004, 0x38000004, 0x50000004, 0x30000004,
1031
   0xd8000007, 0xa8000007, 0x88000007, 0xc8000007,
1032
   0xc0000007, 0xe8000007, 0xf8000007, 0x80000007,
1033
   0xf0000007, 0xa0000007, 0x90000007, 0x98000007,
1034
   0xe0000007, 0xb8000007, 0xd0000007, 0xb0000007,
1035
   0x58000007, 0x28000007, 0x08000007, 0x48000007,
1036
   0x40000007, 0x68000007, 0x78000007, 0x00000007,
1037
   0x70000007, 0x20000007, 0x10000007, 0x18000007,
1038
   0x60000007, 0x38000007, 0x50000007, 0x30000007,
1039
   0x58000003, 0x28000003, 0x08000003, 0x48000003,
1040
   0x40000003, 0x68000003, 0x78000003, 0x00000003,
1041
   0x70000003, 0x20000003, 0x10000003, 0x18000003,
1042
   0x60000003, 0x38000003, 0x50000003, 0x30000003,
1043
   /* 3 */
1044
   0x00000588, 0x000005e8, 0x00000590, 0x000005c8,
1045
   0x000005b8, 0x000005d0, 0x000005b0, 0x00000580,
1046
   0x000005c0, 0x000005e0, 0x000005a0, 0x000005a8,
1047
   0x000005f8, 0x00000598, 0x000005d8, 0x000005f0,
1048
   0x00000508, 0x00000568, 0x00000510, 0x00000548,
1049
   0x00000538, 0x00000550, 0x00000530, 0x00000500,
1050
   0x00000540, 0x00000560, 0x00000520, 0x00000528,
1051
   0x00000578, 0x00000518, 0x00000558, 0x00000570,
1052
   0x00000788, 0x000007e8, 0x00000790, 0x000007c8,
1053
   0x000007b8, 0x000007d0, 0x000007b0, 0x00000780,
1054
   0x000007c0, 0x000007e0, 0x000007a0, 0x000007a8,
1055
   0x000007f8, 0x00000798, 0x000007d8, 0x000007f0,
1056
   0x00000288, 0x000002e8, 0x00000290, 0x000002c8,
1057
   0x000002b8, 0x000002d0, 0x000002b0, 0x00000280,
1058
   0x000002c0, 0x000002e0, 0x000002a0, 0x000002a8,
1059
   0x000002f8, 0x00000298, 0x000002d8, 0x000002f0,
1060
   0x00000008, 0x00000068, 0x00000010, 0x00000048,
1061
   0x00000038, 0x00000050, 0x00000030, 0x00000000,
1062
   0x00000040, 0x00000060, 0x00000020, 0x00000028,
1063
   0x00000078, 0x00000018, 0x00000058, 0x00000070,
1064
   0x00000608, 0x00000668, 0x00000610, 0x00000648,
1065
   0x00000638, 0x00000650, 0x00000630, 0x00000600,
1066
   0x00000640, 0x00000660, 0x00000620, 0x00000628,
1067
   0x00000678, 0x00000618, 0x00000658, 0x00000670,
1068
   0x00000708, 0x00000768, 0x00000710, 0x00000748,
1069
   0x00000738, 0x00000750, 0x00000730, 0x00000700,
1070
   0x00000740, 0x00000760, 0x00000720, 0x00000728,
1071
   0x00000778, 0x00000718, 0x00000758, 0x00000770,
1072
   0x00000408, 0x00000468, 0x00000410, 0x00000448,
1073
   0x00000438, 0x00000450, 0x00000430, 0x00000400,
1074
   0x00000440, 0x00000460, 0x00000420, 0x00000428,
1075
   0x00000478, 0x00000418, 0x00000458, 0x00000470,
1076
   0x00000308, 0x00000368, 0x00000310, 0x00000348,
1077
   0x00000338, 0x00000350, 0x00000330, 0x00000300,
1078
   0x00000340, 0x00000360, 0x00000320, 0x00000328,
1079
   0x00000378, 0x00000318, 0x00000358, 0x00000370,
1080
   0x00000108, 0x00000168, 0x00000110, 0x00000148,
1081
   0x00000138, 0x00000150, 0x00000130, 0x00000100,
1082
   0x00000140, 0x00000160, 0x00000120, 0x00000128,
1083
   0x00000178, 0x00000118, 0x00000158, 0x00000170,
1084
   0x00000188, 0x000001e8, 0x00000190, 0x000001c8,
1085
   0x000001b8, 0x000001d0, 0x000001b0, 0x00000180,
1086
   0x000001c0, 0x000001e0, 0x000001a0, 0x000001a8,
1087
   0x000001f8, 0x00000198, 0x000001d8, 0x000001f0,
1088
   0x00000488, 0x000004e8, 0x00000490, 0x000004c8,
1089
   0x000004b8, 0x000004d0, 0x000004b0, 0x00000480,
1090
   0x000004c0, 0x000004e0, 0x000004a0, 0x000004a8,
1091
   0x000004f8, 0x00000498, 0x000004d8, 0x000004f0,
1092
   0x00000088, 0x000000e8, 0x00000090, 0x000000c8,
1093
   0x000000b8, 0x000000d0, 0x000000b0, 0x00000080,
1094
   0x000000c0, 0x000000e0, 0x000000a0, 0x000000a8,
1095
   0x000000f8, 0x00000098, 0x000000d8, 0x000000f0,
1096
   0x00000388, 0x000003e8, 0x00000390, 0x000003c8,
1097
   0x000003b8, 0x000003d0, 0x000003b0, 0x00000380,
1098
   0x000003c0, 0x000003e0, 0x000003a0, 0x000003a8,
1099
   0x000003f8, 0x00000398, 0x000003d8, 0x000003f0,
1100
   0x00000688, 0x000006e8, 0x00000690, 0x000006c8,
1101
   0x000006b8, 0x000006d0, 0x000006b0, 0x00000680,
1102
   0x000006c0, 0x000006e0, 0x000006a0, 0x000006a8,
1103
   0x000006f8, 0x00000698, 0x000006d8, 0x000006f0,
1104
   0x00000208, 0x00000268, 0x00000210, 0x00000248,
1105
   0x00000238, 0x00000250, 0x00000230, 0x00000200,
1106
   0x00000240, 0x00000260, 0x00000220, 0x00000228,
1107
   0x00000278, 0x00000218, 0x00000258, 0x00000270,
1108
   }
1109
};
1110
1111
const struct gost28147_param gost28147_param_CryptoPro_B = {
1112
  1,
1113
  {
1114
   /* 0 */
1115
   0x00004000, 0x00002000, 0x00005800, 0x00000800,
1116
   0x00001800, 0x00002800, 0x00000000, 0x00004800,
1117
   0x00001000, 0x00007000, 0x00005000, 0x00006000,
1118
   0x00006800, 0x00003000, 0x00003800, 0x00007800,
1119
   0x0000c000, 0x0000a000, 0x0000d800, 0x00008800,
1120
   0x00009800, 0x0000a800, 0x00008000, 0x0000c800,
1121
   0x00009000, 0x0000f000, 0x0000d000, 0x0000e000,
1122
   0x0000e800, 0x0000b000, 0x0000b800, 0x0000f800,
1123
   0x00014000, 0x00012000, 0x00015800, 0x00010800,
1124
   0x00011800, 0x00012800, 0x00010000, 0x00014800,
1125
   0x00011000, 0x00017000, 0x00015000, 0x00016000,
1126
   0x00016800, 0x00013000, 0x00013800, 0x00017800,
1127
   0x00054000, 0x00052000, 0x00055800, 0x00050800,
1128
   0x00051800, 0x00052800, 0x00050000, 0x00054800,
1129
   0x00051000, 0x00057000, 0x00055000, 0x00056000,
1130
   0x00056800, 0x00053000, 0x00053800, 0x00057800,
1131
   0x00024000, 0x00022000, 0x00025800, 0x00020800,
1132
   0x00021800, 0x00022800, 0x00020000, 0x00024800,
1133
   0x00021000, 0x00027000, 0x00025000, 0x00026000,
1134
   0x00026800, 0x00023000, 0x00023800, 0x00027800,
1135
   0x0006c000, 0x0006a000, 0x0006d800, 0x00068800,
1136
   0x00069800, 0x0006a800, 0x00068000, 0x0006c800,
1137
   0x00069000, 0x0006f000, 0x0006d000, 0x0006e000,
1138
   0x0006e800, 0x0006b000, 0x0006b800, 0x0006f800,
1139
   0x0002c000, 0x0002a000, 0x0002d800, 0x00028800,
1140
   0x00029800, 0x0002a800, 0x00028000, 0x0002c800,
1141
   0x00029000, 0x0002f000, 0x0002d000, 0x0002e000,
1142
   0x0002e800, 0x0002b000, 0x0002b800, 0x0002f800,
1143
   0x00064000, 0x00062000, 0x00065800, 0x00060800,
1144
   0x00061800, 0x00062800, 0x00060000, 0x00064800,
1145
   0x00061000, 0x00067000, 0x00065000, 0x00066000,
1146
   0x00066800, 0x00063000, 0x00063800, 0x00067800,
1147
   0x0004c000, 0x0004a000, 0x0004d800, 0x00048800,
1148
   0x00049800, 0x0004a800, 0x00048000, 0x0004c800,
1149
   0x00049000, 0x0004f000, 0x0004d000, 0x0004e000,
1150
   0x0004e800, 0x0004b000, 0x0004b800, 0x0004f800,
1151
   0x0003c000, 0x0003a000, 0x0003d800, 0x00038800,
1152
   0x00039800, 0x0003a800, 0x00038000, 0x0003c800,
1153
   0x00039000, 0x0003f000, 0x0003d000, 0x0003e000,
1154
   0x0003e800, 0x0003b000, 0x0003b800, 0x0003f800,
1155
   0x0001c000, 0x0001a000, 0x0001d800, 0x00018800,
1156
   0x00019800, 0x0001a800, 0x00018000, 0x0001c800,
1157
   0x00019000, 0x0001f000, 0x0001d000, 0x0001e000,
1158
   0x0001e800, 0x0001b000, 0x0001b800, 0x0001f800,
1159
   0x0007c000, 0x0007a000, 0x0007d800, 0x00078800,
1160
   0x00079800, 0x0007a800, 0x00078000, 0x0007c800,
1161
   0x00079000, 0x0007f000, 0x0007d000, 0x0007e000,
1162
   0x0007e800, 0x0007b000, 0x0007b800, 0x0007f800,
1163
   0x0005c000, 0x0005a000, 0x0005d800, 0x00058800,
1164
   0x00059800, 0x0005a800, 0x00058000, 0x0005c800,
1165
   0x00059000, 0x0005f000, 0x0005d000, 0x0005e000,
1166
   0x0005e800, 0x0005b000, 0x0005b800, 0x0005f800,
1167
   0x00044000, 0x00042000, 0x00045800, 0x00040800,
1168
   0x00041800, 0x00042800, 0x00040000, 0x00044800,
1169
   0x00041000, 0x00047000, 0x00045000, 0x00046000,
1170
   0x00046800, 0x00043000, 0x00043800, 0x00047800,
1171
   0x00034000, 0x00032000, 0x00035800, 0x00030800,
1172
   0x00031800, 0x00032800, 0x00030000, 0x00034800,
1173
   0x00031000, 0x00037000, 0x00035000, 0x00036000,
1174
   0x00036800, 0x00033000, 0x00033800, 0x00037800,
1175
   0x00074000, 0x00072000, 0x00075800, 0x00070800,
1176
   0x00071800, 0x00072800, 0x00070000, 0x00074800,
1177
   0x00071000, 0x00077000, 0x00075000, 0x00076000,
1178
   0x00076800, 0x00073000, 0x00073800, 0x00077800,
1179
   /* 1 */
1180
   0x03f00000, 0x03e00000, 0x03800000, 0x03d00000,
1181
   0x03c80000, 0x03900000, 0x03e80000, 0x03d80000,
1182
   0x03b80000, 0x03a80000, 0x03c00000, 0x03f80000,
1183
   0x03980000, 0x03b00000, 0x03880000, 0x03a00000,
1184
   0x02f00000, 0x02e00000, 0x02800000, 0x02d00000,
1185
   0x02c80000, 0x02900000, 0x02e80000, 0x02d80000,
1186
   0x02b80000, 0x02a80000, 0x02c00000, 0x02f80000,
1187
   0x02980000, 0x02b00000, 0x02880000, 0x02a00000,
1188
   0x00700000, 0x00600000, 0x00000000, 0x00500000,
1189
   0x00480000, 0x00100000, 0x00680000, 0x00580000,
1190
   0x00380000, 0x00280000, 0x00400000, 0x00780000,
1191
   0x00180000, 0x00300000, 0x00080000, 0x00200000,
1192
   0x06f00000, 0x06e00000, 0x06800000, 0x06d00000,
1193
   0x06c80000, 0x06900000, 0x06e80000, 0x06d80000,
1194
   0x06b80000, 0x06a80000, 0x06c00000, 0x06f80000,
1195
   0x06980000, 0x06b00000, 0x06880000, 0x06a00000,
1196
   0x05f00000, 0x05e00000, 0x05800000, 0x05d00000,
1197
   0x05c80000, 0x05900000, 0x05e80000, 0x05d80000,
1198
   0x05b80000, 0x05a80000, 0x05c00000, 0x05f80000,
1199
   0x05980000, 0x05b00000, 0x05880000, 0x05a00000,
1200
   0x03700000, 0x03600000, 0x03000000, 0x03500000,
1201
   0x03480000, 0x03100000, 0x03680000, 0x03580000,
1202
   0x03380000, 0x03280000, 0x03400000, 0x03780000,
1203
   0x03180000, 0x03300000, 0x03080000, 0x03200000,
1204
   0x00f00000, 0x00e00000, 0x00800000, 0x00d00000,
1205
   0x00c80000, 0x00900000, 0x00e80000, 0x00d80000,
1206
   0x00b80000, 0x00a80000, 0x00c00000, 0x00f80000,
1207
   0x00980000, 0x00b00000, 0x00880000, 0x00a00000,
1208
   0x01700000, 0x01600000, 0x01000000, 0x01500000,
1209
   0x01480000, 0x01100000, 0x01680000, 0x01580000,
1210
   0x01380000, 0x01280000, 0x01400000, 0x01780000,
1211
   0x01180000, 0x01300000, 0x01080000, 0x01200000,
1212
   0x01f00000, 0x01e00000, 0x01800000, 0x01d00000,
1213
   0x01c80000, 0x01900000, 0x01e80000, 0x01d80000,
1214
   0x01b80000, 0x01a80000, 0x01c00000, 0x01f80000,
1215
   0x01980000, 0x01b00000, 0x01880000, 0x01a00000,
1216
   0x05700000, 0x05600000, 0x05000000, 0x05500000,
1217
   0x05480000, 0x05100000, 0x05680000, 0x05580000,
1218
   0x05380000, 0x05280000, 0x05400000, 0x05780000,
1219
   0x05180000, 0x05300000, 0x05080000, 0x05200000,
1220
   0x06700000, 0x06600000, 0x06000000, 0x06500000,
1221
   0x06480000, 0x06100000, 0x06680000, 0x06580000,
1222
   0x06380000, 0x06280000, 0x06400000, 0x06780000,
1223
   0x06180000, 0x06300000, 0x06080000, 0x06200000,
1224
   0x07f00000, 0x07e00000, 0x07800000, 0x07d00000,
1225
   0x07c80000, 0x07900000, 0x07e80000, 0x07d80000,
1226
   0x07b80000, 0x07a80000, 0x07c00000, 0x07f80000,
1227
   0x07980000, 0x07b00000, 0x07880000, 0x07a00000,
1228
   0x02700000, 0x02600000, 0x02000000, 0x02500000,
1229
   0x02480000, 0x02100000, 0x02680000, 0x02580000,
1230
   0x02380000, 0x02280000, 0x02400000, 0x02780000,
1231
   0x02180000, 0x02300000, 0x02080000, 0x02200000,
1232
   0x07700000, 0x07600000, 0x07000000, 0x07500000,
1233
   0x07480000, 0x07100000, 0x07680000, 0x07580000,
1234
   0x07380000, 0x07280000, 0x07400000, 0x07780000,
1235
   0x07180000, 0x07300000, 0x07080000, 0x07200000,
1236
   0x04f00000, 0x04e00000, 0x04800000, 0x04d00000,
1237
   0x04c80000, 0x04900000, 0x04e80000, 0x04d80000,
1238
   0x04b80000, 0x04a80000, 0x04c00000, 0x04f80000,
1239
   0x04980000, 0x04b00000, 0x04880000, 0x04a00000,
1240
   0x04700000, 0x04600000, 0x04000000, 0x04500000,
1241
   0x04480000, 0x04100000, 0x04680000, 0x04580000,
1242
   0x04380000, 0x04280000, 0x04400000, 0x04780000,
1243
   0x04180000, 0x04300000, 0x04080000, 0x04200000,
1244
   /* 2 */
1245
   0x10000004, 0x38000004, 0x60000004, 0x78000004,
1246
   0x48000004, 0x28000004, 0x50000004, 0x58000004,
1247
   0x08000004, 0x20000004, 0x00000004, 0x68000004,
1248
   0x30000004, 0x40000004, 0x70000004, 0x18000004,
1249
   0x90000001, 0xb8000001, 0xe0000001, 0xf8000001,
1250
   0xc8000001, 0xa8000001, 0xd0000001, 0xd8000001,
1251
   0x88000001, 0xa0000001, 0x80000001, 0xe8000001,
1252
   0xb0000001, 0xc0000001, 0xf0000001, 0x98000001,
1253
   0x10000001, 0x38000001, 0x60000001, 0x78000001,
1254
   0x48000001, 0x28000001, 0x50000001, 0x58000001,
1255
   0x08000001, 0x20000001, 0x00000001, 0x68000001,
1256
   0x30000001, 0x40000001, 0x70000001, 0x18000001,
1257
   0x10000003, 0x38000003, 0x60000003, 0x78000003,
1258
   0x48000003, 0x28000003, 0x50000003, 0x58000003,
1259
   0x08000003, 0x20000003, 0x00000003, 0x68000003,
1260
   0x30000003, 0x40000003, 0x70000003, 0x18000003,
1261
   0x10000002, 0x38000002, 0x60000002, 0x78000002,
1262
   0x48000002, 0x28000002, 0x50000002, 0x58000002,
1263
   0x08000002, 0x20000002, 0x00000002, 0x68000002,
1264
   0x30000002, 0x40000002, 0x70000002, 0x18000002,
1265
   0x90000006, 0xb8000006, 0xe0000006, 0xf8000006,
1266
   0xc8000006, 0xa8000006, 0xd0000006, 0xd8000006,
1267
   0x88000006, 0xa0000006, 0x80000006, 0xe8000006,
1268
   0xb0000006, 0xc0000006, 0xf0000006, 0x98000006,
1269
   0x10000007, 0x38000007, 0x60000007, 0x78000007,
1270
   0x48000007, 0x28000007, 0x50000007, 0x58000007,
1271
   0x08000007, 0x20000007, 0x00000007, 0x68000007,
1272
   0x30000007, 0x40000007, 0x70000007, 0x18000007,
1273
   0x90000005, 0xb8000005, 0xe0000005, 0xf8000005,
1274
   0xc8000005, 0xa8000005, 0xd0000005, 0xd8000005,
1275
   0x88000005, 0xa0000005, 0x80000005, 0xe8000005,
1276
   0xb0000005, 0xc0000005, 0xf0000005, 0x98000005,
1277
   0x10000006, 0x38000006, 0x60000006, 0x78000006,
1278
   0x48000006, 0x28000006, 0x50000006, 0x58000006,
1279
   0x08000006, 0x20000006, 0x00000006, 0x68000006,
1280
   0x30000006, 0x40000006, 0x70000006, 0x18000006,
1281
   0x90000000, 0xb8000000, 0xe0000000, 0xf8000000,
1282
   0xc8000000, 0xa8000000, 0xd0000000, 0xd8000000,
1283
   0x88000000, 0xa0000000, 0x80000000, 0xe8000000,
1284
   0xb0000000, 0xc0000000, 0xf0000000, 0x98000000,
1285
   0x90000003, 0xb8000003, 0xe0000003, 0xf8000003,
1286
   0xc8000003, 0xa8000003, 0xd0000003, 0xd8000003,
1287
   0x88000003, 0xa0000003, 0x80000003, 0xe8000003,
1288
   0xb0000003, 0xc0000003, 0xf0000003, 0x98000003,
1289
   0x90000007, 0xb8000007, 0xe0000007, 0xf8000007,
1290
   0xc8000007, 0xa8000007, 0xd0000007, 0xd8000007,
1291
   0x88000007, 0xa0000007, 0x80000007, 0xe8000007,
1292
   0xb0000007, 0xc0000007, 0xf0000007, 0x98000007,
1293
   0x10000005, 0x38000005, 0x60000005, 0x78000005,
1294
   0x48000005, 0x28000005, 0x50000005, 0x58000005,
1295
   0x08000005, 0x20000005, 0x00000005, 0x68000005,
1296
   0x30000005, 0x40000005, 0x70000005, 0x18000005,
1297
   0x10000000, 0x38000000, 0x60000000, 0x78000000,
1298
   0x48000000, 0x28000000, 0x50000000, 0x58000000,
1299
   0x08000000, 0x20000000, 0x00000000, 0x68000000,
1300
   0x30000000, 0x40000000, 0x70000000, 0x18000000,
1301
   0x90000004, 0xb8000004, 0xe0000004, 0xf8000004,
1302
   0xc8000004, 0xa8000004, 0xd0000004, 0xd8000004,
1303
   0x88000004, 0xa0000004, 0x80000004, 0xe8000004,
1304
   0xb0000004, 0xc0000004, 0xf0000004, 0x98000004,
1305
   0x90000002, 0xb8000002, 0xe0000002, 0xf8000002,
1306
   0xc8000002, 0xa8000002, 0xd0000002, 0xd8000002,
1307
   0x88000002, 0xa0000002, 0x80000002, 0xe8000002,
1308
   0xb0000002, 0xc0000002, 0xf0000002, 0x98000002,
1309
   /* 3 */
1310
   0x00000028, 0x00000010, 0x00000050, 0x00000058,
1311
   0x00000048, 0x00000008, 0x00000060, 0x00000018,
1312
   0x00000038, 0x00000020, 0x00000068, 0x00000000,
1313
   0x00000030, 0x00000078, 0x00000040, 0x00000070,
1314
   0x00000228, 0x00000210, 0x00000250, 0x00000258,
1315
   0x00000248, 0x00000208, 0x00000260, 0x00000218,
1316
   0x00000238, 0x00000220, 0x00000268, 0x00000200,
1317
   0x00000230, 0x00000278, 0x00000240, 0x00000270,
1318
   0x000005a8, 0x00000590, 0x000005d0, 0x000005d8,
1319
   0x000005c8, 0x00000588, 0x000005e0, 0x00000598,
1320
   0x000005b8, 0x000005a0, 0x000005e8, 0x00000580,
1321
   0x000005b0, 0x000005f8, 0x000005c0, 0x000005f0,
1322
   0x00000728, 0x00000710, 0x00000750, 0x00000758,
1323
   0x00000748, 0x00000708, 0x00000760, 0x00000718,
1324
   0x00000738, 0x00000720, 0x00000768, 0x00000700,
1325
   0x00000730, 0x00000778, 0x00000740, 0x00000770,
1326
   0x00000428, 0x00000410, 0x00000450, 0x00000458,
1327
   0x00000448, 0x00000408, 0x00000460, 0x00000418,
1328
   0x00000438, 0x00000420, 0x00000468, 0x00000400,
1329
   0x00000430, 0x00000478, 0x00000440, 0x00000470,
1330
   0x000001a8, 0x00000190, 0x000001d0, 0x000001d8,
1331
   0x000001c8, 0x00000188, 0x000001e0, 0x00000198,
1332
   0x000001b8, 0x000001a0, 0x000001e8, 0x00000180,
1333
   0x000001b0, 0x000001f8, 0x000001c0, 0x000001f0,
1334
   0x000003a8, 0x00000390, 0x000003d0, 0x000003d8,
1335
   0x000003c8, 0x00000388, 0x000003e0, 0x00000398,
1336
   0x000003b8, 0x000003a0, 0x000003e8, 0x00000380,
1337
   0x000003b0, 0x000003f8, 0x000003c0, 0x000003f0,
1338
   0x000000a8, 0x00000090, 0x000000d0, 0x000000d8,
1339
   0x000000c8, 0x00000088, 0x000000e0, 0x00000098,
1340
   0x000000b8, 0x000000a0, 0x000000e8, 0x00000080,
1341
   0x000000b0, 0x000000f8, 0x000000c0, 0x000000f0,
1342
   0x00000528, 0x00000510, 0x00000550, 0x00000558,
1343
   0x00000548, 0x00000508, 0x00000560, 0x00000518,
1344
   0x00000538, 0x00000520, 0x00000568, 0x00000500,
1345
   0x00000530, 0x00000578, 0x00000540, 0x00000570,
1346
   0x00000128, 0x00000110, 0x00000150, 0x00000158,
1347
   0x00000148, 0x00000108, 0x00000160, 0x00000118,
1348
   0x00000138, 0x00000120, 0x00000168, 0x00000100,
1349
   0x00000130, 0x00000178, 0x00000140, 0x00000170,
1350
   0x000004a8, 0x00000490, 0x000004d0, 0x000004d8,
1351
   0x000004c8, 0x00000488, 0x000004e0, 0x00000498,
1352
   0x000004b8, 0x000004a0, 0x000004e8, 0x00000480,
1353
   0x000004b0, 0x000004f8, 0x000004c0, 0x000004f0,
1354
   0x00000328, 0x00000310, 0x00000350, 0x00000358,
1355
   0x00000348, 0x00000308, 0x00000360, 0x00000318,
1356
   0x00000338, 0x00000320, 0x00000368, 0x00000300,
1357
   0x00000330, 0x00000378, 0x00000340, 0x00000370,
1358
   0x000007a8, 0x00000790, 0x000007d0, 0x000007d8,
1359
   0x000007c8, 0x00000788, 0x000007e0, 0x00000798,
1360
   0x000007b8, 0x000007a0, 0x000007e8, 0x00000780,
1361
   0x000007b0, 0x000007f8, 0x000007c0, 0x000007f0,
1362
   0x000006a8, 0x00000690, 0x000006d0, 0x000006d8,
1363
   0x000006c8, 0x00000688, 0x000006e0, 0x00000698,
1364
   0x000006b8, 0x000006a0, 0x000006e8, 0x00000680,
1365
   0x000006b0, 0x000006f8, 0x000006c0, 0x000006f0,
1366
   0x000002a8, 0x00000290, 0x000002d0, 0x000002d8,
1367
   0x000002c8, 0x00000288, 0x000002e0, 0x00000298,
1368
   0x000002b8, 0x000002a0, 0x000002e8, 0x00000280,
1369
   0x000002b0, 0x000002f8, 0x000002c0, 0x000002f0,
1370
   0x00000628, 0x00000610, 0x00000650, 0x00000658,
1371
   0x00000648, 0x00000608, 0x00000660, 0x00000618,
1372
   0x00000638, 0x00000620, 0x00000668, 0x00000600,
1373
   0x00000630, 0x00000678, 0x00000640, 0x00000670,
1374
   }
1375
};
1376
1377
const struct gost28147_param gost28147_param_CryptoPro_C = {
1378
  1,
1379
  {
1380
   /* 0 */
1381
   0x00000800, 0x00005800, 0x00006000, 0x00001000,
1382
   0x00004800, 0x00006800, 0x00000000, 0x00007800,
1383
   0x00002000, 0x00002800, 0x00004000, 0x00007000,
1384
   0x00005000, 0x00003800, 0x00003000, 0x00001800,
1385
   0x00008800, 0x0000d800, 0x0000e000, 0x00009000,
1386
   0x0000c800, 0x0000e800, 0x00008000, 0x0000f800,
1387
   0x0000a000, 0x0000a800, 0x0000c000, 0x0000f000,
1388
   0x0000d000, 0x0000b800, 0x0000b000, 0x00009800,
1389
   0x00038800, 0x0003d800, 0x0003e000, 0x00039000,
1390
   0x0003c800, 0x0003e800, 0x00038000, 0x0003f800,
1391
   0x0003a000, 0x0003a800, 0x0003c000, 0x0003f000,
1392
   0x0003d000, 0x0003b800, 0x0003b000, 0x00039800,
1393
   0x00068800, 0x0006d800, 0x0006e000, 0x00069000,
1394
   0x0006c800, 0x0006e800, 0x00068000, 0x0006f800,
1395
   0x0006a000, 0x0006a800, 0x0006c000, 0x0006f000,
1396
   0x0006d000, 0x0006b800, 0x0006b000, 0x00069800,
1397
   0x00058800, 0x0005d800, 0x0005e000, 0x00059000,
1398
   0x0005c800, 0x0005e800, 0x00058000, 0x0005f800,
1399
   0x0005a000, 0x0005a800, 0x0005c000, 0x0005f000,
1400
   0x0005d000, 0x0005b800, 0x0005b000, 0x00059800,
1401
   0x00020800, 0x00025800, 0x00026000, 0x00021000,
1402
   0x00024800, 0x00026800, 0x00020000, 0x00027800,
1403
   0x00022000, 0x00022800, 0x00024000, 0x00027000,
1404
   0x00025000, 0x00023800, 0x00023000, 0x00021800,
1405
   0x00028800, 0x0002d800, 0x0002e000, 0x00029000,
1406
   0x0002c800, 0x0002e800, 0x00028000, 0x0002f800,
1407
   0x0002a000, 0x0002a800, 0x0002c000, 0x0002f000,
1408
   0x0002d000, 0x0002b800, 0x0002b000, 0x00029800,
1409
   0x00010800, 0x00015800, 0x00016000, 0x00011000,
1410
   0x00014800, 0x00016800, 0x00010000, 0x00017800,
1411
   0x00012000, 0x00012800, 0x00014000, 0x00017000,
1412
   0x00015000, 0x00013800, 0x00013000, 0x00011800,
1413
   0x00040800, 0x00045800, 0x00046000, 0x00041000,
1414
   0x00044800, 0x00046800, 0x00040000, 0x00047800,
1415
   0x00042000, 0x00042800, 0x00044000, 0x00047000,
1416
   0x00045000, 0x00043800, 0x00043000, 0x00041800,
1417
   0x00070800, 0x00075800, 0x00076000, 0x00071000,
1418
   0x00074800, 0x00076800, 0x00070000, 0x00077800,
1419
   0x00072000, 0x00072800, 0x00074000, 0x00077000,
1420
   0x00075000, 0x00073800, 0x00073000, 0x00071800,
1421
   0x00078800, 0x0007d800, 0x0007e000, 0x00079000,
1422
   0x0007c800, 0x0007e800, 0x00078000, 0x0007f800,
1423
   0x0007a000, 0x0007a800, 0x0007c000, 0x0007f000,
1424
   0x0007d000, 0x0007b800, 0x0007b000, 0x00079800,
1425
   0x00060800, 0x00065800, 0x00066000, 0x00061000,
1426
   0x00064800, 0x00066800, 0x00060000, 0x00067800,
1427
   0x00062000, 0x00062800, 0x00064000, 0x00067000,
1428
   0x00065000, 0x00063800, 0x00063000, 0x00061800,
1429
   0x00048800, 0x0004d800, 0x0004e000, 0x00049000,
1430
   0x0004c800, 0x0004e800, 0x00048000, 0x0004f800,
1431
   0x0004a000, 0x0004a800, 0x0004c000, 0x0004f000,
1432
   0x0004d000, 0x0004b800, 0x0004b000, 0x00049800,
1433
   0x00050800, 0x00055800, 0x00056000, 0x00051000,
1434
   0x00054800, 0x00056800, 0x00050000, 0x00057800,
1435
   0x00052000, 0x00052800, 0x00054000, 0x00057000,
1436
   0x00055000, 0x00053800, 0x00053000, 0x00051800,
1437
   0x00030800, 0x00035800, 0x00036000, 0x00031000,
1438
   0x00034800, 0x00036800, 0x00030000, 0x00037800,
1439
   0x00032000, 0x00032800, 0x00034000, 0x00037000,
1440
   0x00035000, 0x00033800, 0x00033000, 0x00031800,
1441
   0x00018800, 0x0001d800, 0x0001e000, 0x00019000,
1442
   0x0001c800, 0x0001e800, 0x00018000, 0x0001f800,
1443
   0x0001a000, 0x0001a800, 0x0001c000, 0x0001f000,
1444
   0x0001d000, 0x0001b800, 0x0001b000, 0x00019800,
1445
   /* 1 */
1446
   0x01c00000, 0x01900000, 0x01a80000, 0x01800000,
1447
   0x01a00000, 0x01c80000, 0x01f80000, 0x01d00000,
1448
   0x01980000, 0x01b80000, 0x01e00000, 0x01e80000,
1449
   0x01b00000, 0x01f00000, 0x01880000, 0x01d80000,
1450
   0x03400000, 0x03100000, 0x03280000, 0x03000000,
1451
   0x03200000, 0x03480000, 0x03780000, 0x03500000,
1452
   0x03180000, 0x03380000, 0x03600000, 0x03680000,
1453
   0x03300000, 0x03700000, 0x03080000, 0x03580000,
1454
   0x00400000, 0x00100000, 0x00280000, 0x00000000,
1455
   0x00200000, 0x00480000, 0x00780000, 0x00500000,
1456
   0x00180000, 0x00380000, 0x00600000, 0x00680000,
1457
   0x00300000, 0x00700000, 0x00080000, 0x00580000,
1458
   0x00c00000, 0x00900000, 0x00a80000, 0x00800000,
1459
   0x00a00000, 0x00c80000, 0x00f80000, 0x00d00000,
1460
   0x00980000, 0x00b80000, 0x00e00000, 0x00e80000,
1461
   0x00b00000, 0x00f00000, 0x00880000, 0x00d80000,
1462
   0x02c00000, 0x02900000, 0x02a80000, 0x02800000,
1463
   0x02a00000, 0x02c80000, 0x02f80000, 0x02d00000,
1464
   0x02980000, 0x02b80000, 0x02e00000, 0x02e80000,
1465
   0x02b00000, 0x02f00000, 0x02880000, 0x02d80000,
1466
   0x06c00000, 0x06900000, 0x06a80000, 0x06800000,
1467
   0x06a00000, 0x06c80000, 0x06f80000, 0x06d00000,
1468
   0x06980000, 0x06b80000, 0x06e00000, 0x06e80000,
1469
   0x06b00000, 0x06f00000, 0x06880000, 0x06d80000,
1470
   0x05400000, 0x05100000, 0x05280000, 0x05000000,
1471
   0x05200000, 0x05480000, 0x05780000, 0x05500000,
1472
   0x05180000, 0x05380000, 0x05600000, 0x05680000,
1473
   0x05300000, 0x05700000, 0x05080000, 0x05580000,
1474
   0x04400000, 0x04100000, 0x04280000, 0x04000000,
1475
   0x04200000, 0x04480000, 0x04780000, 0x04500000,
1476
   0x04180000, 0x04380000, 0x04600000, 0x04680000,
1477
   0x04300000, 0x04700000, 0x04080000, 0x04580000,
1478
   0x05c00000, 0x05900000, 0x05a80000, 0x05800000,
1479
   0x05a00000, 0x05c80000, 0x05f80000, 0x05d00000,
1480
   0x05980000, 0x05b80000, 0x05e00000, 0x05e80000,
1481
   0x05b00000, 0x05f00000, 0x05880000, 0x05d80000,
1482
   0x01400000, 0x01100000, 0x01280000, 0x01000000,
1483
   0x01200000, 0x01480000, 0x01780000, 0x01500000,
1484
   0x01180000, 0x01380000, 0x01600000, 0x01680000,
1485
   0x01300000, 0x01700000, 0x01080000, 0x01580000,
1486
   0x04c00000, 0x04900000, 0x04a80000, 0x04800000,
1487
   0x04a00000, 0x04c80000, 0x04f80000, 0x04d00000,
1488
   0x04980000, 0x04b80000, 0x04e00000, 0x04e80000,
1489
   0x04b00000, 0x04f00000, 0x04880000, 0x04d80000,
1490
   0x03c00000, 0x03900000, 0x03a80000, 0x03800000,
1491
   0x03a00000, 0x03c80000, 0x03f80000, 0x03d00000,
1492
   0x03980000, 0x03b80000, 0x03e00000, 0x03e80000,
1493
   0x03b00000, 0x03f00000, 0x03880000, 0x03d80000,
1494
   0x07400000, 0x07100000, 0x07280000, 0x07000000,
1495
   0x07200000, 0x07480000, 0x07780000, 0x07500000,
1496
   0x07180000, 0x07380000, 0x07600000, 0x07680000,
1497
   0x07300000, 0x07700000, 0x07080000, 0x07580000,
1498
   0x07c00000, 0x07900000, 0x07a80000, 0x07800000,
1499
   0x07a00000, 0x07c80000, 0x07f80000, 0x07d00000,
1500
   0x07980000, 0x07b80000, 0x07e00000, 0x07e80000,
1501
   0x07b00000, 0x07f00000, 0x07880000, 0x07d80000,
1502
   0x06400000, 0x06100000, 0x06280000, 0x06000000,
1503
   0x06200000, 0x06480000, 0x06780000, 0x06500000,
1504
   0x06180000, 0x06380000, 0x06600000, 0x06680000,
1505
   0x06300000, 0x06700000, 0x06080000, 0x06580000,
1506
   0x02400000, 0x02100000, 0x02280000, 0x02000000,
1507
   0x02200000, 0x02480000, 0x02780000, 0x02500000,
1508
   0x02180000, 0x02380000, 0x02600000, 0x02680000,
1509
   0x02300000, 0x02700000, 0x02080000, 0x02580000,
1510
   /* 2 */
1511
   0x40000006, 0x68000006, 0x58000006, 0x00000006,
1512
   0x20000006, 0x28000006, 0x08000006, 0x10000006,
1513
   0x48000006, 0x18000006, 0x60000006, 0x70000006,
1514
   0x30000006, 0x78000006, 0x50000006, 0x38000006,
1515
   0xc0000004, 0xe8000004, 0xd8000004, 0x80000004,
1516
   0xa0000004, 0xa8000004, 0x88000004, 0x90000004,
1517
   0xc8000004, 0x98000004, 0xe0000004, 0xf0000004,
1518
   0xb0000004, 0xf8000004, 0xd0000004, 0xb8000004,
1519
   0xc0000005, 0xe8000005, 0xd8000005, 0x80000005,
1520
   0xa0000005, 0xa8000005, 0x88000005, 0x90000005,
1521
   0xc8000005, 0x98000005, 0xe0000005, 0xf0000005,
1522
   0xb0000005, 0xf8000005, 0xd0000005, 0xb8000005,
1523
   0xc0000000, 0xe8000000, 0xd8000000, 0x80000000,
1524
   0xa0000000, 0xa8000000, 0x88000000, 0x90000000,
1525
   0xc8000000, 0x98000000, 0xe0000000, 0xf0000000,
1526
   0xb0000000, 0xf8000000, 0xd0000000, 0xb8000000,
1527
   0x40000004, 0x68000004, 0x58000004, 0x00000004,
1528
   0x20000004, 0x28000004, 0x08000004, 0x10000004,
1529
   0x48000004, 0x18000004, 0x60000004, 0x70000004,
1530
   0x30000004, 0x78000004, 0x50000004, 0x38000004,
1531
   0x40000007, 0x68000007, 0x58000007, 0x00000007,
1532
   0x20000007, 0x28000007, 0x08000007, 0x10000007,
1533
   0x48000007, 0x18000007, 0x60000007, 0x70000007,
1534
   0x30000007, 0x78000007, 0x50000007, 0x38000007,
1535
   0x40000001, 0x68000001, 0x58000001, 0x00000001,
1536
   0x20000001, 0x28000001, 0x08000001, 0x10000001,
1537
   0x48000001, 0x18000001, 0x60000001, 0x70000001,
1538
   0x30000001, 0x78000001, 0x50000001, 0x38000001,
1539
   0x40000002, 0x68000002, 0x58000002, 0x00000002,
1540
   0x20000002, 0x28000002, 0x08000002, 0x10000002,
1541
   0x48000002, 0x18000002, 0x60000002, 0x70000002,
1542
   0x30000002, 0x78000002, 0x50000002, 0x38000002,
1543
   0xc0000003, 0xe8000003, 0xd8000003, 0x80000003,
1544
   0xa0000003, 0xa8000003, 0x88000003, 0x90000003,
1545
   0xc8000003, 0x98000003, 0xe0000003, 0xf0000003,
1546
   0xb0000003, 0xf8000003, 0xd0000003, 0xb8000003,
1547
   0xc0000001, 0xe8000001, 0xd8000001, 0x80000001,
1548
   0xa0000001, 0xa8000001, 0x88000001, 0x90000001,
1549
   0xc8000001, 0x98000001, 0xe0000001, 0xf0000001,
1550
   0xb0000001, 0xf8000001, 0xd0000001, 0xb8000001,
1551
   0x40000003, 0x68000003, 0x58000003, 0x00000003,
1552
   0x20000003, 0x28000003, 0x08000003, 0x10000003,
1553
   0x48000003, 0x18000003, 0x60000003, 0x70000003,
1554
   0x30000003, 0x78000003, 0x50000003, 0x38000003,
1555
   0xc0000002, 0xe8000002, 0xd8000002, 0x80000002,
1556
   0xa0000002, 0xa8000002, 0x88000002, 0x90000002,
1557
   0xc8000002, 0x98000002, 0xe0000002, 0xf0000002,
1558
   0xb0000002, 0xf8000002, 0xd0000002, 0xb8000002,
1559
   0x40000005, 0x68000005, 0x58000005, 0x00000005,
1560
   0x20000005, 0x28000005, 0x08000005, 0x10000005,
1561
   0x48000005, 0x18000005, 0x60000005, 0x70000005,
1562
   0x30000005, 0x78000005, 0x50000005, 0x38000005,
1563
   0x40000000, 0x68000000, 0x58000000, 0x00000000,
1564
   0x20000000, 0x28000000, 0x08000000, 0x10000000,
1565
   0x48000000, 0x18000000, 0x60000000, 0x70000000,
1566
   0x30000000, 0x78000000, 0x50000000, 0x38000000,
1567
   0xc0000007, 0xe8000007, 0xd8000007, 0x80000007,
1568
   0xa0000007, 0xa8000007, 0x88000007, 0x90000007,
1569
   0xc8000007, 0x98000007, 0xe0000007, 0xf0000007,
1570
   0xb0000007, 0xf8000007, 0xd0000007, 0xb8000007,
1571
   0xc0000006, 0xe8000006, 0xd8000006, 0x80000006,
1572
   0xa0000006, 0xa8000006, 0x88000006, 0x90000006,
1573
   0xc8000006, 0x98000006, 0xe0000006, 0xf0000006,
1574
   0xb0000006, 0xf8000006, 0xd0000006, 0xb8000006,
1575
   /* 3 */
1576
   0x000003d0, 0x000003c8, 0x000003b0, 0x000003c0,
1577
   0x000003e8, 0x000003f0, 0x00000390, 0x00000380,
1578
   0x000003f8, 0x00000398, 0x000003a8, 0x000003d8,
1579
   0x000003a0, 0x00000388, 0x000003e0, 0x000003b8,
1580
   0x00000250, 0x00000248, 0x00000230, 0x00000240,
1581
   0x00000268, 0x00000270, 0x00000210, 0x00000200,
1582
   0x00000278, 0x00000218, 0x00000228, 0x00000258,
1583
   0x00000220, 0x00000208, 0x00000260, 0x00000238,
1584
   0x00000050, 0x00000048, 0x00000030, 0x00000040,
1585
   0x00000068, 0x00000070, 0x00000010, 0x00000000,
1586
   0x00000078, 0x00000018, 0x00000028, 0x00000058,
1587
   0x00000020, 0x00000008, 0x00000060, 0x00000038,
1588
   0x000002d0, 0x000002c8, 0x000002b0, 0x000002c0,
1589
   0x000002e8, 0x000002f0, 0x00000290, 0x00000280,
1590
   0x000002f8, 0x00000298, 0x000002a8, 0x000002d8,
1591
   0x000002a0, 0x00000288, 0x000002e0, 0x000002b8,
1592
   0x00000550, 0x00000548, 0x00000530, 0x00000540,
1593
   0x00000568, 0x00000570, 0x00000510, 0x00000500,
1594
   0x00000578, 0x00000518, 0x00000528, 0x00000558,
1595
   0x00000520, 0x00000508, 0x00000560, 0x00000538,
1596
   0x00000150, 0x00000148, 0x00000130, 0x00000140,
1597
   0x00000168, 0x00000170, 0x00000110, 0x00000100,
1598
   0x00000178, 0x00000118, 0x00000128, 0x00000158,
1599
   0x00000120, 0x00000108, 0x00000160, 0x00000138,
1600
   0x000007d0, 0x000007c8, 0x000007b0, 0x000007c0,
1601
   0x000007e8, 0x000007f0, 0x00000790, 0x00000780,
1602
   0x000007f8, 0x00000798, 0x000007a8, 0x000007d8,
1603
   0x000007a0, 0x00000788, 0x000007e0, 0x000007b8,
1604
   0x00000750, 0x00000748, 0x00000730, 0x00000740,
1605
   0x00000768, 0x00000770, 0x00000710, 0x00000700,
1606
   0x00000778, 0x00000718, 0x00000728, 0x00000758,
1607
   0x00000720, 0x00000708, 0x00000760, 0x00000738,
1608
   0x00000650, 0x00000648, 0x00000630, 0x00000640,
1609
   0x00000668, 0x00000670, 0x00000610, 0x00000600,
1610
   0x00000678, 0x00000618, 0x00000628, 0x00000658,
1611
   0x00000620, 0x00000608, 0x00000660, 0x00000638,
1612
   0x00000350, 0x00000348, 0x00000330, 0x00000340,
1613
   0x00000368, 0x00000370, 0x00000310, 0x00000300,
1614
   0x00000378, 0x00000318, 0x00000328, 0x00000358,
1615
   0x00000320, 0x00000308, 0x00000360, 0x00000338,
1616
   0x000000d0, 0x000000c8, 0x000000b0, 0x000000c0,
1617
   0x000000e8, 0x000000f0, 0x00000090, 0x00000080,
1618
   0x000000f8, 0x00000098, 0x000000a8, 0x000000d8,
1619
   0x000000a0, 0x00000088, 0x000000e0, 0x000000b8,
1620
   0x000005d0, 0x000005c8, 0x000005b0, 0x000005c0,
1621
   0x000005e8, 0x000005f0, 0x00000590, 0x00000580,
1622
   0x000005f8, 0x00000598, 0x000005a8, 0x000005d8,
1623
   0x000005a0, 0x00000588, 0x000005e0, 0x000005b8,
1624
   0x000006d0, 0x000006c8, 0x000006b0, 0x000006c0,
1625
   0x000006e8, 0x000006f0, 0x00000690, 0x00000680,
1626
   0x000006f8, 0x00000698, 0x000006a8, 0x000006d8,
1627
   0x000006a0, 0x00000688, 0x000006e0, 0x000006b8,
1628
   0x000004d0, 0x000004c8, 0x000004b0, 0x000004c0,
1629
   0x000004e8, 0x000004f0, 0x00000490, 0x00000480,
1630
   0x000004f8, 0x00000498, 0x000004a8, 0x000004d8,
1631
   0x000004a0, 0x00000488, 0x000004e0, 0x000004b8,
1632
   0x000001d0, 0x000001c8, 0x000001b0, 0x000001c0,
1633
   0x000001e8, 0x000001f0, 0x00000190, 0x00000180,
1634
   0x000001f8, 0x00000198, 0x000001a8, 0x000001d8,
1635
   0x000001a0, 0x00000188, 0x000001e0, 0x000001b8,
1636
   0x00000450, 0x00000448, 0x00000430, 0x00000440,
1637
   0x00000468, 0x00000470, 0x00000410, 0x00000400,
1638
   0x00000478, 0x00000418, 0x00000428, 0x00000458,
1639
   0x00000420, 0x00000408, 0x00000460, 0x00000438,
1640
   }
1641
};
1642
1643
const struct gost28147_param gost28147_param_CryptoPro_D = {
1644
  1,
1645
  {
1646
   /* 0 */
1647
   0x0005f800, 0x0005e000, 0x00059000, 0x0005d000,
1648
   0x0005b000, 0x0005a000, 0x0005a800, 0x00058000,
1649
   0x0005b800, 0x0005c800, 0x0005f000, 0x0005e800,
1650
   0x00058800, 0x0005d800, 0x0005c000, 0x00059800,
1651
   0x00037800, 0x00036000, 0x00031000, 0x00035000,
1652
   0x00033000, 0x00032000, 0x00032800, 0x00030000,
1653
   0x00033800, 0x00034800, 0x00037000, 0x00036800,
1654
   0x00030800, 0x00035800, 0x00034000, 0x00031800,
1655
   0x0001f800, 0x0001e000, 0x00019000, 0x0001d000,
1656
   0x0001b000, 0x0001a000, 0x0001a800, 0x00018000,
1657
   0x0001b800, 0x0001c800, 0x0001f000, 0x0001e800,
1658
   0x00018800, 0x0001d800, 0x0001c000, 0x00019800,
1659
   0x00027800, 0x00026000, 0x00021000, 0x00025000,
1660
   0x00023000, 0x00022000, 0x00022800, 0x00020000,
1661
   0x00023800, 0x00024800, 0x00027000, 0x00026800,
1662
   0x00020800, 0x00025800, 0x00024000, 0x00021800,
1663
   0x00067800, 0x00066000, 0x00061000, 0x00065000,
1664
   0x00063000, 0x00062000, 0x00062800, 0x00060000,
1665
   0x00063800, 0x00064800, 0x00067000, 0x00066800,
1666
   0x00060800, 0x00065800, 0x00064000, 0x00061800,
1667
   0x0007f800, 0x0007e000, 0x00079000, 0x0007d000,
1668
   0x0007b000, 0x0007a000, 0x0007a800, 0x00078000,
1669
   0x0007b800, 0x0007c800, 0x0007f000, 0x0007e800,
1670
   0x00078800, 0x0007d800, 0x0007c000, 0x00079800,
1671
   0x00077800, 0x00076000, 0x00071000, 0x00075000,
1672
   0x00073000, 0x00072000, 0x00072800, 0x00070000,
1673
   0x00073800, 0x00074800, 0x00077000, 0x00076800,
1674
   0x00070800, 0x00075800, 0x00074000, 0x00071800,
1675
   0x00017800, 0x00016000, 0x00011000, 0x00015000,
1676
   0x00013000, 0x00012000, 0x00012800, 0x00010000,
1677
   0x00013800, 0x00014800, 0x00017000, 0x00016800,
1678
   0x00010800, 0x00015800, 0x00014000, 0x00011800,
1679
   0x0003f800, 0x0003e000, 0x00039000, 0x0003d000,
1680
   0x0003b000, 0x0003a000, 0x0003a800, 0x00038000,
1681
   0x0003b800, 0x0003c800, 0x0003f000, 0x0003e800,
1682
   0x00038800, 0x0003d800, 0x0003c000, 0x00039800,
1683
   0x0006f800, 0x0006e000, 0x00069000, 0x0006d000,
1684
   0x0006b000, 0x0006a000, 0x0006a800, 0x00068000,
1685
   0x0006b800, 0x0006c800, 0x0006f000, 0x0006e800,
1686
   0x00068800, 0x0006d800, 0x0006c000, 0x00069800,
1687
   0x00047800, 0x00046000, 0x00041000, 0x00045000,
1688
   0x00043000, 0x00042000, 0x00042800, 0x00040000,
1689
   0x00043800, 0x00044800, 0x00047000, 0x00046800,
1690
   0x00040800, 0x00045800, 0x00044000, 0x00041800,
1691
   0x00007800, 0x00006000, 0x00001000, 0x00005000,
1692
   0x00003000, 0x00002000, 0x00002800, 0x00000000,
1693
   0x00003800, 0x00004800, 0x00007000, 0x00006800,
1694
   0x00000800, 0x00005800, 0x00004000, 0x00001800,
1695
   0x0002f800, 0x0002e000, 0x00029000, 0x0002d000,
1696
   0x0002b000, 0x0002a000, 0x0002a800, 0x00028000,
1697
   0x0002b800, 0x0002c800, 0x0002f000, 0x0002e800,
1698
   0x00028800, 0x0002d800, 0x0002c000, 0x00029800,
1699
   0x00057800, 0x00056000, 0x00051000, 0x00055000,
1700
   0x00053000, 0x00052000, 0x00052800, 0x00050000,
1701
   0x00053800, 0x00054800, 0x00057000, 0x00056800,
1702
   0x00050800, 0x00055800, 0x00054000, 0x00051800,
1703
   0x0004f800, 0x0004e000, 0x00049000, 0x0004d000,
1704
   0x0004b000, 0x0004a000, 0x0004a800, 0x00048000,
1705
   0x0004b800, 0x0004c800, 0x0004f000, 0x0004e800,
1706
   0x00048800, 0x0004d800, 0x0004c000, 0x00049800,
1707
   0x0000f800, 0x0000e000, 0x00009000, 0x0000d000,
1708
   0x0000b000, 0x0000a000, 0x0000a800, 0x00008000,
1709
   0x0000b800, 0x0000c800, 0x0000f000, 0x0000e800,
1710
   0x00008800, 0x0000d800, 0x0000c000, 0x00009800,
1711
   /* 1 */
1712
   0x00880000, 0x00e00000, 0x00d80000, 0x00800000,
1713
   0x00f80000, 0x00f00000, 0x00b00000, 0x00a80000,
1714
   0x00d00000, 0x00e80000, 0x00a00000, 0x00c00000,
1715
   0x00c80000, 0x00980000, 0x00b80000, 0x00900000,
1716
   0x02880000, 0x02e00000, 0x02d80000, 0x02800000,
1717
   0x02f80000, 0x02f00000, 0x02b00000, 0x02a80000,
1718
   0x02d00000, 0x02e80000, 0x02a00000, 0x02c00000,
1719
   0x02c80000, 0x02980000, 0x02b80000, 0x02900000,
1720
   0x07080000, 0x07600000, 0x07580000, 0x07000000,
1721
   0x07780000, 0x07700000, 0x07300000, 0x07280000,
1722
   0x07500000, 0x07680000, 0x07200000, 0x07400000,
1723
   0x07480000, 0x07180000, 0x07380000, 0x07100000,
1724
   0x06080000, 0x06600000, 0x06580000, 0x06000000,
1725
   0x06780000, 0x06700000, 0x06300000, 0x06280000,
1726
   0x06500000, 0x06680000, 0x06200000, 0x06400000,
1727
   0x06480000, 0x06180000, 0x06380000, 0x06100000,
1728
   0x05080000, 0x05600000, 0x05580000, 0x05000000,
1729
   0x05780000, 0x05700000, 0x05300000, 0x05280000,
1730
   0x05500000, 0x05680000, 0x05200000, 0x05400000,
1731
   0x05480000, 0x05180000, 0x05380000, 0x05100000,
1732
   0x03880000, 0x03e00000, 0x03d80000, 0x03800000,
1733
   0x03f80000, 0x03f00000, 0x03b00000, 0x03a80000,
1734
   0x03d00000, 0x03e80000, 0x03a00000, 0x03c00000,
1735
   0x03c80000, 0x03980000, 0x03b80000, 0x03900000,
1736
   0x00080000, 0x00600000, 0x00580000, 0x00000000,
1737
   0x00780000, 0x00700000, 0x00300000, 0x00280000,
1738
   0x00500000, 0x00680000, 0x00200000, 0x00400000,
1739
   0x00480000, 0x00180000, 0x00380000, 0x00100000,
1740
   0x06880000, 0x06e00000, 0x06d80000, 0x06800000,
1741
   0x06f80000, 0x06f00000, 0x06b00000, 0x06a80000,
1742
   0x06d00000, 0x06e80000, 0x06a00000, 0x06c00000,
1743
   0x06c80000, 0x06980000, 0x06b80000, 0x06900000,
1744
   0x03080000, 0x03600000, 0x03580000, 0x03000000,
1745
   0x03780000, 0x03700000, 0x03300000, 0x03280000,
1746
   0x03500000, 0x03680000, 0x03200000, 0x03400000,
1747
   0x03480000, 0x03180000, 0x03380000, 0x03100000,
1748
   0x01080000, 0x01600000, 0x01580000, 0x01000000,
1749
   0x01780000, 0x01700000, 0x01300000, 0x01280000,
1750
   0x01500000, 0x01680000, 0x01200000, 0x01400000,
1751
   0x01480000, 0x01180000, 0x01380000, 0x01100000,
1752
   0x05880000, 0x05e00000, 0x05d80000, 0x05800000,
1753
   0x05f80000, 0x05f00000, 0x05b00000, 0x05a80000,
1754
   0x05d00000, 0x05e80000, 0x05a00000, 0x05c00000,
1755
   0x05c80000, 0x05980000, 0x05b80000, 0x05900000,
1756
   0x02080000, 0x02600000, 0x02580000, 0x02000000,
1757
   0x02780000, 0x02700000, 0x02300000, 0x02280000,
1758
   0x02500000, 0x02680000, 0x02200000, 0x02400000,
1759
   0x02480000, 0x02180000, 0x02380000, 0x02100000,
1760
   0x04880000, 0x04e00000, 0x04d80000, 0x04800000,
1761
   0x04f80000, 0x04f00000, 0x04b00000, 0x04a80000,
1762
   0x04d00000, 0x04e80000, 0x04a00000, 0x04c00000,
1763
   0x04c80000, 0x04980000, 0x04b80000, 0x04900000,
1764
   0x01880000, 0x01e00000, 0x01d80000, 0x01800000,
1765
   0x01f80000, 0x01f00000, 0x01b00000, 0x01a80000,
1766
   0x01d00000, 0x01e80000, 0x01a00000, 0x01c00000,
1767
   0x01c80000, 0x01980000, 0x01b80000, 0x01900000,
1768
   0x07880000, 0x07e00000, 0x07d80000, 0x07800000,
1769
   0x07f80000, 0x07f00000, 0x07b00000, 0x07a80000,
1770
   0x07d00000, 0x07e80000, 0x07a00000, 0x07c00000,
1771
   0x07c80000, 0x07980000, 0x07b80000, 0x07900000,
1772
   0x04080000, 0x04600000, 0x04580000, 0x04000000,
1773
   0x04780000, 0x04700000, 0x04300000, 0x04280000,
1774
   0x04500000, 0x04680000, 0x04200000, 0x04400000,
1775
   0x04480000, 0x04180000, 0x04380000, 0x04100000,
1776
   /* 2 */
1777
   0x00000004, 0x60000004, 0x40000004, 0x48000004,
1778
   0x68000004, 0x10000004, 0x50000004, 0x58000004,
1779
   0x38000004, 0x18000004, 0x30000004, 0x28000004,
1780
   0x20000004, 0x70000004, 0x78000004, 0x08000004,
1781
   0x00000000, 0x60000000, 0x40000000, 0x48000000,
1782
   0x68000000, 0x10000000, 0x50000000, 0x58000000,
1783
   0x38000000, 0x18000000, 0x30000000, 0x28000000,
1784
   0x20000000, 0x70000000, 0x78000000, 0x08000000,
1785
   0x80000007, 0xe0000007, 0xc0000007, 0xc8000007,
1786
   0xe8000007, 0x90000007, 0xd0000007, 0xd8000007,
1787
   0xb8000007, 0x98000007, 0xb0000007, 0xa8000007,
1788
   0xa0000007, 0xf0000007, 0xf8000007, 0x88000007,
1789
   0x80000001, 0xe0000001, 0xc0000001, 0xc8000001,
1790
   0xe8000001, 0x90000001, 0xd0000001, 0xd8000001,
1791
   0xb8000001, 0x98000001, 0xb0000001, 0xa8000001,
1792
   0xa0000001, 0xf0000001, 0xf8000001, 0x88000001,
1793
   0x00000001, 0x60000001, 0x40000001, 0x48000001,
1794
   0x68000001, 0x10000001, 0x50000001, 0x58000001,
1795
   0x38000001, 0x18000001, 0x30000001, 0x28000001,
1796
   0x20000001, 0x70000001, 0x78000001, 0x08000001,
1797
   0x80000002, 0xe0000002, 0xc0000002, 0xc8000002,
1798
   0xe8000002, 0x90000002, 0xd0000002, 0xd8000002,
1799
   0xb8000002, 0x98000002, 0xb0000002, 0xa8000002,
1800
   0xa0000002, 0xf0000002, 0xf8000002, 0x88000002,
1801
   0x00000007, 0x60000007, 0x40000007, 0x48000007,
1802
   0x68000007, 0x10000007, 0x50000007, 0x58000007,
1803
   0x38000007, 0x18000007, 0x30000007, 0x28000007,
1804
   0x20000007, 0x70000007, 0x78000007, 0x08000007,
1805
   0x80000005, 0xe0000005, 0xc0000005, 0xc8000005,
1806
   0xe8000005, 0x90000005, 0xd0000005, 0xd8000005,
1807
   0xb8000005, 0x98000005, 0xb0000005, 0xa8000005,
1808
   0xa0000005, 0xf0000005, 0xf8000005, 0x88000005,
1809
   0x80000000, 0xe0000000, 0xc0000000, 0xc8000000,
1810
   0xe8000000, 0x90000000, 0xd0000000, 0xd8000000,
1811
   0xb8000000, 0x98000000, 0xb0000000, 0xa8000000,
1812
   0xa0000000, 0xf0000000, 0xf8000000, 0x88000000,
1813
   0x00000005, 0x60000005, 0x40000005, 0x48000005,
1814
   0x68000005, 0x10000005, 0x50000005, 0x58000005,
1815
   0x38000005, 0x18000005, 0x30000005, 0x28000005,
1816
   0x20000005, 0x70000005, 0x78000005, 0x08000005,
1817
   0x00000002, 0x60000002, 0x40000002, 0x48000002,
1818
   0x68000002, 0x10000002, 0x50000002, 0x58000002,
1819
   0x38000002, 0x18000002, 0x30000002, 0x28000002,
1820
   0x20000002, 0x70000002, 0x78000002, 0x08000002,
1821
   0x80000003, 0xe0000003, 0xc0000003, 0xc8000003,
1822
   0xe8000003, 0x90000003, 0xd0000003, 0xd8000003,
1823
   0xb8000003, 0x98000003, 0xb0000003, 0xa8000003,
1824
   0xa0000003, 0xf0000003, 0xf8000003, 0x88000003,
1825
   0x00000006, 0x60000006, 0x40000006, 0x48000006,
1826
   0x68000006, 0x10000006, 0x50000006, 0x58000006,
1827
   0x38000006, 0x18000006, 0x30000006, 0x28000006,
1828
   0x20000006, 0x70000006, 0x78000006, 0x08000006,
1829
   0x80000004, 0xe0000004, 0xc0000004, 0xc8000004,
1830
   0xe8000004, 0x90000004, 0xd0000004, 0xd8000004,
1831
   0xb8000004, 0x98000004, 0xb0000004, 0xa8000004,
1832
   0xa0000004, 0xf0000004, 0xf8000004, 0x88000004,
1833
   0x80000006, 0xe0000006, 0xc0000006, 0xc8000006,
1834
   0xe8000006, 0x90000006, 0xd0000006, 0xd8000006,
1835
   0xb8000006, 0x98000006, 0xb0000006, 0xa8000006,
1836
   0xa0000006, 0xf0000006, 0xf8000006, 0x88000006,
1837
   0x00000003, 0x60000003, 0x40000003, 0x48000003,
1838
   0x68000003, 0x10000003, 0x50000003, 0x58000003,
1839
   0x38000003, 0x18000003, 0x30000003, 0x28000003,
1840
   0x20000003, 0x70000003, 0x78000003, 0x08000003,
1841
   /* 3 */
1842
   0x00000098, 0x00000080, 0x000000b0, 0x000000f8,
1843
   0x00000088, 0x000000f0, 0x000000c8, 0x00000090,
1844
   0x000000e8, 0x000000c0, 0x000000e0, 0x000000a0,
1845
   0x000000d8, 0x000000d0, 0x000000a8, 0x000000b8,
1846
   0x00000518, 0x00000500, 0x00000530, 0x00000578,
1847
   0x00000508, 0x00000570, 0x00000548, 0x00000510,
1848
   0x00000568, 0x00000540, 0x00000560, 0x00000520,
1849
   0x00000558, 0x00000550, 0x00000528, 0x00000538,
1850
   0x00000318, 0x00000300, 0x00000330, 0x00000378,
1851
   0x00000308, 0x00000370, 0x00000348, 0x00000310,
1852
   0x00000368, 0x00000340, 0x00000360, 0x00000320,
1853
   0x00000358, 0x00000350, 0x00000328, 0x00000338,
1854
   0x00000418, 0x00000400, 0x00000430, 0x00000478,
1855
   0x00000408, 0x00000470, 0x00000448, 0x00000410,
1856
   0x00000468, 0x00000440, 0x00000460, 0x00000420,
1857
   0x00000458, 0x00000450, 0x00000428, 0x00000438,
1858
   0x00000798, 0x00000780, 0x000007b0, 0x000007f8,
1859
   0x00000788, 0x000007f0, 0x000007c8, 0x00000790,
1860
   0x000007e8, 0x000007c0, 0x000007e0, 0x000007a0,
1861
   0x000007d8, 0x000007d0, 0x000007a8, 0x000007b8,
1862
   0x00000598, 0x00000580, 0x000005b0, 0x000005f8,
1863
   0x00000588, 0x000005f0, 0x000005c8, 0x00000590,
1864
   0x000005e8, 0x000005c0, 0x000005e0, 0x000005a0,
1865
   0x000005d8, 0x000005d0, 0x000005a8, 0x000005b8,
1866
   0x00000018, 0x00000000, 0x00000030, 0x00000078,
1867
   0x00000008, 0x00000070, 0x00000048, 0x00000010,
1868
   0x00000068, 0x00000040, 0x00000060, 0x00000020,
1869
   0x00000058, 0x00000050, 0x00000028, 0x00000038,
1870
   0x00000218, 0x00000200, 0x00000230, 0x00000278,
1871
   0x00000208, 0x00000270, 0x00000248, 0x00000210,
1872
   0x00000268, 0x00000240, 0x00000260, 0x00000220,
1873
   0x00000258, 0x00000250, 0x00000228, 0x00000238,
1874
   0x00000618, 0x00000600, 0x00000630, 0x00000678,
1875
   0x00000608, 0x00000670, 0x00000648, 0x00000610,
1876
   0x00000668, 0x00000640, 0x00000660, 0x00000620,
1877
   0x00000658, 0x00000650, 0x00000628, 0x00000638,
1878
   0x00000198, 0x00000180, 0x000001b0, 0x000001f8,
1879
   0x00000188, 0x000001f0, 0x000001c8, 0x00000190,
1880
   0x000001e8, 0x000001c0, 0x000001e0, 0x000001a0,
1881
   0x000001d8, 0x000001d0, 0x000001a8, 0x000001b8,
1882
   0x00000298, 0x00000280, 0x000002b0, 0x000002f8,
1883
   0x00000288, 0x000002f0, 0x000002c8, 0x00000290,
1884
   0x000002e8, 0x000002c0, 0x000002e0, 0x000002a0,
1885
   0x000002d8, 0x000002d0, 0x000002a8, 0x000002b8,
1886
   0x00000498, 0x00000480, 0x000004b0, 0x000004f8,
1887
   0x00000488, 0x000004f0, 0x000004c8, 0x00000490,
1888
   0x000004e8, 0x000004c0, 0x000004e0, 0x000004a0,
1889
   0x000004d8, 0x000004d0, 0x000004a8, 0x000004b8,
1890
   0x00000398, 0x00000380, 0x000003b0, 0x000003f8,
1891
   0x00000388, 0x000003f0, 0x000003c8, 0x00000390,
1892
   0x000003e8, 0x000003c0, 0x000003e0, 0x000003a0,
1893
   0x000003d8, 0x000003d0, 0x000003a8, 0x000003b8,
1894
   0x00000698, 0x00000680, 0x000006b0, 0x000006f8,
1895
   0x00000688, 0x000006f0, 0x000006c8, 0x00000690,
1896
   0x000006e8, 0x000006c0, 0x000006e0, 0x000006a0,
1897
   0x000006d8, 0x000006d0, 0x000006a8, 0x000006b8,
1898
   0x00000118, 0x00000100, 0x00000130, 0x00000178,
1899
   0x00000108, 0x00000170, 0x00000148, 0x00000110,
1900
   0x00000168, 0x00000140, 0x00000160, 0x00000120,
1901
   0x00000158, 0x00000150, 0x00000128, 0x00000138,
1902
   0x00000718, 0x00000700, 0x00000730, 0x00000778,
1903
   0x00000708, 0x00000770, 0x00000748, 0x00000710,
1904
   0x00000768, 0x00000740, 0x00000760, 0x00000720,
1905
   0x00000758, 0x00000750, 0x00000728, 0x00000738,
1906
   }
1907
};
1908
1909
const struct gost28147_param gost28147_param_TC26_Z = {
1910
  1,
1911
  {
1912
   /* 0 */
1913
   0x00036000, 0x00032000, 0x00033000, 0x00031000,
1914
   0x00035000, 0x00032800, 0x00035800, 0x00034800,
1915
   0x00037000, 0x00034000, 0x00036800, 0x00033800,
1916
   0x00030000, 0x00031800, 0x00037800, 0x00030800,
1917
   0x00046000, 0x00042000, 0x00043000, 0x00041000,
1918
   0x00045000, 0x00042800, 0x00045800, 0x00044800,
1919
   0x00047000, 0x00044000, 0x00046800, 0x00043800,
1920
   0x00040000, 0x00041800, 0x00047800, 0x00040800,
1921
   0x00016000, 0x00012000, 0x00013000, 0x00011000,
1922
   0x00015000, 0x00012800, 0x00015800, 0x00014800,
1923
   0x00017000, 0x00014000, 0x00016800, 0x00013800,
1924
   0x00010000, 0x00011800, 0x00017800, 0x00010800,
1925
   0x0001e000, 0x0001a000, 0x0001b000, 0x00019000,
1926
   0x0001d000, 0x0001a800, 0x0001d800, 0x0001c800,
1927
   0x0001f000, 0x0001c000, 0x0001e800, 0x0001b800,
1928
   0x00018000, 0x00019800, 0x0001f800, 0x00018800,
1929
   0x0004e000, 0x0004a000, 0x0004b000, 0x00049000,
1930
   0x0004d000, 0x0004a800, 0x0004d800, 0x0004c800,
1931
   0x0004f000, 0x0004c000, 0x0004e800, 0x0004b800,
1932
   0x00048000, 0x00049800, 0x0004f800, 0x00048800,
1933
   0x00056000, 0x00052000, 0x00053000, 0x00051000,
1934
   0x00055000, 0x00052800, 0x00055800, 0x00054800,
1935
   0x00057000, 0x00054000, 0x00056800, 0x00053800,
1936
   0x00050000, 0x00051800, 0x00057800, 0x00050800,
1937
   0x0002e000, 0x0002a000, 0x0002b000, 0x00029000,
1938
   0x0002d000, 0x0002a800, 0x0002d800, 0x0002c800,
1939
   0x0002f000, 0x0002c000, 0x0002e800, 0x0002b800,
1940
   0x00028000, 0x00029800, 0x0002f800, 0x00028800,
1941
   0x00066000, 0x00062000, 0x00063000, 0x00061000,
1942
   0x00065000, 0x00062800, 0x00065800, 0x00064800,
1943
   0x00067000, 0x00064000, 0x00066800, 0x00063800,
1944
   0x00060000, 0x00061800, 0x00067800, 0x00060800,
1945
   0x0000e000, 0x0000a000, 0x0000b000, 0x00009000,
1946
   0x0000d000, 0x0000a800, 0x0000d800, 0x0000c800,
1947
   0x0000f000, 0x0000c000, 0x0000e800, 0x0000b800,
1948
   0x00008000, 0x00009800, 0x0000f800, 0x00008800,
1949
   0x00076000, 0x00072000, 0x00073000, 0x00071000,
1950
   0x00075000, 0x00072800, 0x00075800, 0x00074800,
1951
   0x00077000, 0x00074000, 0x00076800, 0x00073800,
1952
   0x00070000, 0x00071800, 0x00077800, 0x00070800,
1953
   0x00026000, 0x00022000, 0x00023000, 0x00021000,
1954
   0x00025000, 0x00022800, 0x00025800, 0x00024800,
1955
   0x00027000, 0x00024000, 0x00026800, 0x00023800,
1956
   0x00020000, 0x00021800, 0x00027800, 0x00020800,
1957
   0x0003e000, 0x0003a000, 0x0003b000, 0x00039000,
1958
   0x0003d000, 0x0003a800, 0x0003d800, 0x0003c800,
1959
   0x0003f000, 0x0003c000, 0x0003e800, 0x0003b800,
1960
   0x00038000, 0x00039800, 0x0003f800, 0x00038800,
1961
   0x0005e000, 0x0005a000, 0x0005b000, 0x00059000,
1962
   0x0005d000, 0x0005a800, 0x0005d800, 0x0005c800,
1963
   0x0005f000, 0x0005c000, 0x0005e800, 0x0005b800,
1964
   0x00058000, 0x00059800, 0x0005f800, 0x00058800,
1965
   0x0006e000, 0x0006a000, 0x0006b000, 0x00069000,
1966
   0x0006d000, 0x0006a800, 0x0006d800, 0x0006c800,
1967
   0x0006f000, 0x0006c000, 0x0006e800, 0x0006b800,
1968
   0x00068000, 0x00069800, 0x0006f800, 0x00068800,
1969
   0x00006000, 0x00002000, 0x00003000, 0x00001000,
1970
   0x00005000, 0x00002800, 0x00005800, 0x00004800,
1971
   0x00007000, 0x00004000, 0x00006800, 0x00003800,
1972
   0x00000000, 0x00001800, 0x00007800, 0x00000800,
1973
   0x0007e000, 0x0007a000, 0x0007b000, 0x00079000,
1974
   0x0007d000, 0x0007a800, 0x0007d800, 0x0007c800,
1975
   0x0007f000, 0x0007c000, 0x0007e800, 0x0007b800,
1976
   0x00078000, 0x00079800, 0x0007f800, 0x00078800,
1977
   /* 1 */
1978
   0x06580000, 0x06180000, 0x06280000, 0x06400000,
1979
   0x06100000, 0x06780000, 0x06500000, 0x06680000,
1980
   0x06700000, 0x06080000, 0x06380000, 0x06200000,
1981
   0x06600000, 0x06480000, 0x06300000, 0x06000000,
1982
   0x04580000, 0x04180000, 0x04280000, 0x04400000,
1983
   0x04100000, 0x04780000, 0x04500000, 0x04680000,
1984
   0x04700000, 0x04080000, 0x04380000, 0x04200000,
1985
   0x04600000, 0x04480000, 0x04300000, 0x04000000,
1986
   0x01580000, 0x01180000, 0x01280000, 0x01400000,
1987
   0x01100000, 0x01780000, 0x01500000, 0x01680000,
1988
   0x01700000, 0x01080000, 0x01380000, 0x01200000,
1989
   0x01600000, 0x01480000, 0x01300000, 0x01000000,
1990
   0x00d80000, 0x00980000, 0x00a80000, 0x00c00000,
1991
   0x00900000, 0x00f80000, 0x00d00000, 0x00e80000,
1992
   0x00f00000, 0x00880000, 0x00b80000, 0x00a00000,
1993
   0x00e00000, 0x00c80000, 0x00b00000, 0x00800000,
1994
   0x06d80000, 0x06980000, 0x06a80000, 0x06c00000,
1995
   0x06900000, 0x06f80000, 0x06d00000, 0x06e80000,
1996
   0x06f00000, 0x06880000, 0x06b80000, 0x06a00000,
1997
   0x06e00000, 0x06c80000, 0x06b00000, 0x06800000,
1998
   0x02580000, 0x02180000, 0x02280000, 0x02400000,
1999
   0x02100000, 0x02780000, 0x02500000, 0x02680000,
2000
   0x02700000, 0x02080000, 0x02380000, 0x02200000,
2001
   0x02600000, 0x02480000, 0x02300000, 0x02000000,
2002
   0x07d80000, 0x07980000, 0x07a80000, 0x07c00000,
2003
   0x07900000, 0x07f80000, 0x07d00000, 0x07e80000,
2004
   0x07f00000, 0x07880000, 0x07b80000, 0x07a00000,
2005
   0x07e00000, 0x07c80000, 0x07b00000, 0x07800000,
2006
   0x03580000, 0x03180000, 0x03280000, 0x03400000,
2007
   0x03100000, 0x03780000, 0x03500000, 0x03680000,
2008
   0x03700000, 0x03080000, 0x03380000, 0x03200000,
2009
   0x03600000, 0x03480000, 0x03300000, 0x03000000,
2010
   0x03d80000, 0x03980000, 0x03a80000, 0x03c00000,
2011
   0x03900000, 0x03f80000, 0x03d00000, 0x03e80000,
2012
   0x03f00000, 0x03880000, 0x03b80000, 0x03a00000,
2013
   0x03e00000, 0x03c80000, 0x03b00000, 0x03800000,
2014
   0x00580000, 0x00180000, 0x00280000, 0x00400000,
2015
   0x00100000, 0x00780000, 0x00500000, 0x00680000,
2016
   0x00700000, 0x00080000, 0x00380000, 0x00200000,
2017
   0x00600000, 0x00480000, 0x00300000, 0x00000000,
2018
   0x05580000, 0x05180000, 0x05280000, 0x05400000,
2019
   0x05100000, 0x05780000, 0x05500000, 0x05680000,
2020
   0x05700000, 0x05080000, 0x05380000, 0x05200000,
2021
   0x05600000, 0x05480000, 0x05300000, 0x05000000,
2022
   0x02d80000, 0x02980000, 0x02a80000, 0x02c00000,
2023
   0x02900000, 0x02f80000, 0x02d00000, 0x02e80000,
2024
   0x02f00000, 0x02880000, 0x02b80000, 0x02a00000,
2025
   0x02e00000, 0x02c80000, 0x02b00000, 0x02800000,
2026
   0x01d80000, 0x01980000, 0x01a80000, 0x01c00000,
2027
   0x01900000, 0x01f80000, 0x01d00000, 0x01e80000,
2028
   0x01f00000, 0x01880000, 0x01b80000, 0x01a00000,
2029
   0x01e00000, 0x01c80000, 0x01b00000, 0x01800000,
2030
   0x07580000, 0x07180000, 0x07280000, 0x07400000,
2031
   0x07100000, 0x07780000, 0x07500000, 0x07680000,
2032
   0x07700000, 0x07080000, 0x07380000, 0x07200000,
2033
   0x07600000, 0x07480000, 0x07300000, 0x07000000,
2034
   0x04d80000, 0x04980000, 0x04a80000, 0x04c00000,
2035
   0x04900000, 0x04f80000, 0x04d00000, 0x04e80000,
2036
   0x04f00000, 0x04880000, 0x04b80000, 0x04a00000,
2037
   0x04e00000, 0x04c80000, 0x04b00000, 0x04800000,
2038
   0x05d80000, 0x05980000, 0x05a80000, 0x05c00000,
2039
   0x05900000, 0x05f80000, 0x05d00000, 0x05e80000,
2040
   0x05f00000, 0x05880000, 0x05b80000, 0x05a00000,
2041
   0x05e00000, 0x05c80000, 0x05b00000, 0x05800000,
2042
   /* 2 */
2043
   0xb8000002, 0xf8000002, 0xa8000002, 0xd0000002,
2044
   0xc0000002, 0x88000002, 0xb0000002, 0xe8000002,
2045
   0x80000002, 0xc8000002, 0x98000002, 0xf0000002,
2046
   0xd8000002, 0xa0000002, 0x90000002, 0xe0000002,
2047
   0xb8000006, 0xf8000006, 0xa8000006, 0xd0000006,
2048
   0xc0000006, 0x88000006, 0xb0000006, 0xe8000006,
2049
   0x80000006, 0xc8000006, 0x98000006, 0xf0000006,
2050
   0xd8000006, 0xa0000006, 0x90000006, 0xe0000006,
2051
   0xb8000007, 0xf8000007, 0xa8000007, 0xd0000007,
2052
   0xc0000007, 0x88000007, 0xb0000007, 0xe8000007,
2053
   0x80000007, 0xc8000007, 0x98000007, 0xf0000007,
2054
   0xd8000007, 0xa0000007, 0x90000007, 0xe0000007,
2055
   0x38000003, 0x78000003, 0x28000003, 0x50000003,
2056
   0x40000003, 0x08000003, 0x30000003, 0x68000003,
2057
   0x00000003, 0x48000003, 0x18000003, 0x70000003,
2058
   0x58000003, 0x20000003, 0x10000003, 0x60000003,
2059
   0xb8000004, 0xf8000004, 0xa8000004, 0xd0000004,
2060
   0xc0000004, 0x88000004, 0xb0000004, 0xe8000004,
2061
   0x80000004, 0xc8000004, 0x98000004, 0xf0000004,
2062
   0xd8000004, 0xa0000004, 0x90000004, 0xe0000004,
2063
   0x38000001, 0x78000001, 0x28000001, 0x50000001,
2064
   0x40000001, 0x08000001, 0x30000001, 0x68000001,
2065
   0x00000001, 0x48000001, 0x18000001, 0x70000001,
2066
   0x58000001, 0x20000001, 0x10000001, 0x60000001,
2067
   0x38000006, 0x78000006, 0x28000006, 0x50000006,
2068
   0x40000006, 0x08000006, 0x30000006, 0x68000006,
2069
   0x00000006, 0x48000006, 0x18000006, 0x70000006,
2070
   0x58000006, 0x20000006, 0x10000006, 0x60000006,
2071
   0x38000005, 0x78000005, 0x28000005, 0x50000005,
2072
   0x40000005, 0x08000005, 0x30000005, 0x68000005,
2073
   0x00000005, 0x48000005, 0x18000005, 0x70000005,
2074
   0x58000005, 0x20000005, 0x10000005, 0x60000005,
2075
   0xb8000005, 0xf8000005, 0xa8000005, 0xd0000005,
2076
   0xc0000005, 0x88000005, 0xb0000005, 0xe8000005,
2077
   0x80000005, 0xc8000005, 0x98000005, 0xf0000005,
2078
   0xd8000005, 0xa0000005, 0x90000005, 0xe0000005,
2079
   0xb8000003, 0xf8000003, 0xa8000003, 0xd0000003,
2080
   0xc0000003, 0x88000003, 0xb0000003, 0xe8000003,
2081
   0x80000003, 0xc8000003, 0x98000003, 0xf0000003,
2082
   0xd8000003, 0xa0000003, 0x90000003, 0xe0000003,
2083
   0x38000004, 0x78000004, 0x28000004, 0x50000004,
2084
   0x40000004, 0x08000004, 0x30000004, 0x68000004,
2085
   0x00000004, 0x48000004, 0x18000004, 0x70000004,
2086
   0x58000004, 0x20000004, 0x10000004, 0x60000004,
2087
   0xb8000000, 0xf8000000, 0xa8000000, 0xd0000000,
2088
   0xc0000000, 0x88000000, 0xb0000000, 0xe8000000,
2089
   0x80000000, 0xc8000000, 0x98000000, 0xf0000000,
2090
   0xd8000000, 0xa0000000, 0x90000000, 0xe0000000,
2091
   0x38000002, 0x78000002, 0x28000002, 0x50000002,
2092
   0x40000002, 0x08000002, 0x30000002, 0x68000002,
2093
   0x00000002, 0x48000002, 0x18000002, 0x70000002,
2094
   0x58000002, 0x20000002, 0x10000002, 0x60000002,
2095
   0xb8000001, 0xf8000001, 0xa8000001, 0xd0000001,
2096
   0xc0000001, 0x88000001, 0xb0000001, 0xe8000001,
2097
   0x80000001, 0xc8000001, 0x98000001, 0xf0000001,
2098
   0xd8000001, 0xa0000001, 0x90000001, 0xe0000001,
2099
   0x38000007, 0x78000007, 0x28000007, 0x50000007,
2100
   0x40000007, 0x08000007, 0x30000007, 0x68000007,
2101
   0x00000007, 0x48000007, 0x18000007, 0x70000007,
2102
   0x58000007, 0x20000007, 0x10000007, 0x60000007,
2103
   0x38000000, 0x78000000, 0x28000000, 0x50000000,
2104
   0x40000000, 0x08000000, 0x30000000, 0x68000000,
2105
   0x00000000, 0x48000000, 0x18000000, 0x70000000,
2106
   0x58000000, 0x20000000, 0x10000000, 0x60000000,
2107
   /* 3 */
2108
   0x000000c0, 0x000000f0, 0x00000090, 0x000000a8,
2109
   0x000000b0, 0x000000c8, 0x00000088, 0x000000e0,
2110
   0x000000f8, 0x000000a0, 0x000000d8, 0x00000080,
2111
   0x000000e8, 0x000000d0, 0x00000098, 0x000000b8,
2112
   0x000003c0, 0x000003f0, 0x00000390, 0x000003a8,
2113
   0x000003b0, 0x000003c8, 0x00000388, 0x000003e0,
2114
   0x000003f8, 0x000003a0, 0x000003d8, 0x00000380,
2115
   0x000003e8, 0x000003d0, 0x00000398, 0x000003b8,
2116
   0x00000740, 0x00000770, 0x00000710, 0x00000728,
2117
   0x00000730, 0x00000748, 0x00000708, 0x00000760,
2118
   0x00000778, 0x00000720, 0x00000758, 0x00000700,
2119
   0x00000768, 0x00000750, 0x00000718, 0x00000738,
2120
   0x000006c0, 0x000006f0, 0x00000690, 0x000006a8,
2121
   0x000006b0, 0x000006c8, 0x00000688, 0x000006e0,
2122
   0x000006f8, 0x000006a0, 0x000006d8, 0x00000680,
2123
   0x000006e8, 0x000006d0, 0x00000698, 0x000006b8,
2124
   0x00000040, 0x00000070, 0x00000010, 0x00000028,
2125
   0x00000030, 0x00000048, 0x00000008, 0x00000060,
2126
   0x00000078, 0x00000020, 0x00000058, 0x00000000,
2127
   0x00000068, 0x00000050, 0x00000018, 0x00000038,
2128
   0x000002c0, 0x000002f0, 0x00000290, 0x000002a8,
2129
   0x000002b0, 0x000002c8, 0x00000288, 0x000002e0,
2130
   0x000002f8, 0x000002a0, 0x000002d8, 0x00000280,
2131
   0x000002e8, 0x000002d0, 0x00000298, 0x000002b8,
2132
   0x00000440, 0x00000470, 0x00000410, 0x00000428,
2133
   0x00000430, 0x00000448, 0x00000408, 0x00000460,
2134
   0x00000478, 0x00000420, 0x00000458, 0x00000400,
2135
   0x00000468, 0x00000450, 0x00000418, 0x00000438,
2136
   0x000001c0, 0x000001f0, 0x00000190, 0x000001a8,
2137
   0x000001b0, 0x000001c8, 0x00000188, 0x000001e0,
2138
   0x000001f8, 0x000001a0, 0x000001d8, 0x00000180,
2139
   0x000001e8, 0x000001d0, 0x00000198, 0x000001b8,
2140
   0x00000240, 0x00000270, 0x00000210, 0x00000228,
2141
   0x00000230, 0x00000248, 0x00000208, 0x00000260,
2142
   0x00000278, 0x00000220, 0x00000258, 0x00000200,
2143
   0x00000268, 0x00000250, 0x00000218, 0x00000238,
2144
   0x000007c0, 0x000007f0, 0x00000790, 0x000007a8,
2145
   0x000007b0, 0x000007c8, 0x00000788, 0x000007e0,
2146
   0x000007f8, 0x000007a0, 0x000007d8, 0x00000780,
2147
   0x000007e8, 0x000007d0, 0x00000798, 0x000007b8,
2148
   0x00000540, 0x00000570, 0x00000510, 0x00000528,
2149
   0x00000530, 0x00000548, 0x00000508, 0x00000560,
2150
   0x00000578, 0x00000520, 0x00000558, 0x00000500,
2151
   0x00000568, 0x00000550, 0x00000518, 0x00000538,
2152
   0x00000340, 0x00000370, 0x00000310, 0x00000328,
2153
   0x00000330, 0x00000348, 0x00000308, 0x00000360,
2154
   0x00000378, 0x00000320, 0x00000358, 0x00000300,
2155
   0x00000368, 0x00000350, 0x00000318, 0x00000338,
2156
   0x000004c0, 0x000004f0, 0x00000490, 0x000004a8,
2157
   0x000004b0, 0x000004c8, 0x00000488, 0x000004e0,
2158
   0x000004f8, 0x000004a0, 0x000004d8, 0x00000480,
2159
   0x000004e8, 0x000004d0, 0x00000498, 0x000004b8,
2160
   0x00000640, 0x00000670, 0x00000610, 0x00000628,
2161
   0x00000630, 0x00000648, 0x00000608, 0x00000660,
2162
   0x00000678, 0x00000620, 0x00000658, 0x00000600,
2163
   0x00000668, 0x00000650, 0x00000618, 0x00000638,
2164
   0x000005c0, 0x000005f0, 0x00000590, 0x000005a8,
2165
   0x000005b0, 0x000005c8, 0x00000588, 0x000005e0,
2166
   0x000005f8, 0x000005a0, 0x000005d8, 0x00000580,
2167
   0x000005e8, 0x000005d0, 0x00000598, 0x000005b8,
2168
   0x00000140, 0x00000170, 0x00000110, 0x00000128,
2169
   0x00000130, 0x00000148, 0x00000108, 0x00000160,
2170
   0x00000178, 0x00000120, 0x00000158, 0x00000100,
2171
   0x00000168, 0x00000150, 0x00000118, 0x00000138,
2172
   }
2173
};
2174
2175
/*
2176
 *  A macro that performs a full encryption round of GOST 28147-89.
2177
 *  Temporary variables tmp assumed and variables r and l for left and right
2178
 *  blocks.
2179
 */
2180
# define GOST_ENCRYPT_ROUND(key1, key2, sbox) \
2181
0
  tmp = (key1) + r; \
2182
0
  l ^= (sbox)[0*256 + (tmp & 0xff)] ^ (sbox)[1*256 + ((tmp >> 8) & 0xff)] ^ \
2183
0
    (sbox)[2*256 + ((tmp >> 16) & 0xff)] ^ (sbox)[3*256 + (tmp >> 24)]; \
2184
0
  tmp = (key2) + l; \
2185
0
  r ^= (sbox)[0*256 + (tmp & 0xff)] ^ (sbox)[1*256 + ((tmp >> 8) & 0xff)] ^ \
2186
0
    (sbox)[2*256 + ((tmp >> 16) & 0xff)] ^ (sbox)[3*256 + (tmp >> 24)];
2187
2188
/* encrypt a block with the given key */
2189
void gost28147_encrypt_simple(const uint32_t * key, const uint32_t * sbox,
2190
            const uint32_t * in, uint32_t * out)
2191
0
{
2192
0
  uint32_t l, r, tmp;
2193
2194
0
  r = in[0], l = in[1];
2195
0
  GOST_ENCRYPT_ROUND(key[0], key[1], sbox)
2196
0
      GOST_ENCRYPT_ROUND(key[2], key[3], sbox)
2197
0
      GOST_ENCRYPT_ROUND(key[4], key[5], sbox)
2198
0
      GOST_ENCRYPT_ROUND(key[6], key[7], sbox)
2199
0
      GOST_ENCRYPT_ROUND(key[0], key[1], sbox)
2200
0
      GOST_ENCRYPT_ROUND(key[2], key[3], sbox)
2201
0
      GOST_ENCRYPT_ROUND(key[4], key[5], sbox)
2202
0
      GOST_ENCRYPT_ROUND(key[6], key[7], sbox)
2203
0
      GOST_ENCRYPT_ROUND(key[0], key[1], sbox)
2204
0
      GOST_ENCRYPT_ROUND(key[2], key[3], sbox)
2205
0
      GOST_ENCRYPT_ROUND(key[4], key[5], sbox)
2206
0
      GOST_ENCRYPT_ROUND(key[6], key[7], sbox)
2207
0
      GOST_ENCRYPT_ROUND(key[7], key[6], sbox)
2208
0
      GOST_ENCRYPT_ROUND(key[5], key[4], sbox)
2209
0
      GOST_ENCRYPT_ROUND(key[3], key[2], sbox)
2210
0
      GOST_ENCRYPT_ROUND(key[1], key[0], sbox)
2211
0
      * out = l, *(out + 1) = r;
2212
0
}
2213
2214
void gost28147_decrypt_simple(const uint32_t * key, const uint32_t * sbox,
2215
            const uint32_t * in, uint32_t * out)
2216
0
{
2217
0
  uint32_t l, r, tmp;
2218
2219
0
  r = in[0], l = in[1];
2220
0
  GOST_ENCRYPT_ROUND(key[0], key[1], sbox)
2221
0
      GOST_ENCRYPT_ROUND(key[2], key[3], sbox)
2222
0
      GOST_ENCRYPT_ROUND(key[4], key[5], sbox)
2223
0
      GOST_ENCRYPT_ROUND(key[6], key[7], sbox)
2224
0
      GOST_ENCRYPT_ROUND(key[7], key[6], sbox)
2225
0
      GOST_ENCRYPT_ROUND(key[5], key[4], sbox)
2226
0
      GOST_ENCRYPT_ROUND(key[3], key[2], sbox)
2227
0
      GOST_ENCRYPT_ROUND(key[1], key[0], sbox)
2228
0
      GOST_ENCRYPT_ROUND(key[7], key[6], sbox)
2229
0
      GOST_ENCRYPT_ROUND(key[5], key[4], sbox)
2230
0
      GOST_ENCRYPT_ROUND(key[3], key[2], sbox)
2231
0
      GOST_ENCRYPT_ROUND(key[1], key[0], sbox)
2232
0
      GOST_ENCRYPT_ROUND(key[7], key[6], sbox)
2233
0
      GOST_ENCRYPT_ROUND(key[5], key[4], sbox)
2234
0
      GOST_ENCRYPT_ROUND(key[3], key[2], sbox)
2235
0
      GOST_ENCRYPT_ROUND(key[1], key[0], sbox)
2236
0
      * out = l, *(out + 1) = r;
2237
0
}
2238
2239
static void gost28147_imit_simple(const uint32_t * key, const uint32_t * sbox,
2240
          const uint32_t * in, uint32_t * out)
2241
0
{
2242
0
  uint32_t l, r, tmp;
2243
2244
0
  r = in[0], l = in[1];
2245
0
  GOST_ENCRYPT_ROUND(key[0], key[1], sbox)
2246
0
      GOST_ENCRYPT_ROUND(key[2], key[3], sbox)
2247
0
      GOST_ENCRYPT_ROUND(key[4], key[5], sbox)
2248
0
      GOST_ENCRYPT_ROUND(key[6], key[7], sbox)
2249
0
      GOST_ENCRYPT_ROUND(key[0], key[1], sbox)
2250
0
      GOST_ENCRYPT_ROUND(key[2], key[3], sbox)
2251
0
      GOST_ENCRYPT_ROUND(key[4], key[5], sbox)
2252
0
      GOST_ENCRYPT_ROUND(key[6], key[7], sbox)
2253
0
      * out = r, *(out + 1) = l;
2254
0
}
2255
2256
static const uint32_t gost28147_key_mesh_cryptopro_data[GOST28147_KEY_SIZE /
2257
              4] = {
2258
  0x22720069, 0x2304c964,
2259
  0x96db3a8d, 0xc42ae946,
2260
  0x94acfe18, 0x1207ed00,
2261
  0xc2dc86c0, 0x2ba94cef,
2262
};
2263
2264
static void gost28147_key_mesh_cryptopro(struct gost28147_ctx *ctx)
2265
0
{
2266
0
  uint32_t newkey[GOST28147_KEY_SIZE / 4];
2267
2268
0
  gost28147_decrypt_simple(ctx->key, ctx->sbox,
2269
0
         &gost28147_key_mesh_cryptopro_data[0],
2270
0
         &newkey[0]);
2271
2272
0
  gost28147_decrypt_simple(ctx->key, ctx->sbox,
2273
0
         &gost28147_key_mesh_cryptopro_data[2],
2274
0
         &newkey[2]);
2275
2276
0
  gost28147_decrypt_simple(ctx->key, ctx->sbox,
2277
0
         &gost28147_key_mesh_cryptopro_data[4],
2278
0
         &newkey[4]);
2279
2280
0
  gost28147_decrypt_simple(ctx->key, ctx->sbox,
2281
0
         &gost28147_key_mesh_cryptopro_data[6],
2282
0
         &newkey[6]);
2283
2284
0
  memcpy(ctx->key, newkey, sizeof(newkey));
2285
0
  ctx->key_count = 0;
2286
0
}
2287
2288
void gost28147_set_key(struct gost28147_ctx *ctx, const uint8_t * key)
2289
0
{
2290
0
  unsigned i;
2291
2292
0
  assert(key);
2293
0
  for (i = 0; i < 8; i++, key += 4)
2294
0
    ctx->key[i] = LE_READ_UINT32(key);
2295
0
  ctx->key_count = 0;
2296
0
}
2297
2298
void
2299
gost28147_set_param(struct gost28147_ctx *ctx,
2300
        const struct gost28147_param *param)
2301
0
{
2302
0
  assert(param);
2303
0
  ctx->sbox = param->sbox;
2304
0
  ctx->key_meshing = param->key_meshing;
2305
0
}
2306
2307
void
2308
gost28147_encrypt(const struct gost28147_ctx *ctx,
2309
      size_t length, uint8_t * dst, const uint8_t * src)
2310
0
{
2311
0
  uint32_t block[2];
2312
2313
0
  assert(!(length % GOST28147_BLOCK_SIZE));
2314
2315
0
  while (length) {
2316
0
    block[0] = LE_READ_UINT32(src);
2317
0
    src += 4;
2318
0
    block[1] = LE_READ_UINT32(src);
2319
0
    src += 4;
2320
0
    gost28147_encrypt_simple(ctx->key, ctx->sbox, block, block);
2321
0
    LE_WRITE_UINT32(dst, block[0]);
2322
0
    dst += 4;
2323
0
    LE_WRITE_UINT32(dst, block[1]);
2324
0
    dst += 4;
2325
0
    length -= GOST28147_BLOCK_SIZE;
2326
0
  }
2327
0
}
2328
2329
void
2330
gost28147_decrypt(const struct gost28147_ctx *ctx,
2331
      size_t length, uint8_t * dst, const uint8_t * src)
2332
0
{
2333
0
  uint32_t block[2];
2334
2335
0
  assert(!(length % GOST28147_BLOCK_SIZE));
2336
2337
0
  while (length) {
2338
0
    block[0] = LE_READ_UINT32(src);
2339
0
    src += 4;
2340
0
    block[1] = LE_READ_UINT32(src);
2341
0
    src += 4;
2342
0
    gost28147_decrypt_simple(ctx->key, ctx->sbox, block, block);
2343
0
    LE_WRITE_UINT32(dst, block[0]);
2344
0
    dst += 4;
2345
0
    LE_WRITE_UINT32(dst, block[1]);
2346
0
    dst += 4;
2347
0
    length -= GOST28147_BLOCK_SIZE;
2348
0
  }
2349
0
}
2350
2351
void
2352
gost28147_encrypt_for_cfb(struct gost28147_ctx *ctx,
2353
        size_t length, uint8_t * dst, const uint8_t * src)
2354
0
{
2355
0
  uint32_t block[2];
2356
2357
0
  assert(!(length % GOST28147_BLOCK_SIZE));
2358
2359
0
  while (length) {
2360
0
    block[0] = LE_READ_UINT32(src);
2361
0
    src += 4;
2362
0
    block[1] = LE_READ_UINT32(src);
2363
0
    src += 4;
2364
0
    if (ctx->key_meshing && ctx->key_count == 1024) {
2365
0
      gost28147_key_mesh_cryptopro(ctx);
2366
0
      gost28147_encrypt_simple(ctx->key, ctx->sbox, block,
2367
0
             block);
2368
0
      ctx->key_count = 0;
2369
0
    }
2370
0
    gost28147_encrypt_simple(ctx->key, ctx->sbox, block, block);
2371
0
    LE_WRITE_UINT32(dst, block[0]);
2372
0
    dst += 4;
2373
0
    LE_WRITE_UINT32(dst, block[1]);
2374
0
    dst += 4;
2375
0
    length -= GOST28147_BLOCK_SIZE;
2376
0
    ctx->key_count += GOST28147_BLOCK_SIZE;
2377
0
  }
2378
0
}
2379
2380
static void gost28147_cnt_next_iv(struct gost28147_cnt_ctx *ctx, uint8_t * out)
2381
0
{
2382
0
  uint32_t block[2];
2383
0
  uint32_t temp;
2384
2385
0
  if (ctx->ctx.key_meshing && ctx->ctx.key_count == 1024) {
2386
0
    gost28147_key_mesh_cryptopro(&ctx->ctx);
2387
0
    gost28147_encrypt_simple(ctx->ctx.key, ctx->ctx.sbox, ctx->iv,
2388
0
           ctx->iv);
2389
0
    ctx->ctx.key_count = 0;
2390
0
  }
2391
2392
0
  ctx->iv[0] += 0x01010101;
2393
0
  temp = ctx->iv[1] + 0x01010104;
2394
0
  if (temp < ctx->iv[1])
2395
0
    ctx->iv[1] = temp + 1; /* Overflow */
2396
0
  else
2397
0
    ctx->iv[1] = temp;
2398
2399
0
  gost28147_encrypt_simple(ctx->ctx.key, ctx->ctx.sbox, ctx->iv, block);
2400
2401
0
  LE_WRITE_UINT32(out + 0, block[0]);
2402
0
  LE_WRITE_UINT32(out + 4, block[1]);
2403
2404
0
  ctx->ctx.key_count += GOST28147_BLOCK_SIZE;
2405
0
}
2406
2407
void
2408
gost28147_cnt_init(struct gost28147_cnt_ctx *ctx,
2409
       const uint8_t * key, const struct gost28147_param *param)
2410
0
{
2411
0
  gost28147_set_param(&ctx->ctx, param);
2412
0
  gost28147_set_key(&ctx->ctx, key);
2413
0
  ctx->bytes = 0;
2414
0
}
2415
2416
void gost28147_cnt_set_iv(struct gost28147_cnt_ctx *ctx, const uint8_t * iv)
2417
0
{
2418
0
  uint32_t block[2];
2419
2420
0
  block[0] = LE_READ_UINT32(iv + 0);
2421
0
  block[1] = LE_READ_UINT32(iv + 4);
2422
2423
0
  gost28147_encrypt_simple(ctx->ctx.key, ctx->ctx.sbox, block, ctx->iv);
2424
0
}
2425
2426
void
2427
gost28147_cnt_crypt(struct gost28147_cnt_ctx *ctx,
2428
        size_t length, uint8_t * dst, const uint8_t * src)
2429
0
{
2430
0
  size_t block_size = GOST28147_BLOCK_SIZE;
2431
2432
0
  if (ctx->bytes) {
2433
0
    size_t part = ctx->bytes < length ? ctx->bytes : length;
2434
0
    memxor3(dst, src, ctx->buffer + block_size - ctx->bytes, part);
2435
0
    dst += part;
2436
0
    src += part;
2437
0
    length -= part;
2438
0
    ctx->bytes -= part;
2439
0
    ctx->bytes %= block_size;
2440
0
  }
2441
0
  while (length >= block_size) {
2442
0
    gost28147_cnt_next_iv(ctx, ctx->buffer);
2443
0
    memxor3(dst, src, ctx->buffer, block_size);
2444
0
    length -= block_size;
2445
0
    src += block_size;
2446
0
    dst += block_size;
2447
0
  }
2448
2449
0
  if (length != 0) {
2450
0
    gost28147_cnt_next_iv(ctx, ctx->buffer);
2451
0
    memxor3(dst, src, ctx->buffer, length);
2452
0
    ctx->bytes = block_size - length;
2453
0
  }
2454
0
}
2455
2456
static void _gost28147_imit_reinit(struct gost28147_imit_ctx *ctx)
2457
0
{
2458
0
  ctx->state[0] = 0;
2459
0
  ctx->state[1] = 0;
2460
0
  ctx->index = 0;
2461
0
  ctx->count = 0;
2462
0
}
2463
2464
void
2465
gost28147_imit_set_key(struct gost28147_imit_ctx *ctx,
2466
           size_t length, const uint8_t * key)
2467
0
{
2468
0
  assert(length == GOST28147_IMIT_KEY_SIZE);
2469
0
  assert(key);
2470
2471
0
  _gost28147_imit_reinit(ctx);
2472
0
  gost28147_set_key(&ctx->cctx, key);
2473
0
}
2474
2475
void
2476
gost28147_imit_set_nonce(struct gost28147_imit_ctx *ctx, const uint8_t * nonce)
2477
0
{
2478
0
  ctx->state[0] = LE_READ_UINT32(nonce + 0);
2479
0
  ctx->state[1] = LE_READ_UINT32(nonce + 4);
2480
0
}
2481
2482
void
2483
gost28147_imit_set_param(struct gost28147_imit_ctx *ctx,
2484
       const struct gost28147_param *param)
2485
0
{
2486
0
  assert(param);
2487
0
  gost28147_set_param(&ctx->cctx, param);
2488
0
}
2489
2490
static void
2491
gost28147_imit_compress(struct gost28147_imit_ctx *ctx, const uint8_t * data)
2492
0
{
2493
0
  uint32_t block[2];
2494
2495
0
  if (ctx->cctx.key_meshing && ctx->cctx.key_count == 1024)
2496
0
    gost28147_key_mesh_cryptopro(&ctx->cctx);
2497
2498
0
  block[0] = LE_READ_UINT32(data + 0) ^ ctx->state[0];
2499
0
  block[1] = LE_READ_UINT32(data + 4) ^ ctx->state[1];
2500
0
  gost28147_imit_simple(ctx->cctx.key, ctx->cctx.sbox, block, ctx->state);
2501
0
  ctx->cctx.key_count += 8;
2502
0
}
2503
2504
void
2505
gost28147_imit_update(struct gost28147_imit_ctx *ctx,
2506
          size_t length, const uint8_t * data)
2507
0
{
2508
0
  MD_UPDATE(ctx, length, data, gost28147_imit_compress, ctx->count++);
2509
0
}
2510
2511
void
2512
gost28147_imit_digest(struct gost28147_imit_ctx *ctx,
2513
          size_t length, uint8_t * digest)
2514
0
{
2515
0
  assert(length <= GOST28147_IMIT_DIGEST_SIZE);
2516
0
  const uint8_t zero[GOST28147_IMIT_BLOCK_SIZE] = { 0 };
2517
2518
0
  if (ctx->index) {
2519
0
    assert(ctx->index < GOST28147_IMIT_BLOCK_SIZE);
2520
0
    gost28147_imit_update(ctx,
2521
0
              GOST28147_IMIT_BLOCK_SIZE - ctx->index,
2522
0
              zero);
2523
0
  }
2524
2525
0
  if (ctx->count == 1) {
2526
0
    gost28147_imit_update(ctx, GOST28147_IMIT_BLOCK_SIZE, zero);
2527
0
  }
2528
2529
0
  _nettle_write_le32(length, digest, ctx->state);
2530
0
  _gost28147_imit_reinit(ctx);
2531
0
}
2532
#endif