1 /* vim: set fileencoding=ascii : Charset: ASCII */
2 /* test/gostr2814789t.c */
3 /* ====================================================================
4 * Copyright (c) 2012 Crypto-Pro, Ltd., Serguei E. Leontiev,
7 * This file is distributed under the same license as OpenSSL
8 * ====================================================================
12 #if defined(OPENSSL_NO_ENGINE) || defined(OPENSSL_NO_GOST)
13 int main(int argc, char *argv[])
15 printf("No GOST 28147-89 support\n");
22 # include <openssl/conf.h>
23 # include <openssl/crypto.h>
24 # include <openssl/engine.h>
25 # include <openssl/err.h>
26 # include <openssl/evp.h>
27 # include <openssl/hmac.h>
28 # include <openssl/obj_mac.h>
30 # define CCGOST_ID "gost"
32 # include "../engines/ccgost/gost89.h"
34 # define G89_MAX_TC_LEN (2048)
35 # define G89_BLOCK_LEN (8)
37 # if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__)
38 typedef unsigned __int64 u64;
39 # define U64(C) C##UI64
40 # define FMT64 "%I64u"
41 # elif defined(__arch64__)
42 typedef unsigned long u64;
46 typedef unsigned long long u64;
47 # define U64(C) C##ULL
50 # if defined(__MINGW32__)
52 # define FMT64 "%I64u"
55 typedef enum g89_mode_ {
62 typedef struct g89_tc_ {
63 u64 ullLen; /* ullLen > G89_MAX_TC_LEN */
64 /* Clear text ullLen */
66 const byte bIn[G89_MAX_TC_LEN]; /* Clear text, when */
67 /* ullLen <= G89_MAX_TC_LEN */
68 const char *szParamSet; /* S-Box ID */
69 const char *szDerive; /* String for derive bRawKey */
70 const byte bRawKey[EVP_MAX_KEY_LENGTH];
71 g89_mode gMode; /* Mode of encryption or MAC */
72 const byte bIV[EVP_MAX_IV_LENGTH]; /* IV for CFB or CNT mode */
73 const byte bOut[G89_MAX_TC_LEN]; /* Cipher text for ECB/CFB/CNT */
75 * mode, when ullLen <= G89_MAX_TC_LEN; Last 16 byte of cipher text for
76 * ECB/CFB/CNT, when ullLen > G89_MAX_TC_LEN; 4 byte MAC for imitovstavka
80 const g89_tc tcs[] = {
82 * GOST R 34.11-94 Test cases
84 { /* see p. A.3.1 [GOSTR341194], p. 7.3.1
85 * [ENG-GOSTR341194] */
86 /* <http://tools.ietf.org/html/rfc5831#section-7.3.1> */
87 /* Iteration 1, K[1], see Errata for RFC 5831 */
90 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
91 "id-GostR3410-94-TestParamSet",
94 0x54, 0x6d, 0x20, 0x33, 0x68, 0x65, 0x6c, 0x32,
95 0x69, 0x73, 0x65, 0x20, 0x73, 0x73, 0x6e, 0x62,
96 0x20, 0x61, 0x67, 0x79, 0x69, 0x67, 0x74, 0x74,
97 0x73, 0x65, 0x68, 0x65, 0x20, 0x2c, 0x3d, 0x73},
101 0x1b, 0x0b, 0xbc, 0x32, 0xce, 0xbc, 0xab, 0x42}
103 { /* see p. A.3.1 [GOSTR341194], p. 7.3.1
104 * [ENG-GOSTR341194] */
105 /* <http://tools.ietf.org/html/rfc5831#section-7.3.1> */
106 /* Iteration 1, K[4] */
109 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
110 "id-GostR3410-94-TestParamSet",
113 0xec, 0x0a, 0x8b, 0xa1, 0x5e, 0xc0, 0x04, 0xa8,
114 0xba, 0xc5, 0x0c, 0xac, 0x0c, 0x62, 0x1d, 0xee,
115 0xe1, 0xc7, 0xb8, 0xe7, 0x00, 0x7a, 0xe2, 0xec,
116 0xf2, 0x73, 0x1b, 0xff, 0x4e, 0x80, 0xe2, 0xa0},
120 0x2d, 0x56, 0x2a, 0x0d, 0x19, 0x04, 0x86, 0xe7}
122 { /* see p. A.3.1 [GOSTR341194], p. 7.3.1
123 * [ENG-GOSTR341194] */
124 /* <http://tools.ietf.org/html/rfc5831#section-7.3.1> */
125 /* Iteration 2, K[1] */
128 0x34, 0xc0, 0x15, 0x33, 0xe3, 0x7d, 0x1c, 0x56},
129 "id-GostR3410-94-TestParamSet",
132 0x34, 0x87, 0x24, 0xa4, 0xc1, 0xa6, 0x76, 0x67,
133 0x15, 0x3d, 0xde, 0x59, 0x33, 0x88, 0x42, 0x50,
134 0xe3, 0x24, 0x8c, 0x65, 0x7d, 0x41, 0x3b, 0x8c,
135 0x1c, 0x9c, 0xa0, 0x9a, 0x56, 0xd9, 0x68, 0xcf},
139 0x86, 0x3e, 0x78, 0xdd, 0x2d, 0x60, 0xd1, 0x3c}
142 * id-Gost28147-89-CryptoPro-A-ParamSet (1.2.643.2.2.31.1)
145 { /* Calculated by libcapi10, CryptoPro CSP
149 0x74, 0x3d, 0x76, 0xf9, 0x1b, 0xee, 0x35, 0x3c,
150 0xa2, 0x5c, 0x3b, 0x10, 0xeb, 0x64, 0xcf, 0xf5},
151 "id-Gost28147-89-CryptoPro-A-ParamSet",
154 0xbb, 0xf1, 0xed, 0xd3, 0x20, 0xaf, 0x8a, 0x62,
155 0x8e, 0x11, 0xc8, 0xa9, 0x51, 0xcc, 0xbe, 0x81,
156 0x47, 0x7b, 0x41, 0xa1, 0x6a, 0xf6, 0x7f, 0x05,
157 0xe8, 0x51, 0x2f, 0x9e, 0x01, 0xf8, 0xcf, 0x49},
161 0xc3, 0x73, 0x90, 0x95, 0x35, 0x58, 0x08, 0x63,
162 0xcb, 0x68, 0x85, 0x96, 0x77, 0xe8, 0xfb, 0xa9}
164 { /* Calculated by libcapi10, CryptoPro CSP
168 0xd2, 0xfd, 0xf8, 0x3a, 0xc1, 0xb4, 0x39, 0x23,
169 0x2e, 0xaa, 0xcc, 0x98, 0x0a, 0x02, 0xda, 0x33},
170 "id-Gost28147-89-CryptoPro-A-ParamSet",
173 0x8d, 0x5a, 0x2c, 0x83, 0xa7, 0xc7, 0x0a, 0x61,
174 0xd6, 0x1b, 0x34, 0xb5, 0x1f, 0xdf, 0x42, 0x68,
175 0x66, 0x71, 0xa3, 0x5d, 0x87, 0x4c, 0xfd, 0x84,
176 0x99, 0x36, 0x63, 0xb6, 0x1e, 0xd6, 0x0d, 0xad},
179 0x46, 0x60, 0x6f, 0x0d, 0x88, 0x34, 0x23, 0x5a},
181 0x88, 0xb7, 0x75, 0x16, 0x74, 0xa5, 0xee, 0x2d,
182 0x14, 0xfe, 0x91, 0x67, 0xd0, 0x5c, 0xcc, 0x40}
184 { /* Calculated by libcapi10, CryptoPro CSP
188 0x90, 0xa2, 0x39, 0x66, 0xae, 0x01, 0xb9, 0xa3,
189 0x52, 0x4e, 0xc8, 0xed, 0x6c, 0xdd, 0x88, 0x30},
190 "id-Gost28147-89-CryptoPro-A-ParamSet",
193 0x59, 0x9f, 0x84, 0xba, 0xc3, 0xf3, 0xd2, 0xf1,
194 0x60, 0xe1, 0xe3, 0xf2, 0x6a, 0x96, 0x1a, 0xf9,
195 0x9c, 0x48, 0xb2, 0x4e, 0xbc, 0xbb, 0xbf, 0x7c,
196 0xd8, 0xf3, 0xac, 0xcd, 0x96, 0x8d, 0x28, 0x6a},
199 0x8d, 0xaf, 0xa8, 0xd1, 0x58, 0xed, 0x05, 0x8d},
201 0x6e, 0x72, 0x62, 0xcc, 0xe3, 0x59, 0x36, 0x90,
202 0x83, 0x3a, 0xfe, 0xa9, 0x1b, 0xc9, 0xbe, 0xce}
204 { /* Calculated by libcapi10, CryptoPro CSP
208 0xb5, 0xa1, 0xf0, 0xe3, 0xce, 0x2f, 0x02, 0x1d,
209 0x67, 0x61, 0x94, 0x34, 0x5c, 0x41, 0xe3, 0x6e},
210 "id-Gost28147-89-CryptoPro-A-ParamSet",
213 0x9d, 0x05, 0xb7, 0x9e, 0x90, 0xca, 0xd0, 0x0a,
214 0x2c, 0xda, 0xd2, 0x2e, 0xf4, 0xe8, 0x6f, 0x5c,
215 0xf5, 0xdc, 0x37, 0x68, 0x19, 0x85, 0xb3, 0xbf,
216 0xaa, 0x18, 0xc1, 0xc3, 0x05, 0x0a, 0x91, 0xa2},
220 0xf8, 0x1f, 0x08, 0xa3}
223 * Other paramsets and key meshing test cases.
225 { /* Calculated by libcapi10, CryptoPro CSP
229 0x8c, 0x9c, 0x44, 0x35, 0xfb, 0xe9, 0xa5, 0xa3,
230 0xa0, 0xae, 0x28, 0x56, 0x91, 0x10, 0x8e, 0x1e,
231 0xd2, 0xbb, 0x18, 0x53, 0x81, 0x27, 0x0d, 0xa6,
232 0x68, 0x59, 0x36, 0xc5, 0x81, 0x62, 0x9a, 0x8e,
233 0x7d, 0x50, 0xf1, 0x6f, 0x97, 0x62, 0x29, 0xec,
234 0x80, 0x51, 0xe3, 0x7d, 0x6c, 0xc4, 0x07, 0x95,
235 0x28, 0x63, 0xdc, 0xb4, 0xb9, 0x2d, 0xb8, 0x13,
236 0xb1, 0x05, 0xb5, 0xf9, 0xeb, 0x75, 0x37, 0x4e,
237 0xf7, 0xbf, 0x51, 0xf1, 0x98, 0x86, 0x43, 0xc4,
238 0xe4, 0x3d, 0x3e, 0xa7, 0x62, 0xec, 0x41, 0x59,
239 0xe0, 0xbd, 0xfb, 0xb6, 0xfd, 0xec, 0xe0, 0x77,
240 0x13, 0xd2, 0x59, 0x90, 0xa1, 0xb8, 0x97, 0x6b,
241 0x3d, 0x8b, 0x7d, 0xfc, 0x9d, 0xca, 0x82, 0x73,
242 0x32, 0x70, 0x0a, 0x74, 0x03, 0xc6, 0x0c, 0x26,
243 0x7f, 0x56, 0xf0, 0x9d, 0xb2, 0xeb, 0x71, 0x40,
244 0xd7, 0xc3, 0xb1, 0xa7, 0xc5, 0x1e, 0x20, 0x17,
245 0xb3, 0x50, 0x1d, 0x8a, 0x6e, 0x19, 0xcb, 0xbe,
246 0x20, 0x86, 0x2b, 0xd6, 0x1c, 0xfd, 0xb4, 0xb7,
247 0x5d, 0x9a, 0xb3, 0xe3, 0x7d, 0x15, 0x7a, 0x35,
248 0x01, 0x9f, 0x5d, 0x65, 0x89, 0x4b, 0x34, 0xc6,
249 0xf4, 0x81, 0x3f, 0x78, 0x30, 0xcf, 0xe9, 0x15,
250 0x90, 0x9a, 0xf9, 0xde, 0xba, 0x63, 0xd0, 0x19,
251 0x14, 0x66, 0x3c, 0xb9, 0xa4, 0xb2, 0x84, 0x94,
252 0x02, 0xcf, 0xce, 0x20, 0xcf, 0x76, 0xe7, 0xc5,
253 0x48, 0xf7, 0x69, 0x3a, 0x5d, 0xec, 0xaf, 0x41,
254 0xa7, 0x12, 0x64, 0x83, 0xf5, 0x99, 0x1e, 0x9e,
255 0xb2, 0xab, 0x86, 0x16, 0x00, 0x23, 0x8e, 0xe6,
256 0xd9, 0x80, 0x0b, 0x6d, 0xc5, 0x93, 0xe2, 0x5c,
257 0x8c, 0xd8, 0x5e, 0x5a, 0xae, 0x4a, 0x85, 0xfd,
258 0x76, 0x01, 0xea, 0x30, 0xf3, 0x78, 0x34, 0x10,
259 0x72, 0x51, 0xbc, 0x9f, 0x76, 0xce, 0x1f, 0xd4,
260 0x8f, 0x33, 0x50, 0x34, 0xc7, 0x4d, 0x7b, 0xcf,
261 0x91, 0x63, 0x7d, 0x82, 0x9e, 0xa1, 0x23, 0x45,
262 0xf5, 0x45, 0xac, 0x98, 0x7a, 0x48, 0xff, 0x64,
263 0xd5, 0x59, 0x47, 0xde, 0x2b, 0x3f, 0xfa, 0xec,
264 0x50, 0xe0, 0x81, 0x60, 0x8b, 0xc3, 0xfc, 0x80,
265 0x98, 0x17, 0xc7, 0xa3, 0xc2, 0x57, 0x3d, 0xab,
266 0x91, 0x67, 0xf5, 0xc4, 0xab, 0x92, 0xc8, 0xd6,
267 0x3b, 0x6b, 0x3f, 0xff, 0x15, 0x6b, 0xcf, 0x53,
268 0x65, 0x02, 0xf1, 0x74, 0xca, 0xa9, 0xbe, 0x24,
269 0xd2, 0xf0, 0xb7, 0x26, 0xa8, 0xd7, 0x6d, 0xed,
270 0x90, 0x36, 0x7b, 0x3e, 0x41, 0xa9, 0x7f, 0xa3,
271 0x1b, 0xf4, 0x43, 0xc5, 0x51, 0xbe, 0x28, 0x59,
272 0xe9, 0x45, 0x26, 0x49, 0x38, 0x32, 0xf8, 0xf3,
273 0x92, 0x6e, 0x30, 0xcc, 0xb0, 0xa0, 0xf9, 0x01,
274 0x14, 0xc8, 0xba, 0xd9, 0xf0, 0x2a, 0x29, 0xe2,
275 0x52, 0x9a, 0x76, 0x95, 0x3a, 0x16, 0x32, 0xec,
276 0xf4, 0x10, 0xec, 0xee, 0x47, 0x00, 0x70, 0x19,
277 0xe4, 0x72, 0x35, 0x66, 0x44, 0x53, 0x2d, 0xa2,
278 0xf3, 0xaa, 0x7e, 0x8a, 0x33, 0x13, 0xcd, 0xc8,
279 0xbf, 0x0e, 0x40, 0x90, 0x00, 0xe4, 0x42, 0xc3,
280 0x09, 0x84, 0xe1, 0x66, 0x17, 0xa2, 0xaf, 0x03,
281 0xab, 0x6b, 0xa1, 0xec, 0xfb, 0x17, 0x72, 0x81,
282 0xfe, 0x9a, 0x9f, 0xf4, 0xb2, 0x33, 0x1f, 0xae,
283 0x0c, 0xd1, 0x6a, 0xae, 0x19, 0xb8, 0xaf, 0xec,
284 0xe3, 0xea, 0x00, 0xf8, 0xac, 0x87, 0x07, 0x5f,
285 0x6d, 0xb0, 0xac, 0x6b, 0x22, 0x48, 0x36, 0xbf,
286 0x22, 0x18, 0xb0, 0x03, 0x9f, 0x6c, 0x70, 0x45,
287 0x36, 0xf0, 0x6b, 0xc6, 0xc2, 0xa5, 0x72, 0x2c,
288 0xd8, 0xe0, 0x27, 0x3d, 0xec, 0x56, 0x07, 0x05,
289 0x7d, 0x83, 0xa1, 0x65, 0x7d, 0x41, 0x5b, 0xcd,
290 0x77, 0x24, 0xe5, 0xaa, 0x76, 0x47, 0xd0, 0x50,
291 0xf6, 0xe7, 0xb5, 0x59, 0x75, 0x31, 0x27, 0xef,
292 0xd8, 0xa6, 0x4e, 0x7f, 0xb8, 0x40, 0xb1, 0xdf,
293 0x53, 0x14, 0xed, 0xf1, 0x68, 0x5f, 0xfc, 0x3f,
294 0x02, 0xdb, 0x05, 0xeb, 0x31, 0xe4, 0x2c, 0x7f,
295 0x32, 0xb5, 0x70, 0x8e, 0x75, 0x85, 0xa4, 0x5c,
296 0x16, 0x23, 0x37, 0xf2, 0x10, 0x79, 0xcb, 0xdc,
297 0xf8, 0x1c, 0x25, 0xc2, 0xa1, 0x3d, 0x9c, 0x33,
298 0x6c, 0xed, 0xc3, 0xe7, 0xf3, 0x02, 0x87, 0x82,
299 0x4e, 0xfb, 0xac, 0xb3, 0x2d, 0xfc, 0xf8, 0x0d,
300 0x1d, 0x4a, 0x39, 0xd4, 0xb3, 0x09, 0xbb, 0xe9,
301 0x25, 0xc7, 0xec, 0x6a, 0x87, 0x72, 0x84, 0xed,
302 0x12, 0x60, 0x19, 0x64, 0xeb, 0x16, 0x2a, 0x5b,
303 0x10, 0x76, 0x27, 0xff, 0x7b, 0xe4, 0xae, 0xe5,
304 0xa4, 0x04, 0x02, 0x7f, 0xbb, 0x0a, 0xb5, 0xf4,
305 0x05, 0xa5, 0x56, 0x1c, 0x53, 0x31, 0x7a, 0x93,
306 0xba, 0x16, 0x15, 0xab, 0x62, 0x60, 0xfc, 0xde,
307 0x72, 0x36, 0x6e, 0x28, 0xaf, 0x98, 0x0d, 0xe6,
308 0xf4, 0xde, 0x60, 0xa7, 0x7e, 0x06, 0x07, 0x86,
309 0xf3, 0x94, 0xb6, 0x6d, 0x0d, 0x93, 0xa6, 0xbc,
310 0x60, 0x70, 0x33, 0xac, 0x3f, 0xa1, 0xa8, 0x4a,
311 0x20, 0x61, 0xb6, 0xb5, 0x43, 0xa3, 0x15, 0x5a,
312 0x00, 0xbe, 0x76, 0x98, 0x57, 0x72, 0xab, 0x7a,
313 0x0e, 0x18, 0x93, 0x82, 0x3a, 0x18, 0x78, 0x6e,
314 0x71, 0x7b, 0x78, 0x4f, 0x7e, 0x8c, 0xde, 0x7a,
315 0x62, 0xb5, 0x0a, 0x7c, 0x45, 0x1d, 0x16, 0xd5,
316 0xc3, 0x8c, 0x9b, 0x25, 0xb4, 0x50, 0x90, 0xcd,
317 0x96, 0x93, 0xad, 0x0f, 0xd4, 0x43, 0xcb, 0x49,
318 0x0f, 0xfc, 0x5a, 0x31, 0xf4, 0x19, 0xb7, 0xd4,
319 0xeb, 0x4d, 0x40, 0x58, 0xd0, 0x3b, 0xc8, 0xe0,
320 0x4a, 0x54, 0x2f, 0xdb, 0x22, 0xc3, 0x29, 0x7b,
321 0x40, 0x90, 0x61, 0x43, 0xd3, 0x7e, 0xe2, 0x30,
322 0x2b, 0x48, 0x3c, 0xce, 0x90, 0x93, 0xb1, 0x8b,
323 0x31, 0x96, 0x65, 0x6d, 0x57, 0x8b, 0x9d, 0x4d,
324 0x53, 0xf0, 0x83, 0x1c, 0xe5, 0xa1, 0x9d, 0x55,
325 0xe3, 0xbf, 0x7e, 0xca, 0x1a, 0x74, 0x66, 0x14,
326 0xcc, 0x47, 0x43, 0xd9, 0xbb, 0xef, 0x97, 0x7d,
327 0xb7, 0x6e, 0xff, 0xf1, 0x22, 0xf8, 0x10, 0x2d,
328 0x3f, 0xcd, 0x49, 0x96, 0xd9, 0x09, 0x11, 0xb8,
329 0x33, 0xd0, 0x23, 0x9a, 0xfa, 0x16, 0xcb, 0x50,
330 0x26, 0x57, 0x24, 0x5c, 0x0e, 0xba, 0xf0, 0x3f,
331 0x37, 0x2f, 0xa3, 0xf7, 0x18, 0x57, 0x48, 0x48,
332 0x95, 0xcf, 0xef, 0x87, 0x67, 0x2a, 0xe9, 0xb6,
333 0x8a, 0x21, 0x36, 0x7f, 0xff, 0x48, 0x6c, 0x46,
334 0x35, 0x57, 0xf2, 0xbc, 0x48, 0x67, 0x8f, 0x63,
335 0x23, 0x78, 0x11, 0x2b, 0xc2, 0x08, 0xde, 0x51,
336 0xe8, 0x8b, 0x92, 0x29, 0xf9, 0x9a, 0x9e, 0xad,
337 0xed, 0x0f, 0xeb, 0xa2, 0xd2, 0x40, 0x92, 0xd4,
338 0xde, 0x62, 0x95, 0x76, 0xfd, 0x6e, 0x3c, 0xbf,
339 0xc0, 0xd7, 0x0d, 0xe5, 0x1b, 0xa4, 0xc7, 0x18,
340 0xe1, 0x58, 0xa4, 0x56, 0xef, 0x2e, 0x17, 0x1b,
341 0x75, 0xcb, 0xbc, 0xf9, 0x2a, 0x95, 0x71, 0xa7,
342 0x1d, 0x7f, 0xe7, 0x73, 0x63, 0x05, 0x6b, 0x19,
343 0x4c, 0xf4, 0x22, 0x14, 0xc4, 0x59, 0x88, 0x66,
344 0x92, 0x86, 0x61, 0x5c, 0x6a, 0xae, 0xec, 0x58,
345 0xff, 0xc9, 0xf2, 0x44, 0xd4, 0xa2, 0xf5, 0x98,
346 0xeb, 0x5f, 0x09, 0xbc, 0x8a, 0xbf, 0x3c, 0xb4,
347 0x3e, 0xb1, 0x20, 0x05, 0x44, 0x96, 0x79, 0x0a,
348 0x40, 0x92, 0x7f, 0x9d, 0xd1, 0xaf, 0xbc, 0x90,
349 0x95, 0x0a, 0x81, 0xd4, 0xa7, 0xc6, 0xb8, 0xe0,
350 0xe4, 0x39, 0x30, 0x1d, 0x79, 0xc0, 0xe5, 0xfa,
351 0xb4, 0xe9, 0x63, 0xb4, 0x09, 0x72, 0x3b, 0x3e,
352 0xd9, 0xf6, 0xd9, 0x10, 0x21, 0x18, 0x7e, 0xe5,
353 0xad, 0x81, 0xd7, 0xd5, 0x82, 0xd0, 0x8c, 0x3b,
354 0x38, 0x95, 0xf8, 0x92, 0x01, 0xa9, 0x92, 0x00,
355 0x70, 0xd1, 0xa7, 0x88, 0x77, 0x1f, 0x3a, 0xeb,
356 0xb5, 0xe4, 0xf5, 0x9d, 0xc7, 0x37, 0x86, 0xb2,
357 0x12, 0x46, 0x34, 0x19, 0x72, 0x8c, 0xf5, 0x8c,
358 0xf6, 0x78, 0x98, 0xe0, 0x7c, 0xd3, 0xf4},
359 "id-Gost28147-89-CryptoPro-B-ParamSet",
362 0x48, 0x0c, 0x74, 0x1b, 0x02, 0x6b, 0x55, 0xd5,
363 0xb6, 0x6d, 0xd7, 0x1d, 0x40, 0x48, 0x05, 0x6b,
364 0x6d, 0xeb, 0x3c, 0x29, 0x0f, 0x84, 0x80, 0x23,
365 0xee, 0x0d, 0x47, 0x77, 0xe3, 0xfe, 0x61, 0xc9},
368 0x1f, 0x3f, 0x82, 0x1e, 0x0d, 0xd8, 0x1e, 0x22},
370 0x23, 0xc6, 0x7f, 0x20, 0xa1, 0x23, 0x58, 0xbc,
371 0x7b, 0x05, 0xdb, 0x21, 0x15, 0xcf, 0x96, 0x41,
372 0xc7, 0x88, 0xef, 0x76, 0x5c, 0x49, 0xdb, 0x42,
373 0xbf, 0xf3, 0xc0, 0xf5, 0xbd, 0x5d, 0xd9, 0x8e,
374 0xaf, 0x3d, 0xf4, 0xe4, 0xda, 0x88, 0xbd, 0xbc,
375 0x47, 0x5d, 0x76, 0x07, 0xc9, 0x5f, 0x54, 0x1d,
376 0x1d, 0x6a, 0xa1, 0x2e, 0x18, 0xd6, 0x60, 0x84,
377 0x02, 0x18, 0x37, 0x92, 0x92, 0x15, 0xab, 0x21,
378 0xee, 0x21, 0xcc, 0x71, 0x6e, 0x51, 0xd9, 0x2b,
379 0xcc, 0x81, 0x97, 0x3f, 0xeb, 0x45, 0x99, 0xb8,
380 0x1b, 0xda, 0xff, 0x90, 0xd3, 0x41, 0x06, 0x9c,
381 0x3f, 0xfb, 0xe4, 0xb2, 0xdc, 0xc9, 0x03, 0x0d,
382 0xa7, 0xae, 0xd7, 0x7d, 0x02, 0xb8, 0x32, 0xab,
383 0xf3, 0x65, 0xa3, 0x65, 0x6c, 0x4e, 0xe4, 0xa2,
384 0x5e, 0x9e, 0xee, 0xcd, 0xde, 0x79, 0x36, 0x6b,
385 0x1b, 0xe1, 0x3c, 0xdf, 0x10, 0xad, 0x4f, 0x02,
386 0xe1, 0x14, 0xaa, 0x09, 0xb4, 0x0b, 0x76, 0xeb,
387 0x69, 0x38, 0x20, 0x02, 0xcb, 0x8e, 0xc0, 0xdf,
388 0xca, 0x48, 0x74, 0xc3, 0x31, 0xad, 0x42, 0x2c,
389 0x51, 0x9b, 0xd0, 0x6a, 0xc1, 0x36, 0xd7, 0x21,
390 0xdf, 0xb0, 0x45, 0xba, 0xca, 0x7f, 0x35, 0x20,
391 0x28, 0xbb, 0xc1, 0x76, 0xfd, 0x43, 0x5d, 0x23,
392 0x7d, 0x31, 0x84, 0x1a, 0x97, 0x4d, 0x83, 0xaa,
393 0x7e, 0xf1, 0xc4, 0xe6, 0x83, 0xac, 0x0d, 0xef,
394 0xef, 0x3c, 0xa4, 0x7c, 0x48, 0xe4, 0xc8, 0xca,
395 0x0d, 0x7d, 0xea, 0x7c, 0x45, 0xd7, 0x73, 0x50,
396 0x25, 0x1d, 0x01, 0xc4, 0x02, 0x1a, 0xcd, 0xe0,
397 0x38, 0x5b, 0xa8, 0x5a, 0x16, 0x9a, 0x10, 0x59,
398 0x74, 0xd7, 0x19, 0xc6, 0xf3, 0xb5, 0x17, 0xf6,
399 0x59, 0x8d, 0x62, 0xaf, 0x44, 0xe8, 0xdc, 0xe9,
400 0xc1, 0x76, 0xf1, 0xd0, 0xbd, 0x29, 0xd7, 0xec,
401 0x1d, 0xac, 0x57, 0xdb, 0x1a, 0x3f, 0xd8, 0xf6,
402 0x6e, 0xb6, 0xe6, 0xdf, 0x36, 0xe7, 0x89, 0xce,
403 0x56, 0x35, 0x43, 0x1c, 0x7d, 0x57, 0x79, 0x0e,
404 0xd8, 0xf4, 0xd7, 0xa7, 0x0d, 0xc6, 0x8f, 0x91,
405 0x66, 0x67, 0x82, 0x0f, 0x49, 0xc9, 0xc5, 0x65,
406 0x81, 0xa1, 0x39, 0x5a, 0x53, 0x9f, 0x02, 0xa5,
407 0xd5, 0x36, 0x22, 0xa8, 0xa8, 0x1c, 0x37, 0x0e,
408 0x76, 0x46, 0xdf, 0xbd, 0x6a, 0xdb, 0xfc, 0x1b,
409 0xbd, 0x10, 0xb8, 0xb1, 0xbc, 0x72, 0x4c, 0x58,
410 0x4a, 0xda, 0x6d, 0x66, 0x00, 0xda, 0x7a, 0x66,
411 0xa0, 0xe7, 0x3b, 0x39, 0xa3, 0xf7, 0x05, 0x07,
412 0xfa, 0x21, 0x4b, 0xc7, 0x94, 0xc0, 0xd3, 0x7b,
413 0x19, 0x02, 0x5d, 0x4a, 0x10, 0xf1, 0xc2, 0x0f,
414 0x19, 0x68, 0x27, 0xc7, 0x7d, 0xbf, 0x55, 0x03,
415 0x57, 0x7d, 0xaf, 0x77, 0xae, 0x80, 0x2f, 0x7a,
416 0xe6, 0x1f, 0x4b, 0xdc, 0x15, 0x18, 0xc0, 0x62,
417 0xa1, 0xe8, 0xd9, 0x1c, 0x9e, 0x8c, 0x96, 0x39,
418 0xc1, 0xc4, 0x88, 0xf7, 0x0c, 0xe1, 0x04, 0x84,
419 0x68, 0x51, 0xce, 0xf1, 0x90, 0xda, 0x7f, 0x76,
420 0xc8, 0xc0, 0x88, 0xef, 0x8e, 0x15, 0x25, 0x3e,
421 0x7b, 0xe4, 0x79, 0xb5, 0x66, 0x2d, 0x9c, 0xd1,
422 0x13, 0xda, 0xd0, 0xd5, 0x46, 0xd5, 0x8d, 0x46,
423 0x18, 0x07, 0xee, 0xd8, 0xc9, 0x64, 0xe3, 0xbe,
424 0x0e, 0x68, 0x27, 0x09, 0x96, 0x26, 0xf6, 0xe2,
425 0x19, 0x61, 0x3f, 0xf4, 0x58, 0x27, 0x0a, 0xeb,
426 0xce, 0x7c, 0xb6, 0x68, 0x92, 0xe7, 0x12, 0x3b,
427 0x31, 0xd4, 0x48, 0xdf, 0x35, 0x8d, 0xf4, 0x86,
428 0x42, 0x2a, 0x15, 0x4b, 0xe8, 0x19, 0x1f, 0x26,
429 0x65, 0x9b, 0xa8, 0xda, 0x4b, 0x79, 0x1f, 0x8e,
430 0xe6, 0x13, 0x7e, 0x49, 0x8f, 0xc1, 0xce, 0xdc,
431 0x5e, 0x64, 0x74, 0xce, 0x02, 0x78, 0xe0, 0xcf,
432 0xa0, 0xed, 0x5e, 0x31, 0x74, 0xd1, 0xd0, 0xb4,
433 0xee, 0x70, 0x19, 0x14, 0x3c, 0x8f, 0x16, 0xa6,
434 0xcf, 0x12, 0x93, 0x15, 0x88, 0xeb, 0x91, 0x65,
435 0x76, 0x98, 0xfd, 0xa1, 0x94, 0x30, 0xba, 0x43,
436 0x62, 0x65, 0x40, 0x04, 0x77, 0x9e, 0xd6, 0xab,
437 0x8b, 0x0d, 0x93, 0x80, 0x50, 0x5f, 0xa2, 0x76,
438 0x20, 0xa7, 0xd6, 0x9c, 0x27, 0x15, 0x27, 0xbc,
439 0xa5, 0x5a, 0xbf, 0xe9, 0x92, 0x82, 0x05, 0xa8,
440 0x41, 0xe9, 0xb5, 0x60, 0xd5, 0xc0, 0xd7, 0x4b,
441 0xad, 0x38, 0xb2, 0xe9, 0xd1, 0xe5, 0x51, 0x5f,
442 0x24, 0x78, 0x24, 0x9a, 0x23, 0xd2, 0xc2, 0x48,
443 0xbd, 0x0e, 0xf1, 0x37, 0x72, 0x91, 0x87, 0xb0,
444 0x4e, 0xbd, 0x99, 0x6b, 0x2c, 0x01, 0xb6, 0x79,
445 0x69, 0xec, 0x0c, 0xed, 0xe5, 0x3f, 0x50, 0x64,
446 0x7c, 0xb9, 0xdd, 0xe1, 0x92, 0x81, 0xb5, 0xd0,
447 0xcb, 0x17, 0x83, 0x86, 0x8b, 0xea, 0x4f, 0x93,
448 0x08, 0xbc, 0x22, 0x0c, 0xef, 0xe8, 0x0d, 0xf5,
449 0x9e, 0x23, 0xe1, 0xf9, 0xb7, 0x6b, 0x45, 0x0b,
450 0xcb, 0xa9, 0xb6, 0x4d, 0x28, 0x25, 0xba, 0x3e,
451 0x86, 0xf2, 0x75, 0x47, 0x5d, 0x9d, 0x6b, 0xf6,
452 0x8a, 0x05, 0x58, 0x73, 0x3d, 0x00, 0xde, 0xfd,
453 0x69, 0xb1, 0x61, 0x16, 0xf5, 0x2e, 0xb0, 0x9f,
454 0x31, 0x6a, 0x00, 0xb9, 0xef, 0x71, 0x63, 0x47,
455 0xa3, 0xca, 0xe0, 0x40, 0xa8, 0x7e, 0x02, 0x04,
456 0xfe, 0xe5, 0xce, 0x48, 0x73, 0xe3, 0x94, 0xcf,
457 0xe2, 0xff, 0x29, 0x7e, 0xf6, 0x32, 0xbb, 0xb7,
458 0x55, 0x12, 0x21, 0x7a, 0x9c, 0x75, 0x04, 0x0c,
459 0xb4, 0x7c, 0xb0, 0x3d, 0x40, 0xb3, 0x11, 0x9a,
460 0x7a, 0x9a, 0x13, 0xfb, 0x77, 0xa7, 0x51, 0x68,
461 0xf7, 0x05, 0x47, 0x3b, 0x0f, 0x52, 0x5c, 0xe6,
462 0xc2, 0x99, 0x3a, 0x37, 0x54, 0x5c, 0x4f, 0x2b,
463 0xa7, 0x01, 0x08, 0x74, 0xbc, 0x91, 0xe3, 0xe2,
464 0xfe, 0x65, 0x94, 0xfd, 0x3d, 0x18, 0xe0, 0xf0,
465 0x62, 0xed, 0xc2, 0x10, 0x82, 0x9c, 0x58, 0x7f,
466 0xb2, 0xa3, 0x87, 0x8a, 0x74, 0xd9, 0xc1, 0xfb,
467 0x84, 0x28, 0x17, 0xc7, 0x2b, 0xcb, 0x53, 0x1f,
468 0x4e, 0x8a, 0x82, 0xfc, 0xb4, 0x3f, 0xc1, 0x47,
469 0x25, 0xf3, 0x21, 0xdc, 0x4c, 0x2d, 0x08, 0xfa,
470 0xe7, 0x0f, 0x03, 0xa9, 0x68, 0xde, 0x6b, 0x41,
471 0xa0, 0xf9, 0x41, 0x6c, 0x57, 0x4d, 0x3a, 0x0e,
472 0xea, 0x51, 0xca, 0x9f, 0x97, 0x11, 0x7d, 0xf6,
473 0x8e, 0x88, 0x63, 0x67, 0xc9, 0x65, 0x13, 0xca,
474 0x38, 0xed, 0x35, 0xbe, 0xf4, 0x27, 0xa9, 0xfc,
475 0xa9, 0xe6, 0xc3, 0x40, 0x86, 0x08, 0x39, 0x72,
476 0x37, 0xee, 0xb2, 0x87, 0x09, 0x96, 0xb7, 0x40,
477 0x87, 0x36, 0x92, 0xc1, 0x5d, 0x6a, 0x2c, 0x43,
478 0xca, 0x25, 0xc8, 0x35, 0x37, 0x2d, 0xb5, 0xa9,
479 0x27, 0x44, 0x50, 0xf2, 0x6d, 0x22, 0x75, 0x41,
480 0x77, 0x2a, 0xdb, 0xb1, 0x8c, 0x6d, 0x05, 0xe8,
481 0xc9, 0x99, 0xc7, 0x08, 0xf9, 0x14, 0x8f, 0x78,
482 0xa9, 0x8f, 0xc2, 0x5a, 0x7a, 0x65, 0xc5, 0xd8,
483 0x86, 0xbb, 0x72, 0x69, 0x6b, 0x6b, 0x45, 0x83,
484 0x5b, 0xb1, 0xf7, 0xcd, 0x16, 0x73, 0xee, 0xe9,
485 0x80, 0x85, 0xfe, 0x8e, 0xe1, 0xae, 0x53, 0x8f,
486 0xde, 0xbe, 0x48, 0x8b, 0x59, 0xef, 0xf6, 0x7e,
487 0xd8, 0xb5, 0xa8, 0x47, 0xc0, 0x4e, 0x15, 0x58,
488 0xca, 0xd3, 0x2f, 0xf8, 0x6c, 0xa6, 0x3d, 0x78,
489 0x4d, 0x7a, 0x54, 0xd6, 0x10, 0xe5, 0xcc, 0x05,
490 0xe2, 0x29, 0xb5, 0x86, 0x07, 0x39, 0x7d, 0x78,
491 0x8e, 0x5a, 0x8f, 0x83, 0x4c, 0xe7, 0x3d, 0x68,
492 0x3e, 0xe5, 0x02, 0xe6, 0x64, 0x4f, 0x5e, 0xb4,
493 0x49, 0x77, 0xf0, 0xc0, 0xfa, 0x6f, 0xc8, 0xfb,
494 0x9f, 0x84, 0x6f, 0x55, 0xfb, 0x30, 0x5e, 0x89,
495 0x93, 0xa9, 0xf3, 0xa6, 0xa3, 0xd7, 0x26, 0xbb,
496 0xd8, 0xa8, 0xd9, 0x95, 0x1d, 0xfe, 0xfc, 0xd7,
497 0xa8, 0x93, 0x66, 0x2f, 0x04, 0x53, 0x06, 0x64,
498 0x7f, 0x31, 0x29, 0xae, 0xb7, 0x9f, 0xba, 0xc4,
499 0x6d, 0x68, 0xd1, 0x24, 0x32, 0xf4, 0x11}
501 { /* Calculated by libcapi10, CryptoPro CSP
505 0x07, 0x9c, 0x91, 0xbe},
506 "id-Gost28147-89-CryptoPro-C-ParamSet",
509 0x77, 0xc3, 0x45, 0x8e, 0xf6, 0x42, 0xe7, 0x04,
510 0x8e, 0xfc, 0x08, 0xe4, 0x70, 0x96, 0xd6, 0x05,
511 0x93, 0x59, 0x02, 0x6d, 0x6f, 0x97, 0xca, 0xe9,
512 0xcf, 0x89, 0x44, 0x4b, 0xde, 0x6c, 0x22, 0x1d},
515 0x43, 0x7c, 0x3e, 0x8e, 0x2f, 0x2a, 0x00, 0x98},
517 0x19, 0x35, 0x81, 0x34}
519 { /* Calculated by libcapi10, CryptoPro CSP
523 0x2f, 0x31, 0xd8, 0x83, 0xb4, 0x20, 0xe8, 0x6e,
525 "id-Gost28147-89-CryptoPro-D-ParamSet",
528 0x38, 0x9f, 0xe8, 0x37, 0xff, 0x9c, 0x5d, 0x29,
529 0xfc, 0x48, 0x55, 0xa0, 0x87, 0xea, 0xe8, 0x40,
530 0x20, 0x87, 0x5b, 0xb2, 0x01, 0x15, 0x55, 0xa7,
531 0xe3, 0x2d, 0xcb, 0x3d, 0xd6, 0x59, 0x04, 0x73},
534 0xc5, 0xa2, 0xd2, 0x1f, 0x2f, 0xdf, 0xb8, 0xeb},
536 0x6d, 0xa4, 0xed, 0x40, 0x08, 0x88, 0x71, 0xad,
539 { /* Calculated by libcapi10, CryptoPro CSP
543 "id-Gost28147-89-CryptoPro-A-ParamSet",
546 0x61, 0x58, 0x44, 0x5a, 0x41, 0xf6, 0xc7, 0x0f,
547 0x6b, 0xdb, 0x51, 0x91, 0x6a, 0xf6, 0x81, 0x30,
548 0x8c, 0xa7, 0x98, 0xdd, 0x38, 0x35, 0x8a, 0x60,
549 0x85, 0xb4, 0xf0, 0xf9, 0x43, 0xa2, 0x7d, 0x9a},
552 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
554 0x1c, 0x16, 0xa0, 0xe9, 0x63, 0x94, 0xfe, 0x38,
555 0x37, 0xa7, 0x9b, 0x70, 0x25, 0x2e, 0xd6, 0x00}
557 { /* Calculated by libcapi10, CryptoPro CSP
559 U64(4294967296) + 16,
561 "id-Gost28147-89-CryptoPro-A-ParamSet",
564 0xae, 0x57, 0xa2, 0xdd, 0xa4, 0xef, 0x4f, 0x96,
565 0xb8, 0x94, 0xa5, 0xd1, 0x1b, 0xc8, 0x9b, 0x42,
566 0xa5, 0x24, 0xcc, 0x89, 0x5c, 0xb8, 0x92, 0x52,
567 0xc1, 0x12, 0x6a, 0xb0, 0x9a, 0x26, 0xe8, 0x06},
570 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
572 0x2e, 0x62, 0xb0, 0x2e, 0xc7, 0x87, 0x4b, 0x29,
573 0x33, 0x16, 0x6b, 0xb4, 0xd6, 0x61, 0x66, 0xd9}
575 { /* Calculated by libcapi10, CryptoPro CSP
579 0x3d, 0x0b, 0x69, 0xf7, 0xa8, 0xe4, 0xfc, 0x99,
580 0x22, 0x2e, 0xee, 0xd1, 0x63, 0x12, 0xfe, 0xa8,
581 0x9d, 0xcb, 0x6c, 0x4d, 0x48, 0x8c, 0xe8, 0xbd,
582 0x8b, 0x60, 0xf1, 0xbf, 0x7b, 0xe3, 0x79, 0xd5,
583 0x2b, 0x25, 0x97, 0x13, 0xef, 0x35, 0xda, 0xf4,
584 0xbc, 0x77, 0xce, 0xea, 0xe9, 0x3f, 0xa4, 0xb6,
585 0x01, 0xd5, 0x73, 0x29, 0x58, 0xda, 0xd7, 0x67,
586 0x17, 0xac, 0xe4, 0x75, 0x2f, 0x57, 0x23, 0xac,
587 0x96, 0x21, 0xc7, 0x62, 0x2d, 0xf7, 0x32, 0xb5,
588 0x44, 0x5f, 0x72, 0xb1, 0x5f, 0xba, 0x1b, 0x1e,
589 0xdb, 0x4a, 0x09, 0x8c, 0x92, 0x61, 0xa2, 0xb0,
590 0x49, 0x68, 0xe5, 0xb3, 0xa2, 0x8f, 0x13, 0x4b,
591 0xf5, 0x4d, 0x84, 0xda, 0xab, 0xa0, 0xb6, 0xd1,
592 0x5a, 0x63, 0x19, 0xe8, 0xa2, 0x09, 0xf6, 0x76,
593 0x6f, 0x9b, 0x48, 0x0a, 0x15, 0x5d, 0xb7, 0x20,
594 0x21, 0x9a, 0x2e, 0xb9, 0x6d, 0xfa, 0x1e, 0xc2,
595 0x0e, 0xef, 0x15, 0xab, 0x59, 0x01, 0xfe, 0x43,
596 0x90, 0xf2, 0x62, 0xca, 0x4a, 0x9a, 0x48, 0x38,
597 0xab, 0x6f, 0x9d, 0x21, 0xb3, 0xad, 0xa7, 0x60,
598 0x46, 0xe3, 0xef, 0xd0, 0xe3, 0x1d, 0xc5, 0xe1,
599 0xb8, 0xa1, 0xe2, 0x99, 0x20, 0xc5, 0x76, 0xcc,
600 0xaa, 0x8a, 0xa9, 0x45, 0x55, 0xa0, 0x78, 0x00,
601 0x64, 0xde, 0xcf, 0x5b, 0xdf, 0x26, 0x48, 0xcd,
602 0xba, 0x8a, 0xb5, 0xfb, 0xfd, 0x4a, 0xd5, 0xc4,
603 0xe0, 0x43, 0xa6, 0x71, 0x90, 0xa4, 0x8b, 0xca,
604 0x2e, 0x88, 0x7b, 0xac, 0xb2, 0xdc, 0xf2, 0x01,
605 0xcb, 0xda, 0x6e, 0x91, 0x27, 0x28, 0x44, 0x88,
606 0x9a, 0xd2, 0x12, 0xf1, 0xa6, 0xf5, 0xb7, 0x61,
607 0xce, 0x79, 0x62, 0x52, 0x3c, 0xe6, 0x14, 0x73,
608 0xd1, 0x41, 0x92, 0x50, 0xbd, 0xdc, 0x3b, 0xd0,
609 0xa7, 0x11, 0x8c, 0x3a, 0xe4, 0x2d, 0xf2, 0x52,
610 0xd3, 0x2f, 0x7c, 0x8e, 0x54, 0x90, 0x4e, 0x23,
611 0xae, 0xb3, 0xa0, 0xf3, 0x25, 0x7e, 0x66, 0xaa,
612 0x0f, 0x6f, 0x81, 0x72, 0x77, 0xbb, 0xd3, 0x47,
613 0xe8, 0x05, 0xff, 0xe1, 0x5b, 0xc9, 0x37, 0x50,
614 0x33, 0x49, 0x17, 0xaf, 0xab, 0x1d, 0xe1, 0x15,
615 0xf2, 0xe5, 0x98, 0x5e, 0x2d, 0x05, 0x1f, 0x0d,
616 0x55, 0x97, 0xed, 0xff, 0x5e, 0xe0, 0x0f, 0xc3,
617 0x9c, 0xbd, 0x82, 0xc2, 0x06, 0xbe, 0x45, 0x66,
618 0xae, 0x33, 0xbe, 0x28, 0x48, 0xe9, 0x2d, 0x1a,
619 0xe6, 0x65, 0x8e, 0xdf, 0x76, 0x03, 0x73, 0x4b,
620 0xc0, 0x80, 0x71, 0xf9, 0xac, 0xba, 0xa0, 0xb0,
621 0x19, 0x1a, 0x0a, 0xd4, 0x35, 0x12, 0x88, 0x76,
622 0x05, 0x75, 0x8f, 0x7c, 0xb5, 0xf0, 0x19, 0x75,
623 0x6d, 0x05, 0xcb, 0x0d, 0xbc, 0x8d, 0xe9, 0xf0,
624 0xd4, 0xdb, 0x3c, 0x3c, 0x29, 0x8e, 0x2c, 0x32,
625 0x1d, 0xf7, 0xb6, 0x49, 0xcf, 0xdb, 0x63, 0xee,
626 0x3c, 0xfa, 0x33, 0x73, 0x6f, 0xe4, 0x97, 0x4e,
627 0x2f, 0xc9, 0x4c, 0x5c, 0x65, 0xfe, 0xea, 0xfb,
628 0xc6, 0xdd, 0xc1, 0x1c, 0x47, 0x3f, 0xf4, 0x50,
629 0x2f, 0xde, 0x1b, 0x5b, 0x0b, 0x16, 0xca, 0xb6,
630 0x46, 0x44, 0xf2, 0xc1, 0x0d, 0xa1, 0x1d, 0xa6,
631 0xdb, 0xf0, 0x3d, 0xb1, 0x6c, 0x05, 0x31, 0x85,
632 0x8e, 0x74, 0xae, 0xf2, 0x39, 0x26, 0xf7, 0xc1,
633 0xe7, 0x4c, 0xdd, 0x9d, 0x40, 0xb8, 0xf3, 0xc5,
634 0xc2, 0x16, 0x64, 0x6b, 0xaa, 0xdb, 0x4b, 0x82,
635 0x5c, 0xd3, 0x02, 0xd3, 0x8f, 0x26, 0x79, 0x8d,
636 0xb0, 0x78, 0x70, 0x19, 0x58, 0x0c, 0xb4, 0x31,
637 0x88, 0x44, 0x1c, 0x91, 0x6f, 0xf4, 0x52, 0x39,
638 0xa8, 0xf5, 0xc0, 0x1b, 0xfe, 0xf2, 0x0e, 0x4b,
639 0xac, 0x0a, 0xc2, 0x7e, 0x9c, 0x9b, 0xeb, 0x5d,
640 0x4e, 0x4f, 0x42, 0xd8, 0x71, 0x0a, 0x97, 0x27,
641 0x03, 0x14, 0x96, 0xa6, 0x3d, 0x04, 0xea, 0x9f,
642 0x14, 0x14, 0x27, 0x4c, 0xd9, 0xa2, 0x89, 0x5f,
643 0x65, 0x4a, 0xe1, 0x9d, 0x2c, 0xb8, 0xf8, 0xd4,
644 0x8f, 0x2a, 0x57, 0x36, 0xcc, 0x06, 0x9c, 0x2c,
645 0xc5, 0x13, 0x16, 0xdf, 0xfc, 0xae, 0x22, 0x16,
646 0xa8, 0x2b, 0x71, 0x6f, 0x1d, 0xb3, 0x47, 0x54,
647 0x3f, 0x2d, 0x0a, 0x68, 0x9f, 0x2e, 0xf6, 0x90,
648 0xd8, 0xa1, 0x21, 0x09, 0xd4, 0x97, 0xb9, 0x7b,
649 0x7f, 0x9b, 0x6a, 0xed, 0xd1, 0xf0, 0xe3, 0xb6,
650 0x28, 0xc7, 0x62, 0x82, 0x00, 0xc9, 0x38, 0xa1,
651 0x82, 0x78, 0xce, 0x87, 0xc8, 0x53, 0xac, 0x4f,
652 0x2e, 0x31, 0xb9, 0x50, 0x7f, 0x36, 0x00, 0x4a,
653 0x32, 0xe6, 0xd8, 0xbb, 0x59, 0x45, 0x0e, 0x91,
654 0x1b, 0x38, 0xa9, 0xbc, 0xb9, 0x5e, 0x6c, 0x6a,
655 0x9c, 0x03, 0x01, 0x1c, 0xde, 0xe8, 0x1f, 0x1e,
656 0xe3, 0xde, 0x25, 0xa2, 0x56, 0x79, 0xe1, 0xbd,
657 0x58, 0xc4, 0x93, 0xe6, 0xd0, 0x8a, 0x4d, 0x08,
658 0xab, 0xf7, 0xaa, 0xc3, 0x7d, 0xc1, 0xee, 0x68,
659 0x37, 0xbc, 0x78, 0x0b, 0x19, 0x68, 0x2b, 0x2b,
660 0x2e, 0x6d, 0xc4, 0x6f, 0xaa, 0x3b, 0xc6, 0x19,
661 0xcb, 0xf1, 0x58, 0xb9, 0x60, 0x85, 0x45, 0xae,
662 0x52, 0x97, 0xba, 0x24, 0x32, 0x13, 0x72, 0x16,
663 0x6e, 0x7b, 0xc1, 0x98, 0xac, 0xb1, 0xed, 0xb4,
664 0xcc, 0x6c, 0xcf, 0x45, 0xfc, 0x50, 0x89, 0x80,
665 0x8e, 0x7a, 0xa4, 0xd3, 0x64, 0x50, 0x63, 0x37,
666 0xc9, 0x6c, 0xf1, 0xc4, 0x3d, 0xfb, 0xde, 0x5a,
667 0x5c, 0xa8, 0x21, 0x35, 0xe6, 0x2e, 0x8c, 0x2a,
668 0x3c, 0x12, 0x17, 0x79, 0x9a, 0x0d, 0x2e, 0x79,
669 0xeb, 0x67, 0x1f, 0x2b, 0xf8, 0x6e, 0xca, 0xc1,
670 0xfa, 0x45, 0x18, 0x9e, 0xdf, 0x6a, 0xe6, 0xcb,
671 0xe9, 0x5c, 0xc3, 0x09, 0xaf, 0x93, 0x58, 0x13,
672 0xbf, 0x90, 0x84, 0x87, 0x75, 0xd6, 0x82, 0x28,
673 0x8d, 0xe7, 0x2f, 0xa3, 0xfb, 0x97, 0x74, 0x2a,
674 0x73, 0x04, 0x82, 0x06, 0x76, 0x69, 0xb1, 0x0b,
675 0x19, 0xfc, 0xae, 0xb3, 0xdd, 0x2a, 0xe5, 0xc1,
676 0x05, 0xd8, 0x80, 0x95, 0x22, 0x90, 0x71, 0xfc,
677 0xc2, 0x92, 0x42, 0xfd, 0xf1, 0x70, 0xb4, 0x68,
678 0x88, 0xa4, 0x9e, 0x0a, 0x24, 0x40, 0x13, 0xc8,
679 0xa2, 0x56, 0x4f, 0x39, 0xe6, 0x06, 0xf1, 0xdc,
680 0xf5, 0x13, 0x0e, 0xad, 0x9c, 0x8b, 0xaf, 0xe9,
681 0xe3, 0x88, 0x72, 0xff, 0xa0, 0x6d, 0xda, 0x08,
682 0x70, 0xb9, 0x2e, 0x83, 0xc5, 0xbb, 0x32, 0xa5,
683 0x74, 0xc7, 0xfb, 0x7b, 0x76, 0xaf, 0x02, 0xbb,
684 0x2b, 0xb8, 0x5e, 0x65, 0x02, 0xfe, 0x0e, 0xa0,
685 0x99, 0xce, 0x01, 0x3b, 0x35, 0xe1, 0xb0, 0x22,
686 0xe5, 0x94, 0xbd, 0xdd, 0x8e, 0xbb, 0xf6, 0x75,
687 0xbf, 0xbf, 0xee, 0x7a, 0xb1, 0x58, 0xb4, 0x81,
688 0xb8, 0x39, 0x3e, 0xb6, 0x1e, 0xde, 0xda, 0x1b,
689 0xd5, 0xf7, 0xdd, 0x7d, 0x65, 0x9c, 0xaa, 0x56,
690 0x93, 0xb8, 0xaf, 0x48, 0x53, 0xc7, 0x22, 0xe4,
691 0x1c, 0xdf, 0xe9, 0x79, 0xb4, 0x20, 0x89, 0xcc,
692 0x2a, 0x79, 0x2c, 0x09, 0xbe, 0x78, 0xcf, 0xcc,
693 0xf2, 0x90, 0xd6, 0x65, 0xc5, 0x29, 0xfc, 0xda,
694 0x69, 0xfc, 0xc0, 0xd6, 0x70, 0x99, 0x61, 0x3f,
695 0x60, 0x02, 0xd8, 0x12, 0x22, 0xc8, 0x34, 0xc6,
696 0x3b, 0xb3, 0xc2, 0x33, 0xa1, 0x5c, 0x8f, 0x4c,
697 0xd1, 0x52, 0x72, 0xf2, 0x42, 0x05, 0x8e, 0x18,
698 0x1f, 0x16, 0xda, 0xb8, 0x53, 0xa1, 0x5f, 0x01,
699 0x32, 0x1b, 0x90, 0xb3, 0x53, 0x9b, 0xd0, 0x85,
700 0x61, 0x2d, 0x17, 0xed, 0x0a, 0xa4, 0xa5, 0x27,
701 0x09, 0x75, 0x7c, 0xbc, 0x30, 0xf7, 0x5e, 0x59,
702 0x9a, 0x07, 0x96, 0x84, 0x28, 0x86, 0x4b, 0xa7,
703 0x22, 0x35, 0x28, 0xc7, 0xed, 0x0d, 0xc3, 0xce,
704 0x98, 0xcc, 0x2d, 0xec, 0xd4, 0x98, 0x09, 0x8e,
705 0x52, 0x5f, 0x2b, 0x9a, 0x13, 0xbe, 0x99, 0x16,
706 0x73, 0xd1, 0x1f, 0x81, 0xe5, 0xa2, 0x08, 0x78,
707 0xcb, 0x0c, 0x20, 0xd4, 0xa5, 0xea, 0x4b, 0x5b,
708 0x95, 0x5a, 0x92, 0x9a, 0x52},
709 "id-Gost28147-89-CryptoPro-A-ParamSet",
712 0x1b, 0x5d, 0xdb, 0x77, 0xcf, 0xf9, 0xec, 0x95,
713 0x5e, 0xcc, 0x67, 0x9f, 0x5d, 0x28, 0xad, 0x4a,
714 0x27, 0xf4, 0x32, 0xc6, 0xb2, 0xcb, 0xb1, 0x45,
715 0x6a, 0x88, 0x14, 0x0c, 0x9b, 0x9b, 0x5f, 0x48},
718 0x71, 0x58, 0x8c, 0xe1, 0x55, 0xf4, 0xf6, 0xb3},
720 0x8e, 0xcd, 0x8f, 0xc8, 0xac, 0xe1, 0x15, 0x48,
721 0x2d, 0xae, 0x24, 0x8a, 0xc7, 0xfb, 0xba, 0x0f,
722 0x1d, 0x8a, 0x95, 0xa2, 0x43, 0xef, 0xcb, 0xdc,
723 0x59, 0x57, 0xa7, 0xc7, 0x0e, 0xe3, 0xe2, 0xb9,
724 0x0d, 0x86, 0x29, 0x62, 0xcb, 0x83, 0x4d, 0x07,
725 0x0c, 0x40, 0xd4, 0x7b, 0x2e, 0xca, 0xba, 0xbf,
726 0x4a, 0x60, 0x3b, 0x31, 0x98, 0xc8, 0x88, 0x47,
727 0xd9, 0x82, 0xab, 0xfc, 0x8f, 0x48, 0xe2, 0x46,
728 0xab, 0xd3, 0xa1, 0xab, 0x8a, 0x05, 0x22, 0x8c,
729 0xf4, 0xec, 0x9a, 0x1e, 0x76, 0xab, 0x1a, 0x60,
730 0xd9, 0x25, 0x6b, 0xb8, 0x56, 0xe5, 0xb2, 0xea,
731 0x10, 0xf3, 0x62, 0x04, 0x32, 0x5e, 0xaa, 0x3b,
732 0x7b, 0x57, 0xbc, 0x3b, 0x8b, 0x43, 0x47, 0xf2,
733 0xd5, 0x03, 0x7e, 0x51, 0x01, 0xff, 0x77, 0x28,
734 0xca, 0x90, 0xa3, 0xfe, 0x7e, 0x2e, 0x70, 0x16,
735 0x75, 0x18, 0x44, 0xf0, 0x1b, 0x85, 0x05, 0xea,
736 0xe3, 0x21, 0xf7, 0x26, 0x86, 0x76, 0x3c, 0x67,
737 0x9d, 0xfc, 0xbc, 0x10, 0x7f, 0x77, 0xe4, 0xed,
738 0xd3, 0x12, 0xf8, 0x83, 0x00, 0x1f, 0x4b, 0x92,
739 0x95, 0x92, 0x5c, 0xf3, 0x5a, 0xf3, 0xb7, 0xd0,
740 0xa9, 0x5f, 0xf2, 0x18, 0xc4, 0x66, 0x62, 0xc1,
741 0x84, 0x0e, 0x66, 0xe8, 0x80, 0x7d, 0x1f, 0xf0,
742 0xba, 0x01, 0x9b, 0x71, 0xae, 0x93, 0xcc, 0x27,
743 0x54, 0x34, 0x9a, 0xbd, 0xca, 0xee, 0x52, 0x09,
744 0x92, 0x9d, 0xb0, 0xd5, 0xd9, 0xba, 0x2f, 0xb9,
745 0x96, 0xdc, 0xfa, 0xbd, 0xce, 0xea, 0x1a, 0x7b,
746 0x9a, 0x1d, 0x13, 0xa7, 0x11, 0xe2, 0x9a, 0x64,
747 0xf6, 0xd3, 0xee, 0xc6, 0x33, 0xb7, 0x6e, 0xef,
748 0x25, 0x9e, 0x1e, 0x7c, 0xe3, 0x1f, 0x2c, 0x6e,
749 0xa9, 0xc0, 0xf8, 0xc1, 0xbf, 0x3b, 0xf8, 0x34,
750 0x03, 0x9b, 0xa1, 0x40, 0x5b, 0x0c, 0x3c, 0x09,
751 0x66, 0x9d, 0x63, 0xe2, 0xe2, 0x04, 0x8f, 0x06,
752 0x84, 0x74, 0x68, 0xb2, 0x5c, 0x3b, 0x4c, 0xad,
753 0x0b, 0x3f, 0x03, 0xb3, 0x07, 0x8a, 0x64, 0xa7,
754 0x36, 0x56, 0x26, 0x39, 0x66, 0xda, 0xe9, 0x6d,
755 0x1b, 0xd5, 0x88, 0xe8, 0x5c, 0xaf, 0x5a, 0x4c,
756 0x49, 0xf7, 0xf5, 0xb7, 0x78, 0xf0, 0xde, 0xec,
757 0xcd, 0x16, 0x23, 0x9e, 0x8c, 0x13, 0xbe, 0x6b,
758 0x6f, 0x9b, 0x07, 0xe5, 0xbb, 0xcc, 0x3a, 0x1b,
759 0x6f, 0x43, 0xdf, 0xff, 0x46, 0x2a, 0xae, 0x47,
760 0x19, 0x18, 0x9a, 0x25, 0x09, 0xc9, 0x24, 0x40,
761 0x0c, 0x4b, 0xa7, 0xda, 0x5e, 0x0d, 0xee, 0xfa,
762 0x62, 0x45, 0x8e, 0xcc, 0x2f, 0x23, 0x08, 0x1d,
763 0x92, 0xf0, 0xfe, 0x82, 0x0f, 0xd7, 0x11, 0x60,
764 0x7e, 0x0b, 0x0b, 0x75, 0xf4, 0xf5, 0x3b, 0xc0,
765 0xa4, 0xe8, 0x72, 0xa5, 0xb6, 0xfa, 0x5a, 0xad,
766 0x5a, 0x4f, 0x39, 0xb5, 0xa2, 0x12, 0x96, 0x0a,
767 0x32, 0x84, 0xb2, 0xa1, 0x06, 0x68, 0x56, 0x57,
768 0x97, 0xa3, 0x7b, 0x22, 0x61, 0x76, 0x5d, 0x30,
769 0x1a, 0x31, 0xab, 0x99, 0x06, 0xc5, 0x1a, 0x96,
770 0xcf, 0xcf, 0x14, 0xff, 0xb2, 0xc4, 0xcc, 0x2b,
771 0xbf, 0x0c, 0x9d, 0x91, 0x8f, 0x79, 0x5b, 0xbc,
772 0xa9, 0x6b, 0x91, 0x6a, 0xb4, 0x93, 0x5c, 0x7b,
773 0x5d, 0xc2, 0x8a, 0x75, 0xc0, 0xc1, 0x08, 0xfa,
774 0x99, 0xf9, 0x4d, 0x5e, 0x0c, 0x06, 0x64, 0x60,
775 0xa9, 0x01, 0x4a, 0x34, 0x0f, 0x33, 0x84, 0x95,
776 0x69, 0x30, 0xc1, 0x1c, 0x36, 0xf8, 0xfc, 0x30,
777 0x23, 0xb2, 0x71, 0xe5, 0x52, 0x4d, 0x12, 0x1a,
778 0xc9, 0xbe, 0xee, 0xc9, 0xcb, 0x01, 0x85, 0xf3,
779 0xdb, 0x30, 0xf9, 0x41, 0xa9, 0x40, 0xb0, 0x06,
780 0x29, 0x77, 0xcd, 0xc5, 0xec, 0x58, 0x02, 0x48,
781 0x83, 0x53, 0x44, 0x6a, 0xd2, 0xca, 0x05, 0xd8,
782 0x5a, 0x08, 0xeb, 0xa9, 0xf4, 0xe6, 0xc7, 0x9d,
783 0xd5, 0x7b, 0x74, 0x0b, 0x31, 0xb7, 0xa5, 0x57,
784 0x7c, 0x7a, 0xfd, 0x1a, 0x0e, 0xd7, 0x97, 0x41,
785 0xbf, 0xdd, 0xc6, 0x19, 0x6c, 0x77, 0x8c, 0x18,
786 0x52, 0x57, 0x83, 0xba, 0x71, 0x25, 0xee, 0x39,
787 0xbb, 0xe2, 0x43, 0xa0, 0x14, 0xdc, 0x0e, 0x84,
788 0xb4, 0x2b, 0xde, 0x3e, 0xe5, 0x36, 0xb7, 0xa2,
789 0x92, 0x98, 0x05, 0xb8, 0x96, 0xe5, 0xd0, 0x8c,
790 0x08, 0x93, 0x35, 0xc2, 0x81, 0xe0, 0xfc, 0x59,
791 0x71, 0xe2, 0x44, 0x49, 0x5d, 0xda, 0xfb, 0x9c,
792 0xaa, 0x70, 0x9f, 0x43, 0xa8, 0xa5, 0xd9, 0x67,
793 0xd9, 0x8f, 0xa3, 0x1e, 0xbe, 0x0e, 0xec, 0xdf,
794 0x12, 0x2b, 0x6a, 0xe7, 0x1c, 0x12, 0x17, 0xe7,
795 0xc4, 0x6d, 0x50, 0xc9, 0x52, 0x7a, 0xd5, 0xe8,
796 0x7f, 0xbc, 0x07, 0x15, 0xac, 0xdb, 0x93, 0x66,
797 0xb1, 0xf0, 0xa7, 0x7b, 0x2f, 0xe9, 0xec, 0xd0,
798 0x47, 0x69, 0x59, 0x87, 0xf1, 0x4c, 0x3e, 0x4b,
799 0x9b, 0x11, 0x79, 0x13, 0xe4, 0x96, 0xf6, 0x56,
800 0x04, 0x6e, 0x0b, 0x33, 0xfc, 0x40, 0xf6, 0xc7,
801 0xc1, 0x43, 0xb1, 0xbf, 0x0e, 0xb3, 0x87, 0xfd,
802 0x0b, 0x1c, 0x63, 0x46, 0x3a, 0xd3, 0xa0, 0x17,
803 0x59, 0x25, 0x94, 0x6c, 0x9c, 0x3d, 0x0c, 0x81,
804 0xce, 0x82, 0x72, 0x42, 0x28, 0xf9, 0x37, 0x6a,
805 0x6d, 0xe4, 0x12, 0xf4, 0x21, 0xaa, 0xf7, 0xfe,
806 0x27, 0x55, 0x40, 0x1a, 0x14, 0xc3, 0x39, 0x5b,
807 0xbf, 0x63, 0xc2, 0x5f, 0x10, 0x1f, 0x14, 0x25,
808 0xd0, 0xce, 0xf3, 0x14, 0x48, 0x13, 0xa5, 0x0b,
809 0x4d, 0x38, 0xcf, 0x0d, 0x34, 0xc0, 0x0a, 0x11,
810 0xb4, 0xb5, 0x72, 0xc8, 0x4b, 0xc2, 0x6f, 0xe7,
811 0x9d, 0x93, 0xf7, 0xdf, 0xb8, 0x43, 0x72, 0x7e,
812 0xda, 0x3e, 0x20, 0x1f, 0xbc, 0x21, 0x2a, 0xce,
813 0x00, 0xfa, 0x96, 0x9f, 0x3d, 0xe5, 0x88, 0x96,
814 0xef, 0x29, 0x84, 0xdf, 0x6c, 0x1c, 0x96, 0xd8,
815 0x58, 0x47, 0xaa, 0x92, 0xf3, 0x07, 0xe5, 0xfb,
816 0xaf, 0xea, 0x95, 0x7e, 0x0b, 0x71, 0xcd, 0x81,
817 0x0f, 0xb7, 0x0a, 0x59, 0x8f, 0x31, 0x4d, 0xd1,
818 0xc3, 0xf3, 0x2f, 0x70, 0x5c, 0x59, 0x18, 0x97,
819 0xaf, 0x77, 0x95, 0x5e, 0xaf, 0x40, 0x06, 0x12,
820 0x81, 0x61, 0x86, 0x08, 0x4e, 0xbc, 0x89, 0x46,
821 0x07, 0x2e, 0x5b, 0x10, 0xaa, 0x12, 0xf0, 0xa7,
822 0x84, 0xe2, 0x9a, 0x08, 0xf1, 0xde, 0x59, 0xe3,
823 0x0e, 0x47, 0x4b, 0xff, 0xc3, 0xc9, 0x18, 0xaf,
824 0x95, 0x9c, 0x67, 0x2a, 0xde, 0x8a, 0x7a, 0x99,
825 0x04, 0xc4, 0xb8, 0x97, 0x4c, 0x04, 0x29, 0x71,
826 0x05, 0xda, 0xb3, 0xd6, 0xdb, 0x6c, 0x71, 0xe6,
827 0xe8, 0x03, 0xbf, 0x94, 0x7d, 0xde, 0x3d, 0xc8,
828 0x44, 0xfa, 0x7d, 0x62, 0xb4, 0x36, 0x03, 0xee,
829 0x36, 0x52, 0x64, 0xb4, 0x85, 0x6d, 0xd5, 0x78,
830 0xf0, 0x6f, 0x67, 0x2d, 0x0e, 0xe0, 0x2c, 0x88,
831 0x9b, 0x55, 0x19, 0x29, 0x40, 0xf6, 0x8c, 0x12,
832 0xbb, 0x2c, 0x83, 0x96, 0x40, 0xc0, 0x36, 0xf5,
833 0x77, 0xff, 0x70, 0x8c, 0x75, 0x92, 0x0b, 0xad,
834 0x05, 0x9b, 0x7e, 0xa2, 0xfc, 0xa9, 0xd1, 0x64,
835 0x76, 0x82, 0x13, 0xba, 0x22, 0x5e, 0x33, 0x0e,
836 0x26, 0x70, 0xa9, 0xbe, 0x74, 0x28, 0xf5, 0xe2,
837 0xc4, 0x96, 0xee, 0x3a, 0xbc, 0x97, 0xa6, 0x2c,
838 0x2a, 0xe0, 0x64, 0x8d, 0x35, 0xc6, 0x1a, 0xca,
839 0xf4, 0x92, 0xfa, 0xc3, 0xf1, 0x1f, 0x98, 0xe4,
840 0x43, 0x88, 0x69, 0x3a, 0x09, 0xbf, 0x63, 0xe5,
841 0x96, 0x29, 0x0b, 0x9b, 0x62, 0x23, 0x14, 0x8a,
842 0x95, 0xe4, 0x1c, 0x5c, 0x0a, 0xa9, 0xc5, 0xb9,
843 0x6f, 0x4f, 0x2b, 0x25, 0x6f, 0x74, 0x1e, 0x18,
844 0xd5, 0xfe, 0x27, 0x7d, 0x3f, 0x6e, 0x55, 0x2c,
845 0x67, 0xe6, 0xde, 0xb5, 0xcc, 0xc0, 0x2d, 0xff,
846 0xc4, 0xe4, 0x06, 0x21, 0xa5, 0xc8, 0xd3, 0xd6,
847 0x6c, 0xa1, 0xc3, 0xfb, 0x88, 0x92, 0xb1, 0x1d,
848 0x90, 0xe1, 0x35, 0x05, 0x9b, 0x29, 0x6d, 0xba,
849 0xf1, 0xf4, 0x1e, 0x23, 0x2e}
851 { /* Calculated by libcapi10, CryptoPro CSP
855 "id-Gost28147-89-CryptoPro-A-ParamSet",
858 0x07, 0x52, 0x65, 0xe7, 0xca, 0xa3, 0xca, 0x45,
859 0xcf, 0x3a, 0x05, 0x1d, 0x38, 0x03, 0x53, 0x0c,
860 0x22, 0x31, 0xba, 0x99, 0x4f, 0x9b, 0x6a, 0x1b,
861 0x7e, 0x09, 0x9d, 0x4e, 0xb5, 0xc9, 0x84, 0x2e},
864 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
866 0x3d, 0x05, 0x07, 0x57, 0xc0, 0x75, 0x89, 0x97,
867 0xd6, 0x94, 0x49, 0x11, 0x1d, 0xd0, 0x91, 0xee}
869 { /* Calculated by libcapi10, CryptoPro CSP
871 U64(4294967296) + 16,
873 "id-Gost28147-89-CryptoPro-A-ParamSet",
876 0x75, 0xa3, 0x3c, 0xae, 0x03, 0x6b, 0x10, 0xdb,
877 0xc1, 0x56, 0x50, 0x89, 0x03, 0xd2, 0x9f, 0x91,
878 0xee, 0xe8, 0x64, 0x1d, 0x43, 0xf2, 0x4e, 0xf8,
879 0xf2, 0x6c, 0xed, 0xda, 0x8f, 0xe4, 0x88, 0xe9},
882 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
884 0xfa, 0x6c, 0x96, 0x78, 0xe2, 0xf8, 0xdd, 0xaa,
885 0x67, 0x5a, 0xc9, 0x5d, 0x57, 0xf1, 0xbd, 0x99}
887 { /* Calculated by libcapi10, CryptoPro CSP
891 0xd6, 0xcf, 0x31, 0x96, 0x9c, 0xa1, 0xfb, 0xd6,
892 0x8d, 0xa3, 0xdd, 0x01, 0xd9, 0x88, 0xc0, 0x2f,
893 0xbc, 0x46, 0xc7, 0x3a, 0xe4, 0x21, 0x86, 0x96,
894 0x8d, 0xe2, 0xca, 0xb6, 0x37, 0xa2, 0xe1, 0xa8,
895 0x7e, 0xa7, 0x79, 0x2e, 0xa4, 0x56, 0x75, 0x7f,
896 0x3e, 0x55, 0x8b, 0x43, 0xae, 0x65, 0xdf, 0xaa,
897 0x42, 0xb6, 0x00, 0xa6, 0x61, 0x03, 0x0d, 0xd3,
898 0x41, 0x02, 0x27, 0x23, 0x95, 0x79, 0x9b, 0x34,
899 0x81, 0xa9, 0x86, 0xb5, 0xa7, 0x90, 0xe2, 0xae,
900 0xc4, 0x2f, 0xc3, 0x8e, 0x32, 0x56, 0x13, 0xfa,
901 0x4d, 0x4e, 0x9f, 0x15, 0x75, 0x7e, 0x74, 0xdc,
902 0x32, 0x2d, 0xee, 0x4d, 0x67, 0x70, 0x9f, 0x62,
903 0xb9, 0xc4, 0xdb, 0x24, 0x84, 0xcc, 0x16, 0x7b,
904 0xda, 0x22, 0xf7, 0xc5, 0xf3, 0x93, 0x35, 0x73,
905 0xc6, 0x03, 0x1c, 0x77, 0xa5, 0xf2, 0x76, 0x56,
906 0xb4, 0x95, 0xd4, 0x7e, 0x0d, 0x20, 0xc6, 0x6e,
907 0xee, 0x8f, 0x25, 0x48, 0xff, 0x7e, 0x01, 0x3a,
908 0xb4, 0x1f, 0xaa, 0x35, 0xc0, 0x33, 0x58, 0x9c,
909 0xb5, 0xba, 0x65, 0x4b, 0xd3, 0x51, 0x14, 0xec,
910 0x61, 0xce, 0xe4, 0xba, 0x49, 0xba, 0x39, 0x32,
911 0xab, 0xce, 0x81, 0x72, 0xce, 0xab, 0xed, 0xd4,
912 0xd2, 0x19, 0x87, 0x85, 0x92, 0xfa, 0x64, 0x34,
913 0xd8, 0x86, 0xf4, 0x8a, 0x08, 0x3c, 0xde, 0xee,
914 0x97, 0x92, 0x92, 0x69, 0xba, 0x9b, 0x5f, 0x7a,
915 0x03, 0xc1, 0x5d, 0x43, 0x02, 0x8c, 0xbe, 0xd2,
916 0x46, 0x72, 0x81, 0x40, 0x7d, 0x68, 0x98, 0x45,
917 0x0b, 0x54, 0x27, 0x1c, 0xaf, 0x80, 0x42, 0xe4,
918 0xd5, 0xd4, 0xe4, 0xa2, 0x98, 0x07, 0x8f, 0x03,
919 0xf5, 0x2c, 0x8c, 0x88, 0xca, 0x5a, 0xde, 0xe4,
920 0x9f, 0xb1, 0x5f, 0x82, 0xff, 0x20, 0x67, 0x52,
921 0x85, 0x84, 0x4f, 0xc8, 0xfe, 0xa7, 0x9e, 0xae,
922 0x1c, 0xfa, 0xb8, 0x75, 0xd3, 0xf7, 0x9f, 0x0d,
923 0xda, 0x2d, 0xe6, 0xcc, 0x86, 0x6b, 0xa4, 0x14,
924 0x65, 0xc3, 0xf9, 0x15, 0xbc, 0x87, 0xf5, 0xae,
925 0x8c, 0x10, 0xd4, 0xce, 0x5b, 0x9c, 0xe2, 0xdd,
926 0x42, 0x03, 0x09, 0x87, 0x47, 0xed, 0x5d, 0xd0,
927 0x7a, 0x69, 0x4c, 0xfa, 0x43, 0x7d, 0xbf, 0x07,
928 0x85, 0x6a, 0xee, 0x68, 0xe6, 0x7a, 0x57, 0xb2,
929 0x20, 0x8d, 0x80, 0xf2, 0x91, 0x6f, 0x5c, 0x07,
930 0x8c, 0xe4, 0x6a, 0x49, 0x90, 0x85, 0x8b, 0x77,
931 0x29, 0x56, 0x1c, 0x5e, 0xa9, 0x3f, 0xab, 0x8b,
932 0x79, 0xa3, 0x6f, 0x6b, 0x34, 0xcb, 0x61, 0xf6,
933 0xe6, 0x92, 0xd1, 0x48, 0x9e, 0x11, 0xa2, 0x82,
934 0xc0, 0x4e, 0x23, 0xd2, 0x15, 0x0d, 0x8d, 0xff,
935 0xfa, 0x17, 0x9d, 0x81, 0xb8, 0xbc, 0xd7, 0x5b,
936 0x08, 0x81, 0x20, 0x40, 0xc0, 0x3c, 0x06, 0x8b,
937 0x1a, 0x88, 0x0b, 0x4b, 0x7b, 0x31, 0xf5, 0xd4,
938 0x4e, 0x09, 0xd1, 0x4d, 0x0d, 0x7f, 0x45, 0xd1,
939 0x09, 0x35, 0xba, 0xce, 0x65, 0xdd, 0xf2, 0xb8,
940 0xfb, 0x7a, 0xbc, 0xc4, 0x4b, 0xc8, 0x75, 0xda,
941 0x6b, 0xce, 0x3d, 0xe8, 0x94, 0xcc, 0x23, 0x6f,
942 0xb0, 0x3b, 0x4f, 0x7d, 0x07, 0xb9, 0x0f, 0x62,
943 0x92, 0x7e, 0xda, 0x70, 0x50, 0xce, 0xd3, 0x28,
944 0x12, 0x11, 0x00, 0xeb, 0x8d, 0x63, 0x70, 0x78,
945 0xa8, 0x7b, 0x76, 0xab, 0xc6, 0x40, 0xc0, 0x4e,
946 0x80, 0xdd, 0xf0, 0xfe, 0x83, 0x72, 0x56, 0x4c,
947 0x09, 0x4c, 0xf1, 0x72, 0x72, 0x86, 0x26, 0x31,
948 0xc3, 0xc2, 0xdc, 0x8e, 0xc7, 0xf4, 0x35, 0xec,
949 0x17, 0x06, 0x63, 0x47, 0x49, 0x88, 0x47, 0xaf,
950 0xb3, 0x38, 0x4f, 0x7e, 0x44, 0x95, 0xb5, 0xbb,
951 0x1d, 0xbd, 0x5a, 0x91, 0x5b, 0xd0, 0x1a, 0xdf,
952 0x0d, 0x0b, 0x50, 0xd8, 0xe2, 0x0e, 0xc5, 0x00,
953 0x2d, 0x5b, 0x29, 0x19, 0xaa, 0x2b, 0x64, 0xc5,
954 0x40, 0x31, 0x48, 0x11, 0xbc, 0x04, 0xd1, 0xcf,
955 0x6d, 0xf9, 0xa5, 0x2f, 0x4a, 0xc9, 0x82, 0xfa,
956 0x59, 0xe1, 0xfc, 0xab, 0x1c, 0x33, 0x26, 0x0a,
957 0x5f, 0xef, 0xf2, 0x06, 0xd8, 0xd3, 0x7e, 0x16,
958 0x58, 0x16, 0x78, 0x73, 0xae, 0xba, 0xeb, 0xe5,
959 0x3d, 0xb2, 0x0a, 0xb3, 0x32, 0x2d, 0x14, 0xa4,
960 0xfa, 0x3f, 0x1f, 0x43, 0xf9, 0x7b, 0xa9, 0x43,
961 0x98, 0x18, 0x94, 0x07, 0x07, 0xe5, 0x19, 0x34,
962 0xa8, 0x16, 0x5f, 0x71, 0x67, 0xaa, 0x29, 0xe5,
963 0xfa, 0xf0, 0x83, 0x06, 0x1d, 0x9d, 0xfc, 0xfe,
964 0xfe, 0x8c, 0xb5, 0xb2, 0xa9, 0xe7, 0xa0, 0x40,
965 0x60, 0xb6, 0x71, 0x9e, 0xab, 0x5b, 0x83, 0xb9,
966 0x0c, 0x2b, 0x58, 0x23, 0x80, 0x09, 0x9e, 0x5d,
967 0x94, 0x7d, 0x40, 0x76, 0xa9, 0x16, 0x96, 0x9e,
968 0x83, 0xe0, 0x0d, 0xec, 0xa0, 0xec, 0x76, 0x2a,
969 0xb7, 0xa0, 0xff, 0xb8, 0x50, 0x4c, 0x5b, 0xc6,
970 0x8b, 0x0a, 0x65, 0x2e, 0xfe, 0xb4, 0x40, 0x9a,
971 0x01, 0xd8, 0xc6, 0xa3, 0xab, 0x99, 0xa2, 0xc5,
972 0x0c, 0x08, 0xc4, 0xb7, 0xee, 0x4d, 0x1d, 0xc4,
973 0x08, 0x15, 0xd0, 0xdb, 0xaa, 0x63, 0x4f, 0x31,
974 0xeb, 0x14, 0x97, 0x43, 0xbd, 0xc1, 0x94, 0x08,
975 0xe6, 0xde, 0x43, 0x9f, 0x95, 0x0b, 0x96, 0x7e,
976 0x7f, 0x3c, 0x68, 0xba, 0x6f, 0xc4, 0xc9, 0x35,
977 0x2b, 0xc4, 0x0e, 0xda, 0x1f, 0x91, 0x68, 0x64,
978 0x63, 0x34, 0x73, 0xbe, 0x57, 0x75, 0xb9, 0xed,
979 0xf7, 0x2d, 0x3b, 0x05, 0x21, 0x93, 0x28, 0x48,
980 0x96, 0x95, 0x97, 0xa0, 0xd2, 0x7d, 0x78, 0xbb,
981 0x6a, 0x49, 0x8f, 0x76, 0x55, 0x74, 0x63, 0xb9,
982 0xc5, 0x36, 0x12, 0x25, 0xbf, 0x03, 0x82, 0x8f,
983 0xf0, 0xf6, 0x80, 0xbb, 0x33, 0xb4, 0xf4, 0x17,
984 0x27, 0x1c, 0xf3, 0x4c, 0x10, 0xa3, 0xe4, 0xd1,
985 0x55, 0xd9, 0x68, 0x21, 0x4e, 0x5a, 0x83, 0x67,
986 0xbf, 0xf8, 0x3c, 0x7d, 0x4e, 0x62, 0xd3, 0x28,
987 0xa7, 0x26, 0x6f, 0xe9, 0xee, 0xc2, 0x0b, 0x2d,
988 0x03, 0x84, 0xb1, 0xff, 0xd6, 0x68, 0x1f, 0xb6,
989 0xf2, 0xe4, 0x0f, 0xda, 0x2d, 0xee, 0x5f, 0x6e,
990 0x21, 0xc8, 0xe1, 0xfc, 0xad, 0x6b, 0x0e, 0x04,
991 0x7d, 0xaf, 0xc2, 0x3b, 0xa5, 0x68, 0x9b, 0x0c,
992 0xf3, 0x56, 0xf3, 0xda, 0x8d, 0xc8, 0x7d, 0x39,
993 0xdc, 0xd5, 0x99, 0xc6, 0x01, 0x10, 0xce, 0x42,
994 0x1b, 0xac, 0x48, 0xdc, 0x97, 0x78, 0x0a, 0xec,
995 0xb3, 0x8f, 0x47, 0x35, 0xa3, 0x6a, 0x64, 0xb2,
996 0x8e, 0x63, 0x69, 0x22, 0x66, 0xae, 0x2e, 0xe0,
997 0x88, 0xf9, 0x40, 0x3c, 0xc9, 0xa2, 0x57, 0x61,
998 0xf6, 0xad, 0xf0, 0xdc, 0x90, 0x56, 0x3f, 0x06,
999 0x9b, 0x7d, 0xbd, 0xc2, 0x81, 0x02, 0xab, 0xb8,
1000 0x15, 0x09, 0x88, 0x4a, 0xff, 0x2f, 0x31, 0xbf,
1001 0x5e, 0xfa, 0x6a, 0x7e, 0xf6, 0xc5, 0xa7, 0xf7,
1002 0xd5, 0xab, 0x55, 0xac, 0xae, 0x0d, 0x8c, 0x8d,
1003 0x7f, 0x4b, 0x25, 0xbb, 0x32, 0xff, 0x11, 0x33,
1004 0x2e, 0x37, 0x37, 0x69, 0x96, 0x15, 0x17, 0xb1,
1005 0x17, 0x49, 0xe0, 0x9a, 0x9c, 0xd9, 0x5b, 0x8d,
1006 0x58, 0xa3, 0x1d, 0x92, 0x87, 0xf8, 0x80, 0xb9,
1007 0xbd, 0x5a, 0xec, 0x40, 0xe1, 0x00, 0x33, 0x60,
1008 0xe4, 0x86, 0x16, 0x6d, 0x61, 0x81, 0xf2, 0x28,
1009 0x6a, 0xa7, 0xce, 0x3f, 0x95, 0xae, 0x43, 0xca,
1010 0xe1, 0x3f, 0x81, 0x74, 0x7e, 0x1c, 0x47, 0x17,
1011 0x95, 0xc6, 0x60, 0xda, 0x74, 0x77, 0xd9, 0x9f,
1012 0xfa, 0x92, 0xb4, 0xbe, 0xe1, 0x23, 0x98, 0x18,
1013 0x95, 0x63, 0x03, 0x13, 0x4c, 0x1a, 0x2d, 0x41,
1014 0xcd, 0xe4, 0x84, 0xf7, 0xe6, 0x38, 0xef, 0xff,
1015 0x95, 0xb2, 0xe8, 0x7c, 0x8f, 0x58, 0xb5, 0xb5,
1016 0xed, 0x27, 0x7f, 0x3c, 0x18, 0xab, 0xbe, 0x7f,
1017 0x4f, 0xe2, 0x35, 0x15, 0x71, 0xb7, 0x6f, 0x85,
1018 0x38, 0x9b, 0x88, 0xf6, 0x9c, 0x8d, 0x43, 0xb5,
1019 0x58, 0x9e, 0xf2, 0xd1, 0x96, 0xbe, 0xb7, 0xad,
1021 "id-Gost28147-89-CryptoPro-A-ParamSet",
1024 0x80, 0xd9, 0xa0, 0xdc, 0x21, 0xf9, 0x30, 0x40,
1025 0x75, 0xfe, 0x49, 0x1b, 0x9e, 0x71, 0x90, 0x91,
1026 0x78, 0x88, 0x21, 0x60, 0x39, 0xe7, 0xc9, 0x2b,
1027 0xfb, 0x55, 0x1d, 0xf4, 0xdd, 0x2b, 0x0a, 0x01},
1031 0x90, 0xf2, 0x11, 0x9a}
1033 { /* Calculated by libcapi10, CryptoPro CSP
1037 0x1d, 0xeb, 0xe6, 0x79, 0x0a, 0x59, 0x00, 0xe6,
1039 "id-Gost28147-89-CryptoPro-A-ParamSet",
1042 0xa9, 0xb6, 0x37, 0xcc, 0x6d, 0x9b, 0x2f, 0x25,
1043 0xb0, 0xdf, 0x47, 0x04, 0x50, 0x68, 0xb0, 0x27,
1044 0x41, 0x27, 0x58, 0x6a, 0xbd, 0x0a, 0x6e, 0x50,
1045 0x2f, 0xc6, 0xfc, 0xc0, 0x3e, 0x29, 0x42, 0xa5},
1049 0x31, 0x7c, 0x16, 0xe4}
1051 { /* Calculated by libcapi10, CryptoPro CSP
1055 0xef, 0x06, 0x8f, 0x14, 0xc9, 0x04},
1056 "id-Gost28147-89-CryptoPro-A-ParamSet",
1059 0xb0, 0x6c, 0x48, 0x23, 0x0a, 0x6e, 0xf4, 0xec,
1060 0x27, 0x98, 0x01, 0x23, 0xa7, 0xd8, 0xbf, 0x60,
1061 0x89, 0xef, 0xad, 0xe8, 0x8f, 0x79, 0x14, 0x8c,
1062 0x18, 0x5c, 0x9a, 0xda, 0xef, 0x0b, 0xdd, 0xa0},
1066 0xe9, 0x72, 0xae, 0xbf}
1068 { /* Calculated by libcapi10, CryptoPro CSP
1072 0x02, 0xf8, 0xec, 0x2b, 0x4d, 0x1f, 0xbc, 0x7c,
1073 0x6e, 0x47, 0xe3, 0x87, 0x22, 0x75, 0x41, 0xa7},
1074 "id-Gost28147-89-CryptoPro-B-ParamSet",
1077 0x33, 0xd3, 0xef, 0x01, 0x19, 0x95, 0x0e, 0x15,
1078 0xa1, 0x69, 0x75, 0xae, 0x56, 0x27, 0x17, 0x79,
1079 0x63, 0x47, 0xab, 0x62, 0x9d, 0x4a, 0xf0, 0x34,
1080 0xd3, 0x1e, 0x69, 0x74, 0xec, 0x31, 0x48, 0xfc},
1084 0xf5, 0x55, 0x1f, 0x28}
1086 { /* Calculated by libcapi10, CryptoPro CSP
1090 0xf3, 0xb2, 0x29, 0xd2, 0x7a, 0x37, 0x03, 0x12},
1091 "id-Gost28147-89-CryptoPro-A-ParamSet",
1094 0x42, 0x35, 0x81, 0x91, 0x0b, 0xa9, 0x99, 0xff,
1095 0xd9, 0x43, 0xf8, 0xc6, 0x19, 0x55, 0x1f, 0x2f,
1096 0x2d, 0x45, 0x40, 0x20, 0x1e, 0x1d, 0x32, 0x7a,
1097 0xb1, 0x07, 0x6b, 0x4f, 0x45, 0x90, 0xd9, 0x80},
1101 0x6e, 0x15, 0xfa, 0xe8}
1103 { /* Calculated by libcapi10, CryptoPro CSP
1108 "id-Gost28147-89-CryptoPro-A-ParamSet",
1111 0x26, 0xcb, 0xb9, 0xf0, 0x0c, 0x62, 0x9f, 0xaa,
1112 0x4a, 0x1d, 0xb6, 0x30, 0x09, 0x01, 0x56, 0x89,
1113 0x66, 0xd4, 0xe4, 0x0e, 0xfe, 0xf6, 0x10, 0x6b,
1114 0x6c, 0xe8, 0x04, 0x3a, 0xe3, 0x61, 0x4b, 0x19},
1118 0x00, 0x00, 0x00, 0x00}
1120 { /* Calculated by libcapi10, CryptoPro CSP
1124 "id-Gost28147-89-CryptoPro-A-ParamSet",
1127 0xaa, 0x85, 0x84, 0xcd, 0x65, 0x28, 0xe1, 0xdb,
1128 0xb8, 0x20, 0x19, 0x43, 0xe0, 0x36, 0x35, 0x10,
1129 0x19, 0xc3, 0x70, 0x5b, 0x27, 0xc1, 0x9d, 0x84,
1130 0x75, 0xa3, 0xc6, 0x49, 0x46, 0x8f, 0x7c, 0x4e},
1134 0x2a, 0xe6, 0x23, 0xc6}
1136 { /* Calculated by libcapi10, CryptoPro CSP
1140 "id-Gost28147-89-CryptoPro-A-ParamSet",
1143 0xd5, 0xda, 0xfe, 0x06, 0x60, 0xdc, 0xf0, 0xb3,
1144 0x49, 0x5a, 0x02, 0x59, 0xc8, 0x2e, 0x4a, 0x2b,
1145 0xcc, 0x9b, 0x98, 0x04, 0xb7, 0xf2, 0x78, 0xb7,
1146 0xce, 0xa3, 0xf2, 0xdb, 0x9e, 0xa8, 0x49, 0x1d},
1150 0xcc, 0x46, 0x67, 0xe4}
1152 { /* Calculated by libcapi10, CryptoPro CSP
1154 U64(4) * 1024 * 1024 * 1024,
1156 "id-Gost28147-89-CryptoPro-A-ParamSet",
1159 0x0d, 0xf1, 0xa8, 0x7f, 0x57, 0x03, 0x44, 0xcc,
1160 0xdb, 0x20, 0xde, 0xed, 0x85, 0x50, 0x38, 0xda,
1161 0xc9, 0x44, 0xec, 0x2c, 0x0d, 0x66, 0xb7, 0xdc,
1162 0x17, 0x14, 0x55, 0x95, 0x33, 0x6e, 0x43, 0x3e},
1166 0xb7, 0x21, 0x2e, 0x48}
1168 { /* Calculated by libcapi10, CryptoPro CSP
1170 U64(4) * 1024 * 1024 * 1024 + 4,
1172 "id-Gost28147-89-CryptoPro-A-ParamSet",
1175 0x0c, 0xf3, 0xe9, 0xb0, 0x28, 0x3b, 0x9f, 0x8b,
1176 0xe3, 0x82, 0xb9, 0xa2, 0xa6, 0xbd, 0x80, 0xd2,
1177 0xcd, 0xfa, 0x3f, 0xf7, 0x90, 0xa7, 0x55, 0x06,
1178 0x9b, 0x7a, 0x58, 0xee, 0xe7, 0xf1, 0x9d, 0xbe},
1182 0xda, 0x15, 0x10, 0x73}
1184 { /* Calculated by libcapi10, CryptoPro CSP
1186 U64(4) * 1024 * 1024 * 1024 + 10,
1188 "id-Gost28147-89-CryptoPro-A-ParamSet",
1191 0x97, 0x1a, 0x42, 0x22, 0xfa, 0x07, 0xb2, 0xca,
1192 0xf9, 0xd2, 0x34, 0x5a, 0x92, 0xb1, 0x1f, 0x6b,
1193 0x53, 0xf8, 0xaf, 0xed, 0x9a, 0x73, 0xc4, 0x38,
1194 0xd7, 0x7d, 0x25, 0x81, 0x00, 0x0d, 0xd4, 0x29},
1198 0x52, 0xaa, 0x22, 0xb4}
1202 int main(int argc, char *argv[])
1205 u64 ullMaxLen = 6 * 1000 * 1000;
1207 ENGINE *impl = NULL;
1209 EVP_CIPHER_CTX ectx;
1211 byte bDerive[EVP_MAX_KEY_LENGTH];
1212 byte bTest[G89_MAX_TC_LEN];
1213 byte bTest1[G89_MAX_TC_LEN];
1215 static const byte bZB[40 * 1024 * 1024] = { 0 };
1216 static byte bTS[40 * 1024 * 1024] = { 0 };
1217 unsigned int mdl = 0;
1223 const EVP_MD *md_gost94 = NULL;
1224 const EVP_CIPHER *cp_g89cfb = NULL;
1225 const EVP_CIPHER *cp_g89cnt = NULL;
1226 const EVP_CIPHER *ctype = NULL;
1227 const EVP_MD *md_g89imit = NULL;
1230 CONF *pConfig = NCONF_new(NULL);
1233 "openssl_conf = openssl_def\n"
1236 "engines = engine_section\n"
1238 "[engine_section]\n"
1239 "gost = gost_section\n"
1240 "\n" "[gost_section]\n" "default_algorithms = ALL\n" "\n";
1242 printf("Testing GOST 28147-89 ");
1245 if (1 != sscanf(argv[1], FMT64, &ullMaxLen) ||
1246 (2 < argc ? 1 != sscanf(argv[2], "%d", &ignore) : 0)) {
1248 fprintf(stderr, "Usage: %s [maxlen [ignore-error]]\n", argv[0]);
1254 * ccgost engine test on GostR3411_94_CryptoProParamSet
1256 ERR_load_crypto_strings();
1257 ENGINE_load_builtin_engines();
1258 OPENSSL_load_builtin_modules();
1260 bpConf = BIO_new_mem_buf(sConf, -1);
1261 if (!NCONF_load_bio(pConfig, bpConf, &lErrLine)) {
1263 fprintf(stderr, "NCONF_load_bio: ErrLine=%ld: %s\n",
1264 lErrLine, ERR_error_string(ERR_get_error(), NULL));
1269 if (!CONF_modules_load(pConfig, NULL, 0)) {
1271 fprintf(stderr, "CONF_modules_load: %s\n",
1272 ERR_error_string(ERR_get_error(), NULL));
1276 /* Test load engine */
1277 if (NULL == (impl = ENGINE_by_id(CCGOST_ID))) {
1279 fprintf(stderr, "Can't load engine id \"" CCGOST_ID "\"\n");
1284 if (NULL == (md_gost94 = EVP_get_digestbyname(SN_id_GostR3411_94))) {
1286 fprintf(stderr, "\"" SN_id_GostR3411_94 "\" - not found\n");
1291 if (NULL == (cp_g89cfb = EVP_get_cipherbyname(SN_id_Gost28147_89))) {
1293 fprintf(stderr, "\"" SN_id_Gost28147_89 "\" - not found\n");
1298 if (NULL == (cp_g89cnt = EVP_get_cipherbyname(SN_gost89_cnt))) {
1300 fprintf(stderr, "\"" SN_gost89_cnt "\" - not found\n");
1305 if (NULL == (md_g89imit = EVP_get_digestbyname(SN_id_Gost28147_89_MAC))) {
1307 fprintf(stderr, "\"" SN_id_Gost28147_89_MAC "\" - not found\n");
1314 for (t = 0; t < sizeof(tcs) / sizeof(tcs[0]); t++) {
1315 if (NULL == tcs[t].szDerive) {
1318 memset(bDerive, 0x3c, sizeof(bDerive));
1319 mdl = sizeof(bDerive);
1320 EVP_Digest(tcs[t].szDerive, strlen(tcs[t].szDerive),
1321 bDerive, &mdl, md_gost94, impl);
1322 if (0 != memcmp(tcs[t].bRawKey, bDerive, mdl)) {
1324 fprintf(stderr, "Engine test t=%d " "derive key error.\n", t);
1329 if (ullMaxLen < tcs[t].ullLen) {
1332 memset(bTest, 0xa5, sizeof(bTest));
1333 memset(bTest1, 0x5a, sizeof(bTest1));
1334 if (!ENGINE_ctrl_cmd_string(impl,
1335 "CRYPT_PARAMS", tcs[t].szParamSet, 0)) {
1337 fprintf(stderr, "ENGINE_ctrl_cmd_string: %s\n",
1338 ERR_error_string(ERR_get_error(), NULL));
1341 switch (tcs[t].gMode) {
1343 /* OpenSSL/ccgost not implemented GOST 28147-89 ECB */
1347 goto engine_cipher_check;
1349 if (0 != strcmp("id-Gost28147-89-CryptoPro-A-ParamSet",
1350 tcs[t].szParamSet)) {
1352 * ccgost engine can't change S-Box for gost-cnt
1357 engine_cipher_check:
1358 EVP_CIPHER_CTX_init(&ectx);
1359 EVP_EncryptInit_ex(&ectx, ctype, impl, bDerive, tcs[t].bIV);
1360 if (G89_MAX_TC_LEN >= tcs[t].ullLen) {
1361 enlu = sizeof(bTest);
1362 EVP_EncryptUpdate(&ectx, bTest, &enlu,
1363 tcs[t].bIn, (int)tcs[t].ullLen);
1364 l = (size_t)tcs[t].ullLen;
1366 for (ullLeft = tcs[t].ullLen;
1367 ullLeft >= sizeof(bZB); ullLeft -= sizeof(bZB)) {
1371 EVP_EncryptUpdate(&ectx, bTS, &enlu, bZB, sizeof(bZB));
1373 printf("b" FMT64 "/" FMT64, ullLeft, tcs[t].ullLen);
1375 EVP_EncryptUpdate(&ectx, bTS, &enlu, bZB, (int)ullLeft);
1376 memcpy(bTest, &bTS[enlu - 16], 16);
1377 enlu = (int)tcs[t].ullLen;
1380 enlf = sizeof(bTest1);
1381 EVP_EncryptFinal_ex(&ectx, bTest1, &enlf);
1382 EVP_CIPHER_CTX_cleanup(&ectx);
1385 if (0 != strcmp("id-Gost28147-89-CryptoPro-A-ParamSet",
1386 tcs[t].szParamSet)) {
1388 * ccgost engine can't change S-Box for gost-mac
1392 EVP_MD_CTX_init(&mctx);
1393 mac_key = EVP_PKEY_new_mac_key(NID_id_Gost28147_89_MAC, NULL,
1395 EVP_DigestSignInit(&mctx, NULL, md_g89imit, impl, mac_key);
1396 if (G89_MAX_TC_LEN >= tcs[t].ullLen) {
1397 EVP_DigestSignUpdate(&mctx, tcs[t].bIn,
1398 (unsigned int)tcs[t].ullLen);
1400 for (ullLeft = tcs[t].ullLen;
1401 ullLeft >= sizeof(bZB); ullLeft -= sizeof(bZB)) {
1404 EVP_DigestSignUpdate(&mctx, bZB, sizeof(bZB));
1406 printf("b" FMT64 "/" FMT64, ullLeft, tcs[t].ullLen);
1408 EVP_DigestSignUpdate(&mctx, bZB, (unsigned int)ullLeft);
1411 OPENSSL_assert(EVP_DigestSignFinal(&mctx, bTest, &siglen));
1412 EVP_MD_CTX_cleanup(&mctx);
1413 enlu = (int)tcs[t].ullLen;
1418 if ((int)tcs[t].ullLen != enlu || 0 != enlf ||
1419 0 != memcmp(tcs[t].bOut, bTest, l)) {
1421 fprintf(stderr, "\nEngine test t=%d len=" FMT64
1422 " failed.\n", t, tcs[t].ullLen);
1432 printf(" passed\n");
1435 return EXIT_SUCCESS;