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>
31 # define CCGOST_ID "gost"
33 # include "../engines/ccgost/gost89.h"
35 # define G89_MAX_TC_LEN (2048)
36 # define G89_BLOCK_LEN (8)
38 # if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__)
39 typedef unsigned __int64 u64;
40 # define U64(C) C##UI64
41 # define FMT64 "%I64u"
42 # elif defined(__arch64__)
43 typedef unsigned long u64;
47 typedef unsigned long long u64;
48 # define U64(C) C##ULL
51 # if defined(__MINGW32__)
53 # define FMT64 "%I64u"
56 typedef enum g89_mode_ {
63 typedef struct g89_tc_ {
64 u64 ullLen; /* ullLen > G89_MAX_TC_LEN */
65 /* Clear text ullLen */
67 const byte bIn[G89_MAX_TC_LEN]; /* Clear text, when */
68 /* ullLen <= G89_MAX_TC_LEN */
69 const char *szParamSet; /* S-Box ID */
70 const char *szDerive; /* String for derive bRawKey */
71 const byte bRawKey[EVP_MAX_KEY_LENGTH];
72 g89_mode gMode; /* Mode of encryption or MAC */
73 const byte bIV[EVP_MAX_IV_LENGTH]; /* IV for CFB or CNT mode */
74 const byte bOut[G89_MAX_TC_LEN]; /* Cipher text for ECB/CFB/CNT */
76 * mode, when ullLen <= G89_MAX_TC_LEN; Last 16 byte of cipher text for
77 * ECB/CFB/CNT, when ullLen > G89_MAX_TC_LEN; 4 byte MAC for imitovstavka
81 const g89_tc tcs[] = {
83 * GOST R 34.11-94 Test cases
85 { /* see p. A.3.1 [GOSTR341194], p. 7.3.1
86 * [ENG-GOSTR341194] */
87 /* <http://tools.ietf.org/html/rfc5831#section-7.3.1> */
88 /* Iteration 1, K[1], see Errata for RFC 5831 */
91 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
92 "id-GostR3410-94-TestParamSet",
95 0x54, 0x6d, 0x20, 0x33, 0x68, 0x65, 0x6c, 0x32,
96 0x69, 0x73, 0x65, 0x20, 0x73, 0x73, 0x6e, 0x62,
97 0x20, 0x61, 0x67, 0x79, 0x69, 0x67, 0x74, 0x74,
98 0x73, 0x65, 0x68, 0x65, 0x20, 0x2c, 0x3d, 0x73},
102 0x1b, 0x0b, 0xbc, 0x32, 0xce, 0xbc, 0xab, 0x42}
104 { /* see p. A.3.1 [GOSTR341194], p. 7.3.1
105 * [ENG-GOSTR341194] */
106 /* <http://tools.ietf.org/html/rfc5831#section-7.3.1> */
107 /* Iteration 1, K[4] */
110 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
111 "id-GostR3410-94-TestParamSet",
114 0xec, 0x0a, 0x8b, 0xa1, 0x5e, 0xc0, 0x04, 0xa8,
115 0xba, 0xc5, 0x0c, 0xac, 0x0c, 0x62, 0x1d, 0xee,
116 0xe1, 0xc7, 0xb8, 0xe7, 0x00, 0x7a, 0xe2, 0xec,
117 0xf2, 0x73, 0x1b, 0xff, 0x4e, 0x80, 0xe2, 0xa0},
121 0x2d, 0x56, 0x2a, 0x0d, 0x19, 0x04, 0x86, 0xe7}
123 { /* see p. A.3.1 [GOSTR341194], p. 7.3.1
124 * [ENG-GOSTR341194] */
125 /* <http://tools.ietf.org/html/rfc5831#section-7.3.1> */
126 /* Iteration 2, K[1] */
129 0x34, 0xc0, 0x15, 0x33, 0xe3, 0x7d, 0x1c, 0x56},
130 "id-GostR3410-94-TestParamSet",
133 0x34, 0x87, 0x24, 0xa4, 0xc1, 0xa6, 0x76, 0x67,
134 0x15, 0x3d, 0xde, 0x59, 0x33, 0x88, 0x42, 0x50,
135 0xe3, 0x24, 0x8c, 0x65, 0x7d, 0x41, 0x3b, 0x8c,
136 0x1c, 0x9c, 0xa0, 0x9a, 0x56, 0xd9, 0x68, 0xcf},
140 0x86, 0x3e, 0x78, 0xdd, 0x2d, 0x60, 0xd1, 0x3c}
143 * id-Gost28147-89-CryptoPro-A-ParamSet (1.2.643.2.2.31.1)
146 { /* Calculated by libcapi10, CryptoPro CSP
150 0x74, 0x3d, 0x76, 0xf9, 0x1b, 0xee, 0x35, 0x3c,
151 0xa2, 0x5c, 0x3b, 0x10, 0xeb, 0x64, 0xcf, 0xf5},
152 "id-Gost28147-89-CryptoPro-A-ParamSet",
155 0xbb, 0xf1, 0xed, 0xd3, 0x20, 0xaf, 0x8a, 0x62,
156 0x8e, 0x11, 0xc8, 0xa9, 0x51, 0xcc, 0xbe, 0x81,
157 0x47, 0x7b, 0x41, 0xa1, 0x6a, 0xf6, 0x7f, 0x05,
158 0xe8, 0x51, 0x2f, 0x9e, 0x01, 0xf8, 0xcf, 0x49},
162 0xc3, 0x73, 0x90, 0x95, 0x35, 0x58, 0x08, 0x63,
163 0xcb, 0x68, 0x85, 0x96, 0x77, 0xe8, 0xfb, 0xa9}
165 { /* Calculated by libcapi10, CryptoPro CSP
169 0xd2, 0xfd, 0xf8, 0x3a, 0xc1, 0xb4, 0x39, 0x23,
170 0x2e, 0xaa, 0xcc, 0x98, 0x0a, 0x02, 0xda, 0x33},
171 "id-Gost28147-89-CryptoPro-A-ParamSet",
174 0x8d, 0x5a, 0x2c, 0x83, 0xa7, 0xc7, 0x0a, 0x61,
175 0xd6, 0x1b, 0x34, 0xb5, 0x1f, 0xdf, 0x42, 0x68,
176 0x66, 0x71, 0xa3, 0x5d, 0x87, 0x4c, 0xfd, 0x84,
177 0x99, 0x36, 0x63, 0xb6, 0x1e, 0xd6, 0x0d, 0xad},
180 0x46, 0x60, 0x6f, 0x0d, 0x88, 0x34, 0x23, 0x5a},
182 0x88, 0xb7, 0x75, 0x16, 0x74, 0xa5, 0xee, 0x2d,
183 0x14, 0xfe, 0x91, 0x67, 0xd0, 0x5c, 0xcc, 0x40}
185 { /* Calculated by libcapi10, CryptoPro CSP
189 0x90, 0xa2, 0x39, 0x66, 0xae, 0x01, 0xb9, 0xa3,
190 0x52, 0x4e, 0xc8, 0xed, 0x6c, 0xdd, 0x88, 0x30},
191 "id-Gost28147-89-CryptoPro-A-ParamSet",
194 0x59, 0x9f, 0x84, 0xba, 0xc3, 0xf3, 0xd2, 0xf1,
195 0x60, 0xe1, 0xe3, 0xf2, 0x6a, 0x96, 0x1a, 0xf9,
196 0x9c, 0x48, 0xb2, 0x4e, 0xbc, 0xbb, 0xbf, 0x7c,
197 0xd8, 0xf3, 0xac, 0xcd, 0x96, 0x8d, 0x28, 0x6a},
200 0x8d, 0xaf, 0xa8, 0xd1, 0x58, 0xed, 0x05, 0x8d},
202 0x6e, 0x72, 0x62, 0xcc, 0xe3, 0x59, 0x36, 0x90,
203 0x83, 0x3a, 0xfe, 0xa9, 0x1b, 0xc9, 0xbe, 0xce}
205 { /* Calculated by libcapi10, CryptoPro CSP
209 0xb5, 0xa1, 0xf0, 0xe3, 0xce, 0x2f, 0x02, 0x1d,
210 0x67, 0x61, 0x94, 0x34, 0x5c, 0x41, 0xe3, 0x6e},
211 "id-Gost28147-89-CryptoPro-A-ParamSet",
214 0x9d, 0x05, 0xb7, 0x9e, 0x90, 0xca, 0xd0, 0x0a,
215 0x2c, 0xda, 0xd2, 0x2e, 0xf4, 0xe8, 0x6f, 0x5c,
216 0xf5, 0xdc, 0x37, 0x68, 0x19, 0x85, 0xb3, 0xbf,
217 0xaa, 0x18, 0xc1, 0xc3, 0x05, 0x0a, 0x91, 0xa2},
221 0xf8, 0x1f, 0x08, 0xa3}
224 * Other paramsets and key meshing test cases.
226 { /* Calculated by libcapi10, CryptoPro CSP
230 0x8c, 0x9c, 0x44, 0x35, 0xfb, 0xe9, 0xa5, 0xa3,
231 0xa0, 0xae, 0x28, 0x56, 0x91, 0x10, 0x8e, 0x1e,
232 0xd2, 0xbb, 0x18, 0x53, 0x81, 0x27, 0x0d, 0xa6,
233 0x68, 0x59, 0x36, 0xc5, 0x81, 0x62, 0x9a, 0x8e,
234 0x7d, 0x50, 0xf1, 0x6f, 0x97, 0x62, 0x29, 0xec,
235 0x80, 0x51, 0xe3, 0x7d, 0x6c, 0xc4, 0x07, 0x95,
236 0x28, 0x63, 0xdc, 0xb4, 0xb9, 0x2d, 0xb8, 0x13,
237 0xb1, 0x05, 0xb5, 0xf9, 0xeb, 0x75, 0x37, 0x4e,
238 0xf7, 0xbf, 0x51, 0xf1, 0x98, 0x86, 0x43, 0xc4,
239 0xe4, 0x3d, 0x3e, 0xa7, 0x62, 0xec, 0x41, 0x59,
240 0xe0, 0xbd, 0xfb, 0xb6, 0xfd, 0xec, 0xe0, 0x77,
241 0x13, 0xd2, 0x59, 0x90, 0xa1, 0xb8, 0x97, 0x6b,
242 0x3d, 0x8b, 0x7d, 0xfc, 0x9d, 0xca, 0x82, 0x73,
243 0x32, 0x70, 0x0a, 0x74, 0x03, 0xc6, 0x0c, 0x26,
244 0x7f, 0x56, 0xf0, 0x9d, 0xb2, 0xeb, 0x71, 0x40,
245 0xd7, 0xc3, 0xb1, 0xa7, 0xc5, 0x1e, 0x20, 0x17,
246 0xb3, 0x50, 0x1d, 0x8a, 0x6e, 0x19, 0xcb, 0xbe,
247 0x20, 0x86, 0x2b, 0xd6, 0x1c, 0xfd, 0xb4, 0xb7,
248 0x5d, 0x9a, 0xb3, 0xe3, 0x7d, 0x15, 0x7a, 0x35,
249 0x01, 0x9f, 0x5d, 0x65, 0x89, 0x4b, 0x34, 0xc6,
250 0xf4, 0x81, 0x3f, 0x78, 0x30, 0xcf, 0xe9, 0x15,
251 0x90, 0x9a, 0xf9, 0xde, 0xba, 0x63, 0xd0, 0x19,
252 0x14, 0x66, 0x3c, 0xb9, 0xa4, 0xb2, 0x84, 0x94,
253 0x02, 0xcf, 0xce, 0x20, 0xcf, 0x76, 0xe7, 0xc5,
254 0x48, 0xf7, 0x69, 0x3a, 0x5d, 0xec, 0xaf, 0x41,
255 0xa7, 0x12, 0x64, 0x83, 0xf5, 0x99, 0x1e, 0x9e,
256 0xb2, 0xab, 0x86, 0x16, 0x00, 0x23, 0x8e, 0xe6,
257 0xd9, 0x80, 0x0b, 0x6d, 0xc5, 0x93, 0xe2, 0x5c,
258 0x8c, 0xd8, 0x5e, 0x5a, 0xae, 0x4a, 0x85, 0xfd,
259 0x76, 0x01, 0xea, 0x30, 0xf3, 0x78, 0x34, 0x10,
260 0x72, 0x51, 0xbc, 0x9f, 0x76, 0xce, 0x1f, 0xd4,
261 0x8f, 0x33, 0x50, 0x34, 0xc7, 0x4d, 0x7b, 0xcf,
262 0x91, 0x63, 0x7d, 0x82, 0x9e, 0xa1, 0x23, 0x45,
263 0xf5, 0x45, 0xac, 0x98, 0x7a, 0x48, 0xff, 0x64,
264 0xd5, 0x59, 0x47, 0xde, 0x2b, 0x3f, 0xfa, 0xec,
265 0x50, 0xe0, 0x81, 0x60, 0x8b, 0xc3, 0xfc, 0x80,
266 0x98, 0x17, 0xc7, 0xa3, 0xc2, 0x57, 0x3d, 0xab,
267 0x91, 0x67, 0xf5, 0xc4, 0xab, 0x92, 0xc8, 0xd6,
268 0x3b, 0x6b, 0x3f, 0xff, 0x15, 0x6b, 0xcf, 0x53,
269 0x65, 0x02, 0xf1, 0x74, 0xca, 0xa9, 0xbe, 0x24,
270 0xd2, 0xf0, 0xb7, 0x26, 0xa8, 0xd7, 0x6d, 0xed,
271 0x90, 0x36, 0x7b, 0x3e, 0x41, 0xa9, 0x7f, 0xa3,
272 0x1b, 0xf4, 0x43, 0xc5, 0x51, 0xbe, 0x28, 0x59,
273 0xe9, 0x45, 0x26, 0x49, 0x38, 0x32, 0xf8, 0xf3,
274 0x92, 0x6e, 0x30, 0xcc, 0xb0, 0xa0, 0xf9, 0x01,
275 0x14, 0xc8, 0xba, 0xd9, 0xf0, 0x2a, 0x29, 0xe2,
276 0x52, 0x9a, 0x76, 0x95, 0x3a, 0x16, 0x32, 0xec,
277 0xf4, 0x10, 0xec, 0xee, 0x47, 0x00, 0x70, 0x19,
278 0xe4, 0x72, 0x35, 0x66, 0x44, 0x53, 0x2d, 0xa2,
279 0xf3, 0xaa, 0x7e, 0x8a, 0x33, 0x13, 0xcd, 0xc8,
280 0xbf, 0x0e, 0x40, 0x90, 0x00, 0xe4, 0x42, 0xc3,
281 0x09, 0x84, 0xe1, 0x66, 0x17, 0xa2, 0xaf, 0x03,
282 0xab, 0x6b, 0xa1, 0xec, 0xfb, 0x17, 0x72, 0x81,
283 0xfe, 0x9a, 0x9f, 0xf4, 0xb2, 0x33, 0x1f, 0xae,
284 0x0c, 0xd1, 0x6a, 0xae, 0x19, 0xb8, 0xaf, 0xec,
285 0xe3, 0xea, 0x00, 0xf8, 0xac, 0x87, 0x07, 0x5f,
286 0x6d, 0xb0, 0xac, 0x6b, 0x22, 0x48, 0x36, 0xbf,
287 0x22, 0x18, 0xb0, 0x03, 0x9f, 0x6c, 0x70, 0x45,
288 0x36, 0xf0, 0x6b, 0xc6, 0xc2, 0xa5, 0x72, 0x2c,
289 0xd8, 0xe0, 0x27, 0x3d, 0xec, 0x56, 0x07, 0x05,
290 0x7d, 0x83, 0xa1, 0x65, 0x7d, 0x41, 0x5b, 0xcd,
291 0x77, 0x24, 0xe5, 0xaa, 0x76, 0x47, 0xd0, 0x50,
292 0xf6, 0xe7, 0xb5, 0x59, 0x75, 0x31, 0x27, 0xef,
293 0xd8, 0xa6, 0x4e, 0x7f, 0xb8, 0x40, 0xb1, 0xdf,
294 0x53, 0x14, 0xed, 0xf1, 0x68, 0x5f, 0xfc, 0x3f,
295 0x02, 0xdb, 0x05, 0xeb, 0x31, 0xe4, 0x2c, 0x7f,
296 0x32, 0xb5, 0x70, 0x8e, 0x75, 0x85, 0xa4, 0x5c,
297 0x16, 0x23, 0x37, 0xf2, 0x10, 0x79, 0xcb, 0xdc,
298 0xf8, 0x1c, 0x25, 0xc2, 0xa1, 0x3d, 0x9c, 0x33,
299 0x6c, 0xed, 0xc3, 0xe7, 0xf3, 0x02, 0x87, 0x82,
300 0x4e, 0xfb, 0xac, 0xb3, 0x2d, 0xfc, 0xf8, 0x0d,
301 0x1d, 0x4a, 0x39, 0xd4, 0xb3, 0x09, 0xbb, 0xe9,
302 0x25, 0xc7, 0xec, 0x6a, 0x87, 0x72, 0x84, 0xed,
303 0x12, 0x60, 0x19, 0x64, 0xeb, 0x16, 0x2a, 0x5b,
304 0x10, 0x76, 0x27, 0xff, 0x7b, 0xe4, 0xae, 0xe5,
305 0xa4, 0x04, 0x02, 0x7f, 0xbb, 0x0a, 0xb5, 0xf4,
306 0x05, 0xa5, 0x56, 0x1c, 0x53, 0x31, 0x7a, 0x93,
307 0xba, 0x16, 0x15, 0xab, 0x62, 0x60, 0xfc, 0xde,
308 0x72, 0x36, 0x6e, 0x28, 0xaf, 0x98, 0x0d, 0xe6,
309 0xf4, 0xde, 0x60, 0xa7, 0x7e, 0x06, 0x07, 0x86,
310 0xf3, 0x94, 0xb6, 0x6d, 0x0d, 0x93, 0xa6, 0xbc,
311 0x60, 0x70, 0x33, 0xac, 0x3f, 0xa1, 0xa8, 0x4a,
312 0x20, 0x61, 0xb6, 0xb5, 0x43, 0xa3, 0x15, 0x5a,
313 0x00, 0xbe, 0x76, 0x98, 0x57, 0x72, 0xab, 0x7a,
314 0x0e, 0x18, 0x93, 0x82, 0x3a, 0x18, 0x78, 0x6e,
315 0x71, 0x7b, 0x78, 0x4f, 0x7e, 0x8c, 0xde, 0x7a,
316 0x62, 0xb5, 0x0a, 0x7c, 0x45, 0x1d, 0x16, 0xd5,
317 0xc3, 0x8c, 0x9b, 0x25, 0xb4, 0x50, 0x90, 0xcd,
318 0x96, 0x93, 0xad, 0x0f, 0xd4, 0x43, 0xcb, 0x49,
319 0x0f, 0xfc, 0x5a, 0x31, 0xf4, 0x19, 0xb7, 0xd4,
320 0xeb, 0x4d, 0x40, 0x58, 0xd0, 0x3b, 0xc8, 0xe0,
321 0x4a, 0x54, 0x2f, 0xdb, 0x22, 0xc3, 0x29, 0x7b,
322 0x40, 0x90, 0x61, 0x43, 0xd3, 0x7e, 0xe2, 0x30,
323 0x2b, 0x48, 0x3c, 0xce, 0x90, 0x93, 0xb1, 0x8b,
324 0x31, 0x96, 0x65, 0x6d, 0x57, 0x8b, 0x9d, 0x4d,
325 0x53, 0xf0, 0x83, 0x1c, 0xe5, 0xa1, 0x9d, 0x55,
326 0xe3, 0xbf, 0x7e, 0xca, 0x1a, 0x74, 0x66, 0x14,
327 0xcc, 0x47, 0x43, 0xd9, 0xbb, 0xef, 0x97, 0x7d,
328 0xb7, 0x6e, 0xff, 0xf1, 0x22, 0xf8, 0x10, 0x2d,
329 0x3f, 0xcd, 0x49, 0x96, 0xd9, 0x09, 0x11, 0xb8,
330 0x33, 0xd0, 0x23, 0x9a, 0xfa, 0x16, 0xcb, 0x50,
331 0x26, 0x57, 0x24, 0x5c, 0x0e, 0xba, 0xf0, 0x3f,
332 0x37, 0x2f, 0xa3, 0xf7, 0x18, 0x57, 0x48, 0x48,
333 0x95, 0xcf, 0xef, 0x87, 0x67, 0x2a, 0xe9, 0xb6,
334 0x8a, 0x21, 0x36, 0x7f, 0xff, 0x48, 0x6c, 0x46,
335 0x35, 0x57, 0xf2, 0xbc, 0x48, 0x67, 0x8f, 0x63,
336 0x23, 0x78, 0x11, 0x2b, 0xc2, 0x08, 0xde, 0x51,
337 0xe8, 0x8b, 0x92, 0x29, 0xf9, 0x9a, 0x9e, 0xad,
338 0xed, 0x0f, 0xeb, 0xa2, 0xd2, 0x40, 0x92, 0xd4,
339 0xde, 0x62, 0x95, 0x76, 0xfd, 0x6e, 0x3c, 0xbf,
340 0xc0, 0xd7, 0x0d, 0xe5, 0x1b, 0xa4, 0xc7, 0x18,
341 0xe1, 0x58, 0xa4, 0x56, 0xef, 0x2e, 0x17, 0x1b,
342 0x75, 0xcb, 0xbc, 0xf9, 0x2a, 0x95, 0x71, 0xa7,
343 0x1d, 0x7f, 0xe7, 0x73, 0x63, 0x05, 0x6b, 0x19,
344 0x4c, 0xf4, 0x22, 0x14, 0xc4, 0x59, 0x88, 0x66,
345 0x92, 0x86, 0x61, 0x5c, 0x6a, 0xae, 0xec, 0x58,
346 0xff, 0xc9, 0xf2, 0x44, 0xd4, 0xa2, 0xf5, 0x98,
347 0xeb, 0x5f, 0x09, 0xbc, 0x8a, 0xbf, 0x3c, 0xb4,
348 0x3e, 0xb1, 0x20, 0x05, 0x44, 0x96, 0x79, 0x0a,
349 0x40, 0x92, 0x7f, 0x9d, 0xd1, 0xaf, 0xbc, 0x90,
350 0x95, 0x0a, 0x81, 0xd4, 0xa7, 0xc6, 0xb8, 0xe0,
351 0xe4, 0x39, 0x30, 0x1d, 0x79, 0xc0, 0xe5, 0xfa,
352 0xb4, 0xe9, 0x63, 0xb4, 0x09, 0x72, 0x3b, 0x3e,
353 0xd9, 0xf6, 0xd9, 0x10, 0x21, 0x18, 0x7e, 0xe5,
354 0xad, 0x81, 0xd7, 0xd5, 0x82, 0xd0, 0x8c, 0x3b,
355 0x38, 0x95, 0xf8, 0x92, 0x01, 0xa9, 0x92, 0x00,
356 0x70, 0xd1, 0xa7, 0x88, 0x77, 0x1f, 0x3a, 0xeb,
357 0xb5, 0xe4, 0xf5, 0x9d, 0xc7, 0x37, 0x86, 0xb2,
358 0x12, 0x46, 0x34, 0x19, 0x72, 0x8c, 0xf5, 0x8c,
359 0xf6, 0x78, 0x98, 0xe0, 0x7c, 0xd3, 0xf4},
360 "id-Gost28147-89-CryptoPro-B-ParamSet",
363 0x48, 0x0c, 0x74, 0x1b, 0x02, 0x6b, 0x55, 0xd5,
364 0xb6, 0x6d, 0xd7, 0x1d, 0x40, 0x48, 0x05, 0x6b,
365 0x6d, 0xeb, 0x3c, 0x29, 0x0f, 0x84, 0x80, 0x23,
366 0xee, 0x0d, 0x47, 0x77, 0xe3, 0xfe, 0x61, 0xc9},
369 0x1f, 0x3f, 0x82, 0x1e, 0x0d, 0xd8, 0x1e, 0x22},
371 0x23, 0xc6, 0x7f, 0x20, 0xa1, 0x23, 0x58, 0xbc,
372 0x7b, 0x05, 0xdb, 0x21, 0x15, 0xcf, 0x96, 0x41,
373 0xc7, 0x88, 0xef, 0x76, 0x5c, 0x49, 0xdb, 0x42,
374 0xbf, 0xf3, 0xc0, 0xf5, 0xbd, 0x5d, 0xd9, 0x8e,
375 0xaf, 0x3d, 0xf4, 0xe4, 0xda, 0x88, 0xbd, 0xbc,
376 0x47, 0x5d, 0x76, 0x07, 0xc9, 0x5f, 0x54, 0x1d,
377 0x1d, 0x6a, 0xa1, 0x2e, 0x18, 0xd6, 0x60, 0x84,
378 0x02, 0x18, 0x37, 0x92, 0x92, 0x15, 0xab, 0x21,
379 0xee, 0x21, 0xcc, 0x71, 0x6e, 0x51, 0xd9, 0x2b,
380 0xcc, 0x81, 0x97, 0x3f, 0xeb, 0x45, 0x99, 0xb8,
381 0x1b, 0xda, 0xff, 0x90, 0xd3, 0x41, 0x06, 0x9c,
382 0x3f, 0xfb, 0xe4, 0xb2, 0xdc, 0xc9, 0x03, 0x0d,
383 0xa7, 0xae, 0xd7, 0x7d, 0x02, 0xb8, 0x32, 0xab,
384 0xf3, 0x65, 0xa3, 0x65, 0x6c, 0x4e, 0xe4, 0xa2,
385 0x5e, 0x9e, 0xee, 0xcd, 0xde, 0x79, 0x36, 0x6b,
386 0x1b, 0xe1, 0x3c, 0xdf, 0x10, 0xad, 0x4f, 0x02,
387 0xe1, 0x14, 0xaa, 0x09, 0xb4, 0x0b, 0x76, 0xeb,
388 0x69, 0x38, 0x20, 0x02, 0xcb, 0x8e, 0xc0, 0xdf,
389 0xca, 0x48, 0x74, 0xc3, 0x31, 0xad, 0x42, 0x2c,
390 0x51, 0x9b, 0xd0, 0x6a, 0xc1, 0x36, 0xd7, 0x21,
391 0xdf, 0xb0, 0x45, 0xba, 0xca, 0x7f, 0x35, 0x20,
392 0x28, 0xbb, 0xc1, 0x76, 0xfd, 0x43, 0x5d, 0x23,
393 0x7d, 0x31, 0x84, 0x1a, 0x97, 0x4d, 0x83, 0xaa,
394 0x7e, 0xf1, 0xc4, 0xe6, 0x83, 0xac, 0x0d, 0xef,
395 0xef, 0x3c, 0xa4, 0x7c, 0x48, 0xe4, 0xc8, 0xca,
396 0x0d, 0x7d, 0xea, 0x7c, 0x45, 0xd7, 0x73, 0x50,
397 0x25, 0x1d, 0x01, 0xc4, 0x02, 0x1a, 0xcd, 0xe0,
398 0x38, 0x5b, 0xa8, 0x5a, 0x16, 0x9a, 0x10, 0x59,
399 0x74, 0xd7, 0x19, 0xc6, 0xf3, 0xb5, 0x17, 0xf6,
400 0x59, 0x8d, 0x62, 0xaf, 0x44, 0xe8, 0xdc, 0xe9,
401 0xc1, 0x76, 0xf1, 0xd0, 0xbd, 0x29, 0xd7, 0xec,
402 0x1d, 0xac, 0x57, 0xdb, 0x1a, 0x3f, 0xd8, 0xf6,
403 0x6e, 0xb6, 0xe6, 0xdf, 0x36, 0xe7, 0x89, 0xce,
404 0x56, 0x35, 0x43, 0x1c, 0x7d, 0x57, 0x79, 0x0e,
405 0xd8, 0xf4, 0xd7, 0xa7, 0x0d, 0xc6, 0x8f, 0x91,
406 0x66, 0x67, 0x82, 0x0f, 0x49, 0xc9, 0xc5, 0x65,
407 0x81, 0xa1, 0x39, 0x5a, 0x53, 0x9f, 0x02, 0xa5,
408 0xd5, 0x36, 0x22, 0xa8, 0xa8, 0x1c, 0x37, 0x0e,
409 0x76, 0x46, 0xdf, 0xbd, 0x6a, 0xdb, 0xfc, 0x1b,
410 0xbd, 0x10, 0xb8, 0xb1, 0xbc, 0x72, 0x4c, 0x58,
411 0x4a, 0xda, 0x6d, 0x66, 0x00, 0xda, 0x7a, 0x66,
412 0xa0, 0xe7, 0x3b, 0x39, 0xa3, 0xf7, 0x05, 0x07,
413 0xfa, 0x21, 0x4b, 0xc7, 0x94, 0xc0, 0xd3, 0x7b,
414 0x19, 0x02, 0x5d, 0x4a, 0x10, 0xf1, 0xc2, 0x0f,
415 0x19, 0x68, 0x27, 0xc7, 0x7d, 0xbf, 0x55, 0x03,
416 0x57, 0x7d, 0xaf, 0x77, 0xae, 0x80, 0x2f, 0x7a,
417 0xe6, 0x1f, 0x4b, 0xdc, 0x15, 0x18, 0xc0, 0x62,
418 0xa1, 0xe8, 0xd9, 0x1c, 0x9e, 0x8c, 0x96, 0x39,
419 0xc1, 0xc4, 0x88, 0xf7, 0x0c, 0xe1, 0x04, 0x84,
420 0x68, 0x51, 0xce, 0xf1, 0x90, 0xda, 0x7f, 0x76,
421 0xc8, 0xc0, 0x88, 0xef, 0x8e, 0x15, 0x25, 0x3e,
422 0x7b, 0xe4, 0x79, 0xb5, 0x66, 0x2d, 0x9c, 0xd1,
423 0x13, 0xda, 0xd0, 0xd5, 0x46, 0xd5, 0x8d, 0x46,
424 0x18, 0x07, 0xee, 0xd8, 0xc9, 0x64, 0xe3, 0xbe,
425 0x0e, 0x68, 0x27, 0x09, 0x96, 0x26, 0xf6, 0xe2,
426 0x19, 0x61, 0x3f, 0xf4, 0x58, 0x27, 0x0a, 0xeb,
427 0xce, 0x7c, 0xb6, 0x68, 0x92, 0xe7, 0x12, 0x3b,
428 0x31, 0xd4, 0x48, 0xdf, 0x35, 0x8d, 0xf4, 0x86,
429 0x42, 0x2a, 0x15, 0x4b, 0xe8, 0x19, 0x1f, 0x26,
430 0x65, 0x9b, 0xa8, 0xda, 0x4b, 0x79, 0x1f, 0x8e,
431 0xe6, 0x13, 0x7e, 0x49, 0x8f, 0xc1, 0xce, 0xdc,
432 0x5e, 0x64, 0x74, 0xce, 0x02, 0x78, 0xe0, 0xcf,
433 0xa0, 0xed, 0x5e, 0x31, 0x74, 0xd1, 0xd0, 0xb4,
434 0xee, 0x70, 0x19, 0x14, 0x3c, 0x8f, 0x16, 0xa6,
435 0xcf, 0x12, 0x93, 0x15, 0x88, 0xeb, 0x91, 0x65,
436 0x76, 0x98, 0xfd, 0xa1, 0x94, 0x30, 0xba, 0x43,
437 0x62, 0x65, 0x40, 0x04, 0x77, 0x9e, 0xd6, 0xab,
438 0x8b, 0x0d, 0x93, 0x80, 0x50, 0x5f, 0xa2, 0x76,
439 0x20, 0xa7, 0xd6, 0x9c, 0x27, 0x15, 0x27, 0xbc,
440 0xa5, 0x5a, 0xbf, 0xe9, 0x92, 0x82, 0x05, 0xa8,
441 0x41, 0xe9, 0xb5, 0x60, 0xd5, 0xc0, 0xd7, 0x4b,
442 0xad, 0x38, 0xb2, 0xe9, 0xd1, 0xe5, 0x51, 0x5f,
443 0x24, 0x78, 0x24, 0x9a, 0x23, 0xd2, 0xc2, 0x48,
444 0xbd, 0x0e, 0xf1, 0x37, 0x72, 0x91, 0x87, 0xb0,
445 0x4e, 0xbd, 0x99, 0x6b, 0x2c, 0x01, 0xb6, 0x79,
446 0x69, 0xec, 0x0c, 0xed, 0xe5, 0x3f, 0x50, 0x64,
447 0x7c, 0xb9, 0xdd, 0xe1, 0x92, 0x81, 0xb5, 0xd0,
448 0xcb, 0x17, 0x83, 0x86, 0x8b, 0xea, 0x4f, 0x93,
449 0x08, 0xbc, 0x22, 0x0c, 0xef, 0xe8, 0x0d, 0xf5,
450 0x9e, 0x23, 0xe1, 0xf9, 0xb7, 0x6b, 0x45, 0x0b,
451 0xcb, 0xa9, 0xb6, 0x4d, 0x28, 0x25, 0xba, 0x3e,
452 0x86, 0xf2, 0x75, 0x47, 0x5d, 0x9d, 0x6b, 0xf6,
453 0x8a, 0x05, 0x58, 0x73, 0x3d, 0x00, 0xde, 0xfd,
454 0x69, 0xb1, 0x61, 0x16, 0xf5, 0x2e, 0xb0, 0x9f,
455 0x31, 0x6a, 0x00, 0xb9, 0xef, 0x71, 0x63, 0x47,
456 0xa3, 0xca, 0xe0, 0x40, 0xa8, 0x7e, 0x02, 0x04,
457 0xfe, 0xe5, 0xce, 0x48, 0x73, 0xe3, 0x94, 0xcf,
458 0xe2, 0xff, 0x29, 0x7e, 0xf6, 0x32, 0xbb, 0xb7,
459 0x55, 0x12, 0x21, 0x7a, 0x9c, 0x75, 0x04, 0x0c,
460 0xb4, 0x7c, 0xb0, 0x3d, 0x40, 0xb3, 0x11, 0x9a,
461 0x7a, 0x9a, 0x13, 0xfb, 0x77, 0xa7, 0x51, 0x68,
462 0xf7, 0x05, 0x47, 0x3b, 0x0f, 0x52, 0x5c, 0xe6,
463 0xc2, 0x99, 0x3a, 0x37, 0x54, 0x5c, 0x4f, 0x2b,
464 0xa7, 0x01, 0x08, 0x74, 0xbc, 0x91, 0xe3, 0xe2,
465 0xfe, 0x65, 0x94, 0xfd, 0x3d, 0x18, 0xe0, 0xf0,
466 0x62, 0xed, 0xc2, 0x10, 0x82, 0x9c, 0x58, 0x7f,
467 0xb2, 0xa3, 0x87, 0x8a, 0x74, 0xd9, 0xc1, 0xfb,
468 0x84, 0x28, 0x17, 0xc7, 0x2b, 0xcb, 0x53, 0x1f,
469 0x4e, 0x8a, 0x82, 0xfc, 0xb4, 0x3f, 0xc1, 0x47,
470 0x25, 0xf3, 0x21, 0xdc, 0x4c, 0x2d, 0x08, 0xfa,
471 0xe7, 0x0f, 0x03, 0xa9, 0x68, 0xde, 0x6b, 0x41,
472 0xa0, 0xf9, 0x41, 0x6c, 0x57, 0x4d, 0x3a, 0x0e,
473 0xea, 0x51, 0xca, 0x9f, 0x97, 0x11, 0x7d, 0xf6,
474 0x8e, 0x88, 0x63, 0x67, 0xc9, 0x65, 0x13, 0xca,
475 0x38, 0xed, 0x35, 0xbe, 0xf4, 0x27, 0xa9, 0xfc,
476 0xa9, 0xe6, 0xc3, 0x40, 0x86, 0x08, 0x39, 0x72,
477 0x37, 0xee, 0xb2, 0x87, 0x09, 0x96, 0xb7, 0x40,
478 0x87, 0x36, 0x92, 0xc1, 0x5d, 0x6a, 0x2c, 0x43,
479 0xca, 0x25, 0xc8, 0x35, 0x37, 0x2d, 0xb5, 0xa9,
480 0x27, 0x44, 0x50, 0xf2, 0x6d, 0x22, 0x75, 0x41,
481 0x77, 0x2a, 0xdb, 0xb1, 0x8c, 0x6d, 0x05, 0xe8,
482 0xc9, 0x99, 0xc7, 0x08, 0xf9, 0x14, 0x8f, 0x78,
483 0xa9, 0x8f, 0xc2, 0x5a, 0x7a, 0x65, 0xc5, 0xd8,
484 0x86, 0xbb, 0x72, 0x69, 0x6b, 0x6b, 0x45, 0x83,
485 0x5b, 0xb1, 0xf7, 0xcd, 0x16, 0x73, 0xee, 0xe9,
486 0x80, 0x85, 0xfe, 0x8e, 0xe1, 0xae, 0x53, 0x8f,
487 0xde, 0xbe, 0x48, 0x8b, 0x59, 0xef, 0xf6, 0x7e,
488 0xd8, 0xb5, 0xa8, 0x47, 0xc0, 0x4e, 0x15, 0x58,
489 0xca, 0xd3, 0x2f, 0xf8, 0x6c, 0xa6, 0x3d, 0x78,
490 0x4d, 0x7a, 0x54, 0xd6, 0x10, 0xe5, 0xcc, 0x05,
491 0xe2, 0x29, 0xb5, 0x86, 0x07, 0x39, 0x7d, 0x78,
492 0x8e, 0x5a, 0x8f, 0x83, 0x4c, 0xe7, 0x3d, 0x68,
493 0x3e, 0xe5, 0x02, 0xe6, 0x64, 0x4f, 0x5e, 0xb4,
494 0x49, 0x77, 0xf0, 0xc0, 0xfa, 0x6f, 0xc8, 0xfb,
495 0x9f, 0x84, 0x6f, 0x55, 0xfb, 0x30, 0x5e, 0x89,
496 0x93, 0xa9, 0xf3, 0xa6, 0xa3, 0xd7, 0x26, 0xbb,
497 0xd8, 0xa8, 0xd9, 0x95, 0x1d, 0xfe, 0xfc, 0xd7,
498 0xa8, 0x93, 0x66, 0x2f, 0x04, 0x53, 0x06, 0x64,
499 0x7f, 0x31, 0x29, 0xae, 0xb7, 0x9f, 0xba, 0xc4,
500 0x6d, 0x68, 0xd1, 0x24, 0x32, 0xf4, 0x11}
502 { /* Calculated by libcapi10, CryptoPro CSP
506 0x07, 0x9c, 0x91, 0xbe},
507 "id-Gost28147-89-CryptoPro-C-ParamSet",
510 0x77, 0xc3, 0x45, 0x8e, 0xf6, 0x42, 0xe7, 0x04,
511 0x8e, 0xfc, 0x08, 0xe4, 0x70, 0x96, 0xd6, 0x05,
512 0x93, 0x59, 0x02, 0x6d, 0x6f, 0x97, 0xca, 0xe9,
513 0xcf, 0x89, 0x44, 0x4b, 0xde, 0x6c, 0x22, 0x1d},
516 0x43, 0x7c, 0x3e, 0x8e, 0x2f, 0x2a, 0x00, 0x98},
518 0x19, 0x35, 0x81, 0x34}
520 { /* Calculated by libcapi10, CryptoPro CSP
524 0x2f, 0x31, 0xd8, 0x83, 0xb4, 0x20, 0xe8, 0x6e,
526 "id-Gost28147-89-CryptoPro-D-ParamSet",
529 0x38, 0x9f, 0xe8, 0x37, 0xff, 0x9c, 0x5d, 0x29,
530 0xfc, 0x48, 0x55, 0xa0, 0x87, 0xea, 0xe8, 0x40,
531 0x20, 0x87, 0x5b, 0xb2, 0x01, 0x15, 0x55, 0xa7,
532 0xe3, 0x2d, 0xcb, 0x3d, 0xd6, 0x59, 0x04, 0x73},
535 0xc5, 0xa2, 0xd2, 0x1f, 0x2f, 0xdf, 0xb8, 0xeb},
537 0x6d, 0xa4, 0xed, 0x40, 0x08, 0x88, 0x71, 0xad,
540 { /* Calculated by libcapi10, CryptoPro CSP
544 "id-Gost28147-89-CryptoPro-A-ParamSet",
547 0x61, 0x58, 0x44, 0x5a, 0x41, 0xf6, 0xc7, 0x0f,
548 0x6b, 0xdb, 0x51, 0x91, 0x6a, 0xf6, 0x81, 0x30,
549 0x8c, 0xa7, 0x98, 0xdd, 0x38, 0x35, 0x8a, 0x60,
550 0x85, 0xb4, 0xf0, 0xf9, 0x43, 0xa2, 0x7d, 0x9a},
553 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
555 0x1c, 0x16, 0xa0, 0xe9, 0x63, 0x94, 0xfe, 0x38,
556 0x37, 0xa7, 0x9b, 0x70, 0x25, 0x2e, 0xd6, 0x00}
558 { /* Calculated by libcapi10, CryptoPro CSP
560 U64(4294967296) + 16,
562 "id-Gost28147-89-CryptoPro-A-ParamSet",
565 0xae, 0x57, 0xa2, 0xdd, 0xa4, 0xef, 0x4f, 0x96,
566 0xb8, 0x94, 0xa5, 0xd1, 0x1b, 0xc8, 0x9b, 0x42,
567 0xa5, 0x24, 0xcc, 0x89, 0x5c, 0xb8, 0x92, 0x52,
568 0xc1, 0x12, 0x6a, 0xb0, 0x9a, 0x26, 0xe8, 0x06},
571 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
573 0x2e, 0x62, 0xb0, 0x2e, 0xc7, 0x87, 0x4b, 0x29,
574 0x33, 0x16, 0x6b, 0xb4, 0xd6, 0x61, 0x66, 0xd9}
576 { /* Calculated by libcapi10, CryptoPro CSP
580 0x3d, 0x0b, 0x69, 0xf7, 0xa8, 0xe4, 0xfc, 0x99,
581 0x22, 0x2e, 0xee, 0xd1, 0x63, 0x12, 0xfe, 0xa8,
582 0x9d, 0xcb, 0x6c, 0x4d, 0x48, 0x8c, 0xe8, 0xbd,
583 0x8b, 0x60, 0xf1, 0xbf, 0x7b, 0xe3, 0x79, 0xd5,
584 0x2b, 0x25, 0x97, 0x13, 0xef, 0x35, 0xda, 0xf4,
585 0xbc, 0x77, 0xce, 0xea, 0xe9, 0x3f, 0xa4, 0xb6,
586 0x01, 0xd5, 0x73, 0x29, 0x58, 0xda, 0xd7, 0x67,
587 0x17, 0xac, 0xe4, 0x75, 0x2f, 0x57, 0x23, 0xac,
588 0x96, 0x21, 0xc7, 0x62, 0x2d, 0xf7, 0x32, 0xb5,
589 0x44, 0x5f, 0x72, 0xb1, 0x5f, 0xba, 0x1b, 0x1e,
590 0xdb, 0x4a, 0x09, 0x8c, 0x92, 0x61, 0xa2, 0xb0,
591 0x49, 0x68, 0xe5, 0xb3, 0xa2, 0x8f, 0x13, 0x4b,
592 0xf5, 0x4d, 0x84, 0xda, 0xab, 0xa0, 0xb6, 0xd1,
593 0x5a, 0x63, 0x19, 0xe8, 0xa2, 0x09, 0xf6, 0x76,
594 0x6f, 0x9b, 0x48, 0x0a, 0x15, 0x5d, 0xb7, 0x20,
595 0x21, 0x9a, 0x2e, 0xb9, 0x6d, 0xfa, 0x1e, 0xc2,
596 0x0e, 0xef, 0x15, 0xab, 0x59, 0x01, 0xfe, 0x43,
597 0x90, 0xf2, 0x62, 0xca, 0x4a, 0x9a, 0x48, 0x38,
598 0xab, 0x6f, 0x9d, 0x21, 0xb3, 0xad, 0xa7, 0x60,
599 0x46, 0xe3, 0xef, 0xd0, 0xe3, 0x1d, 0xc5, 0xe1,
600 0xb8, 0xa1, 0xe2, 0x99, 0x20, 0xc5, 0x76, 0xcc,
601 0xaa, 0x8a, 0xa9, 0x45, 0x55, 0xa0, 0x78, 0x00,
602 0x64, 0xde, 0xcf, 0x5b, 0xdf, 0x26, 0x48, 0xcd,
603 0xba, 0x8a, 0xb5, 0xfb, 0xfd, 0x4a, 0xd5, 0xc4,
604 0xe0, 0x43, 0xa6, 0x71, 0x90, 0xa4, 0x8b, 0xca,
605 0x2e, 0x88, 0x7b, 0xac, 0xb2, 0xdc, 0xf2, 0x01,
606 0xcb, 0xda, 0x6e, 0x91, 0x27, 0x28, 0x44, 0x88,
607 0x9a, 0xd2, 0x12, 0xf1, 0xa6, 0xf5, 0xb7, 0x61,
608 0xce, 0x79, 0x62, 0x52, 0x3c, 0xe6, 0x14, 0x73,
609 0xd1, 0x41, 0x92, 0x50, 0xbd, 0xdc, 0x3b, 0xd0,
610 0xa7, 0x11, 0x8c, 0x3a, 0xe4, 0x2d, 0xf2, 0x52,
611 0xd3, 0x2f, 0x7c, 0x8e, 0x54, 0x90, 0x4e, 0x23,
612 0xae, 0xb3, 0xa0, 0xf3, 0x25, 0x7e, 0x66, 0xaa,
613 0x0f, 0x6f, 0x81, 0x72, 0x77, 0xbb, 0xd3, 0x47,
614 0xe8, 0x05, 0xff, 0xe1, 0x5b, 0xc9, 0x37, 0x50,
615 0x33, 0x49, 0x17, 0xaf, 0xab, 0x1d, 0xe1, 0x15,
616 0xf2, 0xe5, 0x98, 0x5e, 0x2d, 0x05, 0x1f, 0x0d,
617 0x55, 0x97, 0xed, 0xff, 0x5e, 0xe0, 0x0f, 0xc3,
618 0x9c, 0xbd, 0x82, 0xc2, 0x06, 0xbe, 0x45, 0x66,
619 0xae, 0x33, 0xbe, 0x28, 0x48, 0xe9, 0x2d, 0x1a,
620 0xe6, 0x65, 0x8e, 0xdf, 0x76, 0x03, 0x73, 0x4b,
621 0xc0, 0x80, 0x71, 0xf9, 0xac, 0xba, 0xa0, 0xb0,
622 0x19, 0x1a, 0x0a, 0xd4, 0x35, 0x12, 0x88, 0x76,
623 0x05, 0x75, 0x8f, 0x7c, 0xb5, 0xf0, 0x19, 0x75,
624 0x6d, 0x05, 0xcb, 0x0d, 0xbc, 0x8d, 0xe9, 0xf0,
625 0xd4, 0xdb, 0x3c, 0x3c, 0x29, 0x8e, 0x2c, 0x32,
626 0x1d, 0xf7, 0xb6, 0x49, 0xcf, 0xdb, 0x63, 0xee,
627 0x3c, 0xfa, 0x33, 0x73, 0x6f, 0xe4, 0x97, 0x4e,
628 0x2f, 0xc9, 0x4c, 0x5c, 0x65, 0xfe, 0xea, 0xfb,
629 0xc6, 0xdd, 0xc1, 0x1c, 0x47, 0x3f, 0xf4, 0x50,
630 0x2f, 0xde, 0x1b, 0x5b, 0x0b, 0x16, 0xca, 0xb6,
631 0x46, 0x44, 0xf2, 0xc1, 0x0d, 0xa1, 0x1d, 0xa6,
632 0xdb, 0xf0, 0x3d, 0xb1, 0x6c, 0x05, 0x31, 0x85,
633 0x8e, 0x74, 0xae, 0xf2, 0x39, 0x26, 0xf7, 0xc1,
634 0xe7, 0x4c, 0xdd, 0x9d, 0x40, 0xb8, 0xf3, 0xc5,
635 0xc2, 0x16, 0x64, 0x6b, 0xaa, 0xdb, 0x4b, 0x82,
636 0x5c, 0xd3, 0x02, 0xd3, 0x8f, 0x26, 0x79, 0x8d,
637 0xb0, 0x78, 0x70, 0x19, 0x58, 0x0c, 0xb4, 0x31,
638 0x88, 0x44, 0x1c, 0x91, 0x6f, 0xf4, 0x52, 0x39,
639 0xa8, 0xf5, 0xc0, 0x1b, 0xfe, 0xf2, 0x0e, 0x4b,
640 0xac, 0x0a, 0xc2, 0x7e, 0x9c, 0x9b, 0xeb, 0x5d,
641 0x4e, 0x4f, 0x42, 0xd8, 0x71, 0x0a, 0x97, 0x27,
642 0x03, 0x14, 0x96, 0xa6, 0x3d, 0x04, 0xea, 0x9f,
643 0x14, 0x14, 0x27, 0x4c, 0xd9, 0xa2, 0x89, 0x5f,
644 0x65, 0x4a, 0xe1, 0x9d, 0x2c, 0xb8, 0xf8, 0xd4,
645 0x8f, 0x2a, 0x57, 0x36, 0xcc, 0x06, 0x9c, 0x2c,
646 0xc5, 0x13, 0x16, 0xdf, 0xfc, 0xae, 0x22, 0x16,
647 0xa8, 0x2b, 0x71, 0x6f, 0x1d, 0xb3, 0x47, 0x54,
648 0x3f, 0x2d, 0x0a, 0x68, 0x9f, 0x2e, 0xf6, 0x90,
649 0xd8, 0xa1, 0x21, 0x09, 0xd4, 0x97, 0xb9, 0x7b,
650 0x7f, 0x9b, 0x6a, 0xed, 0xd1, 0xf0, 0xe3, 0xb6,
651 0x28, 0xc7, 0x62, 0x82, 0x00, 0xc9, 0x38, 0xa1,
652 0x82, 0x78, 0xce, 0x87, 0xc8, 0x53, 0xac, 0x4f,
653 0x2e, 0x31, 0xb9, 0x50, 0x7f, 0x36, 0x00, 0x4a,
654 0x32, 0xe6, 0xd8, 0xbb, 0x59, 0x45, 0x0e, 0x91,
655 0x1b, 0x38, 0xa9, 0xbc, 0xb9, 0x5e, 0x6c, 0x6a,
656 0x9c, 0x03, 0x01, 0x1c, 0xde, 0xe8, 0x1f, 0x1e,
657 0xe3, 0xde, 0x25, 0xa2, 0x56, 0x79, 0xe1, 0xbd,
658 0x58, 0xc4, 0x93, 0xe6, 0xd0, 0x8a, 0x4d, 0x08,
659 0xab, 0xf7, 0xaa, 0xc3, 0x7d, 0xc1, 0xee, 0x68,
660 0x37, 0xbc, 0x78, 0x0b, 0x19, 0x68, 0x2b, 0x2b,
661 0x2e, 0x6d, 0xc4, 0x6f, 0xaa, 0x3b, 0xc6, 0x19,
662 0xcb, 0xf1, 0x58, 0xb9, 0x60, 0x85, 0x45, 0xae,
663 0x52, 0x97, 0xba, 0x24, 0x32, 0x13, 0x72, 0x16,
664 0x6e, 0x7b, 0xc1, 0x98, 0xac, 0xb1, 0xed, 0xb4,
665 0xcc, 0x6c, 0xcf, 0x45, 0xfc, 0x50, 0x89, 0x80,
666 0x8e, 0x7a, 0xa4, 0xd3, 0x64, 0x50, 0x63, 0x37,
667 0xc9, 0x6c, 0xf1, 0xc4, 0x3d, 0xfb, 0xde, 0x5a,
668 0x5c, 0xa8, 0x21, 0x35, 0xe6, 0x2e, 0x8c, 0x2a,
669 0x3c, 0x12, 0x17, 0x79, 0x9a, 0x0d, 0x2e, 0x79,
670 0xeb, 0x67, 0x1f, 0x2b, 0xf8, 0x6e, 0xca, 0xc1,
671 0xfa, 0x45, 0x18, 0x9e, 0xdf, 0x6a, 0xe6, 0xcb,
672 0xe9, 0x5c, 0xc3, 0x09, 0xaf, 0x93, 0x58, 0x13,
673 0xbf, 0x90, 0x84, 0x87, 0x75, 0xd6, 0x82, 0x28,
674 0x8d, 0xe7, 0x2f, 0xa3, 0xfb, 0x97, 0x74, 0x2a,
675 0x73, 0x04, 0x82, 0x06, 0x76, 0x69, 0xb1, 0x0b,
676 0x19, 0xfc, 0xae, 0xb3, 0xdd, 0x2a, 0xe5, 0xc1,
677 0x05, 0xd8, 0x80, 0x95, 0x22, 0x90, 0x71, 0xfc,
678 0xc2, 0x92, 0x42, 0xfd, 0xf1, 0x70, 0xb4, 0x68,
679 0x88, 0xa4, 0x9e, 0x0a, 0x24, 0x40, 0x13, 0xc8,
680 0xa2, 0x56, 0x4f, 0x39, 0xe6, 0x06, 0xf1, 0xdc,
681 0xf5, 0x13, 0x0e, 0xad, 0x9c, 0x8b, 0xaf, 0xe9,
682 0xe3, 0x88, 0x72, 0xff, 0xa0, 0x6d, 0xda, 0x08,
683 0x70, 0xb9, 0x2e, 0x83, 0xc5, 0xbb, 0x32, 0xa5,
684 0x74, 0xc7, 0xfb, 0x7b, 0x76, 0xaf, 0x02, 0xbb,
685 0x2b, 0xb8, 0x5e, 0x65, 0x02, 0xfe, 0x0e, 0xa0,
686 0x99, 0xce, 0x01, 0x3b, 0x35, 0xe1, 0xb0, 0x22,
687 0xe5, 0x94, 0xbd, 0xdd, 0x8e, 0xbb, 0xf6, 0x75,
688 0xbf, 0xbf, 0xee, 0x7a, 0xb1, 0x58, 0xb4, 0x81,
689 0xb8, 0x39, 0x3e, 0xb6, 0x1e, 0xde, 0xda, 0x1b,
690 0xd5, 0xf7, 0xdd, 0x7d, 0x65, 0x9c, 0xaa, 0x56,
691 0x93, 0xb8, 0xaf, 0x48, 0x53, 0xc7, 0x22, 0xe4,
692 0x1c, 0xdf, 0xe9, 0x79, 0xb4, 0x20, 0x89, 0xcc,
693 0x2a, 0x79, 0x2c, 0x09, 0xbe, 0x78, 0xcf, 0xcc,
694 0xf2, 0x90, 0xd6, 0x65, 0xc5, 0x29, 0xfc, 0xda,
695 0x69, 0xfc, 0xc0, 0xd6, 0x70, 0x99, 0x61, 0x3f,
696 0x60, 0x02, 0xd8, 0x12, 0x22, 0xc8, 0x34, 0xc6,
697 0x3b, 0xb3, 0xc2, 0x33, 0xa1, 0x5c, 0x8f, 0x4c,
698 0xd1, 0x52, 0x72, 0xf2, 0x42, 0x05, 0x8e, 0x18,
699 0x1f, 0x16, 0xda, 0xb8, 0x53, 0xa1, 0x5f, 0x01,
700 0x32, 0x1b, 0x90, 0xb3, 0x53, 0x9b, 0xd0, 0x85,
701 0x61, 0x2d, 0x17, 0xed, 0x0a, 0xa4, 0xa5, 0x27,
702 0x09, 0x75, 0x7c, 0xbc, 0x30, 0xf7, 0x5e, 0x59,
703 0x9a, 0x07, 0x96, 0x84, 0x28, 0x86, 0x4b, 0xa7,
704 0x22, 0x35, 0x28, 0xc7, 0xed, 0x0d, 0xc3, 0xce,
705 0x98, 0xcc, 0x2d, 0xec, 0xd4, 0x98, 0x09, 0x8e,
706 0x52, 0x5f, 0x2b, 0x9a, 0x13, 0xbe, 0x99, 0x16,
707 0x73, 0xd1, 0x1f, 0x81, 0xe5, 0xa2, 0x08, 0x78,
708 0xcb, 0x0c, 0x20, 0xd4, 0xa5, 0xea, 0x4b, 0x5b,
709 0x95, 0x5a, 0x92, 0x9a, 0x52},
710 "id-Gost28147-89-CryptoPro-A-ParamSet",
713 0x1b, 0x5d, 0xdb, 0x77, 0xcf, 0xf9, 0xec, 0x95,
714 0x5e, 0xcc, 0x67, 0x9f, 0x5d, 0x28, 0xad, 0x4a,
715 0x27, 0xf4, 0x32, 0xc6, 0xb2, 0xcb, 0xb1, 0x45,
716 0x6a, 0x88, 0x14, 0x0c, 0x9b, 0x9b, 0x5f, 0x48},
719 0x71, 0x58, 0x8c, 0xe1, 0x55, 0xf4, 0xf6, 0xb3},
721 0x8e, 0xcd, 0x8f, 0xc8, 0xac, 0xe1, 0x15, 0x48,
722 0x2d, 0xae, 0x24, 0x8a, 0xc7, 0xfb, 0xba, 0x0f,
723 0x1d, 0x8a, 0x95, 0xa2, 0x43, 0xef, 0xcb, 0xdc,
724 0x59, 0x57, 0xa7, 0xc7, 0x0e, 0xe3, 0xe2, 0xb9,
725 0x0d, 0x86, 0x29, 0x62, 0xcb, 0x83, 0x4d, 0x07,
726 0x0c, 0x40, 0xd4, 0x7b, 0x2e, 0xca, 0xba, 0xbf,
727 0x4a, 0x60, 0x3b, 0x31, 0x98, 0xc8, 0x88, 0x47,
728 0xd9, 0x82, 0xab, 0xfc, 0x8f, 0x48, 0xe2, 0x46,
729 0xab, 0xd3, 0xa1, 0xab, 0x8a, 0x05, 0x22, 0x8c,
730 0xf4, 0xec, 0x9a, 0x1e, 0x76, 0xab, 0x1a, 0x60,
731 0xd9, 0x25, 0x6b, 0xb8, 0x56, 0xe5, 0xb2, 0xea,
732 0x10, 0xf3, 0x62, 0x04, 0x32, 0x5e, 0xaa, 0x3b,
733 0x7b, 0x57, 0xbc, 0x3b, 0x8b, 0x43, 0x47, 0xf2,
734 0xd5, 0x03, 0x7e, 0x51, 0x01, 0xff, 0x77, 0x28,
735 0xca, 0x90, 0xa3, 0xfe, 0x7e, 0x2e, 0x70, 0x16,
736 0x75, 0x18, 0x44, 0xf0, 0x1b, 0x85, 0x05, 0xea,
737 0xe3, 0x21, 0xf7, 0x26, 0x86, 0x76, 0x3c, 0x67,
738 0x9d, 0xfc, 0xbc, 0x10, 0x7f, 0x77, 0xe4, 0xed,
739 0xd3, 0x12, 0xf8, 0x83, 0x00, 0x1f, 0x4b, 0x92,
740 0x95, 0x92, 0x5c, 0xf3, 0x5a, 0xf3, 0xb7, 0xd0,
741 0xa9, 0x5f, 0xf2, 0x18, 0xc4, 0x66, 0x62, 0xc1,
742 0x84, 0x0e, 0x66, 0xe8, 0x80, 0x7d, 0x1f, 0xf0,
743 0xba, 0x01, 0x9b, 0x71, 0xae, 0x93, 0xcc, 0x27,
744 0x54, 0x34, 0x9a, 0xbd, 0xca, 0xee, 0x52, 0x09,
745 0x92, 0x9d, 0xb0, 0xd5, 0xd9, 0xba, 0x2f, 0xb9,
746 0x96, 0xdc, 0xfa, 0xbd, 0xce, 0xea, 0x1a, 0x7b,
747 0x9a, 0x1d, 0x13, 0xa7, 0x11, 0xe2, 0x9a, 0x64,
748 0xf6, 0xd3, 0xee, 0xc6, 0x33, 0xb7, 0x6e, 0xef,
749 0x25, 0x9e, 0x1e, 0x7c, 0xe3, 0x1f, 0x2c, 0x6e,
750 0xa9, 0xc0, 0xf8, 0xc1, 0xbf, 0x3b, 0xf8, 0x34,
751 0x03, 0x9b, 0xa1, 0x40, 0x5b, 0x0c, 0x3c, 0x09,
752 0x66, 0x9d, 0x63, 0xe2, 0xe2, 0x04, 0x8f, 0x06,
753 0x84, 0x74, 0x68, 0xb2, 0x5c, 0x3b, 0x4c, 0xad,
754 0x0b, 0x3f, 0x03, 0xb3, 0x07, 0x8a, 0x64, 0xa7,
755 0x36, 0x56, 0x26, 0x39, 0x66, 0xda, 0xe9, 0x6d,
756 0x1b, 0xd5, 0x88, 0xe8, 0x5c, 0xaf, 0x5a, 0x4c,
757 0x49, 0xf7, 0xf5, 0xb7, 0x78, 0xf0, 0xde, 0xec,
758 0xcd, 0x16, 0x23, 0x9e, 0x8c, 0x13, 0xbe, 0x6b,
759 0x6f, 0x9b, 0x07, 0xe5, 0xbb, 0xcc, 0x3a, 0x1b,
760 0x6f, 0x43, 0xdf, 0xff, 0x46, 0x2a, 0xae, 0x47,
761 0x19, 0x18, 0x9a, 0x25, 0x09, 0xc9, 0x24, 0x40,
762 0x0c, 0x4b, 0xa7, 0xda, 0x5e, 0x0d, 0xee, 0xfa,
763 0x62, 0x45, 0x8e, 0xcc, 0x2f, 0x23, 0x08, 0x1d,
764 0x92, 0xf0, 0xfe, 0x82, 0x0f, 0xd7, 0x11, 0x60,
765 0x7e, 0x0b, 0x0b, 0x75, 0xf4, 0xf5, 0x3b, 0xc0,
766 0xa4, 0xe8, 0x72, 0xa5, 0xb6, 0xfa, 0x5a, 0xad,
767 0x5a, 0x4f, 0x39, 0xb5, 0xa2, 0x12, 0x96, 0x0a,
768 0x32, 0x84, 0xb2, 0xa1, 0x06, 0x68, 0x56, 0x57,
769 0x97, 0xa3, 0x7b, 0x22, 0x61, 0x76, 0x5d, 0x30,
770 0x1a, 0x31, 0xab, 0x99, 0x06, 0xc5, 0x1a, 0x96,
771 0xcf, 0xcf, 0x14, 0xff, 0xb2, 0xc4, 0xcc, 0x2b,
772 0xbf, 0x0c, 0x9d, 0x91, 0x8f, 0x79, 0x5b, 0xbc,
773 0xa9, 0x6b, 0x91, 0x6a, 0xb4, 0x93, 0x5c, 0x7b,
774 0x5d, 0xc2, 0x8a, 0x75, 0xc0, 0xc1, 0x08, 0xfa,
775 0x99, 0xf9, 0x4d, 0x5e, 0x0c, 0x06, 0x64, 0x60,
776 0xa9, 0x01, 0x4a, 0x34, 0x0f, 0x33, 0x84, 0x95,
777 0x69, 0x30, 0xc1, 0x1c, 0x36, 0xf8, 0xfc, 0x30,
778 0x23, 0xb2, 0x71, 0xe5, 0x52, 0x4d, 0x12, 0x1a,
779 0xc9, 0xbe, 0xee, 0xc9, 0xcb, 0x01, 0x85, 0xf3,
780 0xdb, 0x30, 0xf9, 0x41, 0xa9, 0x40, 0xb0, 0x06,
781 0x29, 0x77, 0xcd, 0xc5, 0xec, 0x58, 0x02, 0x48,
782 0x83, 0x53, 0x44, 0x6a, 0xd2, 0xca, 0x05, 0xd8,
783 0x5a, 0x08, 0xeb, 0xa9, 0xf4, 0xe6, 0xc7, 0x9d,
784 0xd5, 0x7b, 0x74, 0x0b, 0x31, 0xb7, 0xa5, 0x57,
785 0x7c, 0x7a, 0xfd, 0x1a, 0x0e, 0xd7, 0x97, 0x41,
786 0xbf, 0xdd, 0xc6, 0x19, 0x6c, 0x77, 0x8c, 0x18,
787 0x52, 0x57, 0x83, 0xba, 0x71, 0x25, 0xee, 0x39,
788 0xbb, 0xe2, 0x43, 0xa0, 0x14, 0xdc, 0x0e, 0x84,
789 0xb4, 0x2b, 0xde, 0x3e, 0xe5, 0x36, 0xb7, 0xa2,
790 0x92, 0x98, 0x05, 0xb8, 0x96, 0xe5, 0xd0, 0x8c,
791 0x08, 0x93, 0x35, 0xc2, 0x81, 0xe0, 0xfc, 0x59,
792 0x71, 0xe2, 0x44, 0x49, 0x5d, 0xda, 0xfb, 0x9c,
793 0xaa, 0x70, 0x9f, 0x43, 0xa8, 0xa5, 0xd9, 0x67,
794 0xd9, 0x8f, 0xa3, 0x1e, 0xbe, 0x0e, 0xec, 0xdf,
795 0x12, 0x2b, 0x6a, 0xe7, 0x1c, 0x12, 0x17, 0xe7,
796 0xc4, 0x6d, 0x50, 0xc9, 0x52, 0x7a, 0xd5, 0xe8,
797 0x7f, 0xbc, 0x07, 0x15, 0xac, 0xdb, 0x93, 0x66,
798 0xb1, 0xf0, 0xa7, 0x7b, 0x2f, 0xe9, 0xec, 0xd0,
799 0x47, 0x69, 0x59, 0x87, 0xf1, 0x4c, 0x3e, 0x4b,
800 0x9b, 0x11, 0x79, 0x13, 0xe4, 0x96, 0xf6, 0x56,
801 0x04, 0x6e, 0x0b, 0x33, 0xfc, 0x40, 0xf6, 0xc7,
802 0xc1, 0x43, 0xb1, 0xbf, 0x0e, 0xb3, 0x87, 0xfd,
803 0x0b, 0x1c, 0x63, 0x46, 0x3a, 0xd3, 0xa0, 0x17,
804 0x59, 0x25, 0x94, 0x6c, 0x9c, 0x3d, 0x0c, 0x81,
805 0xce, 0x82, 0x72, 0x42, 0x28, 0xf9, 0x37, 0x6a,
806 0x6d, 0xe4, 0x12, 0xf4, 0x21, 0xaa, 0xf7, 0xfe,
807 0x27, 0x55, 0x40, 0x1a, 0x14, 0xc3, 0x39, 0x5b,
808 0xbf, 0x63, 0xc2, 0x5f, 0x10, 0x1f, 0x14, 0x25,
809 0xd0, 0xce, 0xf3, 0x14, 0x48, 0x13, 0xa5, 0x0b,
810 0x4d, 0x38, 0xcf, 0x0d, 0x34, 0xc0, 0x0a, 0x11,
811 0xb4, 0xb5, 0x72, 0xc8, 0x4b, 0xc2, 0x6f, 0xe7,
812 0x9d, 0x93, 0xf7, 0xdf, 0xb8, 0x43, 0x72, 0x7e,
813 0xda, 0x3e, 0x20, 0x1f, 0xbc, 0x21, 0x2a, 0xce,
814 0x00, 0xfa, 0x96, 0x9f, 0x3d, 0xe5, 0x88, 0x96,
815 0xef, 0x29, 0x84, 0xdf, 0x6c, 0x1c, 0x96, 0xd8,
816 0x58, 0x47, 0xaa, 0x92, 0xf3, 0x07, 0xe5, 0xfb,
817 0xaf, 0xea, 0x95, 0x7e, 0x0b, 0x71, 0xcd, 0x81,
818 0x0f, 0xb7, 0x0a, 0x59, 0x8f, 0x31, 0x4d, 0xd1,
819 0xc3, 0xf3, 0x2f, 0x70, 0x5c, 0x59, 0x18, 0x97,
820 0xaf, 0x77, 0x95, 0x5e, 0xaf, 0x40, 0x06, 0x12,
821 0x81, 0x61, 0x86, 0x08, 0x4e, 0xbc, 0x89, 0x46,
822 0x07, 0x2e, 0x5b, 0x10, 0xaa, 0x12, 0xf0, 0xa7,
823 0x84, 0xe2, 0x9a, 0x08, 0xf1, 0xde, 0x59, 0xe3,
824 0x0e, 0x47, 0x4b, 0xff, 0xc3, 0xc9, 0x18, 0xaf,
825 0x95, 0x9c, 0x67, 0x2a, 0xde, 0x8a, 0x7a, 0x99,
826 0x04, 0xc4, 0xb8, 0x97, 0x4c, 0x04, 0x29, 0x71,
827 0x05, 0xda, 0xb3, 0xd6, 0xdb, 0x6c, 0x71, 0xe6,
828 0xe8, 0x03, 0xbf, 0x94, 0x7d, 0xde, 0x3d, 0xc8,
829 0x44, 0xfa, 0x7d, 0x62, 0xb4, 0x36, 0x03, 0xee,
830 0x36, 0x52, 0x64, 0xb4, 0x85, 0x6d, 0xd5, 0x78,
831 0xf0, 0x6f, 0x67, 0x2d, 0x0e, 0xe0, 0x2c, 0x88,
832 0x9b, 0x55, 0x19, 0x29, 0x40, 0xf6, 0x8c, 0x12,
833 0xbb, 0x2c, 0x83, 0x96, 0x40, 0xc0, 0x36, 0xf5,
834 0x77, 0xff, 0x70, 0x8c, 0x75, 0x92, 0x0b, 0xad,
835 0x05, 0x9b, 0x7e, 0xa2, 0xfc, 0xa9, 0xd1, 0x64,
836 0x76, 0x82, 0x13, 0xba, 0x22, 0x5e, 0x33, 0x0e,
837 0x26, 0x70, 0xa9, 0xbe, 0x74, 0x28, 0xf5, 0xe2,
838 0xc4, 0x96, 0xee, 0x3a, 0xbc, 0x97, 0xa6, 0x2c,
839 0x2a, 0xe0, 0x64, 0x8d, 0x35, 0xc6, 0x1a, 0xca,
840 0xf4, 0x92, 0xfa, 0xc3, 0xf1, 0x1f, 0x98, 0xe4,
841 0x43, 0x88, 0x69, 0x3a, 0x09, 0xbf, 0x63, 0xe5,
842 0x96, 0x29, 0x0b, 0x9b, 0x62, 0x23, 0x14, 0x8a,
843 0x95, 0xe4, 0x1c, 0x5c, 0x0a, 0xa9, 0xc5, 0xb9,
844 0x6f, 0x4f, 0x2b, 0x25, 0x6f, 0x74, 0x1e, 0x18,
845 0xd5, 0xfe, 0x27, 0x7d, 0x3f, 0x6e, 0x55, 0x2c,
846 0x67, 0xe6, 0xde, 0xb5, 0xcc, 0xc0, 0x2d, 0xff,
847 0xc4, 0xe4, 0x06, 0x21, 0xa5, 0xc8, 0xd3, 0xd6,
848 0x6c, 0xa1, 0xc3, 0xfb, 0x88, 0x92, 0xb1, 0x1d,
849 0x90, 0xe1, 0x35, 0x05, 0x9b, 0x29, 0x6d, 0xba,
850 0xf1, 0xf4, 0x1e, 0x23, 0x2e}
852 { /* Calculated by libcapi10, CryptoPro CSP
856 "id-Gost28147-89-CryptoPro-A-ParamSet",
859 0x07, 0x52, 0x65, 0xe7, 0xca, 0xa3, 0xca, 0x45,
860 0xcf, 0x3a, 0x05, 0x1d, 0x38, 0x03, 0x53, 0x0c,
861 0x22, 0x31, 0xba, 0x99, 0x4f, 0x9b, 0x6a, 0x1b,
862 0x7e, 0x09, 0x9d, 0x4e, 0xb5, 0xc9, 0x84, 0x2e},
865 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
867 0x3d, 0x05, 0x07, 0x57, 0xc0, 0x75, 0x89, 0x97,
868 0xd6, 0x94, 0x49, 0x11, 0x1d, 0xd0, 0x91, 0xee}
870 { /* Calculated by libcapi10, CryptoPro CSP
872 U64(4294967296) + 16,
874 "id-Gost28147-89-CryptoPro-A-ParamSet",
877 0x75, 0xa3, 0x3c, 0xae, 0x03, 0x6b, 0x10, 0xdb,
878 0xc1, 0x56, 0x50, 0x89, 0x03, 0xd2, 0x9f, 0x91,
879 0xee, 0xe8, 0x64, 0x1d, 0x43, 0xf2, 0x4e, 0xf8,
880 0xf2, 0x6c, 0xed, 0xda, 0x8f, 0xe4, 0x88, 0xe9},
883 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
885 0xfa, 0x6c, 0x96, 0x78, 0xe2, 0xf8, 0xdd, 0xaa,
886 0x67, 0x5a, 0xc9, 0x5d, 0x57, 0xf1, 0xbd, 0x99}
888 { /* Calculated by libcapi10, CryptoPro CSP
892 0xd6, 0xcf, 0x31, 0x96, 0x9c, 0xa1, 0xfb, 0xd6,
893 0x8d, 0xa3, 0xdd, 0x01, 0xd9, 0x88, 0xc0, 0x2f,
894 0xbc, 0x46, 0xc7, 0x3a, 0xe4, 0x21, 0x86, 0x96,
895 0x8d, 0xe2, 0xca, 0xb6, 0x37, 0xa2, 0xe1, 0xa8,
896 0x7e, 0xa7, 0x79, 0x2e, 0xa4, 0x56, 0x75, 0x7f,
897 0x3e, 0x55, 0x8b, 0x43, 0xae, 0x65, 0xdf, 0xaa,
898 0x42, 0xb6, 0x00, 0xa6, 0x61, 0x03, 0x0d, 0xd3,
899 0x41, 0x02, 0x27, 0x23, 0x95, 0x79, 0x9b, 0x34,
900 0x81, 0xa9, 0x86, 0xb5, 0xa7, 0x90, 0xe2, 0xae,
901 0xc4, 0x2f, 0xc3, 0x8e, 0x32, 0x56, 0x13, 0xfa,
902 0x4d, 0x4e, 0x9f, 0x15, 0x75, 0x7e, 0x74, 0xdc,
903 0x32, 0x2d, 0xee, 0x4d, 0x67, 0x70, 0x9f, 0x62,
904 0xb9, 0xc4, 0xdb, 0x24, 0x84, 0xcc, 0x16, 0x7b,
905 0xda, 0x22, 0xf7, 0xc5, 0xf3, 0x93, 0x35, 0x73,
906 0xc6, 0x03, 0x1c, 0x77, 0xa5, 0xf2, 0x76, 0x56,
907 0xb4, 0x95, 0xd4, 0x7e, 0x0d, 0x20, 0xc6, 0x6e,
908 0xee, 0x8f, 0x25, 0x48, 0xff, 0x7e, 0x01, 0x3a,
909 0xb4, 0x1f, 0xaa, 0x35, 0xc0, 0x33, 0x58, 0x9c,
910 0xb5, 0xba, 0x65, 0x4b, 0xd3, 0x51, 0x14, 0xec,
911 0x61, 0xce, 0xe4, 0xba, 0x49, 0xba, 0x39, 0x32,
912 0xab, 0xce, 0x81, 0x72, 0xce, 0xab, 0xed, 0xd4,
913 0xd2, 0x19, 0x87, 0x85, 0x92, 0xfa, 0x64, 0x34,
914 0xd8, 0x86, 0xf4, 0x8a, 0x08, 0x3c, 0xde, 0xee,
915 0x97, 0x92, 0x92, 0x69, 0xba, 0x9b, 0x5f, 0x7a,
916 0x03, 0xc1, 0x5d, 0x43, 0x02, 0x8c, 0xbe, 0xd2,
917 0x46, 0x72, 0x81, 0x40, 0x7d, 0x68, 0x98, 0x45,
918 0x0b, 0x54, 0x27, 0x1c, 0xaf, 0x80, 0x42, 0xe4,
919 0xd5, 0xd4, 0xe4, 0xa2, 0x98, 0x07, 0x8f, 0x03,
920 0xf5, 0x2c, 0x8c, 0x88, 0xca, 0x5a, 0xde, 0xe4,
921 0x9f, 0xb1, 0x5f, 0x82, 0xff, 0x20, 0x67, 0x52,
922 0x85, 0x84, 0x4f, 0xc8, 0xfe, 0xa7, 0x9e, 0xae,
923 0x1c, 0xfa, 0xb8, 0x75, 0xd3, 0xf7, 0x9f, 0x0d,
924 0xda, 0x2d, 0xe6, 0xcc, 0x86, 0x6b, 0xa4, 0x14,
925 0x65, 0xc3, 0xf9, 0x15, 0xbc, 0x87, 0xf5, 0xae,
926 0x8c, 0x10, 0xd4, 0xce, 0x5b, 0x9c, 0xe2, 0xdd,
927 0x42, 0x03, 0x09, 0x87, 0x47, 0xed, 0x5d, 0xd0,
928 0x7a, 0x69, 0x4c, 0xfa, 0x43, 0x7d, 0xbf, 0x07,
929 0x85, 0x6a, 0xee, 0x68, 0xe6, 0x7a, 0x57, 0xb2,
930 0x20, 0x8d, 0x80, 0xf2, 0x91, 0x6f, 0x5c, 0x07,
931 0x8c, 0xe4, 0x6a, 0x49, 0x90, 0x85, 0x8b, 0x77,
932 0x29, 0x56, 0x1c, 0x5e, 0xa9, 0x3f, 0xab, 0x8b,
933 0x79, 0xa3, 0x6f, 0x6b, 0x34, 0xcb, 0x61, 0xf6,
934 0xe6, 0x92, 0xd1, 0x48, 0x9e, 0x11, 0xa2, 0x82,
935 0xc0, 0x4e, 0x23, 0xd2, 0x15, 0x0d, 0x8d, 0xff,
936 0xfa, 0x17, 0x9d, 0x81, 0xb8, 0xbc, 0xd7, 0x5b,
937 0x08, 0x81, 0x20, 0x40, 0xc0, 0x3c, 0x06, 0x8b,
938 0x1a, 0x88, 0x0b, 0x4b, 0x7b, 0x31, 0xf5, 0xd4,
939 0x4e, 0x09, 0xd1, 0x4d, 0x0d, 0x7f, 0x45, 0xd1,
940 0x09, 0x35, 0xba, 0xce, 0x65, 0xdd, 0xf2, 0xb8,
941 0xfb, 0x7a, 0xbc, 0xc4, 0x4b, 0xc8, 0x75, 0xda,
942 0x6b, 0xce, 0x3d, 0xe8, 0x94, 0xcc, 0x23, 0x6f,
943 0xb0, 0x3b, 0x4f, 0x7d, 0x07, 0xb9, 0x0f, 0x62,
944 0x92, 0x7e, 0xda, 0x70, 0x50, 0xce, 0xd3, 0x28,
945 0x12, 0x11, 0x00, 0xeb, 0x8d, 0x63, 0x70, 0x78,
946 0xa8, 0x7b, 0x76, 0xab, 0xc6, 0x40, 0xc0, 0x4e,
947 0x80, 0xdd, 0xf0, 0xfe, 0x83, 0x72, 0x56, 0x4c,
948 0x09, 0x4c, 0xf1, 0x72, 0x72, 0x86, 0x26, 0x31,
949 0xc3, 0xc2, 0xdc, 0x8e, 0xc7, 0xf4, 0x35, 0xec,
950 0x17, 0x06, 0x63, 0x47, 0x49, 0x88, 0x47, 0xaf,
951 0xb3, 0x38, 0x4f, 0x7e, 0x44, 0x95, 0xb5, 0xbb,
952 0x1d, 0xbd, 0x5a, 0x91, 0x5b, 0xd0, 0x1a, 0xdf,
953 0x0d, 0x0b, 0x50, 0xd8, 0xe2, 0x0e, 0xc5, 0x00,
954 0x2d, 0x5b, 0x29, 0x19, 0xaa, 0x2b, 0x64, 0xc5,
955 0x40, 0x31, 0x48, 0x11, 0xbc, 0x04, 0xd1, 0xcf,
956 0x6d, 0xf9, 0xa5, 0x2f, 0x4a, 0xc9, 0x82, 0xfa,
957 0x59, 0xe1, 0xfc, 0xab, 0x1c, 0x33, 0x26, 0x0a,
958 0x5f, 0xef, 0xf2, 0x06, 0xd8, 0xd3, 0x7e, 0x16,
959 0x58, 0x16, 0x78, 0x73, 0xae, 0xba, 0xeb, 0xe5,
960 0x3d, 0xb2, 0x0a, 0xb3, 0x32, 0x2d, 0x14, 0xa4,
961 0xfa, 0x3f, 0x1f, 0x43, 0xf9, 0x7b, 0xa9, 0x43,
962 0x98, 0x18, 0x94, 0x07, 0x07, 0xe5, 0x19, 0x34,
963 0xa8, 0x16, 0x5f, 0x71, 0x67, 0xaa, 0x29, 0xe5,
964 0xfa, 0xf0, 0x83, 0x06, 0x1d, 0x9d, 0xfc, 0xfe,
965 0xfe, 0x8c, 0xb5, 0xb2, 0xa9, 0xe7, 0xa0, 0x40,
966 0x60, 0xb6, 0x71, 0x9e, 0xab, 0x5b, 0x83, 0xb9,
967 0x0c, 0x2b, 0x58, 0x23, 0x80, 0x09, 0x9e, 0x5d,
968 0x94, 0x7d, 0x40, 0x76, 0xa9, 0x16, 0x96, 0x9e,
969 0x83, 0xe0, 0x0d, 0xec, 0xa0, 0xec, 0x76, 0x2a,
970 0xb7, 0xa0, 0xff, 0xb8, 0x50, 0x4c, 0x5b, 0xc6,
971 0x8b, 0x0a, 0x65, 0x2e, 0xfe, 0xb4, 0x40, 0x9a,
972 0x01, 0xd8, 0xc6, 0xa3, 0xab, 0x99, 0xa2, 0xc5,
973 0x0c, 0x08, 0xc4, 0xb7, 0xee, 0x4d, 0x1d, 0xc4,
974 0x08, 0x15, 0xd0, 0xdb, 0xaa, 0x63, 0x4f, 0x31,
975 0xeb, 0x14, 0x97, 0x43, 0xbd, 0xc1, 0x94, 0x08,
976 0xe6, 0xde, 0x43, 0x9f, 0x95, 0x0b, 0x96, 0x7e,
977 0x7f, 0x3c, 0x68, 0xba, 0x6f, 0xc4, 0xc9, 0x35,
978 0x2b, 0xc4, 0x0e, 0xda, 0x1f, 0x91, 0x68, 0x64,
979 0x63, 0x34, 0x73, 0xbe, 0x57, 0x75, 0xb9, 0xed,
980 0xf7, 0x2d, 0x3b, 0x05, 0x21, 0x93, 0x28, 0x48,
981 0x96, 0x95, 0x97, 0xa0, 0xd2, 0x7d, 0x78, 0xbb,
982 0x6a, 0x49, 0x8f, 0x76, 0x55, 0x74, 0x63, 0xb9,
983 0xc5, 0x36, 0x12, 0x25, 0xbf, 0x03, 0x82, 0x8f,
984 0xf0, 0xf6, 0x80, 0xbb, 0x33, 0xb4, 0xf4, 0x17,
985 0x27, 0x1c, 0xf3, 0x4c, 0x10, 0xa3, 0xe4, 0xd1,
986 0x55, 0xd9, 0x68, 0x21, 0x4e, 0x5a, 0x83, 0x67,
987 0xbf, 0xf8, 0x3c, 0x7d, 0x4e, 0x62, 0xd3, 0x28,
988 0xa7, 0x26, 0x6f, 0xe9, 0xee, 0xc2, 0x0b, 0x2d,
989 0x03, 0x84, 0xb1, 0xff, 0xd6, 0x68, 0x1f, 0xb6,
990 0xf2, 0xe4, 0x0f, 0xda, 0x2d, 0xee, 0x5f, 0x6e,
991 0x21, 0xc8, 0xe1, 0xfc, 0xad, 0x6b, 0x0e, 0x04,
992 0x7d, 0xaf, 0xc2, 0x3b, 0xa5, 0x68, 0x9b, 0x0c,
993 0xf3, 0x56, 0xf3, 0xda, 0x8d, 0xc8, 0x7d, 0x39,
994 0xdc, 0xd5, 0x99, 0xc6, 0x01, 0x10, 0xce, 0x42,
995 0x1b, 0xac, 0x48, 0xdc, 0x97, 0x78, 0x0a, 0xec,
996 0xb3, 0x8f, 0x47, 0x35, 0xa3, 0x6a, 0x64, 0xb2,
997 0x8e, 0x63, 0x69, 0x22, 0x66, 0xae, 0x2e, 0xe0,
998 0x88, 0xf9, 0x40, 0x3c, 0xc9, 0xa2, 0x57, 0x61,
999 0xf6, 0xad, 0xf0, 0xdc, 0x90, 0x56, 0x3f, 0x06,
1000 0x9b, 0x7d, 0xbd, 0xc2, 0x81, 0x02, 0xab, 0xb8,
1001 0x15, 0x09, 0x88, 0x4a, 0xff, 0x2f, 0x31, 0xbf,
1002 0x5e, 0xfa, 0x6a, 0x7e, 0xf6, 0xc5, 0xa7, 0xf7,
1003 0xd5, 0xab, 0x55, 0xac, 0xae, 0x0d, 0x8c, 0x8d,
1004 0x7f, 0x4b, 0x25, 0xbb, 0x32, 0xff, 0x11, 0x33,
1005 0x2e, 0x37, 0x37, 0x69, 0x96, 0x15, 0x17, 0xb1,
1006 0x17, 0x49, 0xe0, 0x9a, 0x9c, 0xd9, 0x5b, 0x8d,
1007 0x58, 0xa3, 0x1d, 0x92, 0x87, 0xf8, 0x80, 0xb9,
1008 0xbd, 0x5a, 0xec, 0x40, 0xe1, 0x00, 0x33, 0x60,
1009 0xe4, 0x86, 0x16, 0x6d, 0x61, 0x81, 0xf2, 0x28,
1010 0x6a, 0xa7, 0xce, 0x3f, 0x95, 0xae, 0x43, 0xca,
1011 0xe1, 0x3f, 0x81, 0x74, 0x7e, 0x1c, 0x47, 0x17,
1012 0x95, 0xc6, 0x60, 0xda, 0x74, 0x77, 0xd9, 0x9f,
1013 0xfa, 0x92, 0xb4, 0xbe, 0xe1, 0x23, 0x98, 0x18,
1014 0x95, 0x63, 0x03, 0x13, 0x4c, 0x1a, 0x2d, 0x41,
1015 0xcd, 0xe4, 0x84, 0xf7, 0xe6, 0x38, 0xef, 0xff,
1016 0x95, 0xb2, 0xe8, 0x7c, 0x8f, 0x58, 0xb5, 0xb5,
1017 0xed, 0x27, 0x7f, 0x3c, 0x18, 0xab, 0xbe, 0x7f,
1018 0x4f, 0xe2, 0x35, 0x15, 0x71, 0xb7, 0x6f, 0x85,
1019 0x38, 0x9b, 0x88, 0xf6, 0x9c, 0x8d, 0x43, 0xb5,
1020 0x58, 0x9e, 0xf2, 0xd1, 0x96, 0xbe, 0xb7, 0xad,
1022 "id-Gost28147-89-CryptoPro-A-ParamSet",
1025 0x80, 0xd9, 0xa0, 0xdc, 0x21, 0xf9, 0x30, 0x40,
1026 0x75, 0xfe, 0x49, 0x1b, 0x9e, 0x71, 0x90, 0x91,
1027 0x78, 0x88, 0x21, 0x60, 0x39, 0xe7, 0xc9, 0x2b,
1028 0xfb, 0x55, 0x1d, 0xf4, 0xdd, 0x2b, 0x0a, 0x01},
1032 0x90, 0xf2, 0x11, 0x9a}
1034 { /* Calculated by libcapi10, CryptoPro CSP
1038 0x1d, 0xeb, 0xe6, 0x79, 0x0a, 0x59, 0x00, 0xe6,
1040 "id-Gost28147-89-CryptoPro-A-ParamSet",
1043 0xa9, 0xb6, 0x37, 0xcc, 0x6d, 0x9b, 0x2f, 0x25,
1044 0xb0, 0xdf, 0x47, 0x04, 0x50, 0x68, 0xb0, 0x27,
1045 0x41, 0x27, 0x58, 0x6a, 0xbd, 0x0a, 0x6e, 0x50,
1046 0x2f, 0xc6, 0xfc, 0xc0, 0x3e, 0x29, 0x42, 0xa5},
1050 0x31, 0x7c, 0x16, 0xe4}
1052 { /* Calculated by libcapi10, CryptoPro CSP
1056 0xef, 0x06, 0x8f, 0x14, 0xc9, 0x04},
1057 "id-Gost28147-89-CryptoPro-A-ParamSet",
1060 0xb0, 0x6c, 0x48, 0x23, 0x0a, 0x6e, 0xf4, 0xec,
1061 0x27, 0x98, 0x01, 0x23, 0xa7, 0xd8, 0xbf, 0x60,
1062 0x89, 0xef, 0xad, 0xe8, 0x8f, 0x79, 0x14, 0x8c,
1063 0x18, 0x5c, 0x9a, 0xda, 0xef, 0x0b, 0xdd, 0xa0},
1067 0xe9, 0x72, 0xae, 0xbf}
1069 { /* Calculated by libcapi10, CryptoPro CSP
1073 0x02, 0xf8, 0xec, 0x2b, 0x4d, 0x1f, 0xbc, 0x7c,
1074 0x6e, 0x47, 0xe3, 0x87, 0x22, 0x75, 0x41, 0xa7},
1075 "id-Gost28147-89-CryptoPro-B-ParamSet",
1078 0x33, 0xd3, 0xef, 0x01, 0x19, 0x95, 0x0e, 0x15,
1079 0xa1, 0x69, 0x75, 0xae, 0x56, 0x27, 0x17, 0x79,
1080 0x63, 0x47, 0xab, 0x62, 0x9d, 0x4a, 0xf0, 0x34,
1081 0xd3, 0x1e, 0x69, 0x74, 0xec, 0x31, 0x48, 0xfc},
1085 0xf5, 0x55, 0x1f, 0x28}
1087 { /* Calculated by libcapi10, CryptoPro CSP
1091 0xf3, 0xb2, 0x29, 0xd2, 0x7a, 0x37, 0x03, 0x12},
1092 "id-Gost28147-89-CryptoPro-A-ParamSet",
1095 0x42, 0x35, 0x81, 0x91, 0x0b, 0xa9, 0x99, 0xff,
1096 0xd9, 0x43, 0xf8, 0xc6, 0x19, 0x55, 0x1f, 0x2f,
1097 0x2d, 0x45, 0x40, 0x20, 0x1e, 0x1d, 0x32, 0x7a,
1098 0xb1, 0x07, 0x6b, 0x4f, 0x45, 0x90, 0xd9, 0x80},
1102 0x6e, 0x15, 0xfa, 0xe8}
1104 { /* Calculated by libcapi10, CryptoPro CSP
1109 "id-Gost28147-89-CryptoPro-A-ParamSet",
1112 0x26, 0xcb, 0xb9, 0xf0, 0x0c, 0x62, 0x9f, 0xaa,
1113 0x4a, 0x1d, 0xb6, 0x30, 0x09, 0x01, 0x56, 0x89,
1114 0x66, 0xd4, 0xe4, 0x0e, 0xfe, 0xf6, 0x10, 0x6b,
1115 0x6c, 0xe8, 0x04, 0x3a, 0xe3, 0x61, 0x4b, 0x19},
1119 0x00, 0x00, 0x00, 0x00}
1121 { /* Calculated by libcapi10, CryptoPro CSP
1125 "id-Gost28147-89-CryptoPro-A-ParamSet",
1128 0xaa, 0x85, 0x84, 0xcd, 0x65, 0x28, 0xe1, 0xdb,
1129 0xb8, 0x20, 0x19, 0x43, 0xe0, 0x36, 0x35, 0x10,
1130 0x19, 0xc3, 0x70, 0x5b, 0x27, 0xc1, 0x9d, 0x84,
1131 0x75, 0xa3, 0xc6, 0x49, 0x46, 0x8f, 0x7c, 0x4e},
1135 0x2a, 0xe6, 0x23, 0xc6}
1137 { /* Calculated by libcapi10, CryptoPro CSP
1141 "id-Gost28147-89-CryptoPro-A-ParamSet",
1144 0xd5, 0xda, 0xfe, 0x06, 0x60, 0xdc, 0xf0, 0xb3,
1145 0x49, 0x5a, 0x02, 0x59, 0xc8, 0x2e, 0x4a, 0x2b,
1146 0xcc, 0x9b, 0x98, 0x04, 0xb7, 0xf2, 0x78, 0xb7,
1147 0xce, 0xa3, 0xf2, 0xdb, 0x9e, 0xa8, 0x49, 0x1d},
1151 0xcc, 0x46, 0x67, 0xe4}
1153 { /* Calculated by libcapi10, CryptoPro CSP
1155 U64(4) * 1024 * 1024 * 1024,
1157 "id-Gost28147-89-CryptoPro-A-ParamSet",
1160 0x0d, 0xf1, 0xa8, 0x7f, 0x57, 0x03, 0x44, 0xcc,
1161 0xdb, 0x20, 0xde, 0xed, 0x85, 0x50, 0x38, 0xda,
1162 0xc9, 0x44, 0xec, 0x2c, 0x0d, 0x66, 0xb7, 0xdc,
1163 0x17, 0x14, 0x55, 0x95, 0x33, 0x6e, 0x43, 0x3e},
1167 0xb7, 0x21, 0x2e, 0x48}
1169 { /* Calculated by libcapi10, CryptoPro CSP
1171 U64(4) * 1024 * 1024 * 1024 + 4,
1173 "id-Gost28147-89-CryptoPro-A-ParamSet",
1176 0x0c, 0xf3, 0xe9, 0xb0, 0x28, 0x3b, 0x9f, 0x8b,
1177 0xe3, 0x82, 0xb9, 0xa2, 0xa6, 0xbd, 0x80, 0xd2,
1178 0xcd, 0xfa, 0x3f, 0xf7, 0x90, 0xa7, 0x55, 0x06,
1179 0x9b, 0x7a, 0x58, 0xee, 0xe7, 0xf1, 0x9d, 0xbe},
1183 0xda, 0x15, 0x10, 0x73}
1185 { /* Calculated by libcapi10, CryptoPro CSP
1187 U64(4) * 1024 * 1024 * 1024 + 10,
1189 "id-Gost28147-89-CryptoPro-A-ParamSet",
1192 0x97, 0x1a, 0x42, 0x22, 0xfa, 0x07, 0xb2, 0xca,
1193 0xf9, 0xd2, 0x34, 0x5a, 0x92, 0xb1, 0x1f, 0x6b,
1194 0x53, 0xf8, 0xaf, 0xed, 0x9a, 0x73, 0xc4, 0x38,
1195 0xd7, 0x7d, 0x25, 0x81, 0x00, 0x0d, 0xd4, 0x29},
1199 0x52, 0xaa, 0x22, 0xb4}
1203 int main(int argc, char *argv[])
1206 u64 ullMaxLen = 6 * 1000 * 1000;
1208 ENGINE *impl = NULL;
1210 EVP_CIPHER_CTX ectx;
1212 byte bDerive[EVP_MAX_KEY_LENGTH];
1213 byte bTest[G89_MAX_TC_LEN];
1214 byte bTest1[G89_MAX_TC_LEN];
1216 static const byte bZB[40 * 1024 * 1024] = { 0 };
1217 static byte bTS[40 * 1024 * 1024] = { 0 };
1218 unsigned int mdl = 0;
1224 const EVP_MD *md_gost94 = NULL;
1225 const EVP_CIPHER *cp_g89cfb = NULL;
1226 const EVP_CIPHER *cp_g89cnt = NULL;
1227 const EVP_CIPHER *ctype = NULL;
1228 const EVP_MD *md_g89imit = NULL;
1231 CONF *pConfig = NCONF_new(NULL);
1234 "openssl_conf = openssl_def\n"
1237 "engines = engine_section\n"
1239 "[engine_section]\n"
1240 "gost = gost_section\n"
1241 "\n" "[gost_section]\n" "default_algorithms = ALL\n" "\n";
1243 printf("Testing GOST 28147-89 ");
1246 if (1 != sscanf(argv[1], FMT64, &ullMaxLen) ||
1247 (2 < argc ? 1 != sscanf(argv[2], "%d", &ignore) : 0)) {
1249 fprintf(stderr, "Usage: %s [maxlen [ignore-error]]\n", argv[0]);
1255 * ccgost engine test on GostR3411_94_CryptoProParamSet
1257 ERR_load_crypto_strings();
1258 ENGINE_load_builtin_engines();
1259 OPENSSL_load_builtin_modules();
1261 bpConf = BIO_new_mem_buf(sConf, -1);
1262 if (!NCONF_load_bio(pConfig, bpConf, &lErrLine)) {
1264 fprintf(stderr, "NCONF_load_bio: ErrLine=%ld: %s\n",
1265 lErrLine, ERR_error_string(ERR_get_error(), NULL));
1270 if (!CONF_modules_load(pConfig, NULL, 0)) {
1272 fprintf(stderr, "CONF_modules_load: %s\n",
1273 ERR_error_string(ERR_get_error(), NULL));
1277 /* Test load engine */
1278 if (NULL == (impl = ENGINE_by_id(CCGOST_ID))) {
1280 fprintf(stderr, "Can't load engine id \"" CCGOST_ID "\"\n");
1285 if (NULL == (md_gost94 = EVP_get_digestbyname(SN_id_GostR3411_94))) {
1287 fprintf(stderr, "\"" SN_id_GostR3411_94 "\" - not found\n");
1292 if (NULL == (cp_g89cfb = EVP_get_cipherbyname(SN_id_Gost28147_89))) {
1294 fprintf(stderr, "\"" SN_id_Gost28147_89 "\" - not found\n");
1299 if (NULL == (cp_g89cnt = EVP_get_cipherbyname(SN_gost89_cnt))) {
1301 fprintf(stderr, "\"" SN_gost89_cnt "\" - not found\n");
1306 if (NULL == (md_g89imit = EVP_get_digestbyname(SN_id_Gost28147_89_MAC))) {
1308 fprintf(stderr, "\"" SN_id_Gost28147_89_MAC "\" - not found\n");
1315 for (t = 0; t < OSSL_NELEM(tcs); t++) {
1316 if (NULL == tcs[t].szDerive) {
1319 memset(bDerive, 0x3c, sizeof(bDerive));
1320 mdl = sizeof(bDerive);
1321 EVP_Digest(tcs[t].szDerive, strlen(tcs[t].szDerive),
1322 bDerive, &mdl, md_gost94, impl);
1323 if (0 != memcmp(tcs[t].bRawKey, bDerive, mdl)) {
1325 fprintf(stderr, "Engine test t=%d " "derive key error.\n", t);
1330 if (ullMaxLen < tcs[t].ullLen) {
1333 memset(bTest, 0xa5, sizeof(bTest));
1334 memset(bTest1, 0x5a, sizeof(bTest1));
1335 if (!ENGINE_ctrl_cmd_string(impl,
1336 "CRYPT_PARAMS", tcs[t].szParamSet, 0)) {
1338 fprintf(stderr, "ENGINE_ctrl_cmd_string: %s\n",
1339 ERR_error_string(ERR_get_error(), NULL));
1342 switch (tcs[t].gMode) {
1344 /* OpenSSL/ccgost not implemented GOST 28147-89 ECB */
1348 goto engine_cipher_check;
1350 if (0 != strcmp("id-Gost28147-89-CryptoPro-A-ParamSet",
1351 tcs[t].szParamSet)) {
1353 * ccgost engine can't change S-Box for gost-cnt
1358 engine_cipher_check:
1359 EVP_CIPHER_CTX_init(&ectx);
1360 EVP_EncryptInit_ex(&ectx, ctype, impl, bDerive, tcs[t].bIV);
1361 if (G89_MAX_TC_LEN >= tcs[t].ullLen) {
1362 enlu = sizeof(bTest);
1363 EVP_EncryptUpdate(&ectx, bTest, &enlu,
1364 tcs[t].bIn, (int)tcs[t].ullLen);
1365 l = (size_t)tcs[t].ullLen;
1367 for (ullLeft = tcs[t].ullLen;
1368 ullLeft >= sizeof(bZB); ullLeft -= sizeof(bZB)) {
1372 EVP_EncryptUpdate(&ectx, bTS, &enlu, bZB, sizeof(bZB));
1374 printf("b" FMT64 "/" FMT64, ullLeft, tcs[t].ullLen);
1376 EVP_EncryptUpdate(&ectx, bTS, &enlu, bZB, (int)ullLeft);
1377 memcpy(bTest, &bTS[enlu - 16], 16);
1378 enlu = (int)tcs[t].ullLen;
1381 enlf = sizeof(bTest1);
1382 EVP_EncryptFinal_ex(&ectx, bTest1, &enlf);
1383 EVP_CIPHER_CTX_cleanup(&ectx);
1386 if (0 != strcmp("id-Gost28147-89-CryptoPro-A-ParamSet",
1387 tcs[t].szParamSet)) {
1389 * ccgost engine can't change S-Box for gost-mac
1393 EVP_MD_CTX_init(&mctx);
1394 mac_key = EVP_PKEY_new_mac_key(NID_id_Gost28147_89_MAC, NULL,
1396 EVP_DigestSignInit(&mctx, NULL, md_g89imit, impl, mac_key);
1397 if (G89_MAX_TC_LEN >= tcs[t].ullLen) {
1398 EVP_DigestSignUpdate(&mctx, tcs[t].bIn,
1399 (unsigned int)tcs[t].ullLen);
1401 for (ullLeft = tcs[t].ullLen;
1402 ullLeft >= sizeof(bZB); ullLeft -= sizeof(bZB)) {
1405 EVP_DigestSignUpdate(&mctx, bZB, sizeof(bZB));
1407 printf("b" FMT64 "/" FMT64, ullLeft, tcs[t].ullLen);
1409 EVP_DigestSignUpdate(&mctx, bZB, (unsigned int)ullLeft);
1412 OPENSSL_assert(EVP_DigestSignFinal(&mctx, bTest, &siglen));
1413 EVP_MD_CTX_cleanup(&mctx);
1414 enlu = (int)tcs[t].ullLen;
1419 if ((int)tcs[t].ullLen != enlu || 0 != enlf ||
1420 0 != memcmp(tcs[t].bOut, bTest, l)) {
1422 fprintf(stderr, "\nEngine test t=%d len=" FMT64
1423 " failed.\n", t, tcs[t].ullLen);
1433 printf(" passed\n");
1436 return EXIT_SUCCESS;