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 * ====================================================================
11 #include <openssl/e_os2.h>
13 #if defined(OPENSSL_NO_ENGINE) || defined(OPENSSL_NO_GOST)
14 int main(int argc, char *argv[])
16 printf("No GOST 28147-89 support\n");
23 # include <openssl/conf.h>
24 # include <openssl/crypto.h>
25 # include <openssl/engine.h>
26 # include <openssl/err.h>
27 # include <openssl/evp.h>
28 # include <openssl/hmac.h>
29 # include <openssl/obj_mac.h>
32 # define CCGOST_ID "gost"
34 # include "../engines/ccgost/gost89.h"
36 # define G89_MAX_TC_LEN (2048)
37 # define G89_BLOCK_LEN (8)
39 # if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__)
40 typedef unsigned __int64 u64;
41 # define U64(C) C##UI64
42 # define FMT64 "%I64u"
43 # elif defined(__arch64__)
44 typedef unsigned long u64;
48 typedef unsigned long long u64;
49 # define U64(C) C##ULL
52 # if defined(__MINGW32__)
54 # define FMT64 "%I64u"
57 typedef enum g89_mode_ {
64 typedef struct g89_tc_ {
65 u64 ullLen; /* ullLen > G89_MAX_TC_LEN */
66 /* Clear text ullLen */
68 const byte bIn[G89_MAX_TC_LEN]; /* Clear text, when */
69 /* ullLen <= G89_MAX_TC_LEN */
70 const char *szParamSet; /* S-Box ID */
71 const char *szDerive; /* String for derive bRawKey */
72 const byte bRawKey[EVP_MAX_KEY_LENGTH];
73 g89_mode gMode; /* Mode of encryption or MAC */
74 const byte bIV[EVP_MAX_IV_LENGTH]; /* IV for CFB or CNT mode */
75 const byte bOut[G89_MAX_TC_LEN]; /* Cipher text for ECB/CFB/CNT */
77 * mode, when ullLen <= G89_MAX_TC_LEN; Last 16 byte of cipher text for
78 * ECB/CFB/CNT, when ullLen > G89_MAX_TC_LEN; 4 byte MAC for imitovstavka
82 const g89_tc tcs[] = {
84 * GOST R 34.11-94 Test cases
86 { /* see p. A.3.1 [GOSTR341194], p. 7.3.1
87 * [ENG-GOSTR341194] */
88 /* <http://tools.ietf.org/html/rfc5831#section-7.3.1> */
89 /* Iteration 1, K[1], see Errata for RFC 5831 */
92 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
93 "id-GostR3410-94-TestParamSet",
96 0x54, 0x6d, 0x20, 0x33, 0x68, 0x65, 0x6c, 0x32,
97 0x69, 0x73, 0x65, 0x20, 0x73, 0x73, 0x6e, 0x62,
98 0x20, 0x61, 0x67, 0x79, 0x69, 0x67, 0x74, 0x74,
99 0x73, 0x65, 0x68, 0x65, 0x20, 0x2c, 0x3d, 0x73},
103 0x1b, 0x0b, 0xbc, 0x32, 0xce, 0xbc, 0xab, 0x42}
105 { /* see p. A.3.1 [GOSTR341194], p. 7.3.1
106 * [ENG-GOSTR341194] */
107 /* <http://tools.ietf.org/html/rfc5831#section-7.3.1> */
108 /* Iteration 1, K[4] */
111 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
112 "id-GostR3410-94-TestParamSet",
115 0xec, 0x0a, 0x8b, 0xa1, 0x5e, 0xc0, 0x04, 0xa8,
116 0xba, 0xc5, 0x0c, 0xac, 0x0c, 0x62, 0x1d, 0xee,
117 0xe1, 0xc7, 0xb8, 0xe7, 0x00, 0x7a, 0xe2, 0xec,
118 0xf2, 0x73, 0x1b, 0xff, 0x4e, 0x80, 0xe2, 0xa0},
122 0x2d, 0x56, 0x2a, 0x0d, 0x19, 0x04, 0x86, 0xe7}
124 { /* see p. A.3.1 [GOSTR341194], p. 7.3.1
125 * [ENG-GOSTR341194] */
126 /* <http://tools.ietf.org/html/rfc5831#section-7.3.1> */
127 /* Iteration 2, K[1] */
130 0x34, 0xc0, 0x15, 0x33, 0xe3, 0x7d, 0x1c, 0x56},
131 "id-GostR3410-94-TestParamSet",
134 0x34, 0x87, 0x24, 0xa4, 0xc1, 0xa6, 0x76, 0x67,
135 0x15, 0x3d, 0xde, 0x59, 0x33, 0x88, 0x42, 0x50,
136 0xe3, 0x24, 0x8c, 0x65, 0x7d, 0x41, 0x3b, 0x8c,
137 0x1c, 0x9c, 0xa0, 0x9a, 0x56, 0xd9, 0x68, 0xcf},
141 0x86, 0x3e, 0x78, 0xdd, 0x2d, 0x60, 0xd1, 0x3c}
144 * id-Gost28147-89-CryptoPro-A-ParamSet (1.2.643.2.2.31.1)
147 { /* Calculated by libcapi10, CryptoPro CSP
151 0x74, 0x3d, 0x76, 0xf9, 0x1b, 0xee, 0x35, 0x3c,
152 0xa2, 0x5c, 0x3b, 0x10, 0xeb, 0x64, 0xcf, 0xf5},
153 "id-Gost28147-89-CryptoPro-A-ParamSet",
156 0xbb, 0xf1, 0xed, 0xd3, 0x20, 0xaf, 0x8a, 0x62,
157 0x8e, 0x11, 0xc8, 0xa9, 0x51, 0xcc, 0xbe, 0x81,
158 0x47, 0x7b, 0x41, 0xa1, 0x6a, 0xf6, 0x7f, 0x05,
159 0xe8, 0x51, 0x2f, 0x9e, 0x01, 0xf8, 0xcf, 0x49},
163 0xc3, 0x73, 0x90, 0x95, 0x35, 0x58, 0x08, 0x63,
164 0xcb, 0x68, 0x85, 0x96, 0x77, 0xe8, 0xfb, 0xa9}
166 { /* Calculated by libcapi10, CryptoPro CSP
170 0xd2, 0xfd, 0xf8, 0x3a, 0xc1, 0xb4, 0x39, 0x23,
171 0x2e, 0xaa, 0xcc, 0x98, 0x0a, 0x02, 0xda, 0x33},
172 "id-Gost28147-89-CryptoPro-A-ParamSet",
175 0x8d, 0x5a, 0x2c, 0x83, 0xa7, 0xc7, 0x0a, 0x61,
176 0xd6, 0x1b, 0x34, 0xb5, 0x1f, 0xdf, 0x42, 0x68,
177 0x66, 0x71, 0xa3, 0x5d, 0x87, 0x4c, 0xfd, 0x84,
178 0x99, 0x36, 0x63, 0xb6, 0x1e, 0xd6, 0x0d, 0xad},
181 0x46, 0x60, 0x6f, 0x0d, 0x88, 0x34, 0x23, 0x5a},
183 0x88, 0xb7, 0x75, 0x16, 0x74, 0xa5, 0xee, 0x2d,
184 0x14, 0xfe, 0x91, 0x67, 0xd0, 0x5c, 0xcc, 0x40}
186 { /* Calculated by libcapi10, CryptoPro CSP
190 0x90, 0xa2, 0x39, 0x66, 0xae, 0x01, 0xb9, 0xa3,
191 0x52, 0x4e, 0xc8, 0xed, 0x6c, 0xdd, 0x88, 0x30},
192 "id-Gost28147-89-CryptoPro-A-ParamSet",
195 0x59, 0x9f, 0x84, 0xba, 0xc3, 0xf3, 0xd2, 0xf1,
196 0x60, 0xe1, 0xe3, 0xf2, 0x6a, 0x96, 0x1a, 0xf9,
197 0x9c, 0x48, 0xb2, 0x4e, 0xbc, 0xbb, 0xbf, 0x7c,
198 0xd8, 0xf3, 0xac, 0xcd, 0x96, 0x8d, 0x28, 0x6a},
201 0x8d, 0xaf, 0xa8, 0xd1, 0x58, 0xed, 0x05, 0x8d},
203 0x6e, 0x72, 0x62, 0xcc, 0xe3, 0x59, 0x36, 0x90,
204 0x83, 0x3a, 0xfe, 0xa9, 0x1b, 0xc9, 0xbe, 0xce}
206 { /* Calculated by libcapi10, CryptoPro CSP
210 0xb5, 0xa1, 0xf0, 0xe3, 0xce, 0x2f, 0x02, 0x1d,
211 0x67, 0x61, 0x94, 0x34, 0x5c, 0x41, 0xe3, 0x6e},
212 "id-Gost28147-89-CryptoPro-A-ParamSet",
215 0x9d, 0x05, 0xb7, 0x9e, 0x90, 0xca, 0xd0, 0x0a,
216 0x2c, 0xda, 0xd2, 0x2e, 0xf4, 0xe8, 0x6f, 0x5c,
217 0xf5, 0xdc, 0x37, 0x68, 0x19, 0x85, 0xb3, 0xbf,
218 0xaa, 0x18, 0xc1, 0xc3, 0x05, 0x0a, 0x91, 0xa2},
222 0xf8, 0x1f, 0x08, 0xa3}
225 * Other paramsets and key meshing test cases.
227 { /* Calculated by libcapi10, CryptoPro CSP
231 0x8c, 0x9c, 0x44, 0x35, 0xfb, 0xe9, 0xa5, 0xa3,
232 0xa0, 0xae, 0x28, 0x56, 0x91, 0x10, 0x8e, 0x1e,
233 0xd2, 0xbb, 0x18, 0x53, 0x81, 0x27, 0x0d, 0xa6,
234 0x68, 0x59, 0x36, 0xc5, 0x81, 0x62, 0x9a, 0x8e,
235 0x7d, 0x50, 0xf1, 0x6f, 0x97, 0x62, 0x29, 0xec,
236 0x80, 0x51, 0xe3, 0x7d, 0x6c, 0xc4, 0x07, 0x95,
237 0x28, 0x63, 0xdc, 0xb4, 0xb9, 0x2d, 0xb8, 0x13,
238 0xb1, 0x05, 0xb5, 0xf9, 0xeb, 0x75, 0x37, 0x4e,
239 0xf7, 0xbf, 0x51, 0xf1, 0x98, 0x86, 0x43, 0xc4,
240 0xe4, 0x3d, 0x3e, 0xa7, 0x62, 0xec, 0x41, 0x59,
241 0xe0, 0xbd, 0xfb, 0xb6, 0xfd, 0xec, 0xe0, 0x77,
242 0x13, 0xd2, 0x59, 0x90, 0xa1, 0xb8, 0x97, 0x6b,
243 0x3d, 0x8b, 0x7d, 0xfc, 0x9d, 0xca, 0x82, 0x73,
244 0x32, 0x70, 0x0a, 0x74, 0x03, 0xc6, 0x0c, 0x26,
245 0x7f, 0x56, 0xf0, 0x9d, 0xb2, 0xeb, 0x71, 0x40,
246 0xd7, 0xc3, 0xb1, 0xa7, 0xc5, 0x1e, 0x20, 0x17,
247 0xb3, 0x50, 0x1d, 0x8a, 0x6e, 0x19, 0xcb, 0xbe,
248 0x20, 0x86, 0x2b, 0xd6, 0x1c, 0xfd, 0xb4, 0xb7,
249 0x5d, 0x9a, 0xb3, 0xe3, 0x7d, 0x15, 0x7a, 0x35,
250 0x01, 0x9f, 0x5d, 0x65, 0x89, 0x4b, 0x34, 0xc6,
251 0xf4, 0x81, 0x3f, 0x78, 0x30, 0xcf, 0xe9, 0x15,
252 0x90, 0x9a, 0xf9, 0xde, 0xba, 0x63, 0xd0, 0x19,
253 0x14, 0x66, 0x3c, 0xb9, 0xa4, 0xb2, 0x84, 0x94,
254 0x02, 0xcf, 0xce, 0x20, 0xcf, 0x76, 0xe7, 0xc5,
255 0x48, 0xf7, 0x69, 0x3a, 0x5d, 0xec, 0xaf, 0x41,
256 0xa7, 0x12, 0x64, 0x83, 0xf5, 0x99, 0x1e, 0x9e,
257 0xb2, 0xab, 0x86, 0x16, 0x00, 0x23, 0x8e, 0xe6,
258 0xd9, 0x80, 0x0b, 0x6d, 0xc5, 0x93, 0xe2, 0x5c,
259 0x8c, 0xd8, 0x5e, 0x5a, 0xae, 0x4a, 0x85, 0xfd,
260 0x76, 0x01, 0xea, 0x30, 0xf3, 0x78, 0x34, 0x10,
261 0x72, 0x51, 0xbc, 0x9f, 0x76, 0xce, 0x1f, 0xd4,
262 0x8f, 0x33, 0x50, 0x34, 0xc7, 0x4d, 0x7b, 0xcf,
263 0x91, 0x63, 0x7d, 0x82, 0x9e, 0xa1, 0x23, 0x45,
264 0xf5, 0x45, 0xac, 0x98, 0x7a, 0x48, 0xff, 0x64,
265 0xd5, 0x59, 0x47, 0xde, 0x2b, 0x3f, 0xfa, 0xec,
266 0x50, 0xe0, 0x81, 0x60, 0x8b, 0xc3, 0xfc, 0x80,
267 0x98, 0x17, 0xc7, 0xa3, 0xc2, 0x57, 0x3d, 0xab,
268 0x91, 0x67, 0xf5, 0xc4, 0xab, 0x92, 0xc8, 0xd6,
269 0x3b, 0x6b, 0x3f, 0xff, 0x15, 0x6b, 0xcf, 0x53,
270 0x65, 0x02, 0xf1, 0x74, 0xca, 0xa9, 0xbe, 0x24,
271 0xd2, 0xf0, 0xb7, 0x26, 0xa8, 0xd7, 0x6d, 0xed,
272 0x90, 0x36, 0x7b, 0x3e, 0x41, 0xa9, 0x7f, 0xa3,
273 0x1b, 0xf4, 0x43, 0xc5, 0x51, 0xbe, 0x28, 0x59,
274 0xe9, 0x45, 0x26, 0x49, 0x38, 0x32, 0xf8, 0xf3,
275 0x92, 0x6e, 0x30, 0xcc, 0xb0, 0xa0, 0xf9, 0x01,
276 0x14, 0xc8, 0xba, 0xd9, 0xf0, 0x2a, 0x29, 0xe2,
277 0x52, 0x9a, 0x76, 0x95, 0x3a, 0x16, 0x32, 0xec,
278 0xf4, 0x10, 0xec, 0xee, 0x47, 0x00, 0x70, 0x19,
279 0xe4, 0x72, 0x35, 0x66, 0x44, 0x53, 0x2d, 0xa2,
280 0xf3, 0xaa, 0x7e, 0x8a, 0x33, 0x13, 0xcd, 0xc8,
281 0xbf, 0x0e, 0x40, 0x90, 0x00, 0xe4, 0x42, 0xc3,
282 0x09, 0x84, 0xe1, 0x66, 0x17, 0xa2, 0xaf, 0x03,
283 0xab, 0x6b, 0xa1, 0xec, 0xfb, 0x17, 0x72, 0x81,
284 0xfe, 0x9a, 0x9f, 0xf4, 0xb2, 0x33, 0x1f, 0xae,
285 0x0c, 0xd1, 0x6a, 0xae, 0x19, 0xb8, 0xaf, 0xec,
286 0xe3, 0xea, 0x00, 0xf8, 0xac, 0x87, 0x07, 0x5f,
287 0x6d, 0xb0, 0xac, 0x6b, 0x22, 0x48, 0x36, 0xbf,
288 0x22, 0x18, 0xb0, 0x03, 0x9f, 0x6c, 0x70, 0x45,
289 0x36, 0xf0, 0x6b, 0xc6, 0xc2, 0xa5, 0x72, 0x2c,
290 0xd8, 0xe0, 0x27, 0x3d, 0xec, 0x56, 0x07, 0x05,
291 0x7d, 0x83, 0xa1, 0x65, 0x7d, 0x41, 0x5b, 0xcd,
292 0x77, 0x24, 0xe5, 0xaa, 0x76, 0x47, 0xd0, 0x50,
293 0xf6, 0xe7, 0xb5, 0x59, 0x75, 0x31, 0x27, 0xef,
294 0xd8, 0xa6, 0x4e, 0x7f, 0xb8, 0x40, 0xb1, 0xdf,
295 0x53, 0x14, 0xed, 0xf1, 0x68, 0x5f, 0xfc, 0x3f,
296 0x02, 0xdb, 0x05, 0xeb, 0x31, 0xe4, 0x2c, 0x7f,
297 0x32, 0xb5, 0x70, 0x8e, 0x75, 0x85, 0xa4, 0x5c,
298 0x16, 0x23, 0x37, 0xf2, 0x10, 0x79, 0xcb, 0xdc,
299 0xf8, 0x1c, 0x25, 0xc2, 0xa1, 0x3d, 0x9c, 0x33,
300 0x6c, 0xed, 0xc3, 0xe7, 0xf3, 0x02, 0x87, 0x82,
301 0x4e, 0xfb, 0xac, 0xb3, 0x2d, 0xfc, 0xf8, 0x0d,
302 0x1d, 0x4a, 0x39, 0xd4, 0xb3, 0x09, 0xbb, 0xe9,
303 0x25, 0xc7, 0xec, 0x6a, 0x87, 0x72, 0x84, 0xed,
304 0x12, 0x60, 0x19, 0x64, 0xeb, 0x16, 0x2a, 0x5b,
305 0x10, 0x76, 0x27, 0xff, 0x7b, 0xe4, 0xae, 0xe5,
306 0xa4, 0x04, 0x02, 0x7f, 0xbb, 0x0a, 0xb5, 0xf4,
307 0x05, 0xa5, 0x56, 0x1c, 0x53, 0x31, 0x7a, 0x93,
308 0xba, 0x16, 0x15, 0xab, 0x62, 0x60, 0xfc, 0xde,
309 0x72, 0x36, 0x6e, 0x28, 0xaf, 0x98, 0x0d, 0xe6,
310 0xf4, 0xde, 0x60, 0xa7, 0x7e, 0x06, 0x07, 0x86,
311 0xf3, 0x94, 0xb6, 0x6d, 0x0d, 0x93, 0xa6, 0xbc,
312 0x60, 0x70, 0x33, 0xac, 0x3f, 0xa1, 0xa8, 0x4a,
313 0x20, 0x61, 0xb6, 0xb5, 0x43, 0xa3, 0x15, 0x5a,
314 0x00, 0xbe, 0x76, 0x98, 0x57, 0x72, 0xab, 0x7a,
315 0x0e, 0x18, 0x93, 0x82, 0x3a, 0x18, 0x78, 0x6e,
316 0x71, 0x7b, 0x78, 0x4f, 0x7e, 0x8c, 0xde, 0x7a,
317 0x62, 0xb5, 0x0a, 0x7c, 0x45, 0x1d, 0x16, 0xd5,
318 0xc3, 0x8c, 0x9b, 0x25, 0xb4, 0x50, 0x90, 0xcd,
319 0x96, 0x93, 0xad, 0x0f, 0xd4, 0x43, 0xcb, 0x49,
320 0x0f, 0xfc, 0x5a, 0x31, 0xf4, 0x19, 0xb7, 0xd4,
321 0xeb, 0x4d, 0x40, 0x58, 0xd0, 0x3b, 0xc8, 0xe0,
322 0x4a, 0x54, 0x2f, 0xdb, 0x22, 0xc3, 0x29, 0x7b,
323 0x40, 0x90, 0x61, 0x43, 0xd3, 0x7e, 0xe2, 0x30,
324 0x2b, 0x48, 0x3c, 0xce, 0x90, 0x93, 0xb1, 0x8b,
325 0x31, 0x96, 0x65, 0x6d, 0x57, 0x8b, 0x9d, 0x4d,
326 0x53, 0xf0, 0x83, 0x1c, 0xe5, 0xa1, 0x9d, 0x55,
327 0xe3, 0xbf, 0x7e, 0xca, 0x1a, 0x74, 0x66, 0x14,
328 0xcc, 0x47, 0x43, 0xd9, 0xbb, 0xef, 0x97, 0x7d,
329 0xb7, 0x6e, 0xff, 0xf1, 0x22, 0xf8, 0x10, 0x2d,
330 0x3f, 0xcd, 0x49, 0x96, 0xd9, 0x09, 0x11, 0xb8,
331 0x33, 0xd0, 0x23, 0x9a, 0xfa, 0x16, 0xcb, 0x50,
332 0x26, 0x57, 0x24, 0x5c, 0x0e, 0xba, 0xf0, 0x3f,
333 0x37, 0x2f, 0xa3, 0xf7, 0x18, 0x57, 0x48, 0x48,
334 0x95, 0xcf, 0xef, 0x87, 0x67, 0x2a, 0xe9, 0xb6,
335 0x8a, 0x21, 0x36, 0x7f, 0xff, 0x48, 0x6c, 0x46,
336 0x35, 0x57, 0xf2, 0xbc, 0x48, 0x67, 0x8f, 0x63,
337 0x23, 0x78, 0x11, 0x2b, 0xc2, 0x08, 0xde, 0x51,
338 0xe8, 0x8b, 0x92, 0x29, 0xf9, 0x9a, 0x9e, 0xad,
339 0xed, 0x0f, 0xeb, 0xa2, 0xd2, 0x40, 0x92, 0xd4,
340 0xde, 0x62, 0x95, 0x76, 0xfd, 0x6e, 0x3c, 0xbf,
341 0xc0, 0xd7, 0x0d, 0xe5, 0x1b, 0xa4, 0xc7, 0x18,
342 0xe1, 0x58, 0xa4, 0x56, 0xef, 0x2e, 0x17, 0x1b,
343 0x75, 0xcb, 0xbc, 0xf9, 0x2a, 0x95, 0x71, 0xa7,
344 0x1d, 0x7f, 0xe7, 0x73, 0x63, 0x05, 0x6b, 0x19,
345 0x4c, 0xf4, 0x22, 0x14, 0xc4, 0x59, 0x88, 0x66,
346 0x92, 0x86, 0x61, 0x5c, 0x6a, 0xae, 0xec, 0x58,
347 0xff, 0xc9, 0xf2, 0x44, 0xd4, 0xa2, 0xf5, 0x98,
348 0xeb, 0x5f, 0x09, 0xbc, 0x8a, 0xbf, 0x3c, 0xb4,
349 0x3e, 0xb1, 0x20, 0x05, 0x44, 0x96, 0x79, 0x0a,
350 0x40, 0x92, 0x7f, 0x9d, 0xd1, 0xaf, 0xbc, 0x90,
351 0x95, 0x0a, 0x81, 0xd4, 0xa7, 0xc6, 0xb8, 0xe0,
352 0xe4, 0x39, 0x30, 0x1d, 0x79, 0xc0, 0xe5, 0xfa,
353 0xb4, 0xe9, 0x63, 0xb4, 0x09, 0x72, 0x3b, 0x3e,
354 0xd9, 0xf6, 0xd9, 0x10, 0x21, 0x18, 0x7e, 0xe5,
355 0xad, 0x81, 0xd7, 0xd5, 0x82, 0xd0, 0x8c, 0x3b,
356 0x38, 0x95, 0xf8, 0x92, 0x01, 0xa9, 0x92, 0x00,
357 0x70, 0xd1, 0xa7, 0x88, 0x77, 0x1f, 0x3a, 0xeb,
358 0xb5, 0xe4, 0xf5, 0x9d, 0xc7, 0x37, 0x86, 0xb2,
359 0x12, 0x46, 0x34, 0x19, 0x72, 0x8c, 0xf5, 0x8c,
360 0xf6, 0x78, 0x98, 0xe0, 0x7c, 0xd3, 0xf4},
361 "id-Gost28147-89-CryptoPro-B-ParamSet",
364 0x48, 0x0c, 0x74, 0x1b, 0x02, 0x6b, 0x55, 0xd5,
365 0xb6, 0x6d, 0xd7, 0x1d, 0x40, 0x48, 0x05, 0x6b,
366 0x6d, 0xeb, 0x3c, 0x29, 0x0f, 0x84, 0x80, 0x23,
367 0xee, 0x0d, 0x47, 0x77, 0xe3, 0xfe, 0x61, 0xc9},
370 0x1f, 0x3f, 0x82, 0x1e, 0x0d, 0xd8, 0x1e, 0x22},
372 0x23, 0xc6, 0x7f, 0x20, 0xa1, 0x23, 0x58, 0xbc,
373 0x7b, 0x05, 0xdb, 0x21, 0x15, 0xcf, 0x96, 0x41,
374 0xc7, 0x88, 0xef, 0x76, 0x5c, 0x49, 0xdb, 0x42,
375 0xbf, 0xf3, 0xc0, 0xf5, 0xbd, 0x5d, 0xd9, 0x8e,
376 0xaf, 0x3d, 0xf4, 0xe4, 0xda, 0x88, 0xbd, 0xbc,
377 0x47, 0x5d, 0x76, 0x07, 0xc9, 0x5f, 0x54, 0x1d,
378 0x1d, 0x6a, 0xa1, 0x2e, 0x18, 0xd6, 0x60, 0x84,
379 0x02, 0x18, 0x37, 0x92, 0x92, 0x15, 0xab, 0x21,
380 0xee, 0x21, 0xcc, 0x71, 0x6e, 0x51, 0xd9, 0x2b,
381 0xcc, 0x81, 0x97, 0x3f, 0xeb, 0x45, 0x99, 0xb8,
382 0x1b, 0xda, 0xff, 0x90, 0xd3, 0x41, 0x06, 0x9c,
383 0x3f, 0xfb, 0xe4, 0xb2, 0xdc, 0xc9, 0x03, 0x0d,
384 0xa7, 0xae, 0xd7, 0x7d, 0x02, 0xb8, 0x32, 0xab,
385 0xf3, 0x65, 0xa3, 0x65, 0x6c, 0x4e, 0xe4, 0xa2,
386 0x5e, 0x9e, 0xee, 0xcd, 0xde, 0x79, 0x36, 0x6b,
387 0x1b, 0xe1, 0x3c, 0xdf, 0x10, 0xad, 0x4f, 0x02,
388 0xe1, 0x14, 0xaa, 0x09, 0xb4, 0x0b, 0x76, 0xeb,
389 0x69, 0x38, 0x20, 0x02, 0xcb, 0x8e, 0xc0, 0xdf,
390 0xca, 0x48, 0x74, 0xc3, 0x31, 0xad, 0x42, 0x2c,
391 0x51, 0x9b, 0xd0, 0x6a, 0xc1, 0x36, 0xd7, 0x21,
392 0xdf, 0xb0, 0x45, 0xba, 0xca, 0x7f, 0x35, 0x20,
393 0x28, 0xbb, 0xc1, 0x76, 0xfd, 0x43, 0x5d, 0x23,
394 0x7d, 0x31, 0x84, 0x1a, 0x97, 0x4d, 0x83, 0xaa,
395 0x7e, 0xf1, 0xc4, 0xe6, 0x83, 0xac, 0x0d, 0xef,
396 0xef, 0x3c, 0xa4, 0x7c, 0x48, 0xe4, 0xc8, 0xca,
397 0x0d, 0x7d, 0xea, 0x7c, 0x45, 0xd7, 0x73, 0x50,
398 0x25, 0x1d, 0x01, 0xc4, 0x02, 0x1a, 0xcd, 0xe0,
399 0x38, 0x5b, 0xa8, 0x5a, 0x16, 0x9a, 0x10, 0x59,
400 0x74, 0xd7, 0x19, 0xc6, 0xf3, 0xb5, 0x17, 0xf6,
401 0x59, 0x8d, 0x62, 0xaf, 0x44, 0xe8, 0xdc, 0xe9,
402 0xc1, 0x76, 0xf1, 0xd0, 0xbd, 0x29, 0xd7, 0xec,
403 0x1d, 0xac, 0x57, 0xdb, 0x1a, 0x3f, 0xd8, 0xf6,
404 0x6e, 0xb6, 0xe6, 0xdf, 0x36, 0xe7, 0x89, 0xce,
405 0x56, 0x35, 0x43, 0x1c, 0x7d, 0x57, 0x79, 0x0e,
406 0xd8, 0xf4, 0xd7, 0xa7, 0x0d, 0xc6, 0x8f, 0x91,
407 0x66, 0x67, 0x82, 0x0f, 0x49, 0xc9, 0xc5, 0x65,
408 0x81, 0xa1, 0x39, 0x5a, 0x53, 0x9f, 0x02, 0xa5,
409 0xd5, 0x36, 0x22, 0xa8, 0xa8, 0x1c, 0x37, 0x0e,
410 0x76, 0x46, 0xdf, 0xbd, 0x6a, 0xdb, 0xfc, 0x1b,
411 0xbd, 0x10, 0xb8, 0xb1, 0xbc, 0x72, 0x4c, 0x58,
412 0x4a, 0xda, 0x6d, 0x66, 0x00, 0xda, 0x7a, 0x66,
413 0xa0, 0xe7, 0x3b, 0x39, 0xa3, 0xf7, 0x05, 0x07,
414 0xfa, 0x21, 0x4b, 0xc7, 0x94, 0xc0, 0xd3, 0x7b,
415 0x19, 0x02, 0x5d, 0x4a, 0x10, 0xf1, 0xc2, 0x0f,
416 0x19, 0x68, 0x27, 0xc7, 0x7d, 0xbf, 0x55, 0x03,
417 0x57, 0x7d, 0xaf, 0x77, 0xae, 0x80, 0x2f, 0x7a,
418 0xe6, 0x1f, 0x4b, 0xdc, 0x15, 0x18, 0xc0, 0x62,
419 0xa1, 0xe8, 0xd9, 0x1c, 0x9e, 0x8c, 0x96, 0x39,
420 0xc1, 0xc4, 0x88, 0xf7, 0x0c, 0xe1, 0x04, 0x84,
421 0x68, 0x51, 0xce, 0xf1, 0x90, 0xda, 0x7f, 0x76,
422 0xc8, 0xc0, 0x88, 0xef, 0x8e, 0x15, 0x25, 0x3e,
423 0x7b, 0xe4, 0x79, 0xb5, 0x66, 0x2d, 0x9c, 0xd1,
424 0x13, 0xda, 0xd0, 0xd5, 0x46, 0xd5, 0x8d, 0x46,
425 0x18, 0x07, 0xee, 0xd8, 0xc9, 0x64, 0xe3, 0xbe,
426 0x0e, 0x68, 0x27, 0x09, 0x96, 0x26, 0xf6, 0xe2,
427 0x19, 0x61, 0x3f, 0xf4, 0x58, 0x27, 0x0a, 0xeb,
428 0xce, 0x7c, 0xb6, 0x68, 0x92, 0xe7, 0x12, 0x3b,
429 0x31, 0xd4, 0x48, 0xdf, 0x35, 0x8d, 0xf4, 0x86,
430 0x42, 0x2a, 0x15, 0x4b, 0xe8, 0x19, 0x1f, 0x26,
431 0x65, 0x9b, 0xa8, 0xda, 0x4b, 0x79, 0x1f, 0x8e,
432 0xe6, 0x13, 0x7e, 0x49, 0x8f, 0xc1, 0xce, 0xdc,
433 0x5e, 0x64, 0x74, 0xce, 0x02, 0x78, 0xe0, 0xcf,
434 0xa0, 0xed, 0x5e, 0x31, 0x74, 0xd1, 0xd0, 0xb4,
435 0xee, 0x70, 0x19, 0x14, 0x3c, 0x8f, 0x16, 0xa6,
436 0xcf, 0x12, 0x93, 0x15, 0x88, 0xeb, 0x91, 0x65,
437 0x76, 0x98, 0xfd, 0xa1, 0x94, 0x30, 0xba, 0x43,
438 0x62, 0x65, 0x40, 0x04, 0x77, 0x9e, 0xd6, 0xab,
439 0x8b, 0x0d, 0x93, 0x80, 0x50, 0x5f, 0xa2, 0x76,
440 0x20, 0xa7, 0xd6, 0x9c, 0x27, 0x15, 0x27, 0xbc,
441 0xa5, 0x5a, 0xbf, 0xe9, 0x92, 0x82, 0x05, 0xa8,
442 0x41, 0xe9, 0xb5, 0x60, 0xd5, 0xc0, 0xd7, 0x4b,
443 0xad, 0x38, 0xb2, 0xe9, 0xd1, 0xe5, 0x51, 0x5f,
444 0x24, 0x78, 0x24, 0x9a, 0x23, 0xd2, 0xc2, 0x48,
445 0xbd, 0x0e, 0xf1, 0x37, 0x72, 0x91, 0x87, 0xb0,
446 0x4e, 0xbd, 0x99, 0x6b, 0x2c, 0x01, 0xb6, 0x79,
447 0x69, 0xec, 0x0c, 0xed, 0xe5, 0x3f, 0x50, 0x64,
448 0x7c, 0xb9, 0xdd, 0xe1, 0x92, 0x81, 0xb5, 0xd0,
449 0xcb, 0x17, 0x83, 0x86, 0x8b, 0xea, 0x4f, 0x93,
450 0x08, 0xbc, 0x22, 0x0c, 0xef, 0xe8, 0x0d, 0xf5,
451 0x9e, 0x23, 0xe1, 0xf9, 0xb7, 0x6b, 0x45, 0x0b,
452 0xcb, 0xa9, 0xb6, 0x4d, 0x28, 0x25, 0xba, 0x3e,
453 0x86, 0xf2, 0x75, 0x47, 0x5d, 0x9d, 0x6b, 0xf6,
454 0x8a, 0x05, 0x58, 0x73, 0x3d, 0x00, 0xde, 0xfd,
455 0x69, 0xb1, 0x61, 0x16, 0xf5, 0x2e, 0xb0, 0x9f,
456 0x31, 0x6a, 0x00, 0xb9, 0xef, 0x71, 0x63, 0x47,
457 0xa3, 0xca, 0xe0, 0x40, 0xa8, 0x7e, 0x02, 0x04,
458 0xfe, 0xe5, 0xce, 0x48, 0x73, 0xe3, 0x94, 0xcf,
459 0xe2, 0xff, 0x29, 0x7e, 0xf6, 0x32, 0xbb, 0xb7,
460 0x55, 0x12, 0x21, 0x7a, 0x9c, 0x75, 0x04, 0x0c,
461 0xb4, 0x7c, 0xb0, 0x3d, 0x40, 0xb3, 0x11, 0x9a,
462 0x7a, 0x9a, 0x13, 0xfb, 0x77, 0xa7, 0x51, 0x68,
463 0xf7, 0x05, 0x47, 0x3b, 0x0f, 0x52, 0x5c, 0xe6,
464 0xc2, 0x99, 0x3a, 0x37, 0x54, 0x5c, 0x4f, 0x2b,
465 0xa7, 0x01, 0x08, 0x74, 0xbc, 0x91, 0xe3, 0xe2,
466 0xfe, 0x65, 0x94, 0xfd, 0x3d, 0x18, 0xe0, 0xf0,
467 0x62, 0xed, 0xc2, 0x10, 0x82, 0x9c, 0x58, 0x7f,
468 0xb2, 0xa3, 0x87, 0x8a, 0x74, 0xd9, 0xc1, 0xfb,
469 0x84, 0x28, 0x17, 0xc7, 0x2b, 0xcb, 0x53, 0x1f,
470 0x4e, 0x8a, 0x82, 0xfc, 0xb4, 0x3f, 0xc1, 0x47,
471 0x25, 0xf3, 0x21, 0xdc, 0x4c, 0x2d, 0x08, 0xfa,
472 0xe7, 0x0f, 0x03, 0xa9, 0x68, 0xde, 0x6b, 0x41,
473 0xa0, 0xf9, 0x41, 0x6c, 0x57, 0x4d, 0x3a, 0x0e,
474 0xea, 0x51, 0xca, 0x9f, 0x97, 0x11, 0x7d, 0xf6,
475 0x8e, 0x88, 0x63, 0x67, 0xc9, 0x65, 0x13, 0xca,
476 0x38, 0xed, 0x35, 0xbe, 0xf4, 0x27, 0xa9, 0xfc,
477 0xa9, 0xe6, 0xc3, 0x40, 0x86, 0x08, 0x39, 0x72,
478 0x37, 0xee, 0xb2, 0x87, 0x09, 0x96, 0xb7, 0x40,
479 0x87, 0x36, 0x92, 0xc1, 0x5d, 0x6a, 0x2c, 0x43,
480 0xca, 0x25, 0xc8, 0x35, 0x37, 0x2d, 0xb5, 0xa9,
481 0x27, 0x44, 0x50, 0xf2, 0x6d, 0x22, 0x75, 0x41,
482 0x77, 0x2a, 0xdb, 0xb1, 0x8c, 0x6d, 0x05, 0xe8,
483 0xc9, 0x99, 0xc7, 0x08, 0xf9, 0x14, 0x8f, 0x78,
484 0xa9, 0x8f, 0xc2, 0x5a, 0x7a, 0x65, 0xc5, 0xd8,
485 0x86, 0xbb, 0x72, 0x69, 0x6b, 0x6b, 0x45, 0x83,
486 0x5b, 0xb1, 0xf7, 0xcd, 0x16, 0x73, 0xee, 0xe9,
487 0x80, 0x85, 0xfe, 0x8e, 0xe1, 0xae, 0x53, 0x8f,
488 0xde, 0xbe, 0x48, 0x8b, 0x59, 0xef, 0xf6, 0x7e,
489 0xd8, 0xb5, 0xa8, 0x47, 0xc0, 0x4e, 0x15, 0x58,
490 0xca, 0xd3, 0x2f, 0xf8, 0x6c, 0xa6, 0x3d, 0x78,
491 0x4d, 0x7a, 0x54, 0xd6, 0x10, 0xe5, 0xcc, 0x05,
492 0xe2, 0x29, 0xb5, 0x86, 0x07, 0x39, 0x7d, 0x78,
493 0x8e, 0x5a, 0x8f, 0x83, 0x4c, 0xe7, 0x3d, 0x68,
494 0x3e, 0xe5, 0x02, 0xe6, 0x64, 0x4f, 0x5e, 0xb4,
495 0x49, 0x77, 0xf0, 0xc0, 0xfa, 0x6f, 0xc8, 0xfb,
496 0x9f, 0x84, 0x6f, 0x55, 0xfb, 0x30, 0x5e, 0x89,
497 0x93, 0xa9, 0xf3, 0xa6, 0xa3, 0xd7, 0x26, 0xbb,
498 0xd8, 0xa8, 0xd9, 0x95, 0x1d, 0xfe, 0xfc, 0xd7,
499 0xa8, 0x93, 0x66, 0x2f, 0x04, 0x53, 0x06, 0x64,
500 0x7f, 0x31, 0x29, 0xae, 0xb7, 0x9f, 0xba, 0xc4,
501 0x6d, 0x68, 0xd1, 0x24, 0x32, 0xf4, 0x11}
503 { /* Calculated by libcapi10, CryptoPro CSP
507 0x07, 0x9c, 0x91, 0xbe},
508 "id-Gost28147-89-CryptoPro-C-ParamSet",
511 0x77, 0xc3, 0x45, 0x8e, 0xf6, 0x42, 0xe7, 0x04,
512 0x8e, 0xfc, 0x08, 0xe4, 0x70, 0x96, 0xd6, 0x05,
513 0x93, 0x59, 0x02, 0x6d, 0x6f, 0x97, 0xca, 0xe9,
514 0xcf, 0x89, 0x44, 0x4b, 0xde, 0x6c, 0x22, 0x1d},
517 0x43, 0x7c, 0x3e, 0x8e, 0x2f, 0x2a, 0x00, 0x98},
519 0x19, 0x35, 0x81, 0x34}
521 { /* Calculated by libcapi10, CryptoPro CSP
525 0x2f, 0x31, 0xd8, 0x83, 0xb4, 0x20, 0xe8, 0x6e,
527 "id-Gost28147-89-CryptoPro-D-ParamSet",
530 0x38, 0x9f, 0xe8, 0x37, 0xff, 0x9c, 0x5d, 0x29,
531 0xfc, 0x48, 0x55, 0xa0, 0x87, 0xea, 0xe8, 0x40,
532 0x20, 0x87, 0x5b, 0xb2, 0x01, 0x15, 0x55, 0xa7,
533 0xe3, 0x2d, 0xcb, 0x3d, 0xd6, 0x59, 0x04, 0x73},
536 0xc5, 0xa2, 0xd2, 0x1f, 0x2f, 0xdf, 0xb8, 0xeb},
538 0x6d, 0xa4, 0xed, 0x40, 0x08, 0x88, 0x71, 0xad,
541 { /* Calculated by libcapi10, CryptoPro CSP
545 "id-Gost28147-89-CryptoPro-A-ParamSet",
548 0x61, 0x58, 0x44, 0x5a, 0x41, 0xf6, 0xc7, 0x0f,
549 0x6b, 0xdb, 0x51, 0x91, 0x6a, 0xf6, 0x81, 0x30,
550 0x8c, 0xa7, 0x98, 0xdd, 0x38, 0x35, 0x8a, 0x60,
551 0x85, 0xb4, 0xf0, 0xf9, 0x43, 0xa2, 0x7d, 0x9a},
554 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
556 0x1c, 0x16, 0xa0, 0xe9, 0x63, 0x94, 0xfe, 0x38,
557 0x37, 0xa7, 0x9b, 0x70, 0x25, 0x2e, 0xd6, 0x00}
559 { /* Calculated by libcapi10, CryptoPro CSP
561 U64(4294967296) + 16,
563 "id-Gost28147-89-CryptoPro-A-ParamSet",
566 0xae, 0x57, 0xa2, 0xdd, 0xa4, 0xef, 0x4f, 0x96,
567 0xb8, 0x94, 0xa5, 0xd1, 0x1b, 0xc8, 0x9b, 0x42,
568 0xa5, 0x24, 0xcc, 0x89, 0x5c, 0xb8, 0x92, 0x52,
569 0xc1, 0x12, 0x6a, 0xb0, 0x9a, 0x26, 0xe8, 0x06},
572 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
574 0x2e, 0x62, 0xb0, 0x2e, 0xc7, 0x87, 0x4b, 0x29,
575 0x33, 0x16, 0x6b, 0xb4, 0xd6, 0x61, 0x66, 0xd9}
577 { /* Calculated by libcapi10, CryptoPro CSP
581 0x3d, 0x0b, 0x69, 0xf7, 0xa8, 0xe4, 0xfc, 0x99,
582 0x22, 0x2e, 0xee, 0xd1, 0x63, 0x12, 0xfe, 0xa8,
583 0x9d, 0xcb, 0x6c, 0x4d, 0x48, 0x8c, 0xe8, 0xbd,
584 0x8b, 0x60, 0xf1, 0xbf, 0x7b, 0xe3, 0x79, 0xd5,
585 0x2b, 0x25, 0x97, 0x13, 0xef, 0x35, 0xda, 0xf4,
586 0xbc, 0x77, 0xce, 0xea, 0xe9, 0x3f, 0xa4, 0xb6,
587 0x01, 0xd5, 0x73, 0x29, 0x58, 0xda, 0xd7, 0x67,
588 0x17, 0xac, 0xe4, 0x75, 0x2f, 0x57, 0x23, 0xac,
589 0x96, 0x21, 0xc7, 0x62, 0x2d, 0xf7, 0x32, 0xb5,
590 0x44, 0x5f, 0x72, 0xb1, 0x5f, 0xba, 0x1b, 0x1e,
591 0xdb, 0x4a, 0x09, 0x8c, 0x92, 0x61, 0xa2, 0xb0,
592 0x49, 0x68, 0xe5, 0xb3, 0xa2, 0x8f, 0x13, 0x4b,
593 0xf5, 0x4d, 0x84, 0xda, 0xab, 0xa0, 0xb6, 0xd1,
594 0x5a, 0x63, 0x19, 0xe8, 0xa2, 0x09, 0xf6, 0x76,
595 0x6f, 0x9b, 0x48, 0x0a, 0x15, 0x5d, 0xb7, 0x20,
596 0x21, 0x9a, 0x2e, 0xb9, 0x6d, 0xfa, 0x1e, 0xc2,
597 0x0e, 0xef, 0x15, 0xab, 0x59, 0x01, 0xfe, 0x43,
598 0x90, 0xf2, 0x62, 0xca, 0x4a, 0x9a, 0x48, 0x38,
599 0xab, 0x6f, 0x9d, 0x21, 0xb3, 0xad, 0xa7, 0x60,
600 0x46, 0xe3, 0xef, 0xd0, 0xe3, 0x1d, 0xc5, 0xe1,
601 0xb8, 0xa1, 0xe2, 0x99, 0x20, 0xc5, 0x76, 0xcc,
602 0xaa, 0x8a, 0xa9, 0x45, 0x55, 0xa0, 0x78, 0x00,
603 0x64, 0xde, 0xcf, 0x5b, 0xdf, 0x26, 0x48, 0xcd,
604 0xba, 0x8a, 0xb5, 0xfb, 0xfd, 0x4a, 0xd5, 0xc4,
605 0xe0, 0x43, 0xa6, 0x71, 0x90, 0xa4, 0x8b, 0xca,
606 0x2e, 0x88, 0x7b, 0xac, 0xb2, 0xdc, 0xf2, 0x01,
607 0xcb, 0xda, 0x6e, 0x91, 0x27, 0x28, 0x44, 0x88,
608 0x9a, 0xd2, 0x12, 0xf1, 0xa6, 0xf5, 0xb7, 0x61,
609 0xce, 0x79, 0x62, 0x52, 0x3c, 0xe6, 0x14, 0x73,
610 0xd1, 0x41, 0x92, 0x50, 0xbd, 0xdc, 0x3b, 0xd0,
611 0xa7, 0x11, 0x8c, 0x3a, 0xe4, 0x2d, 0xf2, 0x52,
612 0xd3, 0x2f, 0x7c, 0x8e, 0x54, 0x90, 0x4e, 0x23,
613 0xae, 0xb3, 0xa0, 0xf3, 0x25, 0x7e, 0x66, 0xaa,
614 0x0f, 0x6f, 0x81, 0x72, 0x77, 0xbb, 0xd3, 0x47,
615 0xe8, 0x05, 0xff, 0xe1, 0x5b, 0xc9, 0x37, 0x50,
616 0x33, 0x49, 0x17, 0xaf, 0xab, 0x1d, 0xe1, 0x15,
617 0xf2, 0xe5, 0x98, 0x5e, 0x2d, 0x05, 0x1f, 0x0d,
618 0x55, 0x97, 0xed, 0xff, 0x5e, 0xe0, 0x0f, 0xc3,
619 0x9c, 0xbd, 0x82, 0xc2, 0x06, 0xbe, 0x45, 0x66,
620 0xae, 0x33, 0xbe, 0x28, 0x48, 0xe9, 0x2d, 0x1a,
621 0xe6, 0x65, 0x8e, 0xdf, 0x76, 0x03, 0x73, 0x4b,
622 0xc0, 0x80, 0x71, 0xf9, 0xac, 0xba, 0xa0, 0xb0,
623 0x19, 0x1a, 0x0a, 0xd4, 0x35, 0x12, 0x88, 0x76,
624 0x05, 0x75, 0x8f, 0x7c, 0xb5, 0xf0, 0x19, 0x75,
625 0x6d, 0x05, 0xcb, 0x0d, 0xbc, 0x8d, 0xe9, 0xf0,
626 0xd4, 0xdb, 0x3c, 0x3c, 0x29, 0x8e, 0x2c, 0x32,
627 0x1d, 0xf7, 0xb6, 0x49, 0xcf, 0xdb, 0x63, 0xee,
628 0x3c, 0xfa, 0x33, 0x73, 0x6f, 0xe4, 0x97, 0x4e,
629 0x2f, 0xc9, 0x4c, 0x5c, 0x65, 0xfe, 0xea, 0xfb,
630 0xc6, 0xdd, 0xc1, 0x1c, 0x47, 0x3f, 0xf4, 0x50,
631 0x2f, 0xde, 0x1b, 0x5b, 0x0b, 0x16, 0xca, 0xb6,
632 0x46, 0x44, 0xf2, 0xc1, 0x0d, 0xa1, 0x1d, 0xa6,
633 0xdb, 0xf0, 0x3d, 0xb1, 0x6c, 0x05, 0x31, 0x85,
634 0x8e, 0x74, 0xae, 0xf2, 0x39, 0x26, 0xf7, 0xc1,
635 0xe7, 0x4c, 0xdd, 0x9d, 0x40, 0xb8, 0xf3, 0xc5,
636 0xc2, 0x16, 0x64, 0x6b, 0xaa, 0xdb, 0x4b, 0x82,
637 0x5c, 0xd3, 0x02, 0xd3, 0x8f, 0x26, 0x79, 0x8d,
638 0xb0, 0x78, 0x70, 0x19, 0x58, 0x0c, 0xb4, 0x31,
639 0x88, 0x44, 0x1c, 0x91, 0x6f, 0xf4, 0x52, 0x39,
640 0xa8, 0xf5, 0xc0, 0x1b, 0xfe, 0xf2, 0x0e, 0x4b,
641 0xac, 0x0a, 0xc2, 0x7e, 0x9c, 0x9b, 0xeb, 0x5d,
642 0x4e, 0x4f, 0x42, 0xd8, 0x71, 0x0a, 0x97, 0x27,
643 0x03, 0x14, 0x96, 0xa6, 0x3d, 0x04, 0xea, 0x9f,
644 0x14, 0x14, 0x27, 0x4c, 0xd9, 0xa2, 0x89, 0x5f,
645 0x65, 0x4a, 0xe1, 0x9d, 0x2c, 0xb8, 0xf8, 0xd4,
646 0x8f, 0x2a, 0x57, 0x36, 0xcc, 0x06, 0x9c, 0x2c,
647 0xc5, 0x13, 0x16, 0xdf, 0xfc, 0xae, 0x22, 0x16,
648 0xa8, 0x2b, 0x71, 0x6f, 0x1d, 0xb3, 0x47, 0x54,
649 0x3f, 0x2d, 0x0a, 0x68, 0x9f, 0x2e, 0xf6, 0x90,
650 0xd8, 0xa1, 0x21, 0x09, 0xd4, 0x97, 0xb9, 0x7b,
651 0x7f, 0x9b, 0x6a, 0xed, 0xd1, 0xf0, 0xe3, 0xb6,
652 0x28, 0xc7, 0x62, 0x82, 0x00, 0xc9, 0x38, 0xa1,
653 0x82, 0x78, 0xce, 0x87, 0xc8, 0x53, 0xac, 0x4f,
654 0x2e, 0x31, 0xb9, 0x50, 0x7f, 0x36, 0x00, 0x4a,
655 0x32, 0xe6, 0xd8, 0xbb, 0x59, 0x45, 0x0e, 0x91,
656 0x1b, 0x38, 0xa9, 0xbc, 0xb9, 0x5e, 0x6c, 0x6a,
657 0x9c, 0x03, 0x01, 0x1c, 0xde, 0xe8, 0x1f, 0x1e,
658 0xe3, 0xde, 0x25, 0xa2, 0x56, 0x79, 0xe1, 0xbd,
659 0x58, 0xc4, 0x93, 0xe6, 0xd0, 0x8a, 0x4d, 0x08,
660 0xab, 0xf7, 0xaa, 0xc3, 0x7d, 0xc1, 0xee, 0x68,
661 0x37, 0xbc, 0x78, 0x0b, 0x19, 0x68, 0x2b, 0x2b,
662 0x2e, 0x6d, 0xc4, 0x6f, 0xaa, 0x3b, 0xc6, 0x19,
663 0xcb, 0xf1, 0x58, 0xb9, 0x60, 0x85, 0x45, 0xae,
664 0x52, 0x97, 0xba, 0x24, 0x32, 0x13, 0x72, 0x16,
665 0x6e, 0x7b, 0xc1, 0x98, 0xac, 0xb1, 0xed, 0xb4,
666 0xcc, 0x6c, 0xcf, 0x45, 0xfc, 0x50, 0x89, 0x80,
667 0x8e, 0x7a, 0xa4, 0xd3, 0x64, 0x50, 0x63, 0x37,
668 0xc9, 0x6c, 0xf1, 0xc4, 0x3d, 0xfb, 0xde, 0x5a,
669 0x5c, 0xa8, 0x21, 0x35, 0xe6, 0x2e, 0x8c, 0x2a,
670 0x3c, 0x12, 0x17, 0x79, 0x9a, 0x0d, 0x2e, 0x79,
671 0xeb, 0x67, 0x1f, 0x2b, 0xf8, 0x6e, 0xca, 0xc1,
672 0xfa, 0x45, 0x18, 0x9e, 0xdf, 0x6a, 0xe6, 0xcb,
673 0xe9, 0x5c, 0xc3, 0x09, 0xaf, 0x93, 0x58, 0x13,
674 0xbf, 0x90, 0x84, 0x87, 0x75, 0xd6, 0x82, 0x28,
675 0x8d, 0xe7, 0x2f, 0xa3, 0xfb, 0x97, 0x74, 0x2a,
676 0x73, 0x04, 0x82, 0x06, 0x76, 0x69, 0xb1, 0x0b,
677 0x19, 0xfc, 0xae, 0xb3, 0xdd, 0x2a, 0xe5, 0xc1,
678 0x05, 0xd8, 0x80, 0x95, 0x22, 0x90, 0x71, 0xfc,
679 0xc2, 0x92, 0x42, 0xfd, 0xf1, 0x70, 0xb4, 0x68,
680 0x88, 0xa4, 0x9e, 0x0a, 0x24, 0x40, 0x13, 0xc8,
681 0xa2, 0x56, 0x4f, 0x39, 0xe6, 0x06, 0xf1, 0xdc,
682 0xf5, 0x13, 0x0e, 0xad, 0x9c, 0x8b, 0xaf, 0xe9,
683 0xe3, 0x88, 0x72, 0xff, 0xa0, 0x6d, 0xda, 0x08,
684 0x70, 0xb9, 0x2e, 0x83, 0xc5, 0xbb, 0x32, 0xa5,
685 0x74, 0xc7, 0xfb, 0x7b, 0x76, 0xaf, 0x02, 0xbb,
686 0x2b, 0xb8, 0x5e, 0x65, 0x02, 0xfe, 0x0e, 0xa0,
687 0x99, 0xce, 0x01, 0x3b, 0x35, 0xe1, 0xb0, 0x22,
688 0xe5, 0x94, 0xbd, 0xdd, 0x8e, 0xbb, 0xf6, 0x75,
689 0xbf, 0xbf, 0xee, 0x7a, 0xb1, 0x58, 0xb4, 0x81,
690 0xb8, 0x39, 0x3e, 0xb6, 0x1e, 0xde, 0xda, 0x1b,
691 0xd5, 0xf7, 0xdd, 0x7d, 0x65, 0x9c, 0xaa, 0x56,
692 0x93, 0xb8, 0xaf, 0x48, 0x53, 0xc7, 0x22, 0xe4,
693 0x1c, 0xdf, 0xe9, 0x79, 0xb4, 0x20, 0x89, 0xcc,
694 0x2a, 0x79, 0x2c, 0x09, 0xbe, 0x78, 0xcf, 0xcc,
695 0xf2, 0x90, 0xd6, 0x65, 0xc5, 0x29, 0xfc, 0xda,
696 0x69, 0xfc, 0xc0, 0xd6, 0x70, 0x99, 0x61, 0x3f,
697 0x60, 0x02, 0xd8, 0x12, 0x22, 0xc8, 0x34, 0xc6,
698 0x3b, 0xb3, 0xc2, 0x33, 0xa1, 0x5c, 0x8f, 0x4c,
699 0xd1, 0x52, 0x72, 0xf2, 0x42, 0x05, 0x8e, 0x18,
700 0x1f, 0x16, 0xda, 0xb8, 0x53, 0xa1, 0x5f, 0x01,
701 0x32, 0x1b, 0x90, 0xb3, 0x53, 0x9b, 0xd0, 0x85,
702 0x61, 0x2d, 0x17, 0xed, 0x0a, 0xa4, 0xa5, 0x27,
703 0x09, 0x75, 0x7c, 0xbc, 0x30, 0xf7, 0x5e, 0x59,
704 0x9a, 0x07, 0x96, 0x84, 0x28, 0x86, 0x4b, 0xa7,
705 0x22, 0x35, 0x28, 0xc7, 0xed, 0x0d, 0xc3, 0xce,
706 0x98, 0xcc, 0x2d, 0xec, 0xd4, 0x98, 0x09, 0x8e,
707 0x52, 0x5f, 0x2b, 0x9a, 0x13, 0xbe, 0x99, 0x16,
708 0x73, 0xd1, 0x1f, 0x81, 0xe5, 0xa2, 0x08, 0x78,
709 0xcb, 0x0c, 0x20, 0xd4, 0xa5, 0xea, 0x4b, 0x5b,
710 0x95, 0x5a, 0x92, 0x9a, 0x52},
711 "id-Gost28147-89-CryptoPro-A-ParamSet",
714 0x1b, 0x5d, 0xdb, 0x77, 0xcf, 0xf9, 0xec, 0x95,
715 0x5e, 0xcc, 0x67, 0x9f, 0x5d, 0x28, 0xad, 0x4a,
716 0x27, 0xf4, 0x32, 0xc6, 0xb2, 0xcb, 0xb1, 0x45,
717 0x6a, 0x88, 0x14, 0x0c, 0x9b, 0x9b, 0x5f, 0x48},
720 0x71, 0x58, 0x8c, 0xe1, 0x55, 0xf4, 0xf6, 0xb3},
722 0x8e, 0xcd, 0x8f, 0xc8, 0xac, 0xe1, 0x15, 0x48,
723 0x2d, 0xae, 0x24, 0x8a, 0xc7, 0xfb, 0xba, 0x0f,
724 0x1d, 0x8a, 0x95, 0xa2, 0x43, 0xef, 0xcb, 0xdc,
725 0x59, 0x57, 0xa7, 0xc7, 0x0e, 0xe3, 0xe2, 0xb9,
726 0x0d, 0x86, 0x29, 0x62, 0xcb, 0x83, 0x4d, 0x07,
727 0x0c, 0x40, 0xd4, 0x7b, 0x2e, 0xca, 0xba, 0xbf,
728 0x4a, 0x60, 0x3b, 0x31, 0x98, 0xc8, 0x88, 0x47,
729 0xd9, 0x82, 0xab, 0xfc, 0x8f, 0x48, 0xe2, 0x46,
730 0xab, 0xd3, 0xa1, 0xab, 0x8a, 0x05, 0x22, 0x8c,
731 0xf4, 0xec, 0x9a, 0x1e, 0x76, 0xab, 0x1a, 0x60,
732 0xd9, 0x25, 0x6b, 0xb8, 0x56, 0xe5, 0xb2, 0xea,
733 0x10, 0xf3, 0x62, 0x04, 0x32, 0x5e, 0xaa, 0x3b,
734 0x7b, 0x57, 0xbc, 0x3b, 0x8b, 0x43, 0x47, 0xf2,
735 0xd5, 0x03, 0x7e, 0x51, 0x01, 0xff, 0x77, 0x28,
736 0xca, 0x90, 0xa3, 0xfe, 0x7e, 0x2e, 0x70, 0x16,
737 0x75, 0x18, 0x44, 0xf0, 0x1b, 0x85, 0x05, 0xea,
738 0xe3, 0x21, 0xf7, 0x26, 0x86, 0x76, 0x3c, 0x67,
739 0x9d, 0xfc, 0xbc, 0x10, 0x7f, 0x77, 0xe4, 0xed,
740 0xd3, 0x12, 0xf8, 0x83, 0x00, 0x1f, 0x4b, 0x92,
741 0x95, 0x92, 0x5c, 0xf3, 0x5a, 0xf3, 0xb7, 0xd0,
742 0xa9, 0x5f, 0xf2, 0x18, 0xc4, 0x66, 0x62, 0xc1,
743 0x84, 0x0e, 0x66, 0xe8, 0x80, 0x7d, 0x1f, 0xf0,
744 0xba, 0x01, 0x9b, 0x71, 0xae, 0x93, 0xcc, 0x27,
745 0x54, 0x34, 0x9a, 0xbd, 0xca, 0xee, 0x52, 0x09,
746 0x92, 0x9d, 0xb0, 0xd5, 0xd9, 0xba, 0x2f, 0xb9,
747 0x96, 0xdc, 0xfa, 0xbd, 0xce, 0xea, 0x1a, 0x7b,
748 0x9a, 0x1d, 0x13, 0xa7, 0x11, 0xe2, 0x9a, 0x64,
749 0xf6, 0xd3, 0xee, 0xc6, 0x33, 0xb7, 0x6e, 0xef,
750 0x25, 0x9e, 0x1e, 0x7c, 0xe3, 0x1f, 0x2c, 0x6e,
751 0xa9, 0xc0, 0xf8, 0xc1, 0xbf, 0x3b, 0xf8, 0x34,
752 0x03, 0x9b, 0xa1, 0x40, 0x5b, 0x0c, 0x3c, 0x09,
753 0x66, 0x9d, 0x63, 0xe2, 0xe2, 0x04, 0x8f, 0x06,
754 0x84, 0x74, 0x68, 0xb2, 0x5c, 0x3b, 0x4c, 0xad,
755 0x0b, 0x3f, 0x03, 0xb3, 0x07, 0x8a, 0x64, 0xa7,
756 0x36, 0x56, 0x26, 0x39, 0x66, 0xda, 0xe9, 0x6d,
757 0x1b, 0xd5, 0x88, 0xe8, 0x5c, 0xaf, 0x5a, 0x4c,
758 0x49, 0xf7, 0xf5, 0xb7, 0x78, 0xf0, 0xde, 0xec,
759 0xcd, 0x16, 0x23, 0x9e, 0x8c, 0x13, 0xbe, 0x6b,
760 0x6f, 0x9b, 0x07, 0xe5, 0xbb, 0xcc, 0x3a, 0x1b,
761 0x6f, 0x43, 0xdf, 0xff, 0x46, 0x2a, 0xae, 0x47,
762 0x19, 0x18, 0x9a, 0x25, 0x09, 0xc9, 0x24, 0x40,
763 0x0c, 0x4b, 0xa7, 0xda, 0x5e, 0x0d, 0xee, 0xfa,
764 0x62, 0x45, 0x8e, 0xcc, 0x2f, 0x23, 0x08, 0x1d,
765 0x92, 0xf0, 0xfe, 0x82, 0x0f, 0xd7, 0x11, 0x60,
766 0x7e, 0x0b, 0x0b, 0x75, 0xf4, 0xf5, 0x3b, 0xc0,
767 0xa4, 0xe8, 0x72, 0xa5, 0xb6, 0xfa, 0x5a, 0xad,
768 0x5a, 0x4f, 0x39, 0xb5, 0xa2, 0x12, 0x96, 0x0a,
769 0x32, 0x84, 0xb2, 0xa1, 0x06, 0x68, 0x56, 0x57,
770 0x97, 0xa3, 0x7b, 0x22, 0x61, 0x76, 0x5d, 0x30,
771 0x1a, 0x31, 0xab, 0x99, 0x06, 0xc5, 0x1a, 0x96,
772 0xcf, 0xcf, 0x14, 0xff, 0xb2, 0xc4, 0xcc, 0x2b,
773 0xbf, 0x0c, 0x9d, 0x91, 0x8f, 0x79, 0x5b, 0xbc,
774 0xa9, 0x6b, 0x91, 0x6a, 0xb4, 0x93, 0x5c, 0x7b,
775 0x5d, 0xc2, 0x8a, 0x75, 0xc0, 0xc1, 0x08, 0xfa,
776 0x99, 0xf9, 0x4d, 0x5e, 0x0c, 0x06, 0x64, 0x60,
777 0xa9, 0x01, 0x4a, 0x34, 0x0f, 0x33, 0x84, 0x95,
778 0x69, 0x30, 0xc1, 0x1c, 0x36, 0xf8, 0xfc, 0x30,
779 0x23, 0xb2, 0x71, 0xe5, 0x52, 0x4d, 0x12, 0x1a,
780 0xc9, 0xbe, 0xee, 0xc9, 0xcb, 0x01, 0x85, 0xf3,
781 0xdb, 0x30, 0xf9, 0x41, 0xa9, 0x40, 0xb0, 0x06,
782 0x29, 0x77, 0xcd, 0xc5, 0xec, 0x58, 0x02, 0x48,
783 0x83, 0x53, 0x44, 0x6a, 0xd2, 0xca, 0x05, 0xd8,
784 0x5a, 0x08, 0xeb, 0xa9, 0xf4, 0xe6, 0xc7, 0x9d,
785 0xd5, 0x7b, 0x74, 0x0b, 0x31, 0xb7, 0xa5, 0x57,
786 0x7c, 0x7a, 0xfd, 0x1a, 0x0e, 0xd7, 0x97, 0x41,
787 0xbf, 0xdd, 0xc6, 0x19, 0x6c, 0x77, 0x8c, 0x18,
788 0x52, 0x57, 0x83, 0xba, 0x71, 0x25, 0xee, 0x39,
789 0xbb, 0xe2, 0x43, 0xa0, 0x14, 0xdc, 0x0e, 0x84,
790 0xb4, 0x2b, 0xde, 0x3e, 0xe5, 0x36, 0xb7, 0xa2,
791 0x92, 0x98, 0x05, 0xb8, 0x96, 0xe5, 0xd0, 0x8c,
792 0x08, 0x93, 0x35, 0xc2, 0x81, 0xe0, 0xfc, 0x59,
793 0x71, 0xe2, 0x44, 0x49, 0x5d, 0xda, 0xfb, 0x9c,
794 0xaa, 0x70, 0x9f, 0x43, 0xa8, 0xa5, 0xd9, 0x67,
795 0xd9, 0x8f, 0xa3, 0x1e, 0xbe, 0x0e, 0xec, 0xdf,
796 0x12, 0x2b, 0x6a, 0xe7, 0x1c, 0x12, 0x17, 0xe7,
797 0xc4, 0x6d, 0x50, 0xc9, 0x52, 0x7a, 0xd5, 0xe8,
798 0x7f, 0xbc, 0x07, 0x15, 0xac, 0xdb, 0x93, 0x66,
799 0xb1, 0xf0, 0xa7, 0x7b, 0x2f, 0xe9, 0xec, 0xd0,
800 0x47, 0x69, 0x59, 0x87, 0xf1, 0x4c, 0x3e, 0x4b,
801 0x9b, 0x11, 0x79, 0x13, 0xe4, 0x96, 0xf6, 0x56,
802 0x04, 0x6e, 0x0b, 0x33, 0xfc, 0x40, 0xf6, 0xc7,
803 0xc1, 0x43, 0xb1, 0xbf, 0x0e, 0xb3, 0x87, 0xfd,
804 0x0b, 0x1c, 0x63, 0x46, 0x3a, 0xd3, 0xa0, 0x17,
805 0x59, 0x25, 0x94, 0x6c, 0x9c, 0x3d, 0x0c, 0x81,
806 0xce, 0x82, 0x72, 0x42, 0x28, 0xf9, 0x37, 0x6a,
807 0x6d, 0xe4, 0x12, 0xf4, 0x21, 0xaa, 0xf7, 0xfe,
808 0x27, 0x55, 0x40, 0x1a, 0x14, 0xc3, 0x39, 0x5b,
809 0xbf, 0x63, 0xc2, 0x5f, 0x10, 0x1f, 0x14, 0x25,
810 0xd0, 0xce, 0xf3, 0x14, 0x48, 0x13, 0xa5, 0x0b,
811 0x4d, 0x38, 0xcf, 0x0d, 0x34, 0xc0, 0x0a, 0x11,
812 0xb4, 0xb5, 0x72, 0xc8, 0x4b, 0xc2, 0x6f, 0xe7,
813 0x9d, 0x93, 0xf7, 0xdf, 0xb8, 0x43, 0x72, 0x7e,
814 0xda, 0x3e, 0x20, 0x1f, 0xbc, 0x21, 0x2a, 0xce,
815 0x00, 0xfa, 0x96, 0x9f, 0x3d, 0xe5, 0x88, 0x96,
816 0xef, 0x29, 0x84, 0xdf, 0x6c, 0x1c, 0x96, 0xd8,
817 0x58, 0x47, 0xaa, 0x92, 0xf3, 0x07, 0xe5, 0xfb,
818 0xaf, 0xea, 0x95, 0x7e, 0x0b, 0x71, 0xcd, 0x81,
819 0x0f, 0xb7, 0x0a, 0x59, 0x8f, 0x31, 0x4d, 0xd1,
820 0xc3, 0xf3, 0x2f, 0x70, 0x5c, 0x59, 0x18, 0x97,
821 0xaf, 0x77, 0x95, 0x5e, 0xaf, 0x40, 0x06, 0x12,
822 0x81, 0x61, 0x86, 0x08, 0x4e, 0xbc, 0x89, 0x46,
823 0x07, 0x2e, 0x5b, 0x10, 0xaa, 0x12, 0xf0, 0xa7,
824 0x84, 0xe2, 0x9a, 0x08, 0xf1, 0xde, 0x59, 0xe3,
825 0x0e, 0x47, 0x4b, 0xff, 0xc3, 0xc9, 0x18, 0xaf,
826 0x95, 0x9c, 0x67, 0x2a, 0xde, 0x8a, 0x7a, 0x99,
827 0x04, 0xc4, 0xb8, 0x97, 0x4c, 0x04, 0x29, 0x71,
828 0x05, 0xda, 0xb3, 0xd6, 0xdb, 0x6c, 0x71, 0xe6,
829 0xe8, 0x03, 0xbf, 0x94, 0x7d, 0xde, 0x3d, 0xc8,
830 0x44, 0xfa, 0x7d, 0x62, 0xb4, 0x36, 0x03, 0xee,
831 0x36, 0x52, 0x64, 0xb4, 0x85, 0x6d, 0xd5, 0x78,
832 0xf0, 0x6f, 0x67, 0x2d, 0x0e, 0xe0, 0x2c, 0x88,
833 0x9b, 0x55, 0x19, 0x29, 0x40, 0xf6, 0x8c, 0x12,
834 0xbb, 0x2c, 0x83, 0x96, 0x40, 0xc0, 0x36, 0xf5,
835 0x77, 0xff, 0x70, 0x8c, 0x75, 0x92, 0x0b, 0xad,
836 0x05, 0x9b, 0x7e, 0xa2, 0xfc, 0xa9, 0xd1, 0x64,
837 0x76, 0x82, 0x13, 0xba, 0x22, 0x5e, 0x33, 0x0e,
838 0x26, 0x70, 0xa9, 0xbe, 0x74, 0x28, 0xf5, 0xe2,
839 0xc4, 0x96, 0xee, 0x3a, 0xbc, 0x97, 0xa6, 0x2c,
840 0x2a, 0xe0, 0x64, 0x8d, 0x35, 0xc6, 0x1a, 0xca,
841 0xf4, 0x92, 0xfa, 0xc3, 0xf1, 0x1f, 0x98, 0xe4,
842 0x43, 0x88, 0x69, 0x3a, 0x09, 0xbf, 0x63, 0xe5,
843 0x96, 0x29, 0x0b, 0x9b, 0x62, 0x23, 0x14, 0x8a,
844 0x95, 0xe4, 0x1c, 0x5c, 0x0a, 0xa9, 0xc5, 0xb9,
845 0x6f, 0x4f, 0x2b, 0x25, 0x6f, 0x74, 0x1e, 0x18,
846 0xd5, 0xfe, 0x27, 0x7d, 0x3f, 0x6e, 0x55, 0x2c,
847 0x67, 0xe6, 0xde, 0xb5, 0xcc, 0xc0, 0x2d, 0xff,
848 0xc4, 0xe4, 0x06, 0x21, 0xa5, 0xc8, 0xd3, 0xd6,
849 0x6c, 0xa1, 0xc3, 0xfb, 0x88, 0x92, 0xb1, 0x1d,
850 0x90, 0xe1, 0x35, 0x05, 0x9b, 0x29, 0x6d, 0xba,
851 0xf1, 0xf4, 0x1e, 0x23, 0x2e}
853 { /* Calculated by libcapi10, CryptoPro CSP
857 "id-Gost28147-89-CryptoPro-A-ParamSet",
860 0x07, 0x52, 0x65, 0xe7, 0xca, 0xa3, 0xca, 0x45,
861 0xcf, 0x3a, 0x05, 0x1d, 0x38, 0x03, 0x53, 0x0c,
862 0x22, 0x31, 0xba, 0x99, 0x4f, 0x9b, 0x6a, 0x1b,
863 0x7e, 0x09, 0x9d, 0x4e, 0xb5, 0xc9, 0x84, 0x2e},
866 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
868 0x3d, 0x05, 0x07, 0x57, 0xc0, 0x75, 0x89, 0x97,
869 0xd6, 0x94, 0x49, 0x11, 0x1d, 0xd0, 0x91, 0xee}
871 { /* Calculated by libcapi10, CryptoPro CSP
873 U64(4294967296) + 16,
875 "id-Gost28147-89-CryptoPro-A-ParamSet",
878 0x75, 0xa3, 0x3c, 0xae, 0x03, 0x6b, 0x10, 0xdb,
879 0xc1, 0x56, 0x50, 0x89, 0x03, 0xd2, 0x9f, 0x91,
880 0xee, 0xe8, 0x64, 0x1d, 0x43, 0xf2, 0x4e, 0xf8,
881 0xf2, 0x6c, 0xed, 0xda, 0x8f, 0xe4, 0x88, 0xe9},
884 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
886 0xfa, 0x6c, 0x96, 0x78, 0xe2, 0xf8, 0xdd, 0xaa,
887 0x67, 0x5a, 0xc9, 0x5d, 0x57, 0xf1, 0xbd, 0x99}
889 { /* Calculated by libcapi10, CryptoPro CSP
893 0xd6, 0xcf, 0x31, 0x96, 0x9c, 0xa1, 0xfb, 0xd6,
894 0x8d, 0xa3, 0xdd, 0x01, 0xd9, 0x88, 0xc0, 0x2f,
895 0xbc, 0x46, 0xc7, 0x3a, 0xe4, 0x21, 0x86, 0x96,
896 0x8d, 0xe2, 0xca, 0xb6, 0x37, 0xa2, 0xe1, 0xa8,
897 0x7e, 0xa7, 0x79, 0x2e, 0xa4, 0x56, 0x75, 0x7f,
898 0x3e, 0x55, 0x8b, 0x43, 0xae, 0x65, 0xdf, 0xaa,
899 0x42, 0xb6, 0x00, 0xa6, 0x61, 0x03, 0x0d, 0xd3,
900 0x41, 0x02, 0x27, 0x23, 0x95, 0x79, 0x9b, 0x34,
901 0x81, 0xa9, 0x86, 0xb5, 0xa7, 0x90, 0xe2, 0xae,
902 0xc4, 0x2f, 0xc3, 0x8e, 0x32, 0x56, 0x13, 0xfa,
903 0x4d, 0x4e, 0x9f, 0x15, 0x75, 0x7e, 0x74, 0xdc,
904 0x32, 0x2d, 0xee, 0x4d, 0x67, 0x70, 0x9f, 0x62,
905 0xb9, 0xc4, 0xdb, 0x24, 0x84, 0xcc, 0x16, 0x7b,
906 0xda, 0x22, 0xf7, 0xc5, 0xf3, 0x93, 0x35, 0x73,
907 0xc6, 0x03, 0x1c, 0x77, 0xa5, 0xf2, 0x76, 0x56,
908 0xb4, 0x95, 0xd4, 0x7e, 0x0d, 0x20, 0xc6, 0x6e,
909 0xee, 0x8f, 0x25, 0x48, 0xff, 0x7e, 0x01, 0x3a,
910 0xb4, 0x1f, 0xaa, 0x35, 0xc0, 0x33, 0x58, 0x9c,
911 0xb5, 0xba, 0x65, 0x4b, 0xd3, 0x51, 0x14, 0xec,
912 0x61, 0xce, 0xe4, 0xba, 0x49, 0xba, 0x39, 0x32,
913 0xab, 0xce, 0x81, 0x72, 0xce, 0xab, 0xed, 0xd4,
914 0xd2, 0x19, 0x87, 0x85, 0x92, 0xfa, 0x64, 0x34,
915 0xd8, 0x86, 0xf4, 0x8a, 0x08, 0x3c, 0xde, 0xee,
916 0x97, 0x92, 0x92, 0x69, 0xba, 0x9b, 0x5f, 0x7a,
917 0x03, 0xc1, 0x5d, 0x43, 0x02, 0x8c, 0xbe, 0xd2,
918 0x46, 0x72, 0x81, 0x40, 0x7d, 0x68, 0x98, 0x45,
919 0x0b, 0x54, 0x27, 0x1c, 0xaf, 0x80, 0x42, 0xe4,
920 0xd5, 0xd4, 0xe4, 0xa2, 0x98, 0x07, 0x8f, 0x03,
921 0xf5, 0x2c, 0x8c, 0x88, 0xca, 0x5a, 0xde, 0xe4,
922 0x9f, 0xb1, 0x5f, 0x82, 0xff, 0x20, 0x67, 0x52,
923 0x85, 0x84, 0x4f, 0xc8, 0xfe, 0xa7, 0x9e, 0xae,
924 0x1c, 0xfa, 0xb8, 0x75, 0xd3, 0xf7, 0x9f, 0x0d,
925 0xda, 0x2d, 0xe6, 0xcc, 0x86, 0x6b, 0xa4, 0x14,
926 0x65, 0xc3, 0xf9, 0x15, 0xbc, 0x87, 0xf5, 0xae,
927 0x8c, 0x10, 0xd4, 0xce, 0x5b, 0x9c, 0xe2, 0xdd,
928 0x42, 0x03, 0x09, 0x87, 0x47, 0xed, 0x5d, 0xd0,
929 0x7a, 0x69, 0x4c, 0xfa, 0x43, 0x7d, 0xbf, 0x07,
930 0x85, 0x6a, 0xee, 0x68, 0xe6, 0x7a, 0x57, 0xb2,
931 0x20, 0x8d, 0x80, 0xf2, 0x91, 0x6f, 0x5c, 0x07,
932 0x8c, 0xe4, 0x6a, 0x49, 0x90, 0x85, 0x8b, 0x77,
933 0x29, 0x56, 0x1c, 0x5e, 0xa9, 0x3f, 0xab, 0x8b,
934 0x79, 0xa3, 0x6f, 0x6b, 0x34, 0xcb, 0x61, 0xf6,
935 0xe6, 0x92, 0xd1, 0x48, 0x9e, 0x11, 0xa2, 0x82,
936 0xc0, 0x4e, 0x23, 0xd2, 0x15, 0x0d, 0x8d, 0xff,
937 0xfa, 0x17, 0x9d, 0x81, 0xb8, 0xbc, 0xd7, 0x5b,
938 0x08, 0x81, 0x20, 0x40, 0xc0, 0x3c, 0x06, 0x8b,
939 0x1a, 0x88, 0x0b, 0x4b, 0x7b, 0x31, 0xf5, 0xd4,
940 0x4e, 0x09, 0xd1, 0x4d, 0x0d, 0x7f, 0x45, 0xd1,
941 0x09, 0x35, 0xba, 0xce, 0x65, 0xdd, 0xf2, 0xb8,
942 0xfb, 0x7a, 0xbc, 0xc4, 0x4b, 0xc8, 0x75, 0xda,
943 0x6b, 0xce, 0x3d, 0xe8, 0x94, 0xcc, 0x23, 0x6f,
944 0xb0, 0x3b, 0x4f, 0x7d, 0x07, 0xb9, 0x0f, 0x62,
945 0x92, 0x7e, 0xda, 0x70, 0x50, 0xce, 0xd3, 0x28,
946 0x12, 0x11, 0x00, 0xeb, 0x8d, 0x63, 0x70, 0x78,
947 0xa8, 0x7b, 0x76, 0xab, 0xc6, 0x40, 0xc0, 0x4e,
948 0x80, 0xdd, 0xf0, 0xfe, 0x83, 0x72, 0x56, 0x4c,
949 0x09, 0x4c, 0xf1, 0x72, 0x72, 0x86, 0x26, 0x31,
950 0xc3, 0xc2, 0xdc, 0x8e, 0xc7, 0xf4, 0x35, 0xec,
951 0x17, 0x06, 0x63, 0x47, 0x49, 0x88, 0x47, 0xaf,
952 0xb3, 0x38, 0x4f, 0x7e, 0x44, 0x95, 0xb5, 0xbb,
953 0x1d, 0xbd, 0x5a, 0x91, 0x5b, 0xd0, 0x1a, 0xdf,
954 0x0d, 0x0b, 0x50, 0xd8, 0xe2, 0x0e, 0xc5, 0x00,
955 0x2d, 0x5b, 0x29, 0x19, 0xaa, 0x2b, 0x64, 0xc5,
956 0x40, 0x31, 0x48, 0x11, 0xbc, 0x04, 0xd1, 0xcf,
957 0x6d, 0xf9, 0xa5, 0x2f, 0x4a, 0xc9, 0x82, 0xfa,
958 0x59, 0xe1, 0xfc, 0xab, 0x1c, 0x33, 0x26, 0x0a,
959 0x5f, 0xef, 0xf2, 0x06, 0xd8, 0xd3, 0x7e, 0x16,
960 0x58, 0x16, 0x78, 0x73, 0xae, 0xba, 0xeb, 0xe5,
961 0x3d, 0xb2, 0x0a, 0xb3, 0x32, 0x2d, 0x14, 0xa4,
962 0xfa, 0x3f, 0x1f, 0x43, 0xf9, 0x7b, 0xa9, 0x43,
963 0x98, 0x18, 0x94, 0x07, 0x07, 0xe5, 0x19, 0x34,
964 0xa8, 0x16, 0x5f, 0x71, 0x67, 0xaa, 0x29, 0xe5,
965 0xfa, 0xf0, 0x83, 0x06, 0x1d, 0x9d, 0xfc, 0xfe,
966 0xfe, 0x8c, 0xb5, 0xb2, 0xa9, 0xe7, 0xa0, 0x40,
967 0x60, 0xb6, 0x71, 0x9e, 0xab, 0x5b, 0x83, 0xb9,
968 0x0c, 0x2b, 0x58, 0x23, 0x80, 0x09, 0x9e, 0x5d,
969 0x94, 0x7d, 0x40, 0x76, 0xa9, 0x16, 0x96, 0x9e,
970 0x83, 0xe0, 0x0d, 0xec, 0xa0, 0xec, 0x76, 0x2a,
971 0xb7, 0xa0, 0xff, 0xb8, 0x50, 0x4c, 0x5b, 0xc6,
972 0x8b, 0x0a, 0x65, 0x2e, 0xfe, 0xb4, 0x40, 0x9a,
973 0x01, 0xd8, 0xc6, 0xa3, 0xab, 0x99, 0xa2, 0xc5,
974 0x0c, 0x08, 0xc4, 0xb7, 0xee, 0x4d, 0x1d, 0xc4,
975 0x08, 0x15, 0xd0, 0xdb, 0xaa, 0x63, 0x4f, 0x31,
976 0xeb, 0x14, 0x97, 0x43, 0xbd, 0xc1, 0x94, 0x08,
977 0xe6, 0xde, 0x43, 0x9f, 0x95, 0x0b, 0x96, 0x7e,
978 0x7f, 0x3c, 0x68, 0xba, 0x6f, 0xc4, 0xc9, 0x35,
979 0x2b, 0xc4, 0x0e, 0xda, 0x1f, 0x91, 0x68, 0x64,
980 0x63, 0x34, 0x73, 0xbe, 0x57, 0x75, 0xb9, 0xed,
981 0xf7, 0x2d, 0x3b, 0x05, 0x21, 0x93, 0x28, 0x48,
982 0x96, 0x95, 0x97, 0xa0, 0xd2, 0x7d, 0x78, 0xbb,
983 0x6a, 0x49, 0x8f, 0x76, 0x55, 0x74, 0x63, 0xb9,
984 0xc5, 0x36, 0x12, 0x25, 0xbf, 0x03, 0x82, 0x8f,
985 0xf0, 0xf6, 0x80, 0xbb, 0x33, 0xb4, 0xf4, 0x17,
986 0x27, 0x1c, 0xf3, 0x4c, 0x10, 0xa3, 0xe4, 0xd1,
987 0x55, 0xd9, 0x68, 0x21, 0x4e, 0x5a, 0x83, 0x67,
988 0xbf, 0xf8, 0x3c, 0x7d, 0x4e, 0x62, 0xd3, 0x28,
989 0xa7, 0x26, 0x6f, 0xe9, 0xee, 0xc2, 0x0b, 0x2d,
990 0x03, 0x84, 0xb1, 0xff, 0xd6, 0x68, 0x1f, 0xb6,
991 0xf2, 0xe4, 0x0f, 0xda, 0x2d, 0xee, 0x5f, 0x6e,
992 0x21, 0xc8, 0xe1, 0xfc, 0xad, 0x6b, 0x0e, 0x04,
993 0x7d, 0xaf, 0xc2, 0x3b, 0xa5, 0x68, 0x9b, 0x0c,
994 0xf3, 0x56, 0xf3, 0xda, 0x8d, 0xc8, 0x7d, 0x39,
995 0xdc, 0xd5, 0x99, 0xc6, 0x01, 0x10, 0xce, 0x42,
996 0x1b, 0xac, 0x48, 0xdc, 0x97, 0x78, 0x0a, 0xec,
997 0xb3, 0x8f, 0x47, 0x35, 0xa3, 0x6a, 0x64, 0xb2,
998 0x8e, 0x63, 0x69, 0x22, 0x66, 0xae, 0x2e, 0xe0,
999 0x88, 0xf9, 0x40, 0x3c, 0xc9, 0xa2, 0x57, 0x61,
1000 0xf6, 0xad, 0xf0, 0xdc, 0x90, 0x56, 0x3f, 0x06,
1001 0x9b, 0x7d, 0xbd, 0xc2, 0x81, 0x02, 0xab, 0xb8,
1002 0x15, 0x09, 0x88, 0x4a, 0xff, 0x2f, 0x31, 0xbf,
1003 0x5e, 0xfa, 0x6a, 0x7e, 0xf6, 0xc5, 0xa7, 0xf7,
1004 0xd5, 0xab, 0x55, 0xac, 0xae, 0x0d, 0x8c, 0x8d,
1005 0x7f, 0x4b, 0x25, 0xbb, 0x32, 0xff, 0x11, 0x33,
1006 0x2e, 0x37, 0x37, 0x69, 0x96, 0x15, 0x17, 0xb1,
1007 0x17, 0x49, 0xe0, 0x9a, 0x9c, 0xd9, 0x5b, 0x8d,
1008 0x58, 0xa3, 0x1d, 0x92, 0x87, 0xf8, 0x80, 0xb9,
1009 0xbd, 0x5a, 0xec, 0x40, 0xe1, 0x00, 0x33, 0x60,
1010 0xe4, 0x86, 0x16, 0x6d, 0x61, 0x81, 0xf2, 0x28,
1011 0x6a, 0xa7, 0xce, 0x3f, 0x95, 0xae, 0x43, 0xca,
1012 0xe1, 0x3f, 0x81, 0x74, 0x7e, 0x1c, 0x47, 0x17,
1013 0x95, 0xc6, 0x60, 0xda, 0x74, 0x77, 0xd9, 0x9f,
1014 0xfa, 0x92, 0xb4, 0xbe, 0xe1, 0x23, 0x98, 0x18,
1015 0x95, 0x63, 0x03, 0x13, 0x4c, 0x1a, 0x2d, 0x41,
1016 0xcd, 0xe4, 0x84, 0xf7, 0xe6, 0x38, 0xef, 0xff,
1017 0x95, 0xb2, 0xe8, 0x7c, 0x8f, 0x58, 0xb5, 0xb5,
1018 0xed, 0x27, 0x7f, 0x3c, 0x18, 0xab, 0xbe, 0x7f,
1019 0x4f, 0xe2, 0x35, 0x15, 0x71, 0xb7, 0x6f, 0x85,
1020 0x38, 0x9b, 0x88, 0xf6, 0x9c, 0x8d, 0x43, 0xb5,
1021 0x58, 0x9e, 0xf2, 0xd1, 0x96, 0xbe, 0xb7, 0xad,
1023 "id-Gost28147-89-CryptoPro-A-ParamSet",
1026 0x80, 0xd9, 0xa0, 0xdc, 0x21, 0xf9, 0x30, 0x40,
1027 0x75, 0xfe, 0x49, 0x1b, 0x9e, 0x71, 0x90, 0x91,
1028 0x78, 0x88, 0x21, 0x60, 0x39, 0xe7, 0xc9, 0x2b,
1029 0xfb, 0x55, 0x1d, 0xf4, 0xdd, 0x2b, 0x0a, 0x01},
1033 0x90, 0xf2, 0x11, 0x9a}
1035 { /* Calculated by libcapi10, CryptoPro CSP
1039 0x1d, 0xeb, 0xe6, 0x79, 0x0a, 0x59, 0x00, 0xe6,
1041 "id-Gost28147-89-CryptoPro-A-ParamSet",
1044 0xa9, 0xb6, 0x37, 0xcc, 0x6d, 0x9b, 0x2f, 0x25,
1045 0xb0, 0xdf, 0x47, 0x04, 0x50, 0x68, 0xb0, 0x27,
1046 0x41, 0x27, 0x58, 0x6a, 0xbd, 0x0a, 0x6e, 0x50,
1047 0x2f, 0xc6, 0xfc, 0xc0, 0x3e, 0x29, 0x42, 0xa5},
1051 0x31, 0x7c, 0x16, 0xe4}
1053 { /* Calculated by libcapi10, CryptoPro CSP
1057 0xef, 0x06, 0x8f, 0x14, 0xc9, 0x04},
1058 "id-Gost28147-89-CryptoPro-A-ParamSet",
1061 0xb0, 0x6c, 0x48, 0x23, 0x0a, 0x6e, 0xf4, 0xec,
1062 0x27, 0x98, 0x01, 0x23, 0xa7, 0xd8, 0xbf, 0x60,
1063 0x89, 0xef, 0xad, 0xe8, 0x8f, 0x79, 0x14, 0x8c,
1064 0x18, 0x5c, 0x9a, 0xda, 0xef, 0x0b, 0xdd, 0xa0},
1068 0xe9, 0x72, 0xae, 0xbf}
1070 { /* Calculated by libcapi10, CryptoPro CSP
1074 0x02, 0xf8, 0xec, 0x2b, 0x4d, 0x1f, 0xbc, 0x7c,
1075 0x6e, 0x47, 0xe3, 0x87, 0x22, 0x75, 0x41, 0xa7},
1076 "id-Gost28147-89-CryptoPro-B-ParamSet",
1079 0x33, 0xd3, 0xef, 0x01, 0x19, 0x95, 0x0e, 0x15,
1080 0xa1, 0x69, 0x75, 0xae, 0x56, 0x27, 0x17, 0x79,
1081 0x63, 0x47, 0xab, 0x62, 0x9d, 0x4a, 0xf0, 0x34,
1082 0xd3, 0x1e, 0x69, 0x74, 0xec, 0x31, 0x48, 0xfc},
1086 0xf5, 0x55, 0x1f, 0x28}
1088 { /* Calculated by libcapi10, CryptoPro CSP
1092 0xf3, 0xb2, 0x29, 0xd2, 0x7a, 0x37, 0x03, 0x12},
1093 "id-Gost28147-89-CryptoPro-A-ParamSet",
1096 0x42, 0x35, 0x81, 0x91, 0x0b, 0xa9, 0x99, 0xff,
1097 0xd9, 0x43, 0xf8, 0xc6, 0x19, 0x55, 0x1f, 0x2f,
1098 0x2d, 0x45, 0x40, 0x20, 0x1e, 0x1d, 0x32, 0x7a,
1099 0xb1, 0x07, 0x6b, 0x4f, 0x45, 0x90, 0xd9, 0x80},
1103 0x6e, 0x15, 0xfa, 0xe8}
1105 { /* Calculated by libcapi10, CryptoPro CSP
1110 "id-Gost28147-89-CryptoPro-A-ParamSet",
1113 0x26, 0xcb, 0xb9, 0xf0, 0x0c, 0x62, 0x9f, 0xaa,
1114 0x4a, 0x1d, 0xb6, 0x30, 0x09, 0x01, 0x56, 0x89,
1115 0x66, 0xd4, 0xe4, 0x0e, 0xfe, 0xf6, 0x10, 0x6b,
1116 0x6c, 0xe8, 0x04, 0x3a, 0xe3, 0x61, 0x4b, 0x19},
1120 0x00, 0x00, 0x00, 0x00}
1122 { /* Calculated by libcapi10, CryptoPro CSP
1126 "id-Gost28147-89-CryptoPro-A-ParamSet",
1129 0xaa, 0x85, 0x84, 0xcd, 0x65, 0x28, 0xe1, 0xdb,
1130 0xb8, 0x20, 0x19, 0x43, 0xe0, 0x36, 0x35, 0x10,
1131 0x19, 0xc3, 0x70, 0x5b, 0x27, 0xc1, 0x9d, 0x84,
1132 0x75, 0xa3, 0xc6, 0x49, 0x46, 0x8f, 0x7c, 0x4e},
1136 0x2a, 0xe6, 0x23, 0xc6}
1138 { /* Calculated by libcapi10, CryptoPro CSP
1142 "id-Gost28147-89-CryptoPro-A-ParamSet",
1145 0xd5, 0xda, 0xfe, 0x06, 0x60, 0xdc, 0xf0, 0xb3,
1146 0x49, 0x5a, 0x02, 0x59, 0xc8, 0x2e, 0x4a, 0x2b,
1147 0xcc, 0x9b, 0x98, 0x04, 0xb7, 0xf2, 0x78, 0xb7,
1148 0xce, 0xa3, 0xf2, 0xdb, 0x9e, 0xa8, 0x49, 0x1d},
1152 0xcc, 0x46, 0x67, 0xe4}
1154 { /* Calculated by libcapi10, CryptoPro CSP
1156 U64(4) * 1024 * 1024 * 1024,
1158 "id-Gost28147-89-CryptoPro-A-ParamSet",
1161 0x0d, 0xf1, 0xa8, 0x7f, 0x57, 0x03, 0x44, 0xcc,
1162 0xdb, 0x20, 0xde, 0xed, 0x85, 0x50, 0x38, 0xda,
1163 0xc9, 0x44, 0xec, 0x2c, 0x0d, 0x66, 0xb7, 0xdc,
1164 0x17, 0x14, 0x55, 0x95, 0x33, 0x6e, 0x43, 0x3e},
1168 0xb7, 0x21, 0x2e, 0x48}
1170 { /* Calculated by libcapi10, CryptoPro CSP
1172 U64(4) * 1024 * 1024 * 1024 + 4,
1174 "id-Gost28147-89-CryptoPro-A-ParamSet",
1177 0x0c, 0xf3, 0xe9, 0xb0, 0x28, 0x3b, 0x9f, 0x8b,
1178 0xe3, 0x82, 0xb9, 0xa2, 0xa6, 0xbd, 0x80, 0xd2,
1179 0xcd, 0xfa, 0x3f, 0xf7, 0x90, 0xa7, 0x55, 0x06,
1180 0x9b, 0x7a, 0x58, 0xee, 0xe7, 0xf1, 0x9d, 0xbe},
1184 0xda, 0x15, 0x10, 0x73}
1186 { /* Calculated by libcapi10, CryptoPro CSP
1188 U64(4) * 1024 * 1024 * 1024 + 10,
1190 "id-Gost28147-89-CryptoPro-A-ParamSet",
1193 0x97, 0x1a, 0x42, 0x22, 0xfa, 0x07, 0xb2, 0xca,
1194 0xf9, 0xd2, 0x34, 0x5a, 0x92, 0xb1, 0x1f, 0x6b,
1195 0x53, 0xf8, 0xaf, 0xed, 0x9a, 0x73, 0xc4, 0x38,
1196 0xd7, 0x7d, 0x25, 0x81, 0x00, 0x0d, 0xd4, 0x29},
1200 0x52, 0xaa, 0x22, 0xb4}
1204 int main(int argc, char *argv[])
1207 u64 ullMaxLen = 6 * 1000 * 1000;
1209 ENGINE *impl = NULL;
1211 EVP_CIPHER_CTX ectx;
1213 byte bDerive[EVP_MAX_KEY_LENGTH];
1214 byte bTest[G89_MAX_TC_LEN];
1215 byte bTest1[G89_MAX_TC_LEN];
1217 static const byte bZB[40 * 1024 * 1024] = { 0 };
1218 static byte bTS[40 * 1024 * 1024] = { 0 };
1219 unsigned int mdl = 0;
1225 const EVP_MD *md_gost94 = NULL;
1226 const EVP_CIPHER *cp_g89cfb = NULL;
1227 const EVP_CIPHER *cp_g89cnt = NULL;
1228 const EVP_CIPHER *ctype = NULL;
1229 const EVP_MD *md_g89imit = NULL;
1232 CONF *pConfig = NCONF_new(NULL);
1235 "openssl_conf = openssl_def\n"
1238 "engines = engine_section\n"
1240 "[engine_section]\n"
1241 "gost = gost_section\n"
1242 "\n" "[gost_section]\n" "default_algorithms = ALL\n" "\n";
1244 printf("Testing GOST 28147-89 ");
1247 if (1 != sscanf(argv[1], FMT64, &ullMaxLen) ||
1248 (2 < argc ? 1 != sscanf(argv[2], "%d", &ignore) : 0)) {
1250 fprintf(stderr, "Usage: %s [maxlen [ignore-error]]\n", argv[0]);
1256 * ccgost engine test on GostR3411_94_CryptoProParamSet
1258 ERR_load_crypto_strings();
1259 ENGINE_load_builtin_engines();
1260 OPENSSL_load_builtin_modules();
1262 bpConf = BIO_new_mem_buf(sConf, -1);
1263 if (!NCONF_load_bio(pConfig, bpConf, &lErrLine)) {
1265 fprintf(stderr, "NCONF_load_bio: ErrLine=%ld: %s\n",
1266 lErrLine, ERR_error_string(ERR_get_error(), NULL));
1271 if (!CONF_modules_load(pConfig, NULL, 0)) {
1273 fprintf(stderr, "CONF_modules_load: %s\n",
1274 ERR_error_string(ERR_get_error(), NULL));
1278 /* Test load engine */
1279 if (NULL == (impl = ENGINE_by_id(CCGOST_ID))) {
1281 fprintf(stderr, "Can't load engine id \"" CCGOST_ID "\"\n");
1286 if (NULL == (md_gost94 = EVP_get_digestbyname(SN_id_GostR3411_94))) {
1288 fprintf(stderr, "\"" SN_id_GostR3411_94 "\" - not found\n");
1293 if (NULL == (cp_g89cfb = EVP_get_cipherbyname(SN_id_Gost28147_89))) {
1295 fprintf(stderr, "\"" SN_id_Gost28147_89 "\" - not found\n");
1300 if (NULL == (cp_g89cnt = EVP_get_cipherbyname(SN_gost89_cnt))) {
1302 fprintf(stderr, "\"" SN_gost89_cnt "\" - not found\n");
1307 if (NULL == (md_g89imit = EVP_get_digestbyname(SN_id_Gost28147_89_MAC))) {
1309 fprintf(stderr, "\"" SN_id_Gost28147_89_MAC "\" - not found\n");
1316 for (t = 0; t < OSSL_NELEM(tcs); t++) {
1317 if (NULL == tcs[t].szDerive) {
1320 memset(bDerive, 0x3c, sizeof(bDerive));
1321 mdl = sizeof(bDerive);
1322 EVP_Digest(tcs[t].szDerive, strlen(tcs[t].szDerive),
1323 bDerive, &mdl, md_gost94, impl);
1324 if (0 != memcmp(tcs[t].bRawKey, bDerive, mdl)) {
1326 fprintf(stderr, "Engine test t=%d " "derive key error.\n", t);
1331 if (ullMaxLen < tcs[t].ullLen) {
1334 memset(bTest, 0xa5, sizeof(bTest));
1335 memset(bTest1, 0x5a, sizeof(bTest1));
1336 if (!ENGINE_ctrl_cmd_string(impl,
1337 "CRYPT_PARAMS", tcs[t].szParamSet, 0)) {
1339 fprintf(stderr, "ENGINE_ctrl_cmd_string: %s\n",
1340 ERR_error_string(ERR_get_error(), NULL));
1343 switch (tcs[t].gMode) {
1345 /* OpenSSL/ccgost not implemented GOST 28147-89 ECB */
1349 goto engine_cipher_check;
1351 if (0 != strcmp("id-Gost28147-89-CryptoPro-A-ParamSet",
1352 tcs[t].szParamSet)) {
1354 * ccgost engine can't change S-Box for gost-cnt
1359 engine_cipher_check:
1360 EVP_CIPHER_CTX_init(&ectx);
1361 EVP_EncryptInit_ex(&ectx, ctype, impl, bDerive, tcs[t].bIV);
1362 if (G89_MAX_TC_LEN >= tcs[t].ullLen) {
1363 enlu = sizeof(bTest);
1364 EVP_EncryptUpdate(&ectx, bTest, &enlu,
1365 tcs[t].bIn, (int)tcs[t].ullLen);
1366 l = (size_t)tcs[t].ullLen;
1368 for (ullLeft = tcs[t].ullLen;
1369 ullLeft >= sizeof(bZB); ullLeft -= sizeof(bZB)) {
1373 EVP_EncryptUpdate(&ectx, bTS, &enlu, bZB, sizeof(bZB));
1375 printf("b" FMT64 "/" FMT64, ullLeft, tcs[t].ullLen);
1377 EVP_EncryptUpdate(&ectx, bTS, &enlu, bZB, (int)ullLeft);
1378 memcpy(bTest, &bTS[enlu - 16], 16);
1379 enlu = (int)tcs[t].ullLen;
1382 enlf = sizeof(bTest1);
1383 EVP_EncryptFinal_ex(&ectx, bTest1, &enlf);
1384 EVP_CIPHER_CTX_cleanup(&ectx);
1387 if (0 != strcmp("id-Gost28147-89-CryptoPro-A-ParamSet",
1388 tcs[t].szParamSet)) {
1390 * ccgost engine can't change S-Box for gost-mac
1394 EVP_MD_CTX_init(&mctx);
1395 mac_key = EVP_PKEY_new_mac_key(NID_id_Gost28147_89_MAC, NULL,
1397 EVP_DigestSignInit(&mctx, NULL, md_g89imit, impl, mac_key);
1398 if (G89_MAX_TC_LEN >= tcs[t].ullLen) {
1399 EVP_DigestSignUpdate(&mctx, tcs[t].bIn,
1400 (unsigned int)tcs[t].ullLen);
1402 for (ullLeft = tcs[t].ullLen;
1403 ullLeft >= sizeof(bZB); ullLeft -= sizeof(bZB)) {
1406 EVP_DigestSignUpdate(&mctx, bZB, sizeof(bZB));
1408 printf("b" FMT64 "/" FMT64, ullLeft, tcs[t].ullLen);
1410 EVP_DigestSignUpdate(&mctx, bZB, (unsigned int)ullLeft);
1413 OPENSSL_assert(EVP_DigestSignFinal(&mctx, bTest, &siglen));
1414 EVP_PKEY_free(mac_key);
1415 EVP_MD_CTX_cleanup(&mctx);
1416 enlu = (int)tcs[t].ullLen;
1421 if ((int)tcs[t].ullLen != enlu || 0 != enlf ||
1422 0 != memcmp(tcs[t].bOut, bTest, l)) {
1424 fprintf(stderr, "\nEngine test t=%d len=" FMT64
1425 " failed.\n", t, tcs[t].ullLen);
1435 printf(" passed\n");
1438 NCONF_free(pConfig);
1440 return EXIT_SUCCESS;