1 /* vim: set fileencoding=ascii : Charset: ASCII */
2 /* test/gostr2814789t.c */
3 /* ====================================================================
4 * Copyright (c) 2012 Crypto-Pro, Ltd., Serguei E. Leontiev,
7 * This file is distributed under the same license as OpenSSL
8 * ====================================================================
11 # pragma warning(push, 3)
12 # include <openssl/applink.c>
19 #include <openssl/conf.h>
20 #include <openssl/crypto.h>
21 #include <openssl/engine.h>
22 #include <openssl/evp.h>
23 #include <openssl/hmac.h>
24 #include <openssl/obj_mac.h>
26 #define CCGOST_ID "gost"
27 #define CCGOST_DIR "."
31 #define G89_MAX_TC_LEN (2048)
32 #define G89_BLOCK_LEN (8)
34 typedef enum g89_mode_ {
41 typedef struct g89_tc_ {
42 unsigned long long ullLen; // ullLen > G89_MAX_TC_LEN
45 const byte bIn[G89_MAX_TC_LEN]; // Clear text, when
46 // ullLen <= G89_MAX_TC_LEN
47 const char *szParamSet; // S-Box ID
48 const char *szDerive; // String for derive bRawKey
49 const byte bRawKey[EVP_MAX_KEY_LENGTH];
50 g89_mode gMode; // Mode of encryption or MAC
51 const byte bIV[EVP_MAX_IV_LENGTH]; // IV for CFB or CNT mode
52 const byte bOut[G89_MAX_TC_LEN]; // Cipher text for ECB/CFB/CNT
53 // mode, when ullLen <= G89_MAX_TC_LEN;
54 // Last 16 byte of cipher text for
55 // ECB/CFB/CNT, when ullLen >
57 // 4 byte MAC for imitovstavka
60 const g89_tc tcs[] = {
62 * GOST R 34.11-94 Test cases
64 { /* see p. A.3.1 [GOSTR341194], p. 7.3.1 [ENG-GOSTR341194] */
65 /* <http://tools.ietf.org/html/rfc5831#section-7.3.1> */
66 /* Iteration 1, K[1], see Errata for RFC 5831 */
69 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
71 "id-GostR3410-94-TestParamSet",
74 0x54, 0x6d, 0x20, 0x33, 0x68, 0x65, 0x6c, 0x32,
75 0x69, 0x73, 0x65, 0x20, 0x73, 0x73, 0x6e, 0x62,
76 0x20, 0x61, 0x67, 0x79, 0x69, 0x67, 0x74, 0x74,
77 0x73, 0x65, 0x68, 0x65, 0x20, 0x2c, 0x3d, 0x73
82 0x1b, 0x0b, 0xbc, 0x32, 0xce, 0xbc, 0xab, 0x42
85 { /* see p. A.3.1 [GOSTR341194], p. 7.3.1 [ENG-GOSTR341194] */
86 /* <http://tools.ietf.org/html/rfc5831#section-7.3.1> */
87 /* Iteration 1, K[4] */
90 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
92 "id-GostR3410-94-TestParamSet",
95 0xec, 0x0a, 0x8b, 0xa1, 0x5e, 0xc0, 0x04, 0xa8,
96 0xba, 0xc5, 0x0c, 0xac, 0x0c, 0x62, 0x1d, 0xee,
97 0xe1, 0xc7, 0xb8, 0xe7, 0x00, 0x7a, 0xe2, 0xec,
98 0xf2, 0x73, 0x1b, 0xff, 0x4e, 0x80, 0xe2, 0xa0
103 0x2d, 0x56, 0x2a, 0x0d, 0x19, 0x04, 0x86, 0xe7
106 { /* see p. A.3.1 [GOSTR341194], p. 7.3.1 [ENG-GOSTR341194] */
107 /* <http://tools.ietf.org/html/rfc5831#section-7.3.1> */
108 /* Iteration 2, K[1] */
111 0x34, 0xc0, 0x15, 0x33, 0xe3, 0x7d, 0x1c, 0x56
113 "id-GostR3410-94-TestParamSet",
116 0x34, 0x87, 0x24, 0xa4, 0xc1, 0xa6, 0x76, 0x67,
117 0x15, 0x3d, 0xde, 0x59, 0x33, 0x88, 0x42, 0x50,
118 0xe3, 0x24, 0x8c, 0x65, 0x7d, 0x41, 0x3b, 0x8c,
119 0x1c, 0x9c, 0xa0, 0x9a, 0x56, 0xd9, 0x68, 0xcf
124 0x86, 0x3e, 0x78, 0xdd, 0x2d, 0x60, 0xd1, 0x3c
128 * id-Gost28147-89-CryptoPro-A-ParamSet (1.2.643.2.2.31.1)
131 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
134 0x74, 0x3d, 0x76, 0xf9, 0x1b, 0xee, 0x35, 0x3c,
135 0xa2, 0x5c, 0x3b, 0x10, 0xeb, 0x64, 0xcf, 0xf5
137 "id-Gost28147-89-CryptoPro-A-ParamSet",
140 0xbb, 0xf1, 0xed, 0xd3, 0x20, 0xaf, 0x8a, 0x62,
141 0x8e, 0x11, 0xc8, 0xa9, 0x51, 0xcc, 0xbe, 0x81,
142 0x47, 0x7b, 0x41, 0xa1, 0x6a, 0xf6, 0x7f, 0x05,
143 0xe8, 0x51, 0x2f, 0x9e, 0x01, 0xf8, 0xcf, 0x49
148 0xc3, 0x73, 0x90, 0x95, 0x35, 0x58, 0x08, 0x63,
149 0xcb, 0x68, 0x85, 0x96, 0x77, 0xe8, 0xfb, 0xa9
152 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
155 0xd2, 0xfd, 0xf8, 0x3a, 0xc1, 0xb4, 0x39, 0x23,
156 0x2e, 0xaa, 0xcc, 0x98, 0x0a, 0x02, 0xda, 0x33
158 "id-Gost28147-89-CryptoPro-A-ParamSet",
161 0x8d, 0x5a, 0x2c, 0x83, 0xa7, 0xc7, 0x0a, 0x61,
162 0xd6, 0x1b, 0x34, 0xb5, 0x1f, 0xdf, 0x42, 0x68,
163 0x66, 0x71, 0xa3, 0x5d, 0x87, 0x4c, 0xfd, 0x84,
164 0x99, 0x36, 0x63, 0xb6, 0x1e, 0xd6, 0x0d, 0xad
168 0x46, 0x60, 0x6f, 0x0d, 0x88, 0x34, 0x23, 0x5a
171 0x88, 0xb7, 0x75, 0x16, 0x74, 0xa5, 0xee, 0x2d,
172 0x14, 0xfe, 0x91, 0x67, 0xd0, 0x5c, 0xcc, 0x40
175 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
178 0x90, 0xa2, 0x39, 0x66, 0xae, 0x01, 0xb9, 0xa3,
179 0x52, 0x4e, 0xc8, 0xed, 0x6c, 0xdd, 0x88, 0x30
181 "id-Gost28147-89-CryptoPro-A-ParamSet",
184 0x59, 0x9f, 0x84, 0xba, 0xc3, 0xf3, 0xd2, 0xf1,
185 0x60, 0xe1, 0xe3, 0xf2, 0x6a, 0x96, 0x1a, 0xf9,
186 0x9c, 0x48, 0xb2, 0x4e, 0xbc, 0xbb, 0xbf, 0x7c,
187 0xd8, 0xf3, 0xac, 0xcd, 0x96, 0x8d, 0x28, 0x6a
191 0x8d, 0xaf, 0xa8, 0xd1, 0x58, 0xed, 0x05, 0x8d
194 0x6e, 0x72, 0x62, 0xcc, 0xe3, 0x59, 0x36, 0x90,
195 0x83, 0x3a, 0xfe, 0xa9, 0x1b, 0xc9, 0xbe, 0xce
198 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
201 0xb5, 0xa1, 0xf0, 0xe3, 0xce, 0x2f, 0x02, 0x1d,
202 0x67, 0x61, 0x94, 0x34, 0x5c, 0x41, 0xe3, 0x6e
204 "id-Gost28147-89-CryptoPro-A-ParamSet",
207 0x9d, 0x05, 0xb7, 0x9e, 0x90, 0xca, 0xd0, 0x0a,
208 0x2c, 0xda, 0xd2, 0x2e, 0xf4, 0xe8, 0x6f, 0x5c,
209 0xf5, 0xdc, 0x37, 0x68, 0x19, 0x85, 0xb3, 0xbf,
210 0xaa, 0x18, 0xc1, 0xc3, 0x05, 0x0a, 0x91, 0xa2
215 0xf8, 0x1f, 0x08, 0xa3
219 * Other paramsets and key meshing test cases.
221 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
224 0x8c, 0x9c, 0x44, 0x35, 0xfb, 0xe9, 0xa5, 0xa3,
225 0xa0, 0xae, 0x28, 0x56, 0x91, 0x10, 0x8e, 0x1e ,
226 0xd2, 0xbb, 0x18, 0x53, 0x81, 0x27, 0x0d, 0xa6,
227 0x68, 0x59, 0x36, 0xc5, 0x81, 0x62, 0x9a, 0x8e,
228 0x7d, 0x50, 0xf1, 0x6f, 0x97, 0x62, 0x29, 0xec,
229 0x80, 0x51, 0xe3, 0x7d, 0x6c, 0xc4, 0x07, 0x95,
230 0x28, 0x63, 0xdc, 0xb4, 0xb9, 0x2d, 0xb8, 0x13,
231 0xb1, 0x05, 0xb5, 0xf9, 0xeb, 0x75, 0x37, 0x4e,
232 0xf7, 0xbf, 0x51, 0xf1, 0x98, 0x86, 0x43, 0xc4,
233 0xe4, 0x3d, 0x3e, 0xa7, 0x62, 0xec, 0x41, 0x59,
234 0xe0, 0xbd, 0xfb, 0xb6, 0xfd, 0xec, 0xe0, 0x77,
235 0x13, 0xd2, 0x59, 0x90, 0xa1, 0xb8, 0x97, 0x6b,
236 0x3d, 0x8b, 0x7d, 0xfc, 0x9d, 0xca, 0x82, 0x73,
237 0x32, 0x70, 0x0a, 0x74, 0x03, 0xc6, 0x0c, 0x26,
238 0x7f, 0x56, 0xf0, 0x9d, 0xb2, 0xeb, 0x71, 0x40,
239 0xd7, 0xc3, 0xb1, 0xa7, 0xc5, 0x1e, 0x20, 0x17,
240 0xb3, 0x50, 0x1d, 0x8a, 0x6e, 0x19, 0xcb, 0xbe,
241 0x20, 0x86, 0x2b, 0xd6, 0x1c, 0xfd, 0xb4, 0xb7,
242 0x5d, 0x9a, 0xb3, 0xe3, 0x7d, 0x15, 0x7a, 0x35,
243 0x01, 0x9f, 0x5d, 0x65, 0x89, 0x4b, 0x34, 0xc6,
244 0xf4, 0x81, 0x3f, 0x78, 0x30, 0xcf, 0xe9, 0x15,
245 0x90, 0x9a, 0xf9, 0xde, 0xba, 0x63, 0xd0, 0x19,
246 0x14, 0x66, 0x3c, 0xb9, 0xa4, 0xb2, 0x84, 0x94,
247 0x02, 0xcf, 0xce, 0x20, 0xcf, 0x76, 0xe7, 0xc5,
248 0x48, 0xf7, 0x69, 0x3a, 0x5d, 0xec, 0xaf, 0x41,
249 0xa7, 0x12, 0x64, 0x83, 0xf5, 0x99, 0x1e, 0x9e,
250 0xb2, 0xab, 0x86, 0x16, 0x00, 0x23, 0x8e, 0xe6,
251 0xd9, 0x80, 0x0b, 0x6d, 0xc5, 0x93, 0xe2, 0x5c,
252 0x8c, 0xd8, 0x5e, 0x5a, 0xae, 0x4a, 0x85, 0xfd,
253 0x76, 0x01, 0xea, 0x30, 0xf3, 0x78, 0x34, 0x10,
254 0x72, 0x51, 0xbc, 0x9f, 0x76, 0xce, 0x1f, 0xd4,
255 0x8f, 0x33, 0x50, 0x34, 0xc7, 0x4d, 0x7b, 0xcf,
256 0x91, 0x63, 0x7d, 0x82, 0x9e, 0xa1, 0x23, 0x45,
257 0xf5, 0x45, 0xac, 0x98, 0x7a, 0x48, 0xff, 0x64,
258 0xd5, 0x59, 0x47, 0xde, 0x2b, 0x3f, 0xfa, 0xec,
259 0x50, 0xe0, 0x81, 0x60, 0x8b, 0xc3, 0xfc, 0x80,
260 0x98, 0x17, 0xc7, 0xa3, 0xc2, 0x57, 0x3d, 0xab,
261 0x91, 0x67, 0xf5, 0xc4, 0xab, 0x92, 0xc8, 0xd6,
262 0x3b, 0x6b, 0x3f, 0xff, 0x15, 0x6b, 0xcf, 0x53,
263 0x65, 0x02, 0xf1, 0x74, 0xca, 0xa9, 0xbe, 0x24,
264 0xd2, 0xf0, 0xb7, 0x26, 0xa8, 0xd7, 0x6d, 0xed,
265 0x90, 0x36, 0x7b, 0x3e, 0x41, 0xa9, 0x7f, 0xa3,
266 0x1b, 0xf4, 0x43, 0xc5, 0x51, 0xbe, 0x28, 0x59,
267 0xe9, 0x45, 0x26, 0x49, 0x38, 0x32, 0xf8, 0xf3,
268 0x92, 0x6e, 0x30, 0xcc, 0xb0, 0xa0, 0xf9, 0x01,
269 0x14, 0xc8, 0xba, 0xd9, 0xf0, 0x2a, 0x29, 0xe2,
270 0x52, 0x9a, 0x76, 0x95, 0x3a, 0x16, 0x32, 0xec,
271 0xf4, 0x10, 0xec, 0xee, 0x47, 0x00, 0x70, 0x19,
272 0xe4, 0x72, 0x35, 0x66, 0x44, 0x53, 0x2d, 0xa2,
273 0xf3, 0xaa, 0x7e, 0x8a, 0x33, 0x13, 0xcd, 0xc8,
274 0xbf, 0x0e, 0x40, 0x90, 0x00, 0xe4, 0x42, 0xc3,
275 0x09, 0x84, 0xe1, 0x66, 0x17, 0xa2, 0xaf, 0x03,
276 0xab, 0x6b, 0xa1, 0xec, 0xfb, 0x17, 0x72, 0x81,
277 0xfe, 0x9a, 0x9f, 0xf4, 0xb2, 0x33, 0x1f, 0xae,
278 0x0c, 0xd1, 0x6a, 0xae, 0x19, 0xb8, 0xaf, 0xec,
279 0xe3, 0xea, 0x00, 0xf8, 0xac, 0x87, 0x07, 0x5f,
280 0x6d, 0xb0, 0xac, 0x6b, 0x22, 0x48, 0x36, 0xbf,
281 0x22, 0x18, 0xb0, 0x03, 0x9f, 0x6c, 0x70, 0x45,
282 0x36, 0xf0, 0x6b, 0xc6, 0xc2, 0xa5, 0x72, 0x2c,
283 0xd8, 0xe0, 0x27, 0x3d, 0xec, 0x56, 0x07, 0x05,
284 0x7d, 0x83, 0xa1, 0x65, 0x7d, 0x41, 0x5b, 0xcd,
285 0x77, 0x24, 0xe5, 0xaa, 0x76, 0x47, 0xd0, 0x50,
286 0xf6, 0xe7, 0xb5, 0x59, 0x75, 0x31, 0x27, 0xef,
287 0xd8, 0xa6, 0x4e, 0x7f, 0xb8, 0x40, 0xb1, 0xdf,
288 0x53, 0x14, 0xed, 0xf1, 0x68, 0x5f, 0xfc, 0x3f,
289 0x02, 0xdb, 0x05, 0xeb, 0x31, 0xe4, 0x2c, 0x7f,
290 0x32, 0xb5, 0x70, 0x8e, 0x75, 0x85, 0xa4, 0x5c,
291 0x16, 0x23, 0x37, 0xf2, 0x10, 0x79, 0xcb, 0xdc,
292 0xf8, 0x1c, 0x25, 0xc2, 0xa1, 0x3d, 0x9c, 0x33,
293 0x6c, 0xed, 0xc3, 0xe7, 0xf3, 0x02, 0x87, 0x82,
294 0x4e, 0xfb, 0xac, 0xb3, 0x2d, 0xfc, 0xf8, 0x0d,
295 0x1d, 0x4a, 0x39, 0xd4, 0xb3, 0x09, 0xbb, 0xe9,
296 0x25, 0xc7, 0xec, 0x6a, 0x87, 0x72, 0x84, 0xed,
297 0x12, 0x60, 0x19, 0x64, 0xeb, 0x16, 0x2a, 0x5b,
298 0x10, 0x76, 0x27, 0xff, 0x7b, 0xe4, 0xae, 0xe5,
299 0xa4, 0x04, 0x02, 0x7f, 0xbb, 0x0a, 0xb5, 0xf4,
300 0x05, 0xa5, 0x56, 0x1c, 0x53, 0x31, 0x7a, 0x93,
301 0xba, 0x16, 0x15, 0xab, 0x62, 0x60, 0xfc, 0xde,
302 0x72, 0x36, 0x6e, 0x28, 0xaf, 0x98, 0x0d, 0xe6,
303 0xf4, 0xde, 0x60, 0xa7, 0x7e, 0x06, 0x07, 0x86,
304 0xf3, 0x94, 0xb6, 0x6d, 0x0d, 0x93, 0xa6, 0xbc,
305 0x60, 0x70, 0x33, 0xac, 0x3f, 0xa1, 0xa8, 0x4a,
306 0x20, 0x61, 0xb6, 0xb5, 0x43, 0xa3, 0x15, 0x5a,
307 0x00, 0xbe, 0x76, 0x98, 0x57, 0x72, 0xab, 0x7a,
308 0x0e, 0x18, 0x93, 0x82, 0x3a, 0x18, 0x78, 0x6e,
309 0x71, 0x7b, 0x78, 0x4f, 0x7e, 0x8c, 0xde, 0x7a,
310 0x62, 0xb5, 0x0a, 0x7c, 0x45, 0x1d, 0x16, 0xd5,
311 0xc3, 0x8c, 0x9b, 0x25, 0xb4, 0x50, 0x90, 0xcd,
312 0x96, 0x93, 0xad, 0x0f, 0xd4, 0x43, 0xcb, 0x49,
313 0x0f, 0xfc, 0x5a, 0x31, 0xf4, 0x19, 0xb7, 0xd4,
314 0xeb, 0x4d, 0x40, 0x58, 0xd0, 0x3b, 0xc8, 0xe0,
315 0x4a, 0x54, 0x2f, 0xdb, 0x22, 0xc3, 0x29, 0x7b,
316 0x40, 0x90, 0x61, 0x43, 0xd3, 0x7e, 0xe2, 0x30,
317 0x2b, 0x48, 0x3c, 0xce, 0x90, 0x93, 0xb1, 0x8b,
318 0x31, 0x96, 0x65, 0x6d, 0x57, 0x8b, 0x9d, 0x4d,
319 0x53, 0xf0, 0x83, 0x1c, 0xe5, 0xa1, 0x9d, 0x55,
320 0xe3, 0xbf, 0x7e, 0xca, 0x1a, 0x74, 0x66, 0x14,
321 0xcc, 0x47, 0x43, 0xd9, 0xbb, 0xef, 0x97, 0x7d,
322 0xb7, 0x6e, 0xff, 0xf1, 0x22, 0xf8, 0x10, 0x2d,
323 0x3f, 0xcd, 0x49, 0x96, 0xd9, 0x09, 0x11, 0xb8,
324 0x33, 0xd0, 0x23, 0x9a, 0xfa, 0x16, 0xcb, 0x50,
325 0x26, 0x57, 0x24, 0x5c, 0x0e, 0xba, 0xf0, 0x3f,
326 0x37, 0x2f, 0xa3, 0xf7, 0x18, 0x57, 0x48, 0x48,
327 0x95, 0xcf, 0xef, 0x87, 0x67, 0x2a, 0xe9, 0xb6,
328 0x8a, 0x21, 0x36, 0x7f, 0xff, 0x48, 0x6c, 0x46,
329 0x35, 0x57, 0xf2, 0xbc, 0x48, 0x67, 0x8f, 0x63,
330 0x23, 0x78, 0x11, 0x2b, 0xc2, 0x08, 0xde, 0x51,
331 0xe8, 0x8b, 0x92, 0x29, 0xf9, 0x9a, 0x9e, 0xad,
332 0xed, 0x0f, 0xeb, 0xa2, 0xd2, 0x40, 0x92, 0xd4,
333 0xde, 0x62, 0x95, 0x76, 0xfd, 0x6e, 0x3c, 0xbf,
334 0xc0, 0xd7, 0x0d, 0xe5, 0x1b, 0xa4, 0xc7, 0x18,
335 0xe1, 0x58, 0xa4, 0x56, 0xef, 0x2e, 0x17, 0x1b,
336 0x75, 0xcb, 0xbc, 0xf9, 0x2a, 0x95, 0x71, 0xa7,
337 0x1d, 0x7f, 0xe7, 0x73, 0x63, 0x05, 0x6b, 0x19,
338 0x4c, 0xf4, 0x22, 0x14, 0xc4, 0x59, 0x88, 0x66,
339 0x92, 0x86, 0x61, 0x5c, 0x6a, 0xae, 0xec, 0x58,
340 0xff, 0xc9, 0xf2, 0x44, 0xd4, 0xa2, 0xf5, 0x98,
341 0xeb, 0x5f, 0x09, 0xbc, 0x8a, 0xbf, 0x3c, 0xb4,
342 0x3e, 0xb1, 0x20, 0x05, 0x44, 0x96, 0x79, 0x0a,
343 0x40, 0x92, 0x7f, 0x9d, 0xd1, 0xaf, 0xbc, 0x90,
344 0x95, 0x0a, 0x81, 0xd4, 0xa7, 0xc6, 0xb8, 0xe0,
345 0xe4, 0x39, 0x30, 0x1d, 0x79, 0xc0, 0xe5, 0xfa,
346 0xb4, 0xe9, 0x63, 0xb4, 0x09, 0x72, 0x3b, 0x3e,
347 0xd9, 0xf6, 0xd9, 0x10, 0x21, 0x18, 0x7e, 0xe5,
348 0xad, 0x81, 0xd7, 0xd5, 0x82, 0xd0, 0x8c, 0x3b,
349 0x38, 0x95, 0xf8, 0x92, 0x01, 0xa9, 0x92, 0x00,
350 0x70, 0xd1, 0xa7, 0x88, 0x77, 0x1f, 0x3a, 0xeb,
351 0xb5, 0xe4, 0xf5, 0x9d, 0xc7, 0x37, 0x86, 0xb2,
352 0x12, 0x46, 0x34, 0x19, 0x72, 0x8c, 0xf5, 0x8c,
353 0xf6, 0x78, 0x98, 0xe0, 0x7c, 0xd3, 0xf4
355 "id-Gost28147-89-CryptoPro-B-ParamSet",
358 0x48, 0x0c, 0x74, 0x1b, 0x02, 0x6b, 0x55, 0xd5,
359 0xb6, 0x6d, 0xd7, 0x1d, 0x40, 0x48, 0x05, 0x6b,
360 0x6d, 0xeb, 0x3c, 0x29, 0x0f, 0x84, 0x80, 0x23,
361 0xee, 0x0d, 0x47, 0x77, 0xe3, 0xfe, 0x61, 0xc9
365 0x1f, 0x3f, 0x82, 0x1e, 0x0d, 0xd8, 0x1e, 0x22
368 0x23, 0xc6, 0x7f, 0x20, 0xa1, 0x23, 0x58, 0xbc,
369 0x7b, 0x05, 0xdb, 0x21, 0x15, 0xcf, 0x96, 0x41,
370 0xc7, 0x88, 0xef, 0x76, 0x5c, 0x49, 0xdb, 0x42,
371 0xbf, 0xf3, 0xc0, 0xf5, 0xbd, 0x5d, 0xd9, 0x8e,
372 0xaf, 0x3d, 0xf4, 0xe4, 0xda, 0x88, 0xbd, 0xbc,
373 0x47, 0x5d, 0x76, 0x07, 0xc9, 0x5f, 0x54, 0x1d,
374 0x1d, 0x6a, 0xa1, 0x2e, 0x18, 0xd6, 0x60, 0x84,
375 0x02, 0x18, 0x37, 0x92, 0x92, 0x15, 0xab, 0x21,
376 0xee, 0x21, 0xcc, 0x71, 0x6e, 0x51, 0xd9, 0x2b,
377 0xcc, 0x81, 0x97, 0x3f, 0xeb, 0x45, 0x99, 0xb8,
378 0x1b, 0xda, 0xff, 0x90, 0xd3, 0x41, 0x06, 0x9c,
379 0x3f, 0xfb, 0xe4, 0xb2, 0xdc, 0xc9, 0x03, 0x0d,
380 0xa7, 0xae, 0xd7, 0x7d, 0x02, 0xb8, 0x32, 0xab,
381 0xf3, 0x65, 0xa3, 0x65, 0x6c, 0x4e, 0xe4, 0xa2,
382 0x5e, 0x9e, 0xee, 0xcd, 0xde, 0x79, 0x36, 0x6b,
383 0x1b, 0xe1, 0x3c, 0xdf, 0x10, 0xad, 0x4f, 0x02,
384 0xe1, 0x14, 0xaa, 0x09, 0xb4, 0x0b, 0x76, 0xeb,
385 0x69, 0x38, 0x20, 0x02, 0xcb, 0x8e, 0xc0, 0xdf,
386 0xca, 0x48, 0x74, 0xc3, 0x31, 0xad, 0x42, 0x2c,
387 0x51, 0x9b, 0xd0, 0x6a, 0xc1, 0x36, 0xd7, 0x21,
388 0xdf, 0xb0, 0x45, 0xba, 0xca, 0x7f, 0x35, 0x20,
389 0x28, 0xbb, 0xc1, 0x76, 0xfd, 0x43, 0x5d, 0x23,
390 0x7d, 0x31, 0x84, 0x1a, 0x97, 0x4d, 0x83, 0xaa,
391 0x7e, 0xf1, 0xc4, 0xe6, 0x83, 0xac, 0x0d, 0xef,
392 0xef, 0x3c, 0xa4, 0x7c, 0x48, 0xe4, 0xc8, 0xca,
393 0x0d, 0x7d, 0xea, 0x7c, 0x45, 0xd7, 0x73, 0x50,
394 0x25, 0x1d, 0x01, 0xc4, 0x02, 0x1a, 0xcd, 0xe0,
395 0x38, 0x5b, 0xa8, 0x5a, 0x16, 0x9a, 0x10, 0x59,
396 0x74, 0xd7, 0x19, 0xc6, 0xf3, 0xb5, 0x17, 0xf6,
397 0x59, 0x8d, 0x62, 0xaf, 0x44, 0xe8, 0xdc, 0xe9,
398 0xc1, 0x76, 0xf1, 0xd0, 0xbd, 0x29, 0xd7, 0xec,
399 0x1d, 0xac, 0x57, 0xdb, 0x1a, 0x3f, 0xd8, 0xf6,
400 0x6e, 0xb6, 0xe6, 0xdf, 0x36, 0xe7, 0x89, 0xce,
401 0x56, 0x35, 0x43, 0x1c, 0x7d, 0x57, 0x79, 0x0e,
402 0xd8, 0xf4, 0xd7, 0xa7, 0x0d, 0xc6, 0x8f, 0x91,
403 0x66, 0x67, 0x82, 0x0f, 0x49, 0xc9, 0xc5, 0x65,
404 0x81, 0xa1, 0x39, 0x5a, 0x53, 0x9f, 0x02, 0xa5,
405 0xd5, 0x36, 0x22, 0xa8, 0xa8, 0x1c, 0x37, 0x0e,
406 0x76, 0x46, 0xdf, 0xbd, 0x6a, 0xdb, 0xfc, 0x1b,
407 0xbd, 0x10, 0xb8, 0xb1, 0xbc, 0x72, 0x4c, 0x58,
408 0x4a, 0xda, 0x6d, 0x66, 0x00, 0xda, 0x7a, 0x66,
409 0xa0, 0xe7, 0x3b, 0x39, 0xa3, 0xf7, 0x05, 0x07,
410 0xfa, 0x21, 0x4b, 0xc7, 0x94, 0xc0, 0xd3, 0x7b,
411 0x19, 0x02, 0x5d, 0x4a, 0x10, 0xf1, 0xc2, 0x0f,
412 0x19, 0x68, 0x27, 0xc7, 0x7d, 0xbf, 0x55, 0x03,
413 0x57, 0x7d, 0xaf, 0x77, 0xae, 0x80, 0x2f, 0x7a,
414 0xe6, 0x1f, 0x4b, 0xdc, 0x15, 0x18, 0xc0, 0x62,
415 0xa1, 0xe8, 0xd9, 0x1c, 0x9e, 0x8c, 0x96, 0x39,
416 0xc1, 0xc4, 0x88, 0xf7, 0x0c, 0xe1, 0x04, 0x84,
417 0x68, 0x51, 0xce, 0xf1, 0x90, 0xda, 0x7f, 0x76,
418 0xc8, 0xc0, 0x88, 0xef, 0x8e, 0x15, 0x25, 0x3e,
419 0x7b, 0xe4, 0x79, 0xb5, 0x66, 0x2d, 0x9c, 0xd1,
420 0x13, 0xda, 0xd0, 0xd5, 0x46, 0xd5, 0x8d, 0x46,
421 0x18, 0x07, 0xee, 0xd8, 0xc9, 0x64, 0xe3, 0xbe,
422 0x0e, 0x68, 0x27, 0x09, 0x96, 0x26, 0xf6, 0xe2,
423 0x19, 0x61, 0x3f, 0xf4, 0x58, 0x27, 0x0a, 0xeb,
424 0xce, 0x7c, 0xb6, 0x68, 0x92, 0xe7, 0x12, 0x3b,
425 0x31, 0xd4, 0x48, 0xdf, 0x35, 0x8d, 0xf4, 0x86,
426 0x42, 0x2a, 0x15, 0x4b, 0xe8, 0x19, 0x1f, 0x26,
427 0x65, 0x9b, 0xa8, 0xda, 0x4b, 0x79, 0x1f, 0x8e,
428 0xe6, 0x13, 0x7e, 0x49, 0x8f, 0xc1, 0xce, 0xdc,
429 0x5e, 0x64, 0x74, 0xce, 0x02, 0x78, 0xe0, 0xcf,
430 0xa0, 0xed, 0x5e, 0x31, 0x74, 0xd1, 0xd0, 0xb4,
431 0xee, 0x70, 0x19, 0x14, 0x3c, 0x8f, 0x16, 0xa6,
432 0xcf, 0x12, 0x93, 0x15, 0x88, 0xeb, 0x91, 0x65,
433 0x76, 0x98, 0xfd, 0xa1, 0x94, 0x30, 0xba, 0x43,
434 0x62, 0x65, 0x40, 0x04, 0x77, 0x9e, 0xd6, 0xab,
435 0x8b, 0x0d, 0x93, 0x80, 0x50, 0x5f, 0xa2, 0x76,
436 0x20, 0xa7, 0xd6, 0x9c, 0x27, 0x15, 0x27, 0xbc,
437 0xa5, 0x5a, 0xbf, 0xe9, 0x92, 0x82, 0x05, 0xa8,
438 0x41, 0xe9, 0xb5, 0x60, 0xd5, 0xc0, 0xd7, 0x4b,
439 0xad, 0x38, 0xb2, 0xe9, 0xd1, 0xe5, 0x51, 0x5f,
440 0x24, 0x78, 0x24, 0x9a, 0x23, 0xd2, 0xc2, 0x48,
441 0xbd, 0x0e, 0xf1, 0x37, 0x72, 0x91, 0x87, 0xb0,
442 0x4e, 0xbd, 0x99, 0x6b, 0x2c, 0x01, 0xb6, 0x79,
443 0x69, 0xec, 0x0c, 0xed, 0xe5, 0x3f, 0x50, 0x64,
444 0x7c, 0xb9, 0xdd, 0xe1, 0x92, 0x81, 0xb5, 0xd0,
445 0xcb, 0x17, 0x83, 0x86, 0x8b, 0xea, 0x4f, 0x93,
446 0x08, 0xbc, 0x22, 0x0c, 0xef, 0xe8, 0x0d, 0xf5,
447 0x9e, 0x23, 0xe1, 0xf9, 0xb7, 0x6b, 0x45, 0x0b,
448 0xcb, 0xa9, 0xb6, 0x4d, 0x28, 0x25, 0xba, 0x3e,
449 0x86, 0xf2, 0x75, 0x47, 0x5d, 0x9d, 0x6b, 0xf6,
450 0x8a, 0x05, 0x58, 0x73, 0x3d, 0x00, 0xde, 0xfd,
451 0x69, 0xb1, 0x61, 0x16, 0xf5, 0x2e, 0xb0, 0x9f,
452 0x31, 0x6a, 0x00, 0xb9, 0xef, 0x71, 0x63, 0x47,
453 0xa3, 0xca, 0xe0, 0x40, 0xa8, 0x7e, 0x02, 0x04,
454 0xfe, 0xe5, 0xce, 0x48, 0x73, 0xe3, 0x94, 0xcf,
455 0xe2, 0xff, 0x29, 0x7e, 0xf6, 0x32, 0xbb, 0xb7,
456 0x55, 0x12, 0x21, 0x7a, 0x9c, 0x75, 0x04, 0x0c,
457 0xb4, 0x7c, 0xb0, 0x3d, 0x40, 0xb3, 0x11, 0x9a,
458 0x7a, 0x9a, 0x13, 0xfb, 0x77, 0xa7, 0x51, 0x68,
459 0xf7, 0x05, 0x47, 0x3b, 0x0f, 0x52, 0x5c, 0xe6,
460 0xc2, 0x99, 0x3a, 0x37, 0x54, 0x5c, 0x4f, 0x2b,
461 0xa7, 0x01, 0x08, 0x74, 0xbc, 0x91, 0xe3, 0xe2,
462 0xfe, 0x65, 0x94, 0xfd, 0x3d, 0x18, 0xe0, 0xf0,
463 0x62, 0xed, 0xc2, 0x10, 0x82, 0x9c, 0x58, 0x7f,
464 0xb2, 0xa3, 0x87, 0x8a, 0x74, 0xd9, 0xc1, 0xfb,
465 0x84, 0x28, 0x17, 0xc7, 0x2b, 0xcb, 0x53, 0x1f,
466 0x4e, 0x8a, 0x82, 0xfc, 0xb4, 0x3f, 0xc1, 0x47,
467 0x25, 0xf3, 0x21, 0xdc, 0x4c, 0x2d, 0x08, 0xfa,
468 0xe7, 0x0f, 0x03, 0xa9, 0x68, 0xde, 0x6b, 0x41,
469 0xa0, 0xf9, 0x41, 0x6c, 0x57, 0x4d, 0x3a, 0x0e,
470 0xea, 0x51, 0xca, 0x9f, 0x97, 0x11, 0x7d, 0xf6,
471 0x8e, 0x88, 0x63, 0x67, 0xc9, 0x65, 0x13, 0xca,
472 0x38, 0xed, 0x35, 0xbe, 0xf4, 0x27, 0xa9, 0xfc,
473 0xa9, 0xe6, 0xc3, 0x40, 0x86, 0x08, 0x39, 0x72,
474 0x37, 0xee, 0xb2, 0x87, 0x09, 0x96, 0xb7, 0x40,
475 0x87, 0x36, 0x92, 0xc1, 0x5d, 0x6a, 0x2c, 0x43,
476 0xca, 0x25, 0xc8, 0x35, 0x37, 0x2d, 0xb5, 0xa9,
477 0x27, 0x44, 0x50, 0xf2, 0x6d, 0x22, 0x75, 0x41,
478 0x77, 0x2a, 0xdb, 0xb1, 0x8c, 0x6d, 0x05, 0xe8,
479 0xc9, 0x99, 0xc7, 0x08, 0xf9, 0x14, 0x8f, 0x78,
480 0xa9, 0x8f, 0xc2, 0x5a, 0x7a, 0x65, 0xc5, 0xd8,
481 0x86, 0xbb, 0x72, 0x69, 0x6b, 0x6b, 0x45, 0x83,
482 0x5b, 0xb1, 0xf7, 0xcd, 0x16, 0x73, 0xee, 0xe9,
483 0x80, 0x85, 0xfe, 0x8e, 0xe1, 0xae, 0x53, 0x8f,
484 0xde, 0xbe, 0x48, 0x8b, 0x59, 0xef, 0xf6, 0x7e,
485 0xd8, 0xb5, 0xa8, 0x47, 0xc0, 0x4e, 0x15, 0x58,
486 0xca, 0xd3, 0x2f, 0xf8, 0x6c, 0xa6, 0x3d, 0x78,
487 0x4d, 0x7a, 0x54, 0xd6, 0x10, 0xe5, 0xcc, 0x05,
488 0xe2, 0x29, 0xb5, 0x86, 0x07, 0x39, 0x7d, 0x78,
489 0x8e, 0x5a, 0x8f, 0x83, 0x4c, 0xe7, 0x3d, 0x68,
490 0x3e, 0xe5, 0x02, 0xe6, 0x64, 0x4f, 0x5e, 0xb4,
491 0x49, 0x77, 0xf0, 0xc0, 0xfa, 0x6f, 0xc8, 0xfb,
492 0x9f, 0x84, 0x6f, 0x55, 0xfb, 0x30, 0x5e, 0x89,
493 0x93, 0xa9, 0xf3, 0xa6, 0xa3, 0xd7, 0x26, 0xbb,
494 0xd8, 0xa8, 0xd9, 0x95, 0x1d, 0xfe, 0xfc, 0xd7,
495 0xa8, 0x93, 0x66, 0x2f, 0x04, 0x53, 0x06, 0x64,
496 0x7f, 0x31, 0x29, 0xae, 0xb7, 0x9f, 0xba, 0xc4,
497 0x6d, 0x68, 0xd1, 0x24, 0x32, 0xf4, 0x11
500 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
503 0x07, 0x9c, 0x91, 0xbe
505 "id-Gost28147-89-CryptoPro-C-ParamSet",
508 0x77, 0xc3, 0x45, 0x8e, 0xf6, 0x42, 0xe7, 0x04,
509 0x8e, 0xfc, 0x08, 0xe4, 0x70, 0x96, 0xd6, 0x05,
510 0x93, 0x59, 0x02, 0x6d, 0x6f, 0x97, 0xca, 0xe9,
511 0xcf, 0x89, 0x44, 0x4b, 0xde, 0x6c, 0x22, 0x1d
515 0x43, 0x7c, 0x3e, 0x8e, 0x2f, 0x2a, 0x00, 0x98
518 0x19, 0x35, 0x81, 0x34
521 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
524 0x2f, 0x31, 0xd8, 0x83, 0xb4, 0x20, 0xe8, 0x6e,
527 "id-Gost28147-89-CryptoPro-D-ParamSet",
530 0x38, 0x9f, 0xe8, 0x37, 0xff, 0x9c, 0x5d, 0x29,
531 0xfc, 0x48, 0x55, 0xa0, 0x87, 0xea, 0xe8, 0x40,
532 0x20, 0x87, 0x5b, 0xb2, 0x01, 0x15, 0x55, 0xa7,
533 0xe3, 0x2d, 0xcb, 0x3d, 0xd6, 0x59, 0x04, 0x73
537 0xc5, 0xa2, 0xd2, 0x1f, 0x2f, 0xdf, 0xb8, 0xeb
540 0x6d, 0xa4, 0xed, 0x40, 0x08, 0x88, 0x71, 0xad,
544 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
547 "id-Gost28147-89-CryptoPro-A-ParamSet",
550 0x61, 0x58, 0x44, 0x5a, 0x41, 0xf6, 0xc7, 0x0f,
551 0x6b, 0xdb, 0x51, 0x91, 0x6a, 0xf6, 0x81, 0x30,
552 0x8c, 0xa7, 0x98, 0xdd, 0x38, 0x35, 0x8a, 0x60,
553 0x85, 0xb4, 0xf0, 0xf9, 0x43, 0xa2, 0x7d, 0x9a
557 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
560 0x1c, 0x16, 0xa0, 0xe9, 0x63, 0x94, 0xfe, 0x38,
561 0x37, 0xa7, 0x9b, 0x70, 0x25, 0x2e, 0xd6, 0x00
564 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
567 "id-Gost28147-89-CryptoPro-A-ParamSet",
570 0xae, 0x57, 0xa2, 0xdd, 0xa4, 0xef, 0x4f, 0x96,
571 0xb8, 0x94, 0xa5, 0xd1, 0x1b, 0xc8, 0x9b, 0x42,
572 0xa5, 0x24, 0xcc, 0x89, 0x5c, 0xb8, 0x92, 0x52,
573 0xc1, 0x12, 0x6a, 0xb0, 0x9a, 0x26, 0xe8, 0x06
577 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
580 0x2e, 0x62, 0xb0, 0x2e, 0xc7, 0x87, 0x4b, 0x29,
581 0x33, 0x16, 0x6b, 0xb4, 0xd6, 0x61, 0x66, 0xd9
584 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
587 0x3d, 0x0b, 0x69, 0xf7, 0xa8, 0xe4, 0xfc, 0x99,
588 0x22, 0x2e, 0xee, 0xd1, 0x63, 0x12, 0xfe, 0xa8,
589 0x9d, 0xcb, 0x6c, 0x4d, 0x48, 0x8c, 0xe8, 0xbd,
590 0x8b, 0x60, 0xf1, 0xbf, 0x7b, 0xe3, 0x79, 0xd5,
591 0x2b, 0x25, 0x97, 0x13, 0xef, 0x35, 0xda, 0xf4,
592 0xbc, 0x77, 0xce, 0xea, 0xe9, 0x3f, 0xa4, 0xb6,
593 0x01, 0xd5, 0x73, 0x29, 0x58, 0xda, 0xd7, 0x67,
594 0x17, 0xac, 0xe4, 0x75, 0x2f, 0x57, 0x23, 0xac,
595 0x96, 0x21, 0xc7, 0x62, 0x2d, 0xf7, 0x32, 0xb5,
596 0x44, 0x5f, 0x72, 0xb1, 0x5f, 0xba, 0x1b, 0x1e,
597 0xdb, 0x4a, 0x09, 0x8c, 0x92, 0x61, 0xa2, 0xb0,
598 0x49, 0x68, 0xe5, 0xb3, 0xa2, 0x8f, 0x13, 0x4b,
599 0xf5, 0x4d, 0x84, 0xda, 0xab, 0xa0, 0xb6, 0xd1,
600 0x5a, 0x63, 0x19, 0xe8, 0xa2, 0x09, 0xf6, 0x76,
601 0x6f, 0x9b, 0x48, 0x0a, 0x15, 0x5d, 0xb7, 0x20,
602 0x21, 0x9a, 0x2e, 0xb9, 0x6d, 0xfa, 0x1e, 0xc2,
603 0x0e, 0xef, 0x15, 0xab, 0x59, 0x01, 0xfe, 0x43,
604 0x90, 0xf2, 0x62, 0xca, 0x4a, 0x9a, 0x48, 0x38,
605 0xab, 0x6f, 0x9d, 0x21, 0xb3, 0xad, 0xa7, 0x60,
606 0x46, 0xe3, 0xef, 0xd0, 0xe3, 0x1d, 0xc5, 0xe1,
607 0xb8, 0xa1, 0xe2, 0x99, 0x20, 0xc5, 0x76, 0xcc,
608 0xaa, 0x8a, 0xa9, 0x45, 0x55, 0xa0, 0x78, 0x00,
609 0x64, 0xde, 0xcf, 0x5b, 0xdf, 0x26, 0x48, 0xcd,
610 0xba, 0x8a, 0xb5, 0xfb, 0xfd, 0x4a, 0xd5, 0xc4,
611 0xe0, 0x43, 0xa6, 0x71, 0x90, 0xa4, 0x8b, 0xca,
612 0x2e, 0x88, 0x7b, 0xac, 0xb2, 0xdc, 0xf2, 0x01,
613 0xcb, 0xda, 0x6e, 0x91, 0x27, 0x28, 0x44, 0x88,
614 0x9a, 0xd2, 0x12, 0xf1, 0xa6, 0xf5, 0xb7, 0x61,
615 0xce, 0x79, 0x62, 0x52, 0x3c, 0xe6, 0x14, 0x73,
616 0xd1, 0x41, 0x92, 0x50, 0xbd, 0xdc, 0x3b, 0xd0,
617 0xa7, 0x11, 0x8c, 0x3a, 0xe4, 0x2d, 0xf2, 0x52,
618 0xd3, 0x2f, 0x7c, 0x8e, 0x54, 0x90, 0x4e, 0x23,
619 0xae, 0xb3, 0xa0, 0xf3, 0x25, 0x7e, 0x66, 0xaa,
620 0x0f, 0x6f, 0x81, 0x72, 0x77, 0xbb, 0xd3, 0x47,
621 0xe8, 0x05, 0xff, 0xe1, 0x5b, 0xc9, 0x37, 0x50,
622 0x33, 0x49, 0x17, 0xaf, 0xab, 0x1d, 0xe1, 0x15,
623 0xf2, 0xe5, 0x98, 0x5e, 0x2d, 0x05, 0x1f, 0x0d,
624 0x55, 0x97, 0xed, 0xff, 0x5e, 0xe0, 0x0f, 0xc3,
625 0x9c, 0xbd, 0x82, 0xc2, 0x06, 0xbe, 0x45, 0x66,
626 0xae, 0x33, 0xbe, 0x28, 0x48, 0xe9, 0x2d, 0x1a,
627 0xe6, 0x65, 0x8e, 0xdf, 0x76, 0x03, 0x73, 0x4b,
628 0xc0, 0x80, 0x71, 0xf9, 0xac, 0xba, 0xa0, 0xb0,
629 0x19, 0x1a, 0x0a, 0xd4, 0x35, 0x12, 0x88, 0x76,
630 0x05, 0x75, 0x8f, 0x7c, 0xb5, 0xf0, 0x19, 0x75,
631 0x6d, 0x05, 0xcb, 0x0d, 0xbc, 0x8d, 0xe9, 0xf0,
632 0xd4, 0xdb, 0x3c, 0x3c, 0x29, 0x8e, 0x2c, 0x32,
633 0x1d, 0xf7, 0xb6, 0x49, 0xcf, 0xdb, 0x63, 0xee,
634 0x3c, 0xfa, 0x33, 0x73, 0x6f, 0xe4, 0x97, 0x4e,
635 0x2f, 0xc9, 0x4c, 0x5c, 0x65, 0xfe, 0xea, 0xfb,
636 0xc6, 0xdd, 0xc1, 0x1c, 0x47, 0x3f, 0xf4, 0x50,
637 0x2f, 0xde, 0x1b, 0x5b, 0x0b, 0x16, 0xca, 0xb6,
638 0x46, 0x44, 0xf2, 0xc1, 0x0d, 0xa1, 0x1d, 0xa6,
639 0xdb, 0xf0, 0x3d, 0xb1, 0x6c, 0x05, 0x31, 0x85,
640 0x8e, 0x74, 0xae, 0xf2, 0x39, 0x26, 0xf7, 0xc1,
641 0xe7, 0x4c, 0xdd, 0x9d, 0x40, 0xb8, 0xf3, 0xc5,
642 0xc2, 0x16, 0x64, 0x6b, 0xaa, 0xdb, 0x4b, 0x82,
643 0x5c, 0xd3, 0x02, 0xd3, 0x8f, 0x26, 0x79, 0x8d,
644 0xb0, 0x78, 0x70, 0x19, 0x58, 0x0c, 0xb4, 0x31,
645 0x88, 0x44, 0x1c, 0x91, 0x6f, 0xf4, 0x52, 0x39,
646 0xa8, 0xf5, 0xc0, 0x1b, 0xfe, 0xf2, 0x0e, 0x4b,
647 0xac, 0x0a, 0xc2, 0x7e, 0x9c, 0x9b, 0xeb, 0x5d,
648 0x4e, 0x4f, 0x42, 0xd8, 0x71, 0x0a, 0x97, 0x27,
649 0x03, 0x14, 0x96, 0xa6, 0x3d, 0x04, 0xea, 0x9f,
650 0x14, 0x14, 0x27, 0x4c, 0xd9, 0xa2, 0x89, 0x5f,
651 0x65, 0x4a, 0xe1, 0x9d, 0x2c, 0xb8, 0xf8, 0xd4,
652 0x8f, 0x2a, 0x57, 0x36, 0xcc, 0x06, 0x9c, 0x2c,
653 0xc5, 0x13, 0x16, 0xdf, 0xfc, 0xae, 0x22, 0x16,
654 0xa8, 0x2b, 0x71, 0x6f, 0x1d, 0xb3, 0x47, 0x54,
655 0x3f, 0x2d, 0x0a, 0x68, 0x9f, 0x2e, 0xf6, 0x90,
656 0xd8, 0xa1, 0x21, 0x09, 0xd4, 0x97, 0xb9, 0x7b,
657 0x7f, 0x9b, 0x6a, 0xed, 0xd1, 0xf0, 0xe3, 0xb6,
658 0x28, 0xc7, 0x62, 0x82, 0x00, 0xc9, 0x38, 0xa1,
659 0x82, 0x78, 0xce, 0x87, 0xc8, 0x53, 0xac, 0x4f,
660 0x2e, 0x31, 0xb9, 0x50, 0x7f, 0x36, 0x00, 0x4a,
661 0x32, 0xe6, 0xd8, 0xbb, 0x59, 0x45, 0x0e, 0x91,
662 0x1b, 0x38, 0xa9, 0xbc, 0xb9, 0x5e, 0x6c, 0x6a,
663 0x9c, 0x03, 0x01, 0x1c, 0xde, 0xe8, 0x1f, 0x1e,
664 0xe3, 0xde, 0x25, 0xa2, 0x56, 0x79, 0xe1, 0xbd,
665 0x58, 0xc4, 0x93, 0xe6, 0xd0, 0x8a, 0x4d, 0x08,
666 0xab, 0xf7, 0xaa, 0xc3, 0x7d, 0xc1, 0xee, 0x68,
667 0x37, 0xbc, 0x78, 0x0b, 0x19, 0x68, 0x2b, 0x2b,
668 0x2e, 0x6d, 0xc4, 0x6f, 0xaa, 0x3b, 0xc6, 0x19,
669 0xcb, 0xf1, 0x58, 0xb9, 0x60, 0x85, 0x45, 0xae,
670 0x52, 0x97, 0xba, 0x24, 0x32, 0x13, 0x72, 0x16,
671 0x6e, 0x7b, 0xc1, 0x98, 0xac, 0xb1, 0xed, 0xb4,
672 0xcc, 0x6c, 0xcf, 0x45, 0xfc, 0x50, 0x89, 0x80,
673 0x8e, 0x7a, 0xa4, 0xd3, 0x64, 0x50, 0x63, 0x37,
674 0xc9, 0x6c, 0xf1, 0xc4, 0x3d, 0xfb, 0xde, 0x5a,
675 0x5c, 0xa8, 0x21, 0x35, 0xe6, 0x2e, 0x8c, 0x2a,
676 0x3c, 0x12, 0x17, 0x79, 0x9a, 0x0d, 0x2e, 0x79,
677 0xeb, 0x67, 0x1f, 0x2b, 0xf8, 0x6e, 0xca, 0xc1,
678 0xfa, 0x45, 0x18, 0x9e, 0xdf, 0x6a, 0xe6, 0xcb,
679 0xe9, 0x5c, 0xc3, 0x09, 0xaf, 0x93, 0x58, 0x13,
680 0xbf, 0x90, 0x84, 0x87, 0x75, 0xd6, 0x82, 0x28,
681 0x8d, 0xe7, 0x2f, 0xa3, 0xfb, 0x97, 0x74, 0x2a,
682 0x73, 0x04, 0x82, 0x06, 0x76, 0x69, 0xb1, 0x0b,
683 0x19, 0xfc, 0xae, 0xb3, 0xdd, 0x2a, 0xe5, 0xc1,
684 0x05, 0xd8, 0x80, 0x95, 0x22, 0x90, 0x71, 0xfc,
685 0xc2, 0x92, 0x42, 0xfd, 0xf1, 0x70, 0xb4, 0x68,
686 0x88, 0xa4, 0x9e, 0x0a, 0x24, 0x40, 0x13, 0xc8,
687 0xa2, 0x56, 0x4f, 0x39, 0xe6, 0x06, 0xf1, 0xdc,
688 0xf5, 0x13, 0x0e, 0xad, 0x9c, 0x8b, 0xaf, 0xe9,
689 0xe3, 0x88, 0x72, 0xff, 0xa0, 0x6d, 0xda, 0x08,
690 0x70, 0xb9, 0x2e, 0x83, 0xc5, 0xbb, 0x32, 0xa5,
691 0x74, 0xc7, 0xfb, 0x7b, 0x76, 0xaf, 0x02, 0xbb,
692 0x2b, 0xb8, 0x5e, 0x65, 0x02, 0xfe, 0x0e, 0xa0,
693 0x99, 0xce, 0x01, 0x3b, 0x35, 0xe1, 0xb0, 0x22,
694 0xe5, 0x94, 0xbd, 0xdd, 0x8e, 0xbb, 0xf6, 0x75,
695 0xbf, 0xbf, 0xee, 0x7a, 0xb1, 0x58, 0xb4, 0x81,
696 0xb8, 0x39, 0x3e, 0xb6, 0x1e, 0xde, 0xda, 0x1b,
697 0xd5, 0xf7, 0xdd, 0x7d, 0x65, 0x9c, 0xaa, 0x56,
698 0x93, 0xb8, 0xaf, 0x48, 0x53, 0xc7, 0x22, 0xe4,
699 0x1c, 0xdf, 0xe9, 0x79, 0xb4, 0x20, 0x89, 0xcc,
700 0x2a, 0x79, 0x2c, 0x09, 0xbe, 0x78, 0xcf, 0xcc,
701 0xf2, 0x90, 0xd6, 0x65, 0xc5, 0x29, 0xfc, 0xda,
702 0x69, 0xfc, 0xc0, 0xd6, 0x70, 0x99, 0x61, 0x3f,
703 0x60, 0x02, 0xd8, 0x12, 0x22, 0xc8, 0x34, 0xc6,
704 0x3b, 0xb3, 0xc2, 0x33, 0xa1, 0x5c, 0x8f, 0x4c,
705 0xd1, 0x52, 0x72, 0xf2, 0x42, 0x05, 0x8e, 0x18,
706 0x1f, 0x16, 0xda, 0xb8, 0x53, 0xa1, 0x5f, 0x01,
707 0x32, 0x1b, 0x90, 0xb3, 0x53, 0x9b, 0xd0, 0x85,
708 0x61, 0x2d, 0x17, 0xed, 0x0a, 0xa4, 0xa5, 0x27,
709 0x09, 0x75, 0x7c, 0xbc, 0x30, 0xf7, 0x5e, 0x59,
710 0x9a, 0x07, 0x96, 0x84, 0x28, 0x86, 0x4b, 0xa7,
711 0x22, 0x35, 0x28, 0xc7, 0xed, 0x0d, 0xc3, 0xce,
712 0x98, 0xcc, 0x2d, 0xec, 0xd4, 0x98, 0x09, 0x8e,
713 0x52, 0x5f, 0x2b, 0x9a, 0x13, 0xbe, 0x99, 0x16,
714 0x73, 0xd1, 0x1f, 0x81, 0xe5, 0xa2, 0x08, 0x78,
715 0xcb, 0x0c, 0x20, 0xd4, 0xa5, 0xea, 0x4b, 0x5b,
716 0x95, 0x5a, 0x92, 0x9a, 0x52
718 "id-Gost28147-89-CryptoPro-A-ParamSet",
721 0x1b, 0x5d, 0xdb, 0x77, 0xcf, 0xf9, 0xec, 0x95,
722 0x5e, 0xcc, 0x67, 0x9f, 0x5d, 0x28, 0xad, 0x4a,
723 0x27, 0xf4, 0x32, 0xc6, 0xb2, 0xcb, 0xb1, 0x45,
724 0x6a, 0x88, 0x14, 0x0c, 0x9b, 0x9b, 0x5f, 0x48
728 0x71, 0x58, 0x8c, 0xe1, 0x55, 0xf4, 0xf6, 0xb3
731 0x8e, 0xcd, 0x8f, 0xc8, 0xac, 0xe1, 0x15, 0x48,
732 0x2d, 0xae, 0x24, 0x8a, 0xc7, 0xfb, 0xba, 0x0f,
733 0x1d, 0x8a, 0x95, 0xa2, 0x43, 0xef, 0xcb, 0xdc,
734 0x59, 0x57, 0xa7, 0xc7, 0x0e, 0xe3, 0xe2, 0xb9,
735 0x0d, 0x86, 0x29, 0x62, 0xcb, 0x83, 0x4d, 0x07,
736 0x0c, 0x40, 0xd4, 0x7b, 0x2e, 0xca, 0xba, 0xbf,
737 0x4a, 0x60, 0x3b, 0x31, 0x98, 0xc8, 0x88, 0x47,
738 0xd9, 0x82, 0xab, 0xfc, 0x8f, 0x48, 0xe2, 0x46,
739 0xab, 0xd3, 0xa1, 0xab, 0x8a, 0x05, 0x22, 0x8c,
740 0xf4, 0xec, 0x9a, 0x1e, 0x76, 0xab, 0x1a, 0x60,
741 0xd9, 0x25, 0x6b, 0xb8, 0x56, 0xe5, 0xb2, 0xea,
742 0x10, 0xf3, 0x62, 0x04, 0x32, 0x5e, 0xaa, 0x3b,
743 0x7b, 0x57, 0xbc, 0x3b, 0x8b, 0x43, 0x47, 0xf2,
744 0xd5, 0x03, 0x7e, 0x51, 0x01, 0xff, 0x77, 0x28,
745 0xca, 0x90, 0xa3, 0xfe, 0x7e, 0x2e, 0x70, 0x16,
746 0x75, 0x18, 0x44, 0xf0, 0x1b, 0x85, 0x05, 0xea,
747 0xe3, 0x21, 0xf7, 0x26, 0x86, 0x76, 0x3c, 0x67,
748 0x9d, 0xfc, 0xbc, 0x10, 0x7f, 0x77, 0xe4, 0xed,
749 0xd3, 0x12, 0xf8, 0x83, 0x00, 0x1f, 0x4b, 0x92,
750 0x95, 0x92, 0x5c, 0xf3, 0x5a, 0xf3, 0xb7, 0xd0,
751 0xa9, 0x5f, 0xf2, 0x18, 0xc4, 0x66, 0x62, 0xc1,
752 0x84, 0x0e, 0x66, 0xe8, 0x80, 0x7d, 0x1f, 0xf0,
753 0xba, 0x01, 0x9b, 0x71, 0xae, 0x93, 0xcc, 0x27,
754 0x54, 0x34, 0x9a, 0xbd, 0xca, 0xee, 0x52, 0x09,
755 0x92, 0x9d, 0xb0, 0xd5, 0xd9, 0xba, 0x2f, 0xb9,
756 0x96, 0xdc, 0xfa, 0xbd, 0xce, 0xea, 0x1a, 0x7b,
757 0x9a, 0x1d, 0x13, 0xa7, 0x11, 0xe2, 0x9a, 0x64,
758 0xf6, 0xd3, 0xee, 0xc6, 0x33, 0xb7, 0x6e, 0xef,
759 0x25, 0x9e, 0x1e, 0x7c, 0xe3, 0x1f, 0x2c, 0x6e,
760 0xa9, 0xc0, 0xf8, 0xc1, 0xbf, 0x3b, 0xf8, 0x34,
761 0x03, 0x9b, 0xa1, 0x40, 0x5b, 0x0c, 0x3c, 0x09,
762 0x66, 0x9d, 0x63, 0xe2, 0xe2, 0x04, 0x8f, 0x06,
763 0x84, 0x74, 0x68, 0xb2, 0x5c, 0x3b, 0x4c, 0xad,
764 0x0b, 0x3f, 0x03, 0xb3, 0x07, 0x8a, 0x64, 0xa7,
765 0x36, 0x56, 0x26, 0x39, 0x66, 0xda, 0xe9, 0x6d,
766 0x1b, 0xd5, 0x88, 0xe8, 0x5c, 0xaf, 0x5a, 0x4c,
767 0x49, 0xf7, 0xf5, 0xb7, 0x78, 0xf0, 0xde, 0xec,
768 0xcd, 0x16, 0x23, 0x9e, 0x8c, 0x13, 0xbe, 0x6b,
769 0x6f, 0x9b, 0x07, 0xe5, 0xbb, 0xcc, 0x3a, 0x1b,
770 0x6f, 0x43, 0xdf, 0xff, 0x46, 0x2a, 0xae, 0x47,
771 0x19, 0x18, 0x9a, 0x25, 0x09, 0xc9, 0x24, 0x40,
772 0x0c, 0x4b, 0xa7, 0xda, 0x5e, 0x0d, 0xee, 0xfa,
773 0x62, 0x45, 0x8e, 0xcc, 0x2f, 0x23, 0x08, 0x1d,
774 0x92, 0xf0, 0xfe, 0x82, 0x0f, 0xd7, 0x11, 0x60,
775 0x7e, 0x0b, 0x0b, 0x75, 0xf4, 0xf5, 0x3b, 0xc0,
776 0xa4, 0xe8, 0x72, 0xa5, 0xb6, 0xfa, 0x5a, 0xad,
777 0x5a, 0x4f, 0x39, 0xb5, 0xa2, 0x12, 0x96, 0x0a,
778 0x32, 0x84, 0xb2, 0xa1, 0x06, 0x68, 0x56, 0x57,
779 0x97, 0xa3, 0x7b, 0x22, 0x61, 0x76, 0x5d, 0x30,
780 0x1a, 0x31, 0xab, 0x99, 0x06, 0xc5, 0x1a, 0x96,
781 0xcf, 0xcf, 0x14, 0xff, 0xb2, 0xc4, 0xcc, 0x2b,
782 0xbf, 0x0c, 0x9d, 0x91, 0x8f, 0x79, 0x5b, 0xbc,
783 0xa9, 0x6b, 0x91, 0x6a, 0xb4, 0x93, 0x5c, 0x7b,
784 0x5d, 0xc2, 0x8a, 0x75, 0xc0, 0xc1, 0x08, 0xfa,
785 0x99, 0xf9, 0x4d, 0x5e, 0x0c, 0x06, 0x64, 0x60,
786 0xa9, 0x01, 0x4a, 0x34, 0x0f, 0x33, 0x84, 0x95,
787 0x69, 0x30, 0xc1, 0x1c, 0x36, 0xf8, 0xfc, 0x30,
788 0x23, 0xb2, 0x71, 0xe5, 0x52, 0x4d, 0x12, 0x1a,
789 0xc9, 0xbe, 0xee, 0xc9, 0xcb, 0x01, 0x85, 0xf3,
790 0xdb, 0x30, 0xf9, 0x41, 0xa9, 0x40, 0xb0, 0x06,
791 0x29, 0x77, 0xcd, 0xc5, 0xec, 0x58, 0x02, 0x48,
792 0x83, 0x53, 0x44, 0x6a, 0xd2, 0xca, 0x05, 0xd8,
793 0x5a, 0x08, 0xeb, 0xa9, 0xf4, 0xe6, 0xc7, 0x9d,
794 0xd5, 0x7b, 0x74, 0x0b, 0x31, 0xb7, 0xa5, 0x57,
795 0x7c, 0x7a, 0xfd, 0x1a, 0x0e, 0xd7, 0x97, 0x41,
796 0xbf, 0xdd, 0xc6, 0x19, 0x6c, 0x77, 0x8c, 0x18,
797 0x52, 0x57, 0x83, 0xba, 0x71, 0x25, 0xee, 0x39,
798 0xbb, 0xe2, 0x43, 0xa0, 0x14, 0xdc, 0x0e, 0x84,
799 0xb4, 0x2b, 0xde, 0x3e, 0xe5, 0x36, 0xb7, 0xa2,
800 0x92, 0x98, 0x05, 0xb8, 0x96, 0xe5, 0xd0, 0x8c,
801 0x08, 0x93, 0x35, 0xc2, 0x81, 0xe0, 0xfc, 0x59,
802 0x71, 0xe2, 0x44, 0x49, 0x5d, 0xda, 0xfb, 0x9c,
803 0xaa, 0x70, 0x9f, 0x43, 0xa8, 0xa5, 0xd9, 0x67,
804 0xd9, 0x8f, 0xa3, 0x1e, 0xbe, 0x0e, 0xec, 0xdf,
805 0x12, 0x2b, 0x6a, 0xe7, 0x1c, 0x12, 0x17, 0xe7,
806 0xc4, 0x6d, 0x50, 0xc9, 0x52, 0x7a, 0xd5, 0xe8,
807 0x7f, 0xbc, 0x07, 0x15, 0xac, 0xdb, 0x93, 0x66,
808 0xb1, 0xf0, 0xa7, 0x7b, 0x2f, 0xe9, 0xec, 0xd0,
809 0x47, 0x69, 0x59, 0x87, 0xf1, 0x4c, 0x3e, 0x4b,
810 0x9b, 0x11, 0x79, 0x13, 0xe4, 0x96, 0xf6, 0x56,
811 0x04, 0x6e, 0x0b, 0x33, 0xfc, 0x40, 0xf6, 0xc7,
812 0xc1, 0x43, 0xb1, 0xbf, 0x0e, 0xb3, 0x87, 0xfd,
813 0x0b, 0x1c, 0x63, 0x46, 0x3a, 0xd3, 0xa0, 0x17,
814 0x59, 0x25, 0x94, 0x6c, 0x9c, 0x3d, 0x0c, 0x81,
815 0xce, 0x82, 0x72, 0x42, 0x28, 0xf9, 0x37, 0x6a,
816 0x6d, 0xe4, 0x12, 0xf4, 0x21, 0xaa, 0xf7, 0xfe,
817 0x27, 0x55, 0x40, 0x1a, 0x14, 0xc3, 0x39, 0x5b,
818 0xbf, 0x63, 0xc2, 0x5f, 0x10, 0x1f, 0x14, 0x25,
819 0xd0, 0xce, 0xf3, 0x14, 0x48, 0x13, 0xa5, 0x0b,
820 0x4d, 0x38, 0xcf, 0x0d, 0x34, 0xc0, 0x0a, 0x11,
821 0xb4, 0xb5, 0x72, 0xc8, 0x4b, 0xc2, 0x6f, 0xe7,
822 0x9d, 0x93, 0xf7, 0xdf, 0xb8, 0x43, 0x72, 0x7e,
823 0xda, 0x3e, 0x20, 0x1f, 0xbc, 0x21, 0x2a, 0xce,
824 0x00, 0xfa, 0x96, 0x9f, 0x3d, 0xe5, 0x88, 0x96,
825 0xef, 0x29, 0x84, 0xdf, 0x6c, 0x1c, 0x96, 0xd8,
826 0x58, 0x47, 0xaa, 0x92, 0xf3, 0x07, 0xe5, 0xfb,
827 0xaf, 0xea, 0x95, 0x7e, 0x0b, 0x71, 0xcd, 0x81,
828 0x0f, 0xb7, 0x0a, 0x59, 0x8f, 0x31, 0x4d, 0xd1,
829 0xc3, 0xf3, 0x2f, 0x70, 0x5c, 0x59, 0x18, 0x97,
830 0xaf, 0x77, 0x95, 0x5e, 0xaf, 0x40, 0x06, 0x12,
831 0x81, 0x61, 0x86, 0x08, 0x4e, 0xbc, 0x89, 0x46,
832 0x07, 0x2e, 0x5b, 0x10, 0xaa, 0x12, 0xf0, 0xa7,
833 0x84, 0xe2, 0x9a, 0x08, 0xf1, 0xde, 0x59, 0xe3,
834 0x0e, 0x47, 0x4b, 0xff, 0xc3, 0xc9, 0x18, 0xaf,
835 0x95, 0x9c, 0x67, 0x2a, 0xde, 0x8a, 0x7a, 0x99,
836 0x04, 0xc4, 0xb8, 0x97, 0x4c, 0x04, 0x29, 0x71,
837 0x05, 0xda, 0xb3, 0xd6, 0xdb, 0x6c, 0x71, 0xe6,
838 0xe8, 0x03, 0xbf, 0x94, 0x7d, 0xde, 0x3d, 0xc8,
839 0x44, 0xfa, 0x7d, 0x62, 0xb4, 0x36, 0x03, 0xee,
840 0x36, 0x52, 0x64, 0xb4, 0x85, 0x6d, 0xd5, 0x78,
841 0xf0, 0x6f, 0x67, 0x2d, 0x0e, 0xe0, 0x2c, 0x88,
842 0x9b, 0x55, 0x19, 0x29, 0x40, 0xf6, 0x8c, 0x12,
843 0xbb, 0x2c, 0x83, 0x96, 0x40, 0xc0, 0x36, 0xf5,
844 0x77, 0xff, 0x70, 0x8c, 0x75, 0x92, 0x0b, 0xad,
845 0x05, 0x9b, 0x7e, 0xa2, 0xfc, 0xa9, 0xd1, 0x64,
846 0x76, 0x82, 0x13, 0xba, 0x22, 0x5e, 0x33, 0x0e,
847 0x26, 0x70, 0xa9, 0xbe, 0x74, 0x28, 0xf5, 0xe2,
848 0xc4, 0x96, 0xee, 0x3a, 0xbc, 0x97, 0xa6, 0x2c,
849 0x2a, 0xe0, 0x64, 0x8d, 0x35, 0xc6, 0x1a, 0xca,
850 0xf4, 0x92, 0xfa, 0xc3, 0xf1, 0x1f, 0x98, 0xe4,
851 0x43, 0x88, 0x69, 0x3a, 0x09, 0xbf, 0x63, 0xe5,
852 0x96, 0x29, 0x0b, 0x9b, 0x62, 0x23, 0x14, 0x8a,
853 0x95, 0xe4, 0x1c, 0x5c, 0x0a, 0xa9, 0xc5, 0xb9,
854 0x6f, 0x4f, 0x2b, 0x25, 0x6f, 0x74, 0x1e, 0x18,
855 0xd5, 0xfe, 0x27, 0x7d, 0x3f, 0x6e, 0x55, 0x2c,
856 0x67, 0xe6, 0xde, 0xb5, 0xcc, 0xc0, 0x2d, 0xff,
857 0xc4, 0xe4, 0x06, 0x21, 0xa5, 0xc8, 0xd3, 0xd6,
858 0x6c, 0xa1, 0xc3, 0xfb, 0x88, 0x92, 0xb1, 0x1d,
859 0x90, 0xe1, 0x35, 0x05, 0x9b, 0x29, 0x6d, 0xba,
860 0xf1, 0xf4, 0x1e, 0x23, 0x2e
863 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
866 "id-Gost28147-89-CryptoPro-A-ParamSet",
869 0x07, 0x52, 0x65, 0xe7, 0xca, 0xa3, 0xca, 0x45,
870 0xcf, 0x3a, 0x05, 0x1d, 0x38, 0x03, 0x53, 0x0c,
871 0x22, 0x31, 0xba, 0x99, 0x4f, 0x9b, 0x6a, 0x1b,
872 0x7e, 0x09, 0x9d, 0x4e, 0xb5, 0xc9, 0x84, 0x2e
876 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
879 0x3d, 0x05, 0x07, 0x57, 0xc0, 0x75, 0x89, 0x97,
880 0xd6, 0x94, 0x49, 0x11, 0x1d, 0xd0, 0x91, 0xee
883 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
886 "id-Gost28147-89-CryptoPro-A-ParamSet",
889 0x75, 0xa3, 0x3c, 0xae, 0x03, 0x6b, 0x10, 0xdb,
890 0xc1, 0x56, 0x50, 0x89, 0x03, 0xd2, 0x9f, 0x91,
891 0xee, 0xe8, 0x64, 0x1d, 0x43, 0xf2, 0x4e, 0xf8,
892 0xf2, 0x6c, 0xed, 0xda, 0x8f, 0xe4, 0x88, 0xe9
896 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
899 0xfa, 0x6c, 0x96, 0x78, 0xe2, 0xf8, 0xdd, 0xaa,
900 0x67, 0x5a, 0xc9, 0x5d, 0x57, 0xf1, 0xbd, 0x99
903 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
906 0xd6, 0xcf, 0x31, 0x96, 0x9c, 0xa1, 0xfb, 0xd6,
907 0x8d, 0xa3, 0xdd, 0x01, 0xd9, 0x88, 0xc0, 0x2f,
908 0xbc, 0x46, 0xc7, 0x3a, 0xe4, 0x21, 0x86, 0x96,
909 0x8d, 0xe2, 0xca, 0xb6, 0x37, 0xa2, 0xe1, 0xa8,
910 0x7e, 0xa7, 0x79, 0x2e, 0xa4, 0x56, 0x75, 0x7f,
911 0x3e, 0x55, 0x8b, 0x43, 0xae, 0x65, 0xdf, 0xaa,
912 0x42, 0xb6, 0x00, 0xa6, 0x61, 0x03, 0x0d, 0xd3,
913 0x41, 0x02, 0x27, 0x23, 0x95, 0x79, 0x9b, 0x34,
914 0x81, 0xa9, 0x86, 0xb5, 0xa7, 0x90, 0xe2, 0xae,
915 0xc4, 0x2f, 0xc3, 0x8e, 0x32, 0x56, 0x13, 0xfa,
916 0x4d, 0x4e, 0x9f, 0x15, 0x75, 0x7e, 0x74, 0xdc,
917 0x32, 0x2d, 0xee, 0x4d, 0x67, 0x70, 0x9f, 0x62,
918 0xb9, 0xc4, 0xdb, 0x24, 0x84, 0xcc, 0x16, 0x7b,
919 0xda, 0x22, 0xf7, 0xc5, 0xf3, 0x93, 0x35, 0x73,
920 0xc6, 0x03, 0x1c, 0x77, 0xa5, 0xf2, 0x76, 0x56,
921 0xb4, 0x95, 0xd4, 0x7e, 0x0d, 0x20, 0xc6, 0x6e,
922 0xee, 0x8f, 0x25, 0x48, 0xff, 0x7e, 0x01, 0x3a,
923 0xb4, 0x1f, 0xaa, 0x35, 0xc0, 0x33, 0x58, 0x9c,
924 0xb5, 0xba, 0x65, 0x4b, 0xd3, 0x51, 0x14, 0xec,
925 0x61, 0xce, 0xe4, 0xba, 0x49, 0xba, 0x39, 0x32,
926 0xab, 0xce, 0x81, 0x72, 0xce, 0xab, 0xed, 0xd4,
927 0xd2, 0x19, 0x87, 0x85, 0x92, 0xfa, 0x64, 0x34,
928 0xd8, 0x86, 0xf4, 0x8a, 0x08, 0x3c, 0xde, 0xee,
929 0x97, 0x92, 0x92, 0x69, 0xba, 0x9b, 0x5f, 0x7a,
930 0x03, 0xc1, 0x5d, 0x43, 0x02, 0x8c, 0xbe, 0xd2,
931 0x46, 0x72, 0x81, 0x40, 0x7d, 0x68, 0x98, 0x45,
932 0x0b, 0x54, 0x27, 0x1c, 0xaf, 0x80, 0x42, 0xe4,
933 0xd5, 0xd4, 0xe4, 0xa2, 0x98, 0x07, 0x8f, 0x03,
934 0xf5, 0x2c, 0x8c, 0x88, 0xca, 0x5a, 0xde, 0xe4,
935 0x9f, 0xb1, 0x5f, 0x82, 0xff, 0x20, 0x67, 0x52,
936 0x85, 0x84, 0x4f, 0xc8, 0xfe, 0xa7, 0x9e, 0xae,
937 0x1c, 0xfa, 0xb8, 0x75, 0xd3, 0xf7, 0x9f, 0x0d,
938 0xda, 0x2d, 0xe6, 0xcc, 0x86, 0x6b, 0xa4, 0x14,
939 0x65, 0xc3, 0xf9, 0x15, 0xbc, 0x87, 0xf5, 0xae,
940 0x8c, 0x10, 0xd4, 0xce, 0x5b, 0x9c, 0xe2, 0xdd,
941 0x42, 0x03, 0x09, 0x87, 0x47, 0xed, 0x5d, 0xd0,
942 0x7a, 0x69, 0x4c, 0xfa, 0x43, 0x7d, 0xbf, 0x07,
943 0x85, 0x6a, 0xee, 0x68, 0xe6, 0x7a, 0x57, 0xb2,
944 0x20, 0x8d, 0x80, 0xf2, 0x91, 0x6f, 0x5c, 0x07,
945 0x8c, 0xe4, 0x6a, 0x49, 0x90, 0x85, 0x8b, 0x77,
946 0x29, 0x56, 0x1c, 0x5e, 0xa9, 0x3f, 0xab, 0x8b,
947 0x79, 0xa3, 0x6f, 0x6b, 0x34, 0xcb, 0x61, 0xf6,
948 0xe6, 0x92, 0xd1, 0x48, 0x9e, 0x11, 0xa2, 0x82,
949 0xc0, 0x4e, 0x23, 0xd2, 0x15, 0x0d, 0x8d, 0xff,
950 0xfa, 0x17, 0x9d, 0x81, 0xb8, 0xbc, 0xd7, 0x5b,
951 0x08, 0x81, 0x20, 0x40, 0xc0, 0x3c, 0x06, 0x8b,
952 0x1a, 0x88, 0x0b, 0x4b, 0x7b, 0x31, 0xf5, 0xd4,
953 0x4e, 0x09, 0xd1, 0x4d, 0x0d, 0x7f, 0x45, 0xd1,
954 0x09, 0x35, 0xba, 0xce, 0x65, 0xdd, 0xf2, 0xb8,
955 0xfb, 0x7a, 0xbc, 0xc4, 0x4b, 0xc8, 0x75, 0xda,
956 0x6b, 0xce, 0x3d, 0xe8, 0x94, 0xcc, 0x23, 0x6f,
957 0xb0, 0x3b, 0x4f, 0x7d, 0x07, 0xb9, 0x0f, 0x62,
958 0x92, 0x7e, 0xda, 0x70, 0x50, 0xce, 0xd3, 0x28,
959 0x12, 0x11, 0x00, 0xeb, 0x8d, 0x63, 0x70, 0x78,
960 0xa8, 0x7b, 0x76, 0xab, 0xc6, 0x40, 0xc0, 0x4e,
961 0x80, 0xdd, 0xf0, 0xfe, 0x83, 0x72, 0x56, 0x4c,
962 0x09, 0x4c, 0xf1, 0x72, 0x72, 0x86, 0x26, 0x31,
963 0xc3, 0xc2, 0xdc, 0x8e, 0xc7, 0xf4, 0x35, 0xec,
964 0x17, 0x06, 0x63, 0x47, 0x49, 0x88, 0x47, 0xaf,
965 0xb3, 0x38, 0x4f, 0x7e, 0x44, 0x95, 0xb5, 0xbb,
966 0x1d, 0xbd, 0x5a, 0x91, 0x5b, 0xd0, 0x1a, 0xdf,
967 0x0d, 0x0b, 0x50, 0xd8, 0xe2, 0x0e, 0xc5, 0x00,
968 0x2d, 0x5b, 0x29, 0x19, 0xaa, 0x2b, 0x64, 0xc5,
969 0x40, 0x31, 0x48, 0x11, 0xbc, 0x04, 0xd1, 0xcf,
970 0x6d, 0xf9, 0xa5, 0x2f, 0x4a, 0xc9, 0x82, 0xfa,
971 0x59, 0xe1, 0xfc, 0xab, 0x1c, 0x33, 0x26, 0x0a,
972 0x5f, 0xef, 0xf2, 0x06, 0xd8, 0xd3, 0x7e, 0x16,
973 0x58, 0x16, 0x78, 0x73, 0xae, 0xba, 0xeb, 0xe5,
974 0x3d, 0xb2, 0x0a, 0xb3, 0x32, 0x2d, 0x14, 0xa4,
975 0xfa, 0x3f, 0x1f, 0x43, 0xf9, 0x7b, 0xa9, 0x43,
976 0x98, 0x18, 0x94, 0x07, 0x07, 0xe5, 0x19, 0x34,
977 0xa8, 0x16, 0x5f, 0x71, 0x67, 0xaa, 0x29, 0xe5,
978 0xfa, 0xf0, 0x83, 0x06, 0x1d, 0x9d, 0xfc, 0xfe,
979 0xfe, 0x8c, 0xb5, 0xb2, 0xa9, 0xe7, 0xa0, 0x40,
980 0x60, 0xb6, 0x71, 0x9e, 0xab, 0x5b, 0x83, 0xb9,
981 0x0c, 0x2b, 0x58, 0x23, 0x80, 0x09, 0x9e, 0x5d,
982 0x94, 0x7d, 0x40, 0x76, 0xa9, 0x16, 0x96, 0x9e,
983 0x83, 0xe0, 0x0d, 0xec, 0xa0, 0xec, 0x76, 0x2a,
984 0xb7, 0xa0, 0xff, 0xb8, 0x50, 0x4c, 0x5b, 0xc6,
985 0x8b, 0x0a, 0x65, 0x2e, 0xfe, 0xb4, 0x40, 0x9a,
986 0x01, 0xd8, 0xc6, 0xa3, 0xab, 0x99, 0xa2, 0xc5,
987 0x0c, 0x08, 0xc4, 0xb7, 0xee, 0x4d, 0x1d, 0xc4,
988 0x08, 0x15, 0xd0, 0xdb, 0xaa, 0x63, 0x4f, 0x31,
989 0xeb, 0x14, 0x97, 0x43, 0xbd, 0xc1, 0x94, 0x08,
990 0xe6, 0xde, 0x43, 0x9f, 0x95, 0x0b, 0x96, 0x7e,
991 0x7f, 0x3c, 0x68, 0xba, 0x6f, 0xc4, 0xc9, 0x35,
992 0x2b, 0xc4, 0x0e, 0xda, 0x1f, 0x91, 0x68, 0x64,
993 0x63, 0x34, 0x73, 0xbe, 0x57, 0x75, 0xb9, 0xed,
994 0xf7, 0x2d, 0x3b, 0x05, 0x21, 0x93, 0x28, 0x48,
995 0x96, 0x95, 0x97, 0xa0, 0xd2, 0x7d, 0x78, 0xbb,
996 0x6a, 0x49, 0x8f, 0x76, 0x55, 0x74, 0x63, 0xb9,
997 0xc5, 0x36, 0x12, 0x25, 0xbf, 0x03, 0x82, 0x8f,
998 0xf0, 0xf6, 0x80, 0xbb, 0x33, 0xb4, 0xf4, 0x17,
999 0x27, 0x1c, 0xf3, 0x4c, 0x10, 0xa3, 0xe4, 0xd1,
1000 0x55, 0xd9, 0x68, 0x21, 0x4e, 0x5a, 0x83, 0x67,
1001 0xbf, 0xf8, 0x3c, 0x7d, 0x4e, 0x62, 0xd3, 0x28,
1002 0xa7, 0x26, 0x6f, 0xe9, 0xee, 0xc2, 0x0b, 0x2d,
1003 0x03, 0x84, 0xb1, 0xff, 0xd6, 0x68, 0x1f, 0xb6,
1004 0xf2, 0xe4, 0x0f, 0xda, 0x2d, 0xee, 0x5f, 0x6e,
1005 0x21, 0xc8, 0xe1, 0xfc, 0xad, 0x6b, 0x0e, 0x04,
1006 0x7d, 0xaf, 0xc2, 0x3b, 0xa5, 0x68, 0x9b, 0x0c,
1007 0xf3, 0x56, 0xf3, 0xda, 0x8d, 0xc8, 0x7d, 0x39,
1008 0xdc, 0xd5, 0x99, 0xc6, 0x01, 0x10, 0xce, 0x42,
1009 0x1b, 0xac, 0x48, 0xdc, 0x97, 0x78, 0x0a, 0xec,
1010 0xb3, 0x8f, 0x47, 0x35, 0xa3, 0x6a, 0x64, 0xb2,
1011 0x8e, 0x63, 0x69, 0x22, 0x66, 0xae, 0x2e, 0xe0,
1012 0x88, 0xf9, 0x40, 0x3c, 0xc9, 0xa2, 0x57, 0x61,
1013 0xf6, 0xad, 0xf0, 0xdc, 0x90, 0x56, 0x3f, 0x06,
1014 0x9b, 0x7d, 0xbd, 0xc2, 0x81, 0x02, 0xab, 0xb8,
1015 0x15, 0x09, 0x88, 0x4a, 0xff, 0x2f, 0x31, 0xbf,
1016 0x5e, 0xfa, 0x6a, 0x7e, 0xf6, 0xc5, 0xa7, 0xf7,
1017 0xd5, 0xab, 0x55, 0xac, 0xae, 0x0d, 0x8c, 0x8d,
1018 0x7f, 0x4b, 0x25, 0xbb, 0x32, 0xff, 0x11, 0x33,
1019 0x2e, 0x37, 0x37, 0x69, 0x96, 0x15, 0x17, 0xb1,
1020 0x17, 0x49, 0xe0, 0x9a, 0x9c, 0xd9, 0x5b, 0x8d,
1021 0x58, 0xa3, 0x1d, 0x92, 0x87, 0xf8, 0x80, 0xb9,
1022 0xbd, 0x5a, 0xec, 0x40, 0xe1, 0x00, 0x33, 0x60,
1023 0xe4, 0x86, 0x16, 0x6d, 0x61, 0x81, 0xf2, 0x28,
1024 0x6a, 0xa7, 0xce, 0x3f, 0x95, 0xae, 0x43, 0xca,
1025 0xe1, 0x3f, 0x81, 0x74, 0x7e, 0x1c, 0x47, 0x17,
1026 0x95, 0xc6, 0x60, 0xda, 0x74, 0x77, 0xd9, 0x9f,
1027 0xfa, 0x92, 0xb4, 0xbe, 0xe1, 0x23, 0x98, 0x18,
1028 0x95, 0x63, 0x03, 0x13, 0x4c, 0x1a, 0x2d, 0x41,
1029 0xcd, 0xe4, 0x84, 0xf7, 0xe6, 0x38, 0xef, 0xff,
1030 0x95, 0xb2, 0xe8, 0x7c, 0x8f, 0x58, 0xb5, 0xb5,
1031 0xed, 0x27, 0x7f, 0x3c, 0x18, 0xab, 0xbe, 0x7f,
1032 0x4f, 0xe2, 0x35, 0x15, 0x71, 0xb7, 0x6f, 0x85,
1033 0x38, 0x9b, 0x88, 0xf6, 0x9c, 0x8d, 0x43, 0xb5,
1034 0x58, 0x9e, 0xf2, 0xd1, 0x96, 0xbe, 0xb7, 0xad,
1037 "id-Gost28147-89-CryptoPro-A-ParamSet",
1040 0x80, 0xd9, 0xa0, 0xdc, 0x21, 0xf9, 0x30, 0x40,
1041 0x75, 0xfe, 0x49, 0x1b, 0x9e, 0x71, 0x90, 0x91,
1042 0x78, 0x88, 0x21, 0x60, 0x39, 0xe7, 0xc9, 0x2b,
1043 0xfb, 0x55, 0x1d, 0xf4, 0xdd, 0x2b, 0x0a, 0x01
1048 0x90, 0xf2, 0x11, 0x9a
1051 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1054 0x1d, 0xeb, 0xe6, 0x79, 0x0a, 0x59, 0x00, 0xe6,
1057 "id-Gost28147-89-CryptoPro-A-ParamSet",
1060 0xa9, 0xb6, 0x37, 0xcc, 0x6d, 0x9b, 0x2f, 0x25,
1061 0xb0, 0xdf, 0x47, 0x04, 0x50, 0x68, 0xb0, 0x27,
1062 0x41, 0x27, 0x58, 0x6a, 0xbd, 0x0a, 0x6e, 0x50,
1063 0x2f, 0xc6, 0xfc, 0xc0, 0x3e, 0x29, 0x42, 0xa5
1068 0x31, 0x7c, 0x16, 0xe4
1071 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1074 0xef, 0x06, 0x8f, 0x14, 0xc9, 0x04
1076 "id-Gost28147-89-CryptoPro-A-ParamSet",
1079 0xb0, 0x6c, 0x48, 0x23, 0x0a, 0x6e, 0xf4, 0xec,
1080 0x27, 0x98, 0x01, 0x23, 0xa7, 0xd8, 0xbf, 0x60,
1081 0x89, 0xef, 0xad, 0xe8, 0x8f, 0x79, 0x14, 0x8c,
1082 0x18, 0x5c, 0x9a, 0xda, 0xef, 0x0b, 0xdd, 0xa0
1087 0xe9, 0x72, 0xae, 0xbf
1090 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1093 0x02, 0xf8, 0xec, 0x2b, 0x4d, 0x1f, 0xbc, 0x7c,
1094 0x6e, 0x47, 0xe3, 0x87, 0x22, 0x75, 0x41, 0xa7
1096 "id-Gost28147-89-CryptoPro-B-ParamSet",
1099 0x33, 0xd3, 0xef, 0x01, 0x19, 0x95, 0x0e, 0x15,
1100 0xa1, 0x69, 0x75, 0xae, 0x56, 0x27, 0x17, 0x79,
1101 0x63, 0x47, 0xab, 0x62, 0x9d, 0x4a, 0xf0, 0x34,
1102 0xd3, 0x1e, 0x69, 0x74, 0xec, 0x31, 0x48, 0xfc
1107 0xf5, 0x55, 0x1f, 0x28
1110 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1113 0xf3, 0xb2, 0x29, 0xd2, 0x7a, 0x37, 0x03, 0x12
1115 "id-Gost28147-89-CryptoPro-A-ParamSet",
1118 0x42, 0x35, 0x81, 0x91, 0x0b, 0xa9, 0x99, 0xff,
1119 0xd9, 0x43, 0xf8, 0xc6, 0x19, 0x55, 0x1f, 0x2f,
1120 0x2d, 0x45, 0x40, 0x20, 0x1e, 0x1d, 0x32, 0x7a,
1121 0xb1, 0x07, 0x6b, 0x4f, 0x45, 0x90, 0xd9, 0x80
1126 0x6e, 0x15, 0xfa, 0xe8
1129 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1134 "id-Gost28147-89-CryptoPro-A-ParamSet",
1137 0x26, 0xcb, 0xb9, 0xf0, 0x0c, 0x62, 0x9f, 0xaa,
1138 0x4a, 0x1d, 0xb6, 0x30, 0x09, 0x01, 0x56, 0x89,
1139 0x66, 0xd4, 0xe4, 0x0e, 0xfe, 0xf6, 0x10, 0x6b,
1140 0x6c, 0xe8, 0x04, 0x3a, 0xe3, 0x61, 0x4b, 0x19
1145 0x00, 0x00, 0x00, 0x00
1148 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1151 "id-Gost28147-89-CryptoPro-A-ParamSet",
1154 0xaa, 0x85, 0x84, 0xcd, 0x65, 0x28, 0xe1, 0xdb,
1155 0xb8, 0x20, 0x19, 0x43, 0xe0, 0x36, 0x35, 0x10,
1156 0x19, 0xc3, 0x70, 0x5b, 0x27, 0xc1, 0x9d, 0x84,
1157 0x75, 0xa3, 0xc6, 0x49, 0x46, 0x8f, 0x7c, 0x4e
1162 0x2a, 0xe6, 0x23, 0xc6
1165 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1168 "id-Gost28147-89-CryptoPro-A-ParamSet",
1171 0xd5, 0xda, 0xfe, 0x06, 0x60, 0xdc, 0xf0, 0xb3,
1172 0x49, 0x5a, 0x02, 0x59, 0xc8, 0x2e, 0x4a, 0x2b,
1173 0xcc, 0x9b, 0x98, 0x04, 0xb7, 0xf2, 0x78, 0xb7,
1174 0xce, 0xa3, 0xf2, 0xdb, 0x9e, 0xa8, 0x49, 0x1d
1179 0xcc, 0x46, 0x67, 0xe4
1182 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1183 4ULL*1024*1024*1024ULL,
1185 "id-Gost28147-89-CryptoPro-A-ParamSet",
1188 0x0d, 0xf1, 0xa8, 0x7f, 0x57, 0x03, 0x44, 0xcc,
1189 0xdb, 0x20, 0xde, 0xed, 0x85, 0x50, 0x38, 0xda,
1190 0xc9, 0x44, 0xec, 0x2c, 0x0d, 0x66, 0xb7, 0xdc,
1191 0x17, 0x14, 0x55, 0x95, 0x33, 0x6e, 0x43, 0x3e
1196 0xb7, 0x21, 0x2e, 0x48
1199 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1200 4ULL*1024*1024*1024+4ULL,
1202 "id-Gost28147-89-CryptoPro-A-ParamSet",
1205 0x0c, 0xf3, 0xe9, 0xb0, 0x28, 0x3b, 0x9f, 0x8b,
1206 0xe3, 0x82, 0xb9, 0xa2, 0xa6, 0xbd, 0x80, 0xd2,
1207 0xcd, 0xfa, 0x3f, 0xf7, 0x90, 0xa7, 0x55, 0x06,
1208 0x9b, 0x7a, 0x58, 0xee, 0xe7, 0xf1, 0x9d, 0xbe
1213 0xda, 0x15, 0x10, 0x73
1216 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1217 4ULL*1024*1024*1024+10ULL,
1219 "id-Gost28147-89-CryptoPro-A-ParamSet",
1222 0x97, 0x1a, 0x42, 0x22, 0xfa, 0x07, 0xb2, 0xca,
1223 0xf9, 0xd2, 0x34, 0x5a, 0x92, 0xb1, 0x1f, 0x6b,
1224 0x53, 0xf8, 0xaf, 0xed, 0x9a, 0x73, 0xc4, 0x38,
1225 0xd7, 0x7d, 0x25, 0x81, 0x00, 0x0d, 0xd4, 0x29
1230 0x52, 0xaa, 0x22, 0xb4
1235 int main(int argc, char *argv[])
1238 unsigned long long ullMaxLen = 6*1000*1000;
1240 ENGINE *impl = NULL;
1241 EVP_MD_CTX *mctx = NULL;
1242 EVP_CIPHER_CTX *ectx = NULL;
1244 byte bDerive[EVP_MAX_KEY_LENGTH];
1245 byte bTest[G89_MAX_TC_LEN];
1246 byte bTest1[G89_MAX_TC_LEN];
1247 unsigned long long ullLeft;
1248 static const byte bZB[40*1024*1024] = { 0 };
1249 static byte bTS[40*1024*1024] = { 0 };
1250 unsigned int mdl = 0;
1256 const EVP_MD *md_gost94 = NULL;
1257 const EVP_CIPHER *cp_g89cfb = NULL;
1258 const EVP_CIPHER *cp_g89cnt = NULL;
1259 const EVP_CIPHER *ctype = NULL;
1260 const EVP_MD *md_g89imit = NULL;
1263 CONF *pConfig = NCONF_new(NULL);
1266 "openssl_conf = openssl_def\n"
1269 "engines = engine_section\n"
1271 "[engine_section]\n"
1272 "gost = gost_section\n"
1275 "default_algorithms = ALL\n"
1279 printf("Testing GOST 28147-89 ");
1282 if(1 != sscanf(argv[1], "%llu", &ullMaxLen) ||
1284 1 != sscanf(argv[2], "%d", &ignore) : 0)) {
1286 fprintf(stderr, "Usage: %s [maxlen [ignore-error]]\n",
1293 * Internal function test on GostR3411_94_TestParamSet
1295 #ifdef OPENSSL_NO_DYNAMIC_ENGINE
1299 for(t = 0; t < sizeof(tcs)/sizeof(tcs[0]); t++) {
1300 const gost_subst_block *pSubst = NULL;
1302 if(1024 < tcs[t].ullLen) {
1303 /* Key meshing check by engine tests */
1306 memset(bTest, 0xc3, sizeof(bTest));
1307 if(0 == strcmp(tcs[t].szParamSet,
1308 "id-GostR3410-94-TestParamSet")) {
1309 pSubst = &GostR3411_94_TestParamSet;
1310 } else if(0 == strcmp(tcs[t].szParamSet,
1311 "id-Gost28147-89-CryptoPro-A-ParamSet")) {
1312 pSubst = &Gost28147_CryptoProParamSetA;
1313 } else if(0 == strcmp(tcs[t].szParamSet,
1314 "id-Gost28147-89-CryptoPro-B-ParamSet")) {
1315 pSubst = &Gost28147_CryptoProParamSetB;
1316 } else if(0 == strcmp(tcs[t].szParamSet,
1317 "id-Gost28147-89-CryptoPro-C-ParamSet")) {
1318 pSubst = &Gost28147_CryptoProParamSetC;
1319 } else if(0 == strcmp(tcs[t].szParamSet,
1320 "id-Gost28147-89-CryptoPro-D-ParamSet")) {
1321 pSubst = &Gost28147_CryptoProParamSetD;
1323 gost_init(&ctx, pSubst);
1324 gost_key(&ctx, tcs[t].bRawKey);
1325 switch(tcs[t].gMode) {
1327 gost_enc(&ctx, tcs[t].bIn, bTest,
1328 (int)((tcs[t].ullLen + G89_BLOCK_LEN - 1)/
1330 l = (size_t)tcs[t].ullLen;
1333 gost_enc_cfb(&ctx, tcs[t].bIV, tcs[t].bIn,
1335 (int)((tcs[t].ullLen + G89_BLOCK_LEN - 1)/
1337 l = (size_t)tcs[t].ullLen;
1340 /* GOST 28147-89 cipher CNT mode check by engine
1345 gost_mac(&ctx, 32, tcs[t].bIn,
1346 (unsigned int)tcs[t].ullLen,
1348 gost_mac_iv(&ctx, 32, tcs[t].bIV, tcs[t].bIn,
1349 (unsigned int)tcs[t].ullLen,
1351 if(0 != memcmp(bTest, bTest1, 4)) {
1353 fprintf(stderr, "\nInternal test t=%d len=%llu "
1354 "failed (gost_mac_iv).\n", t,
1365 if(0 != memcmp(tcs[t].bOut, bTest, l)) {
1367 fprintf(stderr, "\nInternal test t=%d len=%llu "
1382 * ccgost engine test on GostR3411_94_CryptoProParamSet
1384 #ifndef OPENSSL_NO_DYNAMIC_ENGINE
1385 setenv("OPENSSL_ENGINES", CCGOST_DIR, 1);
1387 ERR_load_crypto_strings();
1388 ENGINE_load_builtin_engines();
1389 OPENSSL_load_builtin_modules();
1391 bpConf = BIO_new_mem_buf(sConf, -1);
1392 if(!NCONF_load_bio(pConfig, bpConf, &lErrLine)) {
1394 fprintf(stderr, "NCONF_load_bio: ErrLine=%ld: %s\n",
1396 ERR_error_string(ERR_get_error(), NULL));
1401 if(!CONF_modules_load(pConfig, NULL, 0)) {
1403 fprintf(stderr, "CONF_modules_load: %s\n",
1404 ERR_error_string(ERR_get_error(), NULL));
1408 /* Test load engine */
1409 if(NULL == (impl = ENGINE_by_id(CCGOST_ID))) {
1411 fprintf(stderr, "Can't load engine id \"" CCGOST_ID "\"\n");
1416 if(NULL == (md_gost94 = EVP_get_digestbyname(SN_id_GostR3411_94))) {
1418 fprintf(stderr, "\"" SN_id_GostR3411_94 "\" - not found\n");
1423 if(NULL == (cp_g89cfb = EVP_get_cipherbyname(SN_id_Gost28147_89))) {
1425 fprintf(stderr, "\"" SN_id_Gost28147_89 "\" - not found\n");
1430 if(NULL == (cp_g89cnt = EVP_get_cipherbyname(SN_gost89_cnt))) {
1432 fprintf(stderr, "\"" SN_gost89_cnt "\" - not found\n");
1437 if(NULL == (md_g89imit = EVP_get_digestbyname(SN_id_Gost28147_89_MAC))) {
1439 fprintf(stderr, "\"" SN_id_Gost28147_89_MAC "\" - not found\n");
1446 for(t = 0; t < sizeof(tcs)/sizeof(tcs[0]); t++) {
1447 if(NULL == tcs[t].szDerive) {
1450 memset(bDerive, 0x3c, sizeof(bDerive));
1451 mdl = sizeof(bDerive);
1452 EVP_Digest(tcs[t].szDerive, strlen(tcs[t].szDerive),
1455 if(0 != memcmp(tcs[t].bRawKey, bDerive, mdl)) {
1457 fprintf(stderr, "Engine test t=%d "
1458 "derive key error.\n", t);
1463 if(ullMaxLen < tcs[t].ullLen) {
1466 memset(bTest, 0xa5, sizeof(bTest));
1467 memset(bTest1, 0x5a, sizeof(bTest1));
1468 if(!ENGINE_ctrl_cmd_string(impl,
1470 tcs[t].szParamSet, 0)) {
1472 fprintf(stderr, "ENGINE_ctrl_cmd_string: %s\n",
1473 ERR_error_string(ERR_get_error(), NULL));
1476 switch(tcs[t].gMode) {
1478 /* OpenSSL/ccgost not implemented GOST 28147-89 ECB */
1482 goto engine_cipher_check;
1484 if(0 != strcmp("id-Gost28147-89-CryptoPro-A-ParamSet",
1485 tcs[t].szParamSet)) {
1487 * ccgost engine can't change S-Box for gost-cnt
1492 engine_cipher_check:
1493 EVP_CIPHER_CTX_init(ectx);
1494 EVP_EncryptInit_ex(ectx, ctype, impl,
1495 bDerive, tcs[t].bIV);
1496 if(G89_MAX_TC_LEN >= tcs[t].ullLen) {
1497 enlu = sizeof(bTest);
1498 EVP_EncryptUpdate(ectx, bTest, &enlu,
1499 tcs[t].bIn, (int)tcs[t].ullLen);
1500 l = (size_t)tcs[t].ullLen;
1502 for(ullLeft = tcs[t].ullLen;
1503 ullLeft >= sizeof(bZB);
1504 ullLeft -= sizeof(bZB)) {
1508 EVP_EncryptUpdate(ectx, bTS, &enlu,
1511 printf("b%llu/%llu", ullLeft, tcs[t].ullLen);
1513 EVP_EncryptUpdate(ectx, bTS, &enlu,
1515 memcpy(bTest, &bTS[enlu-16], 16);
1516 enlu = (int)tcs[t].ullLen;
1519 enlf = sizeof(bTest1);
1520 EVP_EncryptFinal_ex(ectx, bTest1, &enlf);
1521 EVP_CIPHER_CTX_cleanup(ectx);
1524 if(0 != strcmp("id-Gost28147-89-CryptoPro-A-ParamSet",
1525 tcs[t].szParamSet)) {
1527 * ccgost engine can't change S-Box for gost-mac
1531 EVP_MD_CTX_init(mctx);
1532 mac_key = EVP_PKEY_new_mac_key(
1533 NID_id_Gost28147_89_MAC, NULL,
1535 EVP_DigestSignInit(mctx, NULL,
1536 md_g89imit, impl, mac_key);
1537 if(G89_MAX_TC_LEN >= tcs[t].ullLen) {
1538 EVP_DigestSignUpdate(mctx, tcs[t].bIn,
1539 (unsigned int)tcs[t].ullLen);
1541 for(ullLeft = tcs[t].ullLen;
1542 ullLeft >= sizeof(bZB);
1543 ullLeft -= sizeof(bZB)) {
1546 EVP_DigestSignUpdate(mctx, bZB, sizeof(bZB));
1548 printf("b%llu/%llu", ullLeft, tcs[t].ullLen);
1550 EVP_DigestSignUpdate(mctx, bZB,
1551 (unsigned int)ullLeft);
1554 EVP_DigestSignFinal(mctx, bTest, &siglen);
1555 EVP_MD_CTX_free(mctx);
1556 enlu = (int)tcs[t].ullLen;
1561 if((int)tcs[t].ullLen != enlu || 0 != enlf ||
1562 0 != memcmp(tcs[t].bOut, bTest, l)) {
1564 fprintf(stderr, "\nEngine test t=%d len=%llu "
1565 "failed.\n", t, tcs[t].ullLen);
1575 printf(" passed\n");
1578 return EXIT_SUCCESS;