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 * ====================================================================
14 #include <openssl/conf.h>
15 #include <openssl/crypto.h>
16 #include <openssl/engine.h>
17 #include <openssl/evp.h>
18 #include <openssl/hmac.h>
19 #include <openssl/obj_mac.h>
21 #define CCGOST_ID "gost"
22 #define CCGOST_DIR "."
26 #define G89_MAX_TC_LEN (2048)
27 #define G89_BLOCK_LEN (8)
29 typedef enum g89_mode_ {
36 typedef struct g89_tc_ {
37 unsigned long long ullLen; // ullLen > G89_MAX_TC_LEN
40 const byte bIn[G89_MAX_TC_LEN]; // Clear text, when
41 // ullLen <= G89_MAX_TC_LEN
42 const char *szParamSet; // S-Box ID
43 const char *szDerive; // String for derive bRawKey
44 const byte bRawKey[EVP_MAX_KEY_LENGTH];
45 g89_mode gMode; // Mode of encryption or MAC
46 const byte bIV[EVP_MAX_IV_LENGTH]; // IV for CFB or CNT mode
47 const byte bOut[G89_MAX_TC_LEN]; // Cipher text for ECB/CFB/CNT
48 // mode, when ullLen <= G89_MAX_TC_LEN;
49 // Last 16 byte of cipher text for
50 // ECB/CFB/CNT, when ullLen >
52 // 4 byte MAC for imitovstavka
55 const g89_tc tcs[] = {
57 * GOST R 34.11-94 Test cases
59 { /* see p. A.3.1 [GOSTR341194], p. 7.3.1 [ENG-GOSTR341194] */
60 /* <http://tools.ietf.org/html/rfc5831#section-7.3.1> */
61 /* Iteration 1, K[1], see Errata for RFC 5831 */
64 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
66 "id-GostR3410-94-TestParamSet",
69 0x54, 0x6d, 0x20, 0x33, 0x68, 0x65, 0x6c, 0x32,
70 0x69, 0x73, 0x65, 0x20, 0x73, 0x73, 0x6e, 0x62,
71 0x20, 0x61, 0x67, 0x79, 0x69, 0x67, 0x74, 0x74,
72 0x73, 0x65, 0x68, 0x65, 0x20, 0x2c, 0x3d, 0x73
77 0x1b, 0x0b, 0xbc, 0x32, 0xce, 0xbc, 0xab, 0x42
80 { /* see p. A.3.1 [GOSTR341194], p. 7.3.1 [ENG-GOSTR341194] */
81 /* <http://tools.ietf.org/html/rfc5831#section-7.3.1> */
82 /* Iteration 1, K[4] */
85 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
87 "id-GostR3410-94-TestParamSet",
90 0xec, 0x0a, 0x8b, 0xa1, 0x5e, 0xc0, 0x04, 0xa8,
91 0xba, 0xc5, 0x0c, 0xac, 0x0c, 0x62, 0x1d, 0xee,
92 0xe1, 0xc7, 0xb8, 0xe7, 0x00, 0x7a, 0xe2, 0xec,
93 0xf2, 0x73, 0x1b, 0xff, 0x4e, 0x80, 0xe2, 0xa0
98 0x2d, 0x56, 0x2a, 0x0d, 0x19, 0x04, 0x86, 0xe7
101 { /* see p. A.3.1 [GOSTR341194], p. 7.3.1 [ENG-GOSTR341194] */
102 /* <http://tools.ietf.org/html/rfc5831#section-7.3.1> */
103 /* Iteration 2, K[1] */
106 0x34, 0xc0, 0x15, 0x33, 0xe3, 0x7d, 0x1c, 0x56
108 "id-GostR3410-94-TestParamSet",
111 0x34, 0x87, 0x24, 0xa4, 0xc1, 0xa6, 0x76, 0x67,
112 0x15, 0x3d, 0xde, 0x59, 0x33, 0x88, 0x42, 0x50,
113 0xe3, 0x24, 0x8c, 0x65, 0x7d, 0x41, 0x3b, 0x8c,
114 0x1c, 0x9c, 0xa0, 0x9a, 0x56, 0xd9, 0x68, 0xcf
119 0x86, 0x3e, 0x78, 0xdd, 0x2d, 0x60, 0xd1, 0x3c
123 * id-Gost28147-89-CryptoPro-A-ParamSet (1.2.643.2.2.31.1)
126 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
129 0x74, 0x3d, 0x76, 0xf9, 0x1b, 0xee, 0x35, 0x3c,
130 0xa2, 0x5c, 0x3b, 0x10, 0xeb, 0x64, 0xcf, 0xf5
132 "id-Gost28147-89-CryptoPro-A-ParamSet",
135 0xbb, 0xf1, 0xed, 0xd3, 0x20, 0xaf, 0x8a, 0x62,
136 0x8e, 0x11, 0xc8, 0xa9, 0x51, 0xcc, 0xbe, 0x81,
137 0x47, 0x7b, 0x41, 0xa1, 0x6a, 0xf6, 0x7f, 0x05,
138 0xe8, 0x51, 0x2f, 0x9e, 0x01, 0xf8, 0xcf, 0x49
143 0xc3, 0x73, 0x90, 0x95, 0x35, 0x58, 0x08, 0x63,
144 0xcb, 0x68, 0x85, 0x96, 0x77, 0xe8, 0xfb, 0xa9
147 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
150 0xd2, 0xfd, 0xf8, 0x3a, 0xc1, 0xb4, 0x39, 0x23,
151 0x2e, 0xaa, 0xcc, 0x98, 0x0a, 0x02, 0xda, 0x33
153 "id-Gost28147-89-CryptoPro-A-ParamSet",
156 0x8d, 0x5a, 0x2c, 0x83, 0xa7, 0xc7, 0x0a, 0x61,
157 0xd6, 0x1b, 0x34, 0xb5, 0x1f, 0xdf, 0x42, 0x68,
158 0x66, 0x71, 0xa3, 0x5d, 0x87, 0x4c, 0xfd, 0x84,
159 0x99, 0x36, 0x63, 0xb6, 0x1e, 0xd6, 0x0d, 0xad
163 0x46, 0x60, 0x6f, 0x0d, 0x88, 0x34, 0x23, 0x5a
166 0x88, 0xb7, 0x75, 0x16, 0x74, 0xa5, 0xee, 0x2d,
167 0x14, 0xfe, 0x91, 0x67, 0xd0, 0x5c, 0xcc, 0x40
170 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
173 0x90, 0xa2, 0x39, 0x66, 0xae, 0x01, 0xb9, 0xa3,
174 0x52, 0x4e, 0xc8, 0xed, 0x6c, 0xdd, 0x88, 0x30
176 "id-Gost28147-89-CryptoPro-A-ParamSet",
179 0x59, 0x9f, 0x84, 0xba, 0xc3, 0xf3, 0xd2, 0xf1,
180 0x60, 0xe1, 0xe3, 0xf2, 0x6a, 0x96, 0x1a, 0xf9,
181 0x9c, 0x48, 0xb2, 0x4e, 0xbc, 0xbb, 0xbf, 0x7c,
182 0xd8, 0xf3, 0xac, 0xcd, 0x96, 0x8d, 0x28, 0x6a
186 0x8d, 0xaf, 0xa8, 0xd1, 0x58, 0xed, 0x05, 0x8d
189 0x6e, 0x72, 0x62, 0xcc, 0xe3, 0x59, 0x36, 0x90,
190 0x83, 0x3a, 0xfe, 0xa9, 0x1b, 0xc9, 0xbe, 0xce
193 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
196 0xb5, 0xa1, 0xf0, 0xe3, 0xce, 0x2f, 0x02, 0x1d,
197 0x67, 0x61, 0x94, 0x34, 0x5c, 0x41, 0xe3, 0x6e
199 "id-Gost28147-89-CryptoPro-A-ParamSet",
202 0x9d, 0x05, 0xb7, 0x9e, 0x90, 0xca, 0xd0, 0x0a,
203 0x2c, 0xda, 0xd2, 0x2e, 0xf4, 0xe8, 0x6f, 0x5c,
204 0xf5, 0xdc, 0x37, 0x68, 0x19, 0x85, 0xb3, 0xbf,
205 0xaa, 0x18, 0xc1, 0xc3, 0x05, 0x0a, 0x91, 0xa2
210 0xf8, 0x1f, 0x08, 0xa3
214 * Other paramsets and key meshing test cases.
216 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
219 0x8c, 0x9c, 0x44, 0x35, 0xfb, 0xe9, 0xa5, 0xa3,
220 0xa0, 0xae, 0x28, 0x56, 0x91, 0x10, 0x8e, 0x1e ,
221 0xd2, 0xbb, 0x18, 0x53, 0x81, 0x27, 0x0d, 0xa6,
222 0x68, 0x59, 0x36, 0xc5, 0x81, 0x62, 0x9a, 0x8e,
223 0x7d, 0x50, 0xf1, 0x6f, 0x97, 0x62, 0x29, 0xec,
224 0x80, 0x51, 0xe3, 0x7d, 0x6c, 0xc4, 0x07, 0x95,
225 0x28, 0x63, 0xdc, 0xb4, 0xb9, 0x2d, 0xb8, 0x13,
226 0xb1, 0x05, 0xb5, 0xf9, 0xeb, 0x75, 0x37, 0x4e,
227 0xf7, 0xbf, 0x51, 0xf1, 0x98, 0x86, 0x43, 0xc4,
228 0xe4, 0x3d, 0x3e, 0xa7, 0x62, 0xec, 0x41, 0x59,
229 0xe0, 0xbd, 0xfb, 0xb6, 0xfd, 0xec, 0xe0, 0x77,
230 0x13, 0xd2, 0x59, 0x90, 0xa1, 0xb8, 0x97, 0x6b,
231 0x3d, 0x8b, 0x7d, 0xfc, 0x9d, 0xca, 0x82, 0x73,
232 0x32, 0x70, 0x0a, 0x74, 0x03, 0xc6, 0x0c, 0x26,
233 0x7f, 0x56, 0xf0, 0x9d, 0xb2, 0xeb, 0x71, 0x40,
234 0xd7, 0xc3, 0xb1, 0xa7, 0xc5, 0x1e, 0x20, 0x17,
235 0xb3, 0x50, 0x1d, 0x8a, 0x6e, 0x19, 0xcb, 0xbe,
236 0x20, 0x86, 0x2b, 0xd6, 0x1c, 0xfd, 0xb4, 0xb7,
237 0x5d, 0x9a, 0xb3, 0xe3, 0x7d, 0x15, 0x7a, 0x35,
238 0x01, 0x9f, 0x5d, 0x65, 0x89, 0x4b, 0x34, 0xc6,
239 0xf4, 0x81, 0x3f, 0x78, 0x30, 0xcf, 0xe9, 0x15,
240 0x90, 0x9a, 0xf9, 0xde, 0xba, 0x63, 0xd0, 0x19,
241 0x14, 0x66, 0x3c, 0xb9, 0xa4, 0xb2, 0x84, 0x94,
242 0x02, 0xcf, 0xce, 0x20, 0xcf, 0x76, 0xe7, 0xc5,
243 0x48, 0xf7, 0x69, 0x3a, 0x5d, 0xec, 0xaf, 0x41,
244 0xa7, 0x12, 0x64, 0x83, 0xf5, 0x99, 0x1e, 0x9e,
245 0xb2, 0xab, 0x86, 0x16, 0x00, 0x23, 0x8e, 0xe6,
246 0xd9, 0x80, 0x0b, 0x6d, 0xc5, 0x93, 0xe2, 0x5c,
247 0x8c, 0xd8, 0x5e, 0x5a, 0xae, 0x4a, 0x85, 0xfd,
248 0x76, 0x01, 0xea, 0x30, 0xf3, 0x78, 0x34, 0x10,
249 0x72, 0x51, 0xbc, 0x9f, 0x76, 0xce, 0x1f, 0xd4,
250 0x8f, 0x33, 0x50, 0x34, 0xc7, 0x4d, 0x7b, 0xcf,
251 0x91, 0x63, 0x7d, 0x82, 0x9e, 0xa1, 0x23, 0x45,
252 0xf5, 0x45, 0xac, 0x98, 0x7a, 0x48, 0xff, 0x64,
253 0xd5, 0x59, 0x47, 0xde, 0x2b, 0x3f, 0xfa, 0xec,
254 0x50, 0xe0, 0x81, 0x60, 0x8b, 0xc3, 0xfc, 0x80,
255 0x98, 0x17, 0xc7, 0xa3, 0xc2, 0x57, 0x3d, 0xab,
256 0x91, 0x67, 0xf5, 0xc4, 0xab, 0x92, 0xc8, 0xd6,
257 0x3b, 0x6b, 0x3f, 0xff, 0x15, 0x6b, 0xcf, 0x53,
258 0x65, 0x02, 0xf1, 0x74, 0xca, 0xa9, 0xbe, 0x24,
259 0xd2, 0xf0, 0xb7, 0x26, 0xa8, 0xd7, 0x6d, 0xed,
260 0x90, 0x36, 0x7b, 0x3e, 0x41, 0xa9, 0x7f, 0xa3,
261 0x1b, 0xf4, 0x43, 0xc5, 0x51, 0xbe, 0x28, 0x59,
262 0xe9, 0x45, 0x26, 0x49, 0x38, 0x32, 0xf8, 0xf3,
263 0x92, 0x6e, 0x30, 0xcc, 0xb0, 0xa0, 0xf9, 0x01,
264 0x14, 0xc8, 0xba, 0xd9, 0xf0, 0x2a, 0x29, 0xe2,
265 0x52, 0x9a, 0x76, 0x95, 0x3a, 0x16, 0x32, 0xec,
266 0xf4, 0x10, 0xec, 0xee, 0x47, 0x00, 0x70, 0x19,
267 0xe4, 0x72, 0x35, 0x66, 0x44, 0x53, 0x2d, 0xa2,
268 0xf3, 0xaa, 0x7e, 0x8a, 0x33, 0x13, 0xcd, 0xc8,
269 0xbf, 0x0e, 0x40, 0x90, 0x00, 0xe4, 0x42, 0xc3,
270 0x09, 0x84, 0xe1, 0x66, 0x17, 0xa2, 0xaf, 0x03,
271 0xab, 0x6b, 0xa1, 0xec, 0xfb, 0x17, 0x72, 0x81,
272 0xfe, 0x9a, 0x9f, 0xf4, 0xb2, 0x33, 0x1f, 0xae,
273 0x0c, 0xd1, 0x6a, 0xae, 0x19, 0xb8, 0xaf, 0xec,
274 0xe3, 0xea, 0x00, 0xf8, 0xac, 0x87, 0x07, 0x5f,
275 0x6d, 0xb0, 0xac, 0x6b, 0x22, 0x48, 0x36, 0xbf,
276 0x22, 0x18, 0xb0, 0x03, 0x9f, 0x6c, 0x70, 0x45,
277 0x36, 0xf0, 0x6b, 0xc6, 0xc2, 0xa5, 0x72, 0x2c,
278 0xd8, 0xe0, 0x27, 0x3d, 0xec, 0x56, 0x07, 0x05,
279 0x7d, 0x83, 0xa1, 0x65, 0x7d, 0x41, 0x5b, 0xcd,
280 0x77, 0x24, 0xe5, 0xaa, 0x76, 0x47, 0xd0, 0x50,
281 0xf6, 0xe7, 0xb5, 0x59, 0x75, 0x31, 0x27, 0xef,
282 0xd8, 0xa6, 0x4e, 0x7f, 0xb8, 0x40, 0xb1, 0xdf,
283 0x53, 0x14, 0xed, 0xf1, 0x68, 0x5f, 0xfc, 0x3f,
284 0x02, 0xdb, 0x05, 0xeb, 0x31, 0xe4, 0x2c, 0x7f,
285 0x32, 0xb5, 0x70, 0x8e, 0x75, 0x85, 0xa4, 0x5c,
286 0x16, 0x23, 0x37, 0xf2, 0x10, 0x79, 0xcb, 0xdc,
287 0xf8, 0x1c, 0x25, 0xc2, 0xa1, 0x3d, 0x9c, 0x33,
288 0x6c, 0xed, 0xc3, 0xe7, 0xf3, 0x02, 0x87, 0x82,
289 0x4e, 0xfb, 0xac, 0xb3, 0x2d, 0xfc, 0xf8, 0x0d,
290 0x1d, 0x4a, 0x39, 0xd4, 0xb3, 0x09, 0xbb, 0xe9,
291 0x25, 0xc7, 0xec, 0x6a, 0x87, 0x72, 0x84, 0xed,
292 0x12, 0x60, 0x19, 0x64, 0xeb, 0x16, 0x2a, 0x5b,
293 0x10, 0x76, 0x27, 0xff, 0x7b, 0xe4, 0xae, 0xe5,
294 0xa4, 0x04, 0x02, 0x7f, 0xbb, 0x0a, 0xb5, 0xf4,
295 0x05, 0xa5, 0x56, 0x1c, 0x53, 0x31, 0x7a, 0x93,
296 0xba, 0x16, 0x15, 0xab, 0x62, 0x60, 0xfc, 0xde,
297 0x72, 0x36, 0x6e, 0x28, 0xaf, 0x98, 0x0d, 0xe6,
298 0xf4, 0xde, 0x60, 0xa7, 0x7e, 0x06, 0x07, 0x86,
299 0xf3, 0x94, 0xb6, 0x6d, 0x0d, 0x93, 0xa6, 0xbc,
300 0x60, 0x70, 0x33, 0xac, 0x3f, 0xa1, 0xa8, 0x4a,
301 0x20, 0x61, 0xb6, 0xb5, 0x43, 0xa3, 0x15, 0x5a,
302 0x00, 0xbe, 0x76, 0x98, 0x57, 0x72, 0xab, 0x7a,
303 0x0e, 0x18, 0x93, 0x82, 0x3a, 0x18, 0x78, 0x6e,
304 0x71, 0x7b, 0x78, 0x4f, 0x7e, 0x8c, 0xde, 0x7a,
305 0x62, 0xb5, 0x0a, 0x7c, 0x45, 0x1d, 0x16, 0xd5,
306 0xc3, 0x8c, 0x9b, 0x25, 0xb4, 0x50, 0x90, 0xcd,
307 0x96, 0x93, 0xad, 0x0f, 0xd4, 0x43, 0xcb, 0x49,
308 0x0f, 0xfc, 0x5a, 0x31, 0xf4, 0x19, 0xb7, 0xd4,
309 0xeb, 0x4d, 0x40, 0x58, 0xd0, 0x3b, 0xc8, 0xe0,
310 0x4a, 0x54, 0x2f, 0xdb, 0x22, 0xc3, 0x29, 0x7b,
311 0x40, 0x90, 0x61, 0x43, 0xd3, 0x7e, 0xe2, 0x30,
312 0x2b, 0x48, 0x3c, 0xce, 0x90, 0x93, 0xb1, 0x8b,
313 0x31, 0x96, 0x65, 0x6d, 0x57, 0x8b, 0x9d, 0x4d,
314 0x53, 0xf0, 0x83, 0x1c, 0xe5, 0xa1, 0x9d, 0x55,
315 0xe3, 0xbf, 0x7e, 0xca, 0x1a, 0x74, 0x66, 0x14,
316 0xcc, 0x47, 0x43, 0xd9, 0xbb, 0xef, 0x97, 0x7d,
317 0xb7, 0x6e, 0xff, 0xf1, 0x22, 0xf8, 0x10, 0x2d,
318 0x3f, 0xcd, 0x49, 0x96, 0xd9, 0x09, 0x11, 0xb8,
319 0x33, 0xd0, 0x23, 0x9a, 0xfa, 0x16, 0xcb, 0x50,
320 0x26, 0x57, 0x24, 0x5c, 0x0e, 0xba, 0xf0, 0x3f,
321 0x37, 0x2f, 0xa3, 0xf7, 0x18, 0x57, 0x48, 0x48,
322 0x95, 0xcf, 0xef, 0x87, 0x67, 0x2a, 0xe9, 0xb6,
323 0x8a, 0x21, 0x36, 0x7f, 0xff, 0x48, 0x6c, 0x46,
324 0x35, 0x57, 0xf2, 0xbc, 0x48, 0x67, 0x8f, 0x63,
325 0x23, 0x78, 0x11, 0x2b, 0xc2, 0x08, 0xde, 0x51,
326 0xe8, 0x8b, 0x92, 0x29, 0xf9, 0x9a, 0x9e, 0xad,
327 0xed, 0x0f, 0xeb, 0xa2, 0xd2, 0x40, 0x92, 0xd4,
328 0xde, 0x62, 0x95, 0x76, 0xfd, 0x6e, 0x3c, 0xbf,
329 0xc0, 0xd7, 0x0d, 0xe5, 0x1b, 0xa4, 0xc7, 0x18,
330 0xe1, 0x58, 0xa4, 0x56, 0xef, 0x2e, 0x17, 0x1b,
331 0x75, 0xcb, 0xbc, 0xf9, 0x2a, 0x95, 0x71, 0xa7,
332 0x1d, 0x7f, 0xe7, 0x73, 0x63, 0x05, 0x6b, 0x19,
333 0x4c, 0xf4, 0x22, 0x14, 0xc4, 0x59, 0x88, 0x66,
334 0x92, 0x86, 0x61, 0x5c, 0x6a, 0xae, 0xec, 0x58,
335 0xff, 0xc9, 0xf2, 0x44, 0xd4, 0xa2, 0xf5, 0x98,
336 0xeb, 0x5f, 0x09, 0xbc, 0x8a, 0xbf, 0x3c, 0xb4,
337 0x3e, 0xb1, 0x20, 0x05, 0x44, 0x96, 0x79, 0x0a,
338 0x40, 0x92, 0x7f, 0x9d, 0xd1, 0xaf, 0xbc, 0x90,
339 0x95, 0x0a, 0x81, 0xd4, 0xa7, 0xc6, 0xb8, 0xe0,
340 0xe4, 0x39, 0x30, 0x1d, 0x79, 0xc0, 0xe5, 0xfa,
341 0xb4, 0xe9, 0x63, 0xb4, 0x09, 0x72, 0x3b, 0x3e,
342 0xd9, 0xf6, 0xd9, 0x10, 0x21, 0x18, 0x7e, 0xe5,
343 0xad, 0x81, 0xd7, 0xd5, 0x82, 0xd0, 0x8c, 0x3b,
344 0x38, 0x95, 0xf8, 0x92, 0x01, 0xa9, 0x92, 0x00,
345 0x70, 0xd1, 0xa7, 0x88, 0x77, 0x1f, 0x3a, 0xeb,
346 0xb5, 0xe4, 0xf5, 0x9d, 0xc7, 0x37, 0x86, 0xb2,
347 0x12, 0x46, 0x34, 0x19, 0x72, 0x8c, 0xf5, 0x8c,
348 0xf6, 0x78, 0x98, 0xe0, 0x7c, 0xd3, 0xf4
350 "id-Gost28147-89-CryptoPro-B-ParamSet",
353 0x48, 0x0c, 0x74, 0x1b, 0x02, 0x6b, 0x55, 0xd5,
354 0xb6, 0x6d, 0xd7, 0x1d, 0x40, 0x48, 0x05, 0x6b,
355 0x6d, 0xeb, 0x3c, 0x29, 0x0f, 0x84, 0x80, 0x23,
356 0xee, 0x0d, 0x47, 0x77, 0xe3, 0xfe, 0x61, 0xc9
360 0x1f, 0x3f, 0x82, 0x1e, 0x0d, 0xd8, 0x1e, 0x22
363 0x23, 0xc6, 0x7f, 0x20, 0xa1, 0x23, 0x58, 0xbc,
364 0x7b, 0x05, 0xdb, 0x21, 0x15, 0xcf, 0x96, 0x41,
365 0xc7, 0x88, 0xef, 0x76, 0x5c, 0x49, 0xdb, 0x42,
366 0xbf, 0xf3, 0xc0, 0xf5, 0xbd, 0x5d, 0xd9, 0x8e,
367 0xaf, 0x3d, 0xf4, 0xe4, 0xda, 0x88, 0xbd, 0xbc,
368 0x47, 0x5d, 0x76, 0x07, 0xc9, 0x5f, 0x54, 0x1d,
369 0x1d, 0x6a, 0xa1, 0x2e, 0x18, 0xd6, 0x60, 0x84,
370 0x02, 0x18, 0x37, 0x92, 0x92, 0x15, 0xab, 0x21,
371 0xee, 0x21, 0xcc, 0x71, 0x6e, 0x51, 0xd9, 0x2b,
372 0xcc, 0x81, 0x97, 0x3f, 0xeb, 0x45, 0x99, 0xb8,
373 0x1b, 0xda, 0xff, 0x90, 0xd3, 0x41, 0x06, 0x9c,
374 0x3f, 0xfb, 0xe4, 0xb2, 0xdc, 0xc9, 0x03, 0x0d,
375 0xa7, 0xae, 0xd7, 0x7d, 0x02, 0xb8, 0x32, 0xab,
376 0xf3, 0x65, 0xa3, 0x65, 0x6c, 0x4e, 0xe4, 0xa2,
377 0x5e, 0x9e, 0xee, 0xcd, 0xde, 0x79, 0x36, 0x6b,
378 0x1b, 0xe1, 0x3c, 0xdf, 0x10, 0xad, 0x4f, 0x02,
379 0xe1, 0x14, 0xaa, 0x09, 0xb4, 0x0b, 0x76, 0xeb,
380 0x69, 0x38, 0x20, 0x02, 0xcb, 0x8e, 0xc0, 0xdf,
381 0xca, 0x48, 0x74, 0xc3, 0x31, 0xad, 0x42, 0x2c,
382 0x51, 0x9b, 0xd0, 0x6a, 0xc1, 0x36, 0xd7, 0x21,
383 0xdf, 0xb0, 0x45, 0xba, 0xca, 0x7f, 0x35, 0x20,
384 0x28, 0xbb, 0xc1, 0x76, 0xfd, 0x43, 0x5d, 0x23,
385 0x7d, 0x31, 0x84, 0x1a, 0x97, 0x4d, 0x83, 0xaa,
386 0x7e, 0xf1, 0xc4, 0xe6, 0x83, 0xac, 0x0d, 0xef,
387 0xef, 0x3c, 0xa4, 0x7c, 0x48, 0xe4, 0xc8, 0xca,
388 0x0d, 0x7d, 0xea, 0x7c, 0x45, 0xd7, 0x73, 0x50,
389 0x25, 0x1d, 0x01, 0xc4, 0x02, 0x1a, 0xcd, 0xe0,
390 0x38, 0x5b, 0xa8, 0x5a, 0x16, 0x9a, 0x10, 0x59,
391 0x74, 0xd7, 0x19, 0xc6, 0xf3, 0xb5, 0x17, 0xf6,
392 0x59, 0x8d, 0x62, 0xaf, 0x44, 0xe8, 0xdc, 0xe9,
393 0xc1, 0x76, 0xf1, 0xd0, 0xbd, 0x29, 0xd7, 0xec,
394 0x1d, 0xac, 0x57, 0xdb, 0x1a, 0x3f, 0xd8, 0xf6,
395 0x6e, 0xb6, 0xe6, 0xdf, 0x36, 0xe7, 0x89, 0xce,
396 0x56, 0x35, 0x43, 0x1c, 0x7d, 0x57, 0x79, 0x0e,
397 0xd8, 0xf4, 0xd7, 0xa7, 0x0d, 0xc6, 0x8f, 0x91,
398 0x66, 0x67, 0x82, 0x0f, 0x49, 0xc9, 0xc5, 0x65,
399 0x81, 0xa1, 0x39, 0x5a, 0x53, 0x9f, 0x02, 0xa5,
400 0xd5, 0x36, 0x22, 0xa8, 0xa8, 0x1c, 0x37, 0x0e,
401 0x76, 0x46, 0xdf, 0xbd, 0x6a, 0xdb, 0xfc, 0x1b,
402 0xbd, 0x10, 0xb8, 0xb1, 0xbc, 0x72, 0x4c, 0x58,
403 0x4a, 0xda, 0x6d, 0x66, 0x00, 0xda, 0x7a, 0x66,
404 0xa0, 0xe7, 0x3b, 0x39, 0xa3, 0xf7, 0x05, 0x07,
405 0xfa, 0x21, 0x4b, 0xc7, 0x94, 0xc0, 0xd3, 0x7b,
406 0x19, 0x02, 0x5d, 0x4a, 0x10, 0xf1, 0xc2, 0x0f,
407 0x19, 0x68, 0x27, 0xc7, 0x7d, 0xbf, 0x55, 0x03,
408 0x57, 0x7d, 0xaf, 0x77, 0xae, 0x80, 0x2f, 0x7a,
409 0xe6, 0x1f, 0x4b, 0xdc, 0x15, 0x18, 0xc0, 0x62,
410 0xa1, 0xe8, 0xd9, 0x1c, 0x9e, 0x8c, 0x96, 0x39,
411 0xc1, 0xc4, 0x88, 0xf7, 0x0c, 0xe1, 0x04, 0x84,
412 0x68, 0x51, 0xce, 0xf1, 0x90, 0xda, 0x7f, 0x76,
413 0xc8, 0xc0, 0x88, 0xef, 0x8e, 0x15, 0x25, 0x3e,
414 0x7b, 0xe4, 0x79, 0xb5, 0x66, 0x2d, 0x9c, 0xd1,
415 0x13, 0xda, 0xd0, 0xd5, 0x46, 0xd5, 0x8d, 0x46,
416 0x18, 0x07, 0xee, 0xd8, 0xc9, 0x64, 0xe3, 0xbe,
417 0x0e, 0x68, 0x27, 0x09, 0x96, 0x26, 0xf6, 0xe2,
418 0x19, 0x61, 0x3f, 0xf4, 0x58, 0x27, 0x0a, 0xeb,
419 0xce, 0x7c, 0xb6, 0x68, 0x92, 0xe7, 0x12, 0x3b,
420 0x31, 0xd4, 0x48, 0xdf, 0x35, 0x8d, 0xf4, 0x86,
421 0x42, 0x2a, 0x15, 0x4b, 0xe8, 0x19, 0x1f, 0x26,
422 0x65, 0x9b, 0xa8, 0xda, 0x4b, 0x79, 0x1f, 0x8e,
423 0xe6, 0x13, 0x7e, 0x49, 0x8f, 0xc1, 0xce, 0xdc,
424 0x5e, 0x64, 0x74, 0xce, 0x02, 0x78, 0xe0, 0xcf,
425 0xa0, 0xed, 0x5e, 0x31, 0x74, 0xd1, 0xd0, 0xb4,
426 0xee, 0x70, 0x19, 0x14, 0x3c, 0x8f, 0x16, 0xa6,
427 0xcf, 0x12, 0x93, 0x15, 0x88, 0xeb, 0x91, 0x65,
428 0x76, 0x98, 0xfd, 0xa1, 0x94, 0x30, 0xba, 0x43,
429 0x62, 0x65, 0x40, 0x04, 0x77, 0x9e, 0xd6, 0xab,
430 0x8b, 0x0d, 0x93, 0x80, 0x50, 0x5f, 0xa2, 0x76,
431 0x20, 0xa7, 0xd6, 0x9c, 0x27, 0x15, 0x27, 0xbc,
432 0xa5, 0x5a, 0xbf, 0xe9, 0x92, 0x82, 0x05, 0xa8,
433 0x41, 0xe9, 0xb5, 0x60, 0xd5, 0xc0, 0xd7, 0x4b,
434 0xad, 0x38, 0xb2, 0xe9, 0xd1, 0xe5, 0x51, 0x5f,
435 0x24, 0x78, 0x24, 0x9a, 0x23, 0xd2, 0xc2, 0x48,
436 0xbd, 0x0e, 0xf1, 0x37, 0x72, 0x91, 0x87, 0xb0,
437 0x4e, 0xbd, 0x99, 0x6b, 0x2c, 0x01, 0xb6, 0x79,
438 0x69, 0xec, 0x0c, 0xed, 0xe5, 0x3f, 0x50, 0x64,
439 0x7c, 0xb9, 0xdd, 0xe1, 0x92, 0x81, 0xb5, 0xd0,
440 0xcb, 0x17, 0x83, 0x86, 0x8b, 0xea, 0x4f, 0x93,
441 0x08, 0xbc, 0x22, 0x0c, 0xef, 0xe8, 0x0d, 0xf5,
442 0x9e, 0x23, 0xe1, 0xf9, 0xb7, 0x6b, 0x45, 0x0b,
443 0xcb, 0xa9, 0xb6, 0x4d, 0x28, 0x25, 0xba, 0x3e,
444 0x86, 0xf2, 0x75, 0x47, 0x5d, 0x9d, 0x6b, 0xf6,
445 0x8a, 0x05, 0x58, 0x73, 0x3d, 0x00, 0xde, 0xfd,
446 0x69, 0xb1, 0x61, 0x16, 0xf5, 0x2e, 0xb0, 0x9f,
447 0x31, 0x6a, 0x00, 0xb9, 0xef, 0x71, 0x63, 0x47,
448 0xa3, 0xca, 0xe0, 0x40, 0xa8, 0x7e, 0x02, 0x04,
449 0xfe, 0xe5, 0xce, 0x48, 0x73, 0xe3, 0x94, 0xcf,
450 0xe2, 0xff, 0x29, 0x7e, 0xf6, 0x32, 0xbb, 0xb7,
451 0x55, 0x12, 0x21, 0x7a, 0x9c, 0x75, 0x04, 0x0c,
452 0xb4, 0x7c, 0xb0, 0x3d, 0x40, 0xb3, 0x11, 0x9a,
453 0x7a, 0x9a, 0x13, 0xfb, 0x77, 0xa7, 0x51, 0x68,
454 0xf7, 0x05, 0x47, 0x3b, 0x0f, 0x52, 0x5c, 0xe6,
455 0xc2, 0x99, 0x3a, 0x37, 0x54, 0x5c, 0x4f, 0x2b,
456 0xa7, 0x01, 0x08, 0x74, 0xbc, 0x91, 0xe3, 0xe2,
457 0xfe, 0x65, 0x94, 0xfd, 0x3d, 0x18, 0xe0, 0xf0,
458 0x62, 0xed, 0xc2, 0x10, 0x82, 0x9c, 0x58, 0x7f,
459 0xb2, 0xa3, 0x87, 0x8a, 0x74, 0xd9, 0xc1, 0xfb,
460 0x84, 0x28, 0x17, 0xc7, 0x2b, 0xcb, 0x53, 0x1f,
461 0x4e, 0x8a, 0x82, 0xfc, 0xb4, 0x3f, 0xc1, 0x47,
462 0x25, 0xf3, 0x21, 0xdc, 0x4c, 0x2d, 0x08, 0xfa,
463 0xe7, 0x0f, 0x03, 0xa9, 0x68, 0xde, 0x6b, 0x41,
464 0xa0, 0xf9, 0x41, 0x6c, 0x57, 0x4d, 0x3a, 0x0e,
465 0xea, 0x51, 0xca, 0x9f, 0x97, 0x11, 0x7d, 0xf6,
466 0x8e, 0x88, 0x63, 0x67, 0xc9, 0x65, 0x13, 0xca,
467 0x38, 0xed, 0x35, 0xbe, 0xf4, 0x27, 0xa9, 0xfc,
468 0xa9, 0xe6, 0xc3, 0x40, 0x86, 0x08, 0x39, 0x72,
469 0x37, 0xee, 0xb2, 0x87, 0x09, 0x96, 0xb7, 0x40,
470 0x87, 0x36, 0x92, 0xc1, 0x5d, 0x6a, 0x2c, 0x43,
471 0xca, 0x25, 0xc8, 0x35, 0x37, 0x2d, 0xb5, 0xa9,
472 0x27, 0x44, 0x50, 0xf2, 0x6d, 0x22, 0x75, 0x41,
473 0x77, 0x2a, 0xdb, 0xb1, 0x8c, 0x6d, 0x05, 0xe8,
474 0xc9, 0x99, 0xc7, 0x08, 0xf9, 0x14, 0x8f, 0x78,
475 0xa9, 0x8f, 0xc2, 0x5a, 0x7a, 0x65, 0xc5, 0xd8,
476 0x86, 0xbb, 0x72, 0x69, 0x6b, 0x6b, 0x45, 0x83,
477 0x5b, 0xb1, 0xf7, 0xcd, 0x16, 0x73, 0xee, 0xe9,
478 0x80, 0x85, 0xfe, 0x8e, 0xe1, 0xae, 0x53, 0x8f,
479 0xde, 0xbe, 0x48, 0x8b, 0x59, 0xef, 0xf6, 0x7e,
480 0xd8, 0xb5, 0xa8, 0x47, 0xc0, 0x4e, 0x15, 0x58,
481 0xca, 0xd3, 0x2f, 0xf8, 0x6c, 0xa6, 0x3d, 0x78,
482 0x4d, 0x7a, 0x54, 0xd6, 0x10, 0xe5, 0xcc, 0x05,
483 0xe2, 0x29, 0xb5, 0x86, 0x07, 0x39, 0x7d, 0x78,
484 0x8e, 0x5a, 0x8f, 0x83, 0x4c, 0xe7, 0x3d, 0x68,
485 0x3e, 0xe5, 0x02, 0xe6, 0x64, 0x4f, 0x5e, 0xb4,
486 0x49, 0x77, 0xf0, 0xc0, 0xfa, 0x6f, 0xc8, 0xfb,
487 0x9f, 0x84, 0x6f, 0x55, 0xfb, 0x30, 0x5e, 0x89,
488 0x93, 0xa9, 0xf3, 0xa6, 0xa3, 0xd7, 0x26, 0xbb,
489 0xd8, 0xa8, 0xd9, 0x95, 0x1d, 0xfe, 0xfc, 0xd7,
490 0xa8, 0x93, 0x66, 0x2f, 0x04, 0x53, 0x06, 0x64,
491 0x7f, 0x31, 0x29, 0xae, 0xb7, 0x9f, 0xba, 0xc4,
492 0x6d, 0x68, 0xd1, 0x24, 0x32, 0xf4, 0x11
495 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
498 0x07, 0x9c, 0x91, 0xbe
500 "id-Gost28147-89-CryptoPro-C-ParamSet",
503 0x77, 0xc3, 0x45, 0x8e, 0xf6, 0x42, 0xe7, 0x04,
504 0x8e, 0xfc, 0x08, 0xe4, 0x70, 0x96, 0xd6, 0x05,
505 0x93, 0x59, 0x02, 0x6d, 0x6f, 0x97, 0xca, 0xe9,
506 0xcf, 0x89, 0x44, 0x4b, 0xde, 0x6c, 0x22, 0x1d
510 0x43, 0x7c, 0x3e, 0x8e, 0x2f, 0x2a, 0x00, 0x98
513 0x19, 0x35, 0x81, 0x34
516 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
519 0x2f, 0x31, 0xd8, 0x83, 0xb4, 0x20, 0xe8, 0x6e,
522 "id-Gost28147-89-CryptoPro-D-ParamSet",
525 0x38, 0x9f, 0xe8, 0x37, 0xff, 0x9c, 0x5d, 0x29,
526 0xfc, 0x48, 0x55, 0xa0, 0x87, 0xea, 0xe8, 0x40,
527 0x20, 0x87, 0x5b, 0xb2, 0x01, 0x15, 0x55, 0xa7,
528 0xe3, 0x2d, 0xcb, 0x3d, 0xd6, 0x59, 0x04, 0x73
532 0xc5, 0xa2, 0xd2, 0x1f, 0x2f, 0xdf, 0xb8, 0xeb
535 0x6d, 0xa4, 0xed, 0x40, 0x08, 0x88, 0x71, 0xad,
539 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
542 "id-Gost28147-89-CryptoPro-A-ParamSet",
545 0x61, 0x58, 0x44, 0x5a, 0x41, 0xf6, 0xc7, 0x0f,
546 0x6b, 0xdb, 0x51, 0x91, 0x6a, 0xf6, 0x81, 0x30,
547 0x8c, 0xa7, 0x98, 0xdd, 0x38, 0x35, 0x8a, 0x60,
548 0x85, 0xb4, 0xf0, 0xf9, 0x43, 0xa2, 0x7d, 0x9a
552 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
559 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
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
572 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
575 0x2e, 0x62, 0xb0, 0x2e, 0xc7, 0x87, 0x4b, 0x29,
576 0x33, 0x16, 0x6b, 0xb4, 0xd6, 0x61, 0x66, 0xd9
579 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
582 0x3d, 0x0b, 0x69, 0xf7, 0xa8, 0xe4, 0xfc, 0x99,
583 0x22, 0x2e, 0xee, 0xd1, 0x63, 0x12, 0xfe, 0xa8,
584 0x9d, 0xcb, 0x6c, 0x4d, 0x48, 0x8c, 0xe8, 0xbd,
585 0x8b, 0x60, 0xf1, 0xbf, 0x7b, 0xe3, 0x79, 0xd5,
586 0x2b, 0x25, 0x97, 0x13, 0xef, 0x35, 0xda, 0xf4,
587 0xbc, 0x77, 0xce, 0xea, 0xe9, 0x3f, 0xa4, 0xb6,
588 0x01, 0xd5, 0x73, 0x29, 0x58, 0xda, 0xd7, 0x67,
589 0x17, 0xac, 0xe4, 0x75, 0x2f, 0x57, 0x23, 0xac,
590 0x96, 0x21, 0xc7, 0x62, 0x2d, 0xf7, 0x32, 0xb5,
591 0x44, 0x5f, 0x72, 0xb1, 0x5f, 0xba, 0x1b, 0x1e,
592 0xdb, 0x4a, 0x09, 0x8c, 0x92, 0x61, 0xa2, 0xb0,
593 0x49, 0x68, 0xe5, 0xb3, 0xa2, 0x8f, 0x13, 0x4b,
594 0xf5, 0x4d, 0x84, 0xda, 0xab, 0xa0, 0xb6, 0xd1,
595 0x5a, 0x63, 0x19, 0xe8, 0xa2, 0x09, 0xf6, 0x76,
596 0x6f, 0x9b, 0x48, 0x0a, 0x15, 0x5d, 0xb7, 0x20,
597 0x21, 0x9a, 0x2e, 0xb9, 0x6d, 0xfa, 0x1e, 0xc2,
598 0x0e, 0xef, 0x15, 0xab, 0x59, 0x01, 0xfe, 0x43,
599 0x90, 0xf2, 0x62, 0xca, 0x4a, 0x9a, 0x48, 0x38,
600 0xab, 0x6f, 0x9d, 0x21, 0xb3, 0xad, 0xa7, 0x60,
601 0x46, 0xe3, 0xef, 0xd0, 0xe3, 0x1d, 0xc5, 0xe1,
602 0xb8, 0xa1, 0xe2, 0x99, 0x20, 0xc5, 0x76, 0xcc,
603 0xaa, 0x8a, 0xa9, 0x45, 0x55, 0xa0, 0x78, 0x00,
604 0x64, 0xde, 0xcf, 0x5b, 0xdf, 0x26, 0x48, 0xcd,
605 0xba, 0x8a, 0xb5, 0xfb, 0xfd, 0x4a, 0xd5, 0xc4,
606 0xe0, 0x43, 0xa6, 0x71, 0x90, 0xa4, 0x8b, 0xca,
607 0x2e, 0x88, 0x7b, 0xac, 0xb2, 0xdc, 0xf2, 0x01,
608 0xcb, 0xda, 0x6e, 0x91, 0x27, 0x28, 0x44, 0x88,
609 0x9a, 0xd2, 0x12, 0xf1, 0xa6, 0xf5, 0xb7, 0x61,
610 0xce, 0x79, 0x62, 0x52, 0x3c, 0xe6, 0x14, 0x73,
611 0xd1, 0x41, 0x92, 0x50, 0xbd, 0xdc, 0x3b, 0xd0,
612 0xa7, 0x11, 0x8c, 0x3a, 0xe4, 0x2d, 0xf2, 0x52,
613 0xd3, 0x2f, 0x7c, 0x8e, 0x54, 0x90, 0x4e, 0x23,
614 0xae, 0xb3, 0xa0, 0xf3, 0x25, 0x7e, 0x66, 0xaa,
615 0x0f, 0x6f, 0x81, 0x72, 0x77, 0xbb, 0xd3, 0x47,
616 0xe8, 0x05, 0xff, 0xe1, 0x5b, 0xc9, 0x37, 0x50,
617 0x33, 0x49, 0x17, 0xaf, 0xab, 0x1d, 0xe1, 0x15,
618 0xf2, 0xe5, 0x98, 0x5e, 0x2d, 0x05, 0x1f, 0x0d,
619 0x55, 0x97, 0xed, 0xff, 0x5e, 0xe0, 0x0f, 0xc3,
620 0x9c, 0xbd, 0x82, 0xc2, 0x06, 0xbe, 0x45, 0x66,
621 0xae, 0x33, 0xbe, 0x28, 0x48, 0xe9, 0x2d, 0x1a,
622 0xe6, 0x65, 0x8e, 0xdf, 0x76, 0x03, 0x73, 0x4b,
623 0xc0, 0x80, 0x71, 0xf9, 0xac, 0xba, 0xa0, 0xb0,
624 0x19, 0x1a, 0x0a, 0xd4, 0x35, 0x12, 0x88, 0x76,
625 0x05, 0x75, 0x8f, 0x7c, 0xb5, 0xf0, 0x19, 0x75,
626 0x6d, 0x05, 0xcb, 0x0d, 0xbc, 0x8d, 0xe9, 0xf0,
627 0xd4, 0xdb, 0x3c, 0x3c, 0x29, 0x8e, 0x2c, 0x32,
628 0x1d, 0xf7, 0xb6, 0x49, 0xcf, 0xdb, 0x63, 0xee,
629 0x3c, 0xfa, 0x33, 0x73, 0x6f, 0xe4, 0x97, 0x4e,
630 0x2f, 0xc9, 0x4c, 0x5c, 0x65, 0xfe, 0xea, 0xfb,
631 0xc6, 0xdd, 0xc1, 0x1c, 0x47, 0x3f, 0xf4, 0x50,
632 0x2f, 0xde, 0x1b, 0x5b, 0x0b, 0x16, 0xca, 0xb6,
633 0x46, 0x44, 0xf2, 0xc1, 0x0d, 0xa1, 0x1d, 0xa6,
634 0xdb, 0xf0, 0x3d, 0xb1, 0x6c, 0x05, 0x31, 0x85,
635 0x8e, 0x74, 0xae, 0xf2, 0x39, 0x26, 0xf7, 0xc1,
636 0xe7, 0x4c, 0xdd, 0x9d, 0x40, 0xb8, 0xf3, 0xc5,
637 0xc2, 0x16, 0x64, 0x6b, 0xaa, 0xdb, 0x4b, 0x82,
638 0x5c, 0xd3, 0x02, 0xd3, 0x8f, 0x26, 0x79, 0x8d,
639 0xb0, 0x78, 0x70, 0x19, 0x58, 0x0c, 0xb4, 0x31,
640 0x88, 0x44, 0x1c, 0x91, 0x6f, 0xf4, 0x52, 0x39,
641 0xa8, 0xf5, 0xc0, 0x1b, 0xfe, 0xf2, 0x0e, 0x4b,
642 0xac, 0x0a, 0xc2, 0x7e, 0x9c, 0x9b, 0xeb, 0x5d,
643 0x4e, 0x4f, 0x42, 0xd8, 0x71, 0x0a, 0x97, 0x27,
644 0x03, 0x14, 0x96, 0xa6, 0x3d, 0x04, 0xea, 0x9f,
645 0x14, 0x14, 0x27, 0x4c, 0xd9, 0xa2, 0x89, 0x5f,
646 0x65, 0x4a, 0xe1, 0x9d, 0x2c, 0xb8, 0xf8, 0xd4,
647 0x8f, 0x2a, 0x57, 0x36, 0xcc, 0x06, 0x9c, 0x2c,
648 0xc5, 0x13, 0x16, 0xdf, 0xfc, 0xae, 0x22, 0x16,
649 0xa8, 0x2b, 0x71, 0x6f, 0x1d, 0xb3, 0x47, 0x54,
650 0x3f, 0x2d, 0x0a, 0x68, 0x9f, 0x2e, 0xf6, 0x90,
651 0xd8, 0xa1, 0x21, 0x09, 0xd4, 0x97, 0xb9, 0x7b,
652 0x7f, 0x9b, 0x6a, 0xed, 0xd1, 0xf0, 0xe3, 0xb6,
653 0x28, 0xc7, 0x62, 0x82, 0x00, 0xc9, 0x38, 0xa1,
654 0x82, 0x78, 0xce, 0x87, 0xc8, 0x53, 0xac, 0x4f,
655 0x2e, 0x31, 0xb9, 0x50, 0x7f, 0x36, 0x00, 0x4a,
656 0x32, 0xe6, 0xd8, 0xbb, 0x59, 0x45, 0x0e, 0x91,
657 0x1b, 0x38, 0xa9, 0xbc, 0xb9, 0x5e, 0x6c, 0x6a,
658 0x9c, 0x03, 0x01, 0x1c, 0xde, 0xe8, 0x1f, 0x1e,
659 0xe3, 0xde, 0x25, 0xa2, 0x56, 0x79, 0xe1, 0xbd,
660 0x58, 0xc4, 0x93, 0xe6, 0xd0, 0x8a, 0x4d, 0x08,
661 0xab, 0xf7, 0xaa, 0xc3, 0x7d, 0xc1, 0xee, 0x68,
662 0x37, 0xbc, 0x78, 0x0b, 0x19, 0x68, 0x2b, 0x2b,
663 0x2e, 0x6d, 0xc4, 0x6f, 0xaa, 0x3b, 0xc6, 0x19,
664 0xcb, 0xf1, 0x58, 0xb9, 0x60, 0x85, 0x45, 0xae,
665 0x52, 0x97, 0xba, 0x24, 0x32, 0x13, 0x72, 0x16,
666 0x6e, 0x7b, 0xc1, 0x98, 0xac, 0xb1, 0xed, 0xb4,
667 0xcc, 0x6c, 0xcf, 0x45, 0xfc, 0x50, 0x89, 0x80,
668 0x8e, 0x7a, 0xa4, 0xd3, 0x64, 0x50, 0x63, 0x37,
669 0xc9, 0x6c, 0xf1, 0xc4, 0x3d, 0xfb, 0xde, 0x5a,
670 0x5c, 0xa8, 0x21, 0x35, 0xe6, 0x2e, 0x8c, 0x2a,
671 0x3c, 0x12, 0x17, 0x79, 0x9a, 0x0d, 0x2e, 0x79,
672 0xeb, 0x67, 0x1f, 0x2b, 0xf8, 0x6e, 0xca, 0xc1,
673 0xfa, 0x45, 0x18, 0x9e, 0xdf, 0x6a, 0xe6, 0xcb,
674 0xe9, 0x5c, 0xc3, 0x09, 0xaf, 0x93, 0x58, 0x13,
675 0xbf, 0x90, 0x84, 0x87, 0x75, 0xd6, 0x82, 0x28,
676 0x8d, 0xe7, 0x2f, 0xa3, 0xfb, 0x97, 0x74, 0x2a,
677 0x73, 0x04, 0x82, 0x06, 0x76, 0x69, 0xb1, 0x0b,
678 0x19, 0xfc, 0xae, 0xb3, 0xdd, 0x2a, 0xe5, 0xc1,
679 0x05, 0xd8, 0x80, 0x95, 0x22, 0x90, 0x71, 0xfc,
680 0xc2, 0x92, 0x42, 0xfd, 0xf1, 0x70, 0xb4, 0x68,
681 0x88, 0xa4, 0x9e, 0x0a, 0x24, 0x40, 0x13, 0xc8,
682 0xa2, 0x56, 0x4f, 0x39, 0xe6, 0x06, 0xf1, 0xdc,
683 0xf5, 0x13, 0x0e, 0xad, 0x9c, 0x8b, 0xaf, 0xe9,
684 0xe3, 0x88, 0x72, 0xff, 0xa0, 0x6d, 0xda, 0x08,
685 0x70, 0xb9, 0x2e, 0x83, 0xc5, 0xbb, 0x32, 0xa5,
686 0x74, 0xc7, 0xfb, 0x7b, 0x76, 0xaf, 0x02, 0xbb,
687 0x2b, 0xb8, 0x5e, 0x65, 0x02, 0xfe, 0x0e, 0xa0,
688 0x99, 0xce, 0x01, 0x3b, 0x35, 0xe1, 0xb0, 0x22,
689 0xe5, 0x94, 0xbd, 0xdd, 0x8e, 0xbb, 0xf6, 0x75,
690 0xbf, 0xbf, 0xee, 0x7a, 0xb1, 0x58, 0xb4, 0x81,
691 0xb8, 0x39, 0x3e, 0xb6, 0x1e, 0xde, 0xda, 0x1b,
692 0xd5, 0xf7, 0xdd, 0x7d, 0x65, 0x9c, 0xaa, 0x56,
693 0x93, 0xb8, 0xaf, 0x48, 0x53, 0xc7, 0x22, 0xe4,
694 0x1c, 0xdf, 0xe9, 0x79, 0xb4, 0x20, 0x89, 0xcc,
695 0x2a, 0x79, 0x2c, 0x09, 0xbe, 0x78, 0xcf, 0xcc,
696 0xf2, 0x90, 0xd6, 0x65, 0xc5, 0x29, 0xfc, 0xda,
697 0x69, 0xfc, 0xc0, 0xd6, 0x70, 0x99, 0x61, 0x3f,
698 0x60, 0x02, 0xd8, 0x12, 0x22, 0xc8, 0x34, 0xc6,
699 0x3b, 0xb3, 0xc2, 0x33, 0xa1, 0x5c, 0x8f, 0x4c,
700 0xd1, 0x52, 0x72, 0xf2, 0x42, 0x05, 0x8e, 0x18,
701 0x1f, 0x16, 0xda, 0xb8, 0x53, 0xa1, 0x5f, 0x01,
702 0x32, 0x1b, 0x90, 0xb3, 0x53, 0x9b, 0xd0, 0x85,
703 0x61, 0x2d, 0x17, 0xed, 0x0a, 0xa4, 0xa5, 0x27,
704 0x09, 0x75, 0x7c, 0xbc, 0x30, 0xf7, 0x5e, 0x59,
705 0x9a, 0x07, 0x96, 0x84, 0x28, 0x86, 0x4b, 0xa7,
706 0x22, 0x35, 0x28, 0xc7, 0xed, 0x0d, 0xc3, 0xce,
707 0x98, 0xcc, 0x2d, 0xec, 0xd4, 0x98, 0x09, 0x8e,
708 0x52, 0x5f, 0x2b, 0x9a, 0x13, 0xbe, 0x99, 0x16,
709 0x73, 0xd1, 0x1f, 0x81, 0xe5, 0xa2, 0x08, 0x78,
710 0xcb, 0x0c, 0x20, 0xd4, 0xa5, 0xea, 0x4b, 0x5b,
711 0x95, 0x5a, 0x92, 0x9a, 0x52
713 "id-Gost28147-89-CryptoPro-A-ParamSet",
716 0x1b, 0x5d, 0xdb, 0x77, 0xcf, 0xf9, 0xec, 0x95,
717 0x5e, 0xcc, 0x67, 0x9f, 0x5d, 0x28, 0xad, 0x4a,
718 0x27, 0xf4, 0x32, 0xc6, 0xb2, 0xcb, 0xb1, 0x45,
719 0x6a, 0x88, 0x14, 0x0c, 0x9b, 0x9b, 0x5f, 0x48
723 0x71, 0x58, 0x8c, 0xe1, 0x55, 0xf4, 0xf6, 0xb3
726 0x8e, 0xcd, 0x8f, 0xc8, 0xac, 0xe1, 0x15, 0x48,
727 0x2d, 0xae, 0x24, 0x8a, 0xc7, 0xfb, 0xba, 0x0f,
728 0x1d, 0x8a, 0x95, 0xa2, 0x43, 0xef, 0xcb, 0xdc,
729 0x59, 0x57, 0xa7, 0xc7, 0x0e, 0xe3, 0xe2, 0xb9,
730 0x0d, 0x86, 0x29, 0x62, 0xcb, 0x83, 0x4d, 0x07,
731 0x0c, 0x40, 0xd4, 0x7b, 0x2e, 0xca, 0xba, 0xbf,
732 0x4a, 0x60, 0x3b, 0x31, 0x98, 0xc8, 0x88, 0x47,
733 0xd9, 0x82, 0xab, 0xfc, 0x8f, 0x48, 0xe2, 0x46,
734 0xab, 0xd3, 0xa1, 0xab, 0x8a, 0x05, 0x22, 0x8c,
735 0xf4, 0xec, 0x9a, 0x1e, 0x76, 0xab, 0x1a, 0x60,
736 0xd9, 0x25, 0x6b, 0xb8, 0x56, 0xe5, 0xb2, 0xea,
737 0x10, 0xf3, 0x62, 0x04, 0x32, 0x5e, 0xaa, 0x3b,
738 0x7b, 0x57, 0xbc, 0x3b, 0x8b, 0x43, 0x47, 0xf2,
739 0xd5, 0x03, 0x7e, 0x51, 0x01, 0xff, 0x77, 0x28,
740 0xca, 0x90, 0xa3, 0xfe, 0x7e, 0x2e, 0x70, 0x16,
741 0x75, 0x18, 0x44, 0xf0, 0x1b, 0x85, 0x05, 0xea,
742 0xe3, 0x21, 0xf7, 0x26, 0x86, 0x76, 0x3c, 0x67,
743 0x9d, 0xfc, 0xbc, 0x10, 0x7f, 0x77, 0xe4, 0xed,
744 0xd3, 0x12, 0xf8, 0x83, 0x00, 0x1f, 0x4b, 0x92,
745 0x95, 0x92, 0x5c, 0xf3, 0x5a, 0xf3, 0xb7, 0xd0,
746 0xa9, 0x5f, 0xf2, 0x18, 0xc4, 0x66, 0x62, 0xc1,
747 0x84, 0x0e, 0x66, 0xe8, 0x80, 0x7d, 0x1f, 0xf0,
748 0xba, 0x01, 0x9b, 0x71, 0xae, 0x93, 0xcc, 0x27,
749 0x54, 0x34, 0x9a, 0xbd, 0xca, 0xee, 0x52, 0x09,
750 0x92, 0x9d, 0xb0, 0xd5, 0xd9, 0xba, 0x2f, 0xb9,
751 0x96, 0xdc, 0xfa, 0xbd, 0xce, 0xea, 0x1a, 0x7b,
752 0x9a, 0x1d, 0x13, 0xa7, 0x11, 0xe2, 0x9a, 0x64,
753 0xf6, 0xd3, 0xee, 0xc6, 0x33, 0xb7, 0x6e, 0xef,
754 0x25, 0x9e, 0x1e, 0x7c, 0xe3, 0x1f, 0x2c, 0x6e,
755 0xa9, 0xc0, 0xf8, 0xc1, 0xbf, 0x3b, 0xf8, 0x34,
756 0x03, 0x9b, 0xa1, 0x40, 0x5b, 0x0c, 0x3c, 0x09,
757 0x66, 0x9d, 0x63, 0xe2, 0xe2, 0x04, 0x8f, 0x06,
758 0x84, 0x74, 0x68, 0xb2, 0x5c, 0x3b, 0x4c, 0xad,
759 0x0b, 0x3f, 0x03, 0xb3, 0x07, 0x8a, 0x64, 0xa7,
760 0x36, 0x56, 0x26, 0x39, 0x66, 0xda, 0xe9, 0x6d,
761 0x1b, 0xd5, 0x88, 0xe8, 0x5c, 0xaf, 0x5a, 0x4c,
762 0x49, 0xf7, 0xf5, 0xb7, 0x78, 0xf0, 0xde, 0xec,
763 0xcd, 0x16, 0x23, 0x9e, 0x8c, 0x13, 0xbe, 0x6b,
764 0x6f, 0x9b, 0x07, 0xe5, 0xbb, 0xcc, 0x3a, 0x1b,
765 0x6f, 0x43, 0xdf, 0xff, 0x46, 0x2a, 0xae, 0x47,
766 0x19, 0x18, 0x9a, 0x25, 0x09, 0xc9, 0x24, 0x40,
767 0x0c, 0x4b, 0xa7, 0xda, 0x5e, 0x0d, 0xee, 0xfa,
768 0x62, 0x45, 0x8e, 0xcc, 0x2f, 0x23, 0x08, 0x1d,
769 0x92, 0xf0, 0xfe, 0x82, 0x0f, 0xd7, 0x11, 0x60,
770 0x7e, 0x0b, 0x0b, 0x75, 0xf4, 0xf5, 0x3b, 0xc0,
771 0xa4, 0xe8, 0x72, 0xa5, 0xb6, 0xfa, 0x5a, 0xad,
772 0x5a, 0x4f, 0x39, 0xb5, 0xa2, 0x12, 0x96, 0x0a,
773 0x32, 0x84, 0xb2, 0xa1, 0x06, 0x68, 0x56, 0x57,
774 0x97, 0xa3, 0x7b, 0x22, 0x61, 0x76, 0x5d, 0x30,
775 0x1a, 0x31, 0xab, 0x99, 0x06, 0xc5, 0x1a, 0x96,
776 0xcf, 0xcf, 0x14, 0xff, 0xb2, 0xc4, 0xcc, 0x2b,
777 0xbf, 0x0c, 0x9d, 0x91, 0x8f, 0x79, 0x5b, 0xbc,
778 0xa9, 0x6b, 0x91, 0x6a, 0xb4, 0x93, 0x5c, 0x7b,
779 0x5d, 0xc2, 0x8a, 0x75, 0xc0, 0xc1, 0x08, 0xfa,
780 0x99, 0xf9, 0x4d, 0x5e, 0x0c, 0x06, 0x64, 0x60,
781 0xa9, 0x01, 0x4a, 0x34, 0x0f, 0x33, 0x84, 0x95,
782 0x69, 0x30, 0xc1, 0x1c, 0x36, 0xf8, 0xfc, 0x30,
783 0x23, 0xb2, 0x71, 0xe5, 0x52, 0x4d, 0x12, 0x1a,
784 0xc9, 0xbe, 0xee, 0xc9, 0xcb, 0x01, 0x85, 0xf3,
785 0xdb, 0x30, 0xf9, 0x41, 0xa9, 0x40, 0xb0, 0x06,
786 0x29, 0x77, 0xcd, 0xc5, 0xec, 0x58, 0x02, 0x48,
787 0x83, 0x53, 0x44, 0x6a, 0xd2, 0xca, 0x05, 0xd8,
788 0x5a, 0x08, 0xeb, 0xa9, 0xf4, 0xe6, 0xc7, 0x9d,
789 0xd5, 0x7b, 0x74, 0x0b, 0x31, 0xb7, 0xa5, 0x57,
790 0x7c, 0x7a, 0xfd, 0x1a, 0x0e, 0xd7, 0x97, 0x41,
791 0xbf, 0xdd, 0xc6, 0x19, 0x6c, 0x77, 0x8c, 0x18,
792 0x52, 0x57, 0x83, 0xba, 0x71, 0x25, 0xee, 0x39,
793 0xbb, 0xe2, 0x43, 0xa0, 0x14, 0xdc, 0x0e, 0x84,
794 0xb4, 0x2b, 0xde, 0x3e, 0xe5, 0x36, 0xb7, 0xa2,
795 0x92, 0x98, 0x05, 0xb8, 0x96, 0xe5, 0xd0, 0x8c,
796 0x08, 0x93, 0x35, 0xc2, 0x81, 0xe0, 0xfc, 0x59,
797 0x71, 0xe2, 0x44, 0x49, 0x5d, 0xda, 0xfb, 0x9c,
798 0xaa, 0x70, 0x9f, 0x43, 0xa8, 0xa5, 0xd9, 0x67,
799 0xd9, 0x8f, 0xa3, 0x1e, 0xbe, 0x0e, 0xec, 0xdf,
800 0x12, 0x2b, 0x6a, 0xe7, 0x1c, 0x12, 0x17, 0xe7,
801 0xc4, 0x6d, 0x50, 0xc9, 0x52, 0x7a, 0xd5, 0xe8,
802 0x7f, 0xbc, 0x07, 0x15, 0xac, 0xdb, 0x93, 0x66,
803 0xb1, 0xf0, 0xa7, 0x7b, 0x2f, 0xe9, 0xec, 0xd0,
804 0x47, 0x69, 0x59, 0x87, 0xf1, 0x4c, 0x3e, 0x4b,
805 0x9b, 0x11, 0x79, 0x13, 0xe4, 0x96, 0xf6, 0x56,
806 0x04, 0x6e, 0x0b, 0x33, 0xfc, 0x40, 0xf6, 0xc7,
807 0xc1, 0x43, 0xb1, 0xbf, 0x0e, 0xb3, 0x87, 0xfd,
808 0x0b, 0x1c, 0x63, 0x46, 0x3a, 0xd3, 0xa0, 0x17,
809 0x59, 0x25, 0x94, 0x6c, 0x9c, 0x3d, 0x0c, 0x81,
810 0xce, 0x82, 0x72, 0x42, 0x28, 0xf9, 0x37, 0x6a,
811 0x6d, 0xe4, 0x12, 0xf4, 0x21, 0xaa, 0xf7, 0xfe,
812 0x27, 0x55, 0x40, 0x1a, 0x14, 0xc3, 0x39, 0x5b,
813 0xbf, 0x63, 0xc2, 0x5f, 0x10, 0x1f, 0x14, 0x25,
814 0xd0, 0xce, 0xf3, 0x14, 0x48, 0x13, 0xa5, 0x0b,
815 0x4d, 0x38, 0xcf, 0x0d, 0x34, 0xc0, 0x0a, 0x11,
816 0xb4, 0xb5, 0x72, 0xc8, 0x4b, 0xc2, 0x6f, 0xe7,
817 0x9d, 0x93, 0xf7, 0xdf, 0xb8, 0x43, 0x72, 0x7e,
818 0xda, 0x3e, 0x20, 0x1f, 0xbc, 0x21, 0x2a, 0xce,
819 0x00, 0xfa, 0x96, 0x9f, 0x3d, 0xe5, 0x88, 0x96,
820 0xef, 0x29, 0x84, 0xdf, 0x6c, 0x1c, 0x96, 0xd8,
821 0x58, 0x47, 0xaa, 0x92, 0xf3, 0x07, 0xe5, 0xfb,
822 0xaf, 0xea, 0x95, 0x7e, 0x0b, 0x71, 0xcd, 0x81,
823 0x0f, 0xb7, 0x0a, 0x59, 0x8f, 0x31, 0x4d, 0xd1,
824 0xc3, 0xf3, 0x2f, 0x70, 0x5c, 0x59, 0x18, 0x97,
825 0xaf, 0x77, 0x95, 0x5e, 0xaf, 0x40, 0x06, 0x12,
826 0x81, 0x61, 0x86, 0x08, 0x4e, 0xbc, 0x89, 0x46,
827 0x07, 0x2e, 0x5b, 0x10, 0xaa, 0x12, 0xf0, 0xa7,
828 0x84, 0xe2, 0x9a, 0x08, 0xf1, 0xde, 0x59, 0xe3,
829 0x0e, 0x47, 0x4b, 0xff, 0xc3, 0xc9, 0x18, 0xaf,
830 0x95, 0x9c, 0x67, 0x2a, 0xde, 0x8a, 0x7a, 0x99,
831 0x04, 0xc4, 0xb8, 0x97, 0x4c, 0x04, 0x29, 0x71,
832 0x05, 0xda, 0xb3, 0xd6, 0xdb, 0x6c, 0x71, 0xe6,
833 0xe8, 0x03, 0xbf, 0x94, 0x7d, 0xde, 0x3d, 0xc8,
834 0x44, 0xfa, 0x7d, 0x62, 0xb4, 0x36, 0x03, 0xee,
835 0x36, 0x52, 0x64, 0xb4, 0x85, 0x6d, 0xd5, 0x78,
836 0xf0, 0x6f, 0x67, 0x2d, 0x0e, 0xe0, 0x2c, 0x88,
837 0x9b, 0x55, 0x19, 0x29, 0x40, 0xf6, 0x8c, 0x12,
838 0xbb, 0x2c, 0x83, 0x96, 0x40, 0xc0, 0x36, 0xf5,
839 0x77, 0xff, 0x70, 0x8c, 0x75, 0x92, 0x0b, 0xad,
840 0x05, 0x9b, 0x7e, 0xa2, 0xfc, 0xa9, 0xd1, 0x64,
841 0x76, 0x82, 0x13, 0xba, 0x22, 0x5e, 0x33, 0x0e,
842 0x26, 0x70, 0xa9, 0xbe, 0x74, 0x28, 0xf5, 0xe2,
843 0xc4, 0x96, 0xee, 0x3a, 0xbc, 0x97, 0xa6, 0x2c,
844 0x2a, 0xe0, 0x64, 0x8d, 0x35, 0xc6, 0x1a, 0xca,
845 0xf4, 0x92, 0xfa, 0xc3, 0xf1, 0x1f, 0x98, 0xe4,
846 0x43, 0x88, 0x69, 0x3a, 0x09, 0xbf, 0x63, 0xe5,
847 0x96, 0x29, 0x0b, 0x9b, 0x62, 0x23, 0x14, 0x8a,
848 0x95, 0xe4, 0x1c, 0x5c, 0x0a, 0xa9, 0xc5, 0xb9,
849 0x6f, 0x4f, 0x2b, 0x25, 0x6f, 0x74, 0x1e, 0x18,
850 0xd5, 0xfe, 0x27, 0x7d, 0x3f, 0x6e, 0x55, 0x2c,
851 0x67, 0xe6, 0xde, 0xb5, 0xcc, 0xc0, 0x2d, 0xff,
852 0xc4, 0xe4, 0x06, 0x21, 0xa5, 0xc8, 0xd3, 0xd6,
853 0x6c, 0xa1, 0xc3, 0xfb, 0x88, 0x92, 0xb1, 0x1d,
854 0x90, 0xe1, 0x35, 0x05, 0x9b, 0x29, 0x6d, 0xba,
855 0xf1, 0xf4, 0x1e, 0x23, 0x2e
858 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
861 "id-Gost28147-89-CryptoPro-A-ParamSet",
864 0x07, 0x52, 0x65, 0xe7, 0xca, 0xa3, 0xca, 0x45,
865 0xcf, 0x3a, 0x05, 0x1d, 0x38, 0x03, 0x53, 0x0c,
866 0x22, 0x31, 0xba, 0x99, 0x4f, 0x9b, 0x6a, 0x1b,
867 0x7e, 0x09, 0x9d, 0x4e, 0xb5, 0xc9, 0x84, 0x2e
871 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
874 0x3d, 0x05, 0x07, 0x57, 0xc0, 0x75, 0x89, 0x97,
875 0xd6, 0x94, 0x49, 0x11, 0x1d, 0xd0, 0x91, 0xee
878 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
881 "id-Gost28147-89-CryptoPro-A-ParamSet",
884 0x75, 0xa3, 0x3c, 0xae, 0x03, 0x6b, 0x10, 0xdb,
885 0xc1, 0x56, 0x50, 0x89, 0x03, 0xd2, 0x9f, 0x91,
886 0xee, 0xe8, 0x64, 0x1d, 0x43, 0xf2, 0x4e, 0xf8,
887 0xf2, 0x6c, 0xed, 0xda, 0x8f, 0xe4, 0x88, 0xe9
891 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
894 0xfa, 0x6c, 0x96, 0x78, 0xe2, 0xf8, 0xdd, 0xaa,
895 0x67, 0x5a, 0xc9, 0x5d, 0x57, 0xf1, 0xbd, 0x99
898 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
901 0xd6, 0xcf, 0x31, 0x96, 0x9c, 0xa1, 0xfb, 0xd6,
902 0x8d, 0xa3, 0xdd, 0x01, 0xd9, 0x88, 0xc0, 0x2f,
903 0xbc, 0x46, 0xc7, 0x3a, 0xe4, 0x21, 0x86, 0x96,
904 0x8d, 0xe2, 0xca, 0xb6, 0x37, 0xa2, 0xe1, 0xa8,
905 0x7e, 0xa7, 0x79, 0x2e, 0xa4, 0x56, 0x75, 0x7f,
906 0x3e, 0x55, 0x8b, 0x43, 0xae, 0x65, 0xdf, 0xaa,
907 0x42, 0xb6, 0x00, 0xa6, 0x61, 0x03, 0x0d, 0xd3,
908 0x41, 0x02, 0x27, 0x23, 0x95, 0x79, 0x9b, 0x34,
909 0x81, 0xa9, 0x86, 0xb5, 0xa7, 0x90, 0xe2, 0xae,
910 0xc4, 0x2f, 0xc3, 0x8e, 0x32, 0x56, 0x13, 0xfa,
911 0x4d, 0x4e, 0x9f, 0x15, 0x75, 0x7e, 0x74, 0xdc,
912 0x32, 0x2d, 0xee, 0x4d, 0x67, 0x70, 0x9f, 0x62,
913 0xb9, 0xc4, 0xdb, 0x24, 0x84, 0xcc, 0x16, 0x7b,
914 0xda, 0x22, 0xf7, 0xc5, 0xf3, 0x93, 0x35, 0x73,
915 0xc6, 0x03, 0x1c, 0x77, 0xa5, 0xf2, 0x76, 0x56,
916 0xb4, 0x95, 0xd4, 0x7e, 0x0d, 0x20, 0xc6, 0x6e,
917 0xee, 0x8f, 0x25, 0x48, 0xff, 0x7e, 0x01, 0x3a,
918 0xb4, 0x1f, 0xaa, 0x35, 0xc0, 0x33, 0x58, 0x9c,
919 0xb5, 0xba, 0x65, 0x4b, 0xd3, 0x51, 0x14, 0xec,
920 0x61, 0xce, 0xe4, 0xba, 0x49, 0xba, 0x39, 0x32,
921 0xab, 0xce, 0x81, 0x72, 0xce, 0xab, 0xed, 0xd4,
922 0xd2, 0x19, 0x87, 0x85, 0x92, 0xfa, 0x64, 0x34,
923 0xd8, 0x86, 0xf4, 0x8a, 0x08, 0x3c, 0xde, 0xee,
924 0x97, 0x92, 0x92, 0x69, 0xba, 0x9b, 0x5f, 0x7a,
925 0x03, 0xc1, 0x5d, 0x43, 0x02, 0x8c, 0xbe, 0xd2,
926 0x46, 0x72, 0x81, 0x40, 0x7d, 0x68, 0x98, 0x45,
927 0x0b, 0x54, 0x27, 0x1c, 0xaf, 0x80, 0x42, 0xe4,
928 0xd5, 0xd4, 0xe4, 0xa2, 0x98, 0x07, 0x8f, 0x03,
929 0xf5, 0x2c, 0x8c, 0x88, 0xca, 0x5a, 0xde, 0xe4,
930 0x9f, 0xb1, 0x5f, 0x82, 0xff, 0x20, 0x67, 0x52,
931 0x85, 0x84, 0x4f, 0xc8, 0xfe, 0xa7, 0x9e, 0xae,
932 0x1c, 0xfa, 0xb8, 0x75, 0xd3, 0xf7, 0x9f, 0x0d,
933 0xda, 0x2d, 0xe6, 0xcc, 0x86, 0x6b, 0xa4, 0x14,
934 0x65, 0xc3, 0xf9, 0x15, 0xbc, 0x87, 0xf5, 0xae,
935 0x8c, 0x10, 0xd4, 0xce, 0x5b, 0x9c, 0xe2, 0xdd,
936 0x42, 0x03, 0x09, 0x87, 0x47, 0xed, 0x5d, 0xd0,
937 0x7a, 0x69, 0x4c, 0xfa, 0x43, 0x7d, 0xbf, 0x07,
938 0x85, 0x6a, 0xee, 0x68, 0xe6, 0x7a, 0x57, 0xb2,
939 0x20, 0x8d, 0x80, 0xf2, 0x91, 0x6f, 0x5c, 0x07,
940 0x8c, 0xe4, 0x6a, 0x49, 0x90, 0x85, 0x8b, 0x77,
941 0x29, 0x56, 0x1c, 0x5e, 0xa9, 0x3f, 0xab, 0x8b,
942 0x79, 0xa3, 0x6f, 0x6b, 0x34, 0xcb, 0x61, 0xf6,
943 0xe6, 0x92, 0xd1, 0x48, 0x9e, 0x11, 0xa2, 0x82,
944 0xc0, 0x4e, 0x23, 0xd2, 0x15, 0x0d, 0x8d, 0xff,
945 0xfa, 0x17, 0x9d, 0x81, 0xb8, 0xbc, 0xd7, 0x5b,
946 0x08, 0x81, 0x20, 0x40, 0xc0, 0x3c, 0x06, 0x8b,
947 0x1a, 0x88, 0x0b, 0x4b, 0x7b, 0x31, 0xf5, 0xd4,
948 0x4e, 0x09, 0xd1, 0x4d, 0x0d, 0x7f, 0x45, 0xd1,
949 0x09, 0x35, 0xba, 0xce, 0x65, 0xdd, 0xf2, 0xb8,
950 0xfb, 0x7a, 0xbc, 0xc4, 0x4b, 0xc8, 0x75, 0xda,
951 0x6b, 0xce, 0x3d, 0xe8, 0x94, 0xcc, 0x23, 0x6f,
952 0xb0, 0x3b, 0x4f, 0x7d, 0x07, 0xb9, 0x0f, 0x62,
953 0x92, 0x7e, 0xda, 0x70, 0x50, 0xce, 0xd3, 0x28,
954 0x12, 0x11, 0x00, 0xeb, 0x8d, 0x63, 0x70, 0x78,
955 0xa8, 0x7b, 0x76, 0xab, 0xc6, 0x40, 0xc0, 0x4e,
956 0x80, 0xdd, 0xf0, 0xfe, 0x83, 0x72, 0x56, 0x4c,
957 0x09, 0x4c, 0xf1, 0x72, 0x72, 0x86, 0x26, 0x31,
958 0xc3, 0xc2, 0xdc, 0x8e, 0xc7, 0xf4, 0x35, 0xec,
959 0x17, 0x06, 0x63, 0x47, 0x49, 0x88, 0x47, 0xaf,
960 0xb3, 0x38, 0x4f, 0x7e, 0x44, 0x95, 0xb5, 0xbb,
961 0x1d, 0xbd, 0x5a, 0x91, 0x5b, 0xd0, 0x1a, 0xdf,
962 0x0d, 0x0b, 0x50, 0xd8, 0xe2, 0x0e, 0xc5, 0x00,
963 0x2d, 0x5b, 0x29, 0x19, 0xaa, 0x2b, 0x64, 0xc5,
964 0x40, 0x31, 0x48, 0x11, 0xbc, 0x04, 0xd1, 0xcf,
965 0x6d, 0xf9, 0xa5, 0x2f, 0x4a, 0xc9, 0x82, 0xfa,
966 0x59, 0xe1, 0xfc, 0xab, 0x1c, 0x33, 0x26, 0x0a,
967 0x5f, 0xef, 0xf2, 0x06, 0xd8, 0xd3, 0x7e, 0x16,
968 0x58, 0x16, 0x78, 0x73, 0xae, 0xba, 0xeb, 0xe5,
969 0x3d, 0xb2, 0x0a, 0xb3, 0x32, 0x2d, 0x14, 0xa4,
970 0xfa, 0x3f, 0x1f, 0x43, 0xf9, 0x7b, 0xa9, 0x43,
971 0x98, 0x18, 0x94, 0x07, 0x07, 0xe5, 0x19, 0x34,
972 0xa8, 0x16, 0x5f, 0x71, 0x67, 0xaa, 0x29, 0xe5,
973 0xfa, 0xf0, 0x83, 0x06, 0x1d, 0x9d, 0xfc, 0xfe,
974 0xfe, 0x8c, 0xb5, 0xb2, 0xa9, 0xe7, 0xa0, 0x40,
975 0x60, 0xb6, 0x71, 0x9e, 0xab, 0x5b, 0x83, 0xb9,
976 0x0c, 0x2b, 0x58, 0x23, 0x80, 0x09, 0x9e, 0x5d,
977 0x94, 0x7d, 0x40, 0x76, 0xa9, 0x16, 0x96, 0x9e,
978 0x83, 0xe0, 0x0d, 0xec, 0xa0, 0xec, 0x76, 0x2a,
979 0xb7, 0xa0, 0xff, 0xb8, 0x50, 0x4c, 0x5b, 0xc6,
980 0x8b, 0x0a, 0x65, 0x2e, 0xfe, 0xb4, 0x40, 0x9a,
981 0x01, 0xd8, 0xc6, 0xa3, 0xab, 0x99, 0xa2, 0xc5,
982 0x0c, 0x08, 0xc4, 0xb7, 0xee, 0x4d, 0x1d, 0xc4,
983 0x08, 0x15, 0xd0, 0xdb, 0xaa, 0x63, 0x4f, 0x31,
984 0xeb, 0x14, 0x97, 0x43, 0xbd, 0xc1, 0x94, 0x08,
985 0xe6, 0xde, 0x43, 0x9f, 0x95, 0x0b, 0x96, 0x7e,
986 0x7f, 0x3c, 0x68, 0xba, 0x6f, 0xc4, 0xc9, 0x35,
987 0x2b, 0xc4, 0x0e, 0xda, 0x1f, 0x91, 0x68, 0x64,
988 0x63, 0x34, 0x73, 0xbe, 0x57, 0x75, 0xb9, 0xed,
989 0xf7, 0x2d, 0x3b, 0x05, 0x21, 0x93, 0x28, 0x48,
990 0x96, 0x95, 0x97, 0xa0, 0xd2, 0x7d, 0x78, 0xbb,
991 0x6a, 0x49, 0x8f, 0x76, 0x55, 0x74, 0x63, 0xb9,
992 0xc5, 0x36, 0x12, 0x25, 0xbf, 0x03, 0x82, 0x8f,
993 0xf0, 0xf6, 0x80, 0xbb, 0x33, 0xb4, 0xf4, 0x17,
994 0x27, 0x1c, 0xf3, 0x4c, 0x10, 0xa3, 0xe4, 0xd1,
995 0x55, 0xd9, 0x68, 0x21, 0x4e, 0x5a, 0x83, 0x67,
996 0xbf, 0xf8, 0x3c, 0x7d, 0x4e, 0x62, 0xd3, 0x28,
997 0xa7, 0x26, 0x6f, 0xe9, 0xee, 0xc2, 0x0b, 0x2d,
998 0x03, 0x84, 0xb1, 0xff, 0xd6, 0x68, 0x1f, 0xb6,
999 0xf2, 0xe4, 0x0f, 0xda, 0x2d, 0xee, 0x5f, 0x6e,
1000 0x21, 0xc8, 0xe1, 0xfc, 0xad, 0x6b, 0x0e, 0x04,
1001 0x7d, 0xaf, 0xc2, 0x3b, 0xa5, 0x68, 0x9b, 0x0c,
1002 0xf3, 0x56, 0xf3, 0xda, 0x8d, 0xc8, 0x7d, 0x39,
1003 0xdc, 0xd5, 0x99, 0xc6, 0x01, 0x10, 0xce, 0x42,
1004 0x1b, 0xac, 0x48, 0xdc, 0x97, 0x78, 0x0a, 0xec,
1005 0xb3, 0x8f, 0x47, 0x35, 0xa3, 0x6a, 0x64, 0xb2,
1006 0x8e, 0x63, 0x69, 0x22, 0x66, 0xae, 0x2e, 0xe0,
1007 0x88, 0xf9, 0x40, 0x3c, 0xc9, 0xa2, 0x57, 0x61,
1008 0xf6, 0xad, 0xf0, 0xdc, 0x90, 0x56, 0x3f, 0x06,
1009 0x9b, 0x7d, 0xbd, 0xc2, 0x81, 0x02, 0xab, 0xb8,
1010 0x15, 0x09, 0x88, 0x4a, 0xff, 0x2f, 0x31, 0xbf,
1011 0x5e, 0xfa, 0x6a, 0x7e, 0xf6, 0xc5, 0xa7, 0xf7,
1012 0xd5, 0xab, 0x55, 0xac, 0xae, 0x0d, 0x8c, 0x8d,
1013 0x7f, 0x4b, 0x25, 0xbb, 0x32, 0xff, 0x11, 0x33,
1014 0x2e, 0x37, 0x37, 0x69, 0x96, 0x15, 0x17, 0xb1,
1015 0x17, 0x49, 0xe0, 0x9a, 0x9c, 0xd9, 0x5b, 0x8d,
1016 0x58, 0xa3, 0x1d, 0x92, 0x87, 0xf8, 0x80, 0xb9,
1017 0xbd, 0x5a, 0xec, 0x40, 0xe1, 0x00, 0x33, 0x60,
1018 0xe4, 0x86, 0x16, 0x6d, 0x61, 0x81, 0xf2, 0x28,
1019 0x6a, 0xa7, 0xce, 0x3f, 0x95, 0xae, 0x43, 0xca,
1020 0xe1, 0x3f, 0x81, 0x74, 0x7e, 0x1c, 0x47, 0x17,
1021 0x95, 0xc6, 0x60, 0xda, 0x74, 0x77, 0xd9, 0x9f,
1022 0xfa, 0x92, 0xb4, 0xbe, 0xe1, 0x23, 0x98, 0x18,
1023 0x95, 0x63, 0x03, 0x13, 0x4c, 0x1a, 0x2d, 0x41,
1024 0xcd, 0xe4, 0x84, 0xf7, 0xe6, 0x38, 0xef, 0xff,
1025 0x95, 0xb2, 0xe8, 0x7c, 0x8f, 0x58, 0xb5, 0xb5,
1026 0xed, 0x27, 0x7f, 0x3c, 0x18, 0xab, 0xbe, 0x7f,
1027 0x4f, 0xe2, 0x35, 0x15, 0x71, 0xb7, 0x6f, 0x85,
1028 0x38, 0x9b, 0x88, 0xf6, 0x9c, 0x8d, 0x43, 0xb5,
1029 0x58, 0x9e, 0xf2, 0xd1, 0x96, 0xbe, 0xb7, 0xad,
1032 "id-Gost28147-89-CryptoPro-A-ParamSet",
1035 0x80, 0xd9, 0xa0, 0xdc, 0x21, 0xf9, 0x30, 0x40,
1036 0x75, 0xfe, 0x49, 0x1b, 0x9e, 0x71, 0x90, 0x91,
1037 0x78, 0x88, 0x21, 0x60, 0x39, 0xe7, 0xc9, 0x2b,
1038 0xfb, 0x55, 0x1d, 0xf4, 0xdd, 0x2b, 0x0a, 0x01
1043 0x90, 0xf2, 0x11, 0x9a
1046 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1049 0x1d, 0xeb, 0xe6, 0x79, 0x0a, 0x59, 0x00, 0xe6,
1052 "id-Gost28147-89-CryptoPro-A-ParamSet",
1055 0xa9, 0xb6, 0x37, 0xcc, 0x6d, 0x9b, 0x2f, 0x25,
1056 0xb0, 0xdf, 0x47, 0x04, 0x50, 0x68, 0xb0, 0x27,
1057 0x41, 0x27, 0x58, 0x6a, 0xbd, 0x0a, 0x6e, 0x50,
1058 0x2f, 0xc6, 0xfc, 0xc0, 0x3e, 0x29, 0x42, 0xa5
1063 0x31, 0x7c, 0x16, 0xe4
1066 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1069 0xef, 0x06, 0x8f, 0x14, 0xc9, 0x04
1071 "id-Gost28147-89-CryptoPro-A-ParamSet",
1074 0xb0, 0x6c, 0x48, 0x23, 0x0a, 0x6e, 0xf4, 0xec,
1075 0x27, 0x98, 0x01, 0x23, 0xa7, 0xd8, 0xbf, 0x60,
1076 0x89, 0xef, 0xad, 0xe8, 0x8f, 0x79, 0x14, 0x8c,
1077 0x18, 0x5c, 0x9a, 0xda, 0xef, 0x0b, 0xdd, 0xa0
1082 0xe9, 0x72, 0xae, 0xbf
1085 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1088 0x02, 0xf8, 0xec, 0x2b, 0x4d, 0x1f, 0xbc, 0x7c,
1089 0x6e, 0x47, 0xe3, 0x87, 0x22, 0x75, 0x41, 0xa7
1091 "id-Gost28147-89-CryptoPro-B-ParamSet",
1094 0x33, 0xd3, 0xef, 0x01, 0x19, 0x95, 0x0e, 0x15,
1095 0xa1, 0x69, 0x75, 0xae, 0x56, 0x27, 0x17, 0x79,
1096 0x63, 0x47, 0xab, 0x62, 0x9d, 0x4a, 0xf0, 0x34,
1097 0xd3, 0x1e, 0x69, 0x74, 0xec, 0x31, 0x48, 0xfc
1102 0xf5, 0x55, 0x1f, 0x28
1105 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1108 0xf3, 0xb2, 0x29, 0xd2, 0x7a, 0x37, 0x03, 0x12
1110 "id-Gost28147-89-CryptoPro-A-ParamSet",
1113 0x42, 0x35, 0x81, 0x91, 0x0b, 0xa9, 0x99, 0xff,
1114 0xd9, 0x43, 0xf8, 0xc6, 0x19, 0x55, 0x1f, 0x2f,
1115 0x2d, 0x45, 0x40, 0x20, 0x1e, 0x1d, 0x32, 0x7a,
1116 0xb1, 0x07, 0x6b, 0x4f, 0x45, 0x90, 0xd9, 0x80
1121 0x6e, 0x15, 0xfa, 0xe8
1124 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1129 "id-Gost28147-89-CryptoPro-A-ParamSet",
1132 0x26, 0xcb, 0xb9, 0xf0, 0x0c, 0x62, 0x9f, 0xaa,
1133 0x4a, 0x1d, 0xb6, 0x30, 0x09, 0x01, 0x56, 0x89,
1134 0x66, 0xd4, 0xe4, 0x0e, 0xfe, 0xf6, 0x10, 0x6b,
1135 0x6c, 0xe8, 0x04, 0x3a, 0xe3, 0x61, 0x4b, 0x19
1140 0x00, 0x00, 0x00, 0x00
1143 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1146 "id-Gost28147-89-CryptoPro-A-ParamSet",
1149 0xaa, 0x85, 0x84, 0xcd, 0x65, 0x28, 0xe1, 0xdb,
1150 0xb8, 0x20, 0x19, 0x43, 0xe0, 0x36, 0x35, 0x10,
1151 0x19, 0xc3, 0x70, 0x5b, 0x27, 0xc1, 0x9d, 0x84,
1152 0x75, 0xa3, 0xc6, 0x49, 0x46, 0x8f, 0x7c, 0x4e
1157 0x2a, 0xe6, 0x23, 0xc6
1160 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1163 "id-Gost28147-89-CryptoPro-A-ParamSet",
1166 0xd5, 0xda, 0xfe, 0x06, 0x60, 0xdc, 0xf0, 0xb3,
1167 0x49, 0x5a, 0x02, 0x59, 0xc8, 0x2e, 0x4a, 0x2b,
1168 0xcc, 0x9b, 0x98, 0x04, 0xb7, 0xf2, 0x78, 0xb7,
1169 0xce, 0xa3, 0xf2, 0xdb, 0x9e, 0xa8, 0x49, 0x1d
1174 0xcc, 0x46, 0x67, 0xe4
1177 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1178 4ULL*1024*1024*1024ULL,
1180 "id-Gost28147-89-CryptoPro-A-ParamSet",
1183 0x0d, 0xf1, 0xa8, 0x7f, 0x57, 0x03, 0x44, 0xcc,
1184 0xdb, 0x20, 0xde, 0xed, 0x85, 0x50, 0x38, 0xda,
1185 0xc9, 0x44, 0xec, 0x2c, 0x0d, 0x66, 0xb7, 0xdc,
1186 0x17, 0x14, 0x55, 0x95, 0x33, 0x6e, 0x43, 0x3e
1191 0xb7, 0x21, 0x2e, 0x48
1194 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1195 4ULL*1024*1024*1024+4ULL,
1197 "id-Gost28147-89-CryptoPro-A-ParamSet",
1200 0x0c, 0xf3, 0xe9, 0xb0, 0x28, 0x3b, 0x9f, 0x8b,
1201 0xe3, 0x82, 0xb9, 0xa2, 0xa6, 0xbd, 0x80, 0xd2,
1202 0xcd, 0xfa, 0x3f, 0xf7, 0x90, 0xa7, 0x55, 0x06,
1203 0x9b, 0x7a, 0x58, 0xee, 0xe7, 0xf1, 0x9d, 0xbe
1208 0xda, 0x15, 0x10, 0x73
1211 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1212 4ULL*1024*1024*1024+10ULL,
1214 "id-Gost28147-89-CryptoPro-A-ParamSet",
1217 0x97, 0x1a, 0x42, 0x22, 0xfa, 0x07, 0xb2, 0xca,
1218 0xf9, 0xd2, 0x34, 0x5a, 0x92, 0xb1, 0x1f, 0x6b,
1219 0x53, 0xf8, 0xaf, 0xed, 0x9a, 0x73, 0xc4, 0x38,
1220 0xd7, 0x7d, 0x25, 0x81, 0x00, 0x0d, 0xd4, 0x29
1225 0x52, 0xaa, 0x22, 0xb4
1230 int main(int argc, char *argv[])
1233 unsigned long long ullMaxLen = 6*1000*1000;
1235 ENGINE *impl = NULL;
1236 EVP_MD_CTX *mctx = NULL;
1237 EVP_CIPHER_CTX *ectx = NULL;
1239 byte bDerive[EVP_MAX_KEY_LENGTH];
1240 byte bTest[G89_MAX_TC_LEN];
1241 byte bTest1[G89_MAX_TC_LEN];
1242 unsigned long long ullLeft;
1243 static const byte bZB[40*1024*1024] = { 0 };
1244 static byte bTS[40*1024*1024] = { 0 };
1245 unsigned int mdl = 0;
1251 const EVP_MD *md_gost94 = NULL;
1252 const EVP_CIPHER *cp_g89cfb = NULL;
1253 const EVP_CIPHER *cp_g89cnt = NULL;
1254 const EVP_CIPHER *ctype = NULL;
1255 const EVP_MD *md_g89imit = NULL;
1258 CONF *pConfig = NCONF_new(NULL);
1261 "openssl_conf = openssl_def\n"
1264 "engines = engine_section\n"
1266 "[engine_section]\n"
1267 "gost = gost_section\n"
1270 "default_algorithms = ALL\n"
1274 printf("Testing GOST 28147-89 ");
1277 if(1 != sscanf(argv[1], "%llu", &ullMaxLen) ||
1279 1 != sscanf(argv[2], "%d", &ignore) : 0)) {
1281 fprintf(stderr, "Usage: %s [maxlen [ignore-error]]\n",
1288 * Internal function test on GostR3411_94_TestParamSet
1290 #ifdef OPENSSL_NO_DYNAMIC_ENGINE
1294 for(t = 0; t < sizeof(tcs)/sizeof(tcs[0]); t++) {
1295 const gost_subst_block *pSubst = NULL;
1297 if(1024 < tcs[t].ullLen) {
1298 /* Key meshing check by engine tests */
1301 memset(bTest, 0xc3, sizeof(bTest));
1302 if(0 == strcmp(tcs[t].szParamSet,
1303 "id-GostR3410-94-TestParamSet")) {
1304 pSubst = &GostR3411_94_TestParamSet;
1305 } else if(0 == strcmp(tcs[t].szParamSet,
1306 "id-Gost28147-89-CryptoPro-A-ParamSet")) {
1307 pSubst = &Gost28147_CryptoProParamSetA;
1308 } else if(0 == strcmp(tcs[t].szParamSet,
1309 "id-Gost28147-89-CryptoPro-B-ParamSet")) {
1310 pSubst = &Gost28147_CryptoProParamSetB;
1311 } else if(0 == strcmp(tcs[t].szParamSet,
1312 "id-Gost28147-89-CryptoPro-C-ParamSet")) {
1313 pSubst = &Gost28147_CryptoProParamSetC;
1314 } else if(0 == strcmp(tcs[t].szParamSet,
1315 "id-Gost28147-89-CryptoPro-D-ParamSet")) {
1316 pSubst = &Gost28147_CryptoProParamSetD;
1318 gost_init(&ctx, pSubst);
1319 gost_key(&ctx, tcs[t].bRawKey);
1320 switch(tcs[t].gMode) {
1322 gost_enc(&ctx, tcs[t].bIn, bTest,
1323 (int)((tcs[t].ullLen + G89_BLOCK_LEN - 1)/
1325 l = (size_t)tcs[t].ullLen;
1328 gost_enc_cfb(&ctx, tcs[t].bIV, tcs[t].bIn,
1330 (int)((tcs[t].ullLen + G89_BLOCK_LEN - 1)/
1332 l = (size_t)tcs[t].ullLen;
1335 /* GOST 28147-89 cipher CNT mode check by engine
1340 gost_mac(&ctx, 32, tcs[t].bIn,
1341 (unsigned int)tcs[t].ullLen,
1343 gost_mac_iv(&ctx, 32, tcs[t].bIV, tcs[t].bIn,
1344 (unsigned int)tcs[t].ullLen,
1346 if(0 != memcmp(bTest, bTest1, 4)) {
1348 fprintf(stderr, "\nInternal test t=%d len=%llu "
1349 "failed (gost_mac_iv).\n", t,
1360 if(0 != memcmp(tcs[t].bOut, bTest, l)) {
1362 fprintf(stderr, "\nInternal test t=%d len=%llu "
1377 * ccgost engine test on GostR3411_94_CryptoProParamSet
1379 #ifndef OPENSSL_NO_DYNAMIC_ENGINE
1380 setenv("OPENSSL_ENGINES", CCGOST_DIR, 1);
1382 ERR_load_crypto_strings();
1383 ENGINE_load_builtin_engines();
1384 OPENSSL_load_builtin_modules();
1386 bpConf = BIO_new_mem_buf(sConf, -1);
1387 if(!NCONF_load_bio(pConfig, bpConf, &lErrLine)) {
1389 fprintf(stderr, "NCONF_load_bio: ErrLine=%ld: %s\n",
1391 ERR_error_string(ERR_get_error(), NULL));
1396 if(!CONF_modules_load(pConfig, NULL, 0)) {
1398 fprintf(stderr, "CONF_modules_load: %s\n",
1399 ERR_error_string(ERR_get_error(), NULL));
1403 /* Test load engine */
1404 if(NULL == (impl = ENGINE_by_id(CCGOST_ID))) {
1406 fprintf(stderr, "Can't load engine id \"" CCGOST_ID "\"\n");
1411 if(NULL == (md_gost94 = EVP_get_digestbyname(SN_id_GostR3411_94))) {
1413 fprintf(stderr, "\"" SN_id_GostR3411_94 "\" - not found\n");
1418 if(NULL == (cp_g89cfb = EVP_get_cipherbyname(SN_id_Gost28147_89))) {
1420 fprintf(stderr, "\"" SN_id_Gost28147_89 "\" - not found\n");
1425 if(NULL == (cp_g89cnt = EVP_get_cipherbyname(SN_gost89_cnt))) {
1427 fprintf(stderr, "\"" SN_gost89_cnt "\" - not found\n");
1432 if(NULL == (md_g89imit = EVP_get_digestbyname(SN_id_Gost28147_89_MAC))) {
1434 fprintf(stderr, "\"" SN_id_Gost28147_89_MAC "\" - not found\n");
1441 for(t = 0; t < sizeof(tcs)/sizeof(tcs[0]); t++) {
1442 if(NULL == tcs[t].szDerive) {
1445 memset(bDerive, 0x3c, sizeof(bDerive));
1446 mdl = sizeof(bDerive);
1447 EVP_Digest(tcs[t].szDerive, strlen(tcs[t].szDerive),
1450 if(0 != memcmp(tcs[t].bRawKey, bDerive, mdl)) {
1452 fprintf(stderr, "Engine test t=%d "
1453 "derive key error.\n", t);
1458 if(ullMaxLen < tcs[t].ullLen) {
1461 memset(bTest, 0xa5, sizeof(bTest));
1462 memset(bTest1, 0x5a, sizeof(bTest1));
1463 if(!ENGINE_ctrl_cmd_string(impl,
1465 tcs[t].szParamSet, 0)) {
1467 fprintf(stderr, "ENGINE_ctrl_cmd_string: %s\n",
1468 ERR_error_string(ERR_get_error(), NULL));
1471 switch(tcs[t].gMode) {
1473 /* OpenSSL/ccgost not implemented GOST 28147-89 ECB */
1477 goto engine_cipher_check;
1479 if(0 != strcmp("id-Gost28147-89-CryptoPro-A-ParamSet",
1480 tcs[t].szParamSet)) {
1482 * ccgost engine can't change S-Box for gost-cnt
1487 engine_cipher_check:
1488 EVP_CIPHER_CTX_init(ectx);
1489 EVP_EncryptInit_ex(ectx, ctype, impl,
1490 bDerive, tcs[t].bIV);
1491 if(G89_MAX_TC_LEN >= tcs[t].ullLen) {
1492 enlu = sizeof(bTest);
1493 EVP_EncryptUpdate(ectx, bTest, &enlu,
1494 tcs[t].bIn, (int)tcs[t].ullLen);
1495 l = (size_t)tcs[t].ullLen;
1497 for(ullLeft = tcs[t].ullLen;
1498 ullLeft >= sizeof(bZB);
1499 ullLeft -= sizeof(bZB)) {
1503 EVP_EncryptUpdate(ectx, bTS, &enlu,
1506 printf("b%llu/%llu", ullLeft, tcs[t].ullLen);
1508 EVP_EncryptUpdate(ectx, bTS, &enlu,
1510 memcpy(bTest, &bTS[enlu-16], 16);
1511 enlu = (int)tcs[t].ullLen;
1514 enlf = sizeof(bTest1);
1515 EVP_EncryptFinal_ex(ectx, bTest1, &enlf);
1516 EVP_CIPHER_CTX_cleanup(ectx);
1519 if(0 != strcmp("id-Gost28147-89-CryptoPro-A-ParamSet",
1520 tcs[t].szParamSet)) {
1522 * ccgost engine can't change S-Box for gost-mac
1526 EVP_MD_CTX_init(mctx);
1527 mac_key = EVP_PKEY_new_mac_key(
1528 NID_id_Gost28147_89_MAC, NULL,
1530 EVP_DigestSignInit(mctx, NULL,
1531 md_g89imit, impl, mac_key);
1532 if(G89_MAX_TC_LEN >= tcs[t].ullLen) {
1533 EVP_DigestSignUpdate(mctx, tcs[t].bIn,
1534 (unsigned int)tcs[t].ullLen);
1536 for(ullLeft = tcs[t].ullLen;
1537 ullLeft >= sizeof(bZB);
1538 ullLeft -= sizeof(bZB)) {
1541 EVP_DigestSignUpdate(mctx, bZB, sizeof(bZB));
1543 printf("b%llu/%llu", ullLeft, tcs[t].ullLen);
1545 EVP_DigestSignUpdate(mctx, bZB,
1546 (unsigned int)ullLeft);
1549 EVP_DigestSignFinal(mctx, bTest, &siglen);
1550 EVP_MD_CTX_free(mctx);
1551 enlu = (int)tcs[t].ullLen;
1556 if((int)tcs[t].ullLen != enlu || 0 != enlf ||
1557 0 != memcmp(tcs[t].bOut, bTest, l)) {
1559 fprintf(stderr, "\nEngine test t=%d len=%llu "
1560 "failed.\n", t, tcs[t].ullLen);
1570 printf(" passed\n");
1573 return EXIT_SUCCESS;