summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbeck <>2024-03-28 06:45:36 +0000
committerbeck <>2024-03-28 06:45:36 +0000
commit6b3f43e6d23306de7c82d90f068177f6f41a67c0 (patch)
treeb3e5f2c1c4c14fbd476642294096eda8791c7599
parent28165f4292b1f71ce7a83d93015ffe9a72b349e8 (diff)
downloadopenbsd-6b3f43e6d23306de7c82d90f068177f6f41a67c0.tar.gz
openbsd-6b3f43e6d23306de7c82d90f068177f6f41a67c0.tar.bz2
openbsd-6b3f43e6d23306de7c82d90f068177f6f41a67c0.zip
Nuke more leftover GOST tendrils.
ok tb@
-rw-r--r--src/lib/libcrypto/Makefile3
-rw-r--r--src/regress/lib/libcrypto/Makefile3
-rw-r--r--src/regress/lib/libcrypto/gost/Makefile9
-rw-r--r--src/regress/lib/libcrypto/gost/gost2814789t.c1486
4 files changed, 2 insertions, 1499 deletions
diff --git a/src/lib/libcrypto/Makefile b/src/lib/libcrypto/Makefile
index 17aaab3a91..06af0eee92 100644
--- a/src/lib/libcrypto/Makefile
+++ b/src/lib/libcrypto/Makefile
@@ -1,4 +1,4 @@
1# $OpenBSD: Makefile,v 1.183 2024/03/28 02:09:28 jsing Exp $ 1# $OpenBSD: Makefile,v 1.184 2024/03/28 06:45:36 beck Exp $
2 2
3LIB= crypto 3LIB= crypto
4LIBREBUILD=y 4LIBREBUILD=y
@@ -644,7 +644,6 @@ SRCS+= x_all.c
644 ${LCRYPTO_SRC}/engine \ 644 ${LCRYPTO_SRC}/engine \
645 ${LCRYPTO_SRC}/err \ 645 ${LCRYPTO_SRC}/err \
646 ${LCRYPTO_SRC}/evp \ 646 ${LCRYPTO_SRC}/evp \
647 ${LCRYPTO_SRC}/gost \
648 ${LCRYPTO_SRC}/hkdf \ 647 ${LCRYPTO_SRC}/hkdf \
649 ${LCRYPTO_SRC}/hmac \ 648 ${LCRYPTO_SRC}/hmac \
650 ${LCRYPTO_SRC}/idea \ 649 ${LCRYPTO_SRC}/idea \
diff --git a/src/regress/lib/libcrypto/Makefile b/src/regress/lib/libcrypto/Makefile
index 91e8645edc..32147fd48e 100644
--- a/src/regress/lib/libcrypto/Makefile
+++ b/src/regress/lib/libcrypto/Makefile
@@ -1,4 +1,4 @@
1# $OpenBSD: Makefile,v 1.54 2023/12/27 12:34:32 jsing Exp $ 1# $OpenBSD: Makefile,v 1.55 2024/03/28 06:45:36 beck Exp $
2 2
3SUBDIR += aead 3SUBDIR += aead
4SUBDIR += aes 4SUBDIR += aes
@@ -26,7 +26,6 @@ SUBDIR += evp
26SUBDIR += exdata 26SUBDIR += exdata
27SUBDIR += free 27SUBDIR += free
28SUBDIR += gcm128 28SUBDIR += gcm128
29SUBDIR += gost
30SUBDIR += hkdf 29SUBDIR += hkdf
31SUBDIR += hmac 30SUBDIR += hmac
32SUBDIR += idea 31SUBDIR += idea
diff --git a/src/regress/lib/libcrypto/gost/Makefile b/src/regress/lib/libcrypto/gost/Makefile
index 14b0f9b824..e69de29bb2 100644
--- a/src/regress/lib/libcrypto/gost/Makefile
+++ b/src/regress/lib/libcrypto/gost/Makefile
@@ -1,9 +0,0 @@
1# $OpenBSD: Makefile,v 1.1 2014/11/09 19:45:26 miod Exp $
2
3PROG= gost2814789t
4LDADD= -lcrypto
5DPADD= ${LIBCRYPTO}
6WARNINGS= Yes
7CFLAGS+= -DLIBRESSL_INTERNAL -Werror
8
9.include <bsd.regress.mk>
diff --git a/src/regress/lib/libcrypto/gost/gost2814789t.c b/src/regress/lib/libcrypto/gost/gost2814789t.c
index 261b9271a9..e69de29bb2 100644
--- a/src/regress/lib/libcrypto/gost/gost2814789t.c
+++ b/src/regress/lib/libcrypto/gost/gost2814789t.c
@@ -1,1486 +0,0 @@
1/* $OpenBSD: gost2814789t.c,v 1.11 2024/02/29 20:06:24 tb Exp $ */
2/* vim: set fileencoding=ascii : Charset: ASCII */
3/* test/gostr2814789t.c */
4/* ====================================================================
5 * Copyright (c) 2012 Crypto-Pro, Ltd., Serguei E. Leontiev,
6 * lse@cryptopro.ru
7 *
8 * This file is distributed under the same license as OpenSSL
9 * ====================================================================
10 */
11#include <stdio.h>
12#include <openssl/opensslfeatures.h>
13
14#if defined(OPENSSL_NO_GOST)
15int main(int argc, char *argv[])
16{
17 printf("No GOST 28147-89 support\n");
18 return 0;
19}
20#else
21
22#include <stdint.h>
23#include <stdlib.h>
24#include <string.h>
25#include <inttypes.h>
26#include <openssl/conf.h>
27#include <openssl/crypto.h>
28#include <openssl/err.h>
29#include <openssl/evp.h>
30#include <openssl/hmac.h>
31#include <openssl/obj_mac.h>
32
33#define G89_MAX_TC_LEN (2048)
34#define G89_BLOCK_LEN (8)
35
36#undef U64
37#if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__)
38#define U64(C) C##UI64
39#elif defined(_LP64) || defined(__arch64__)
40#define U64(C) C##UL
41#else
42#define U64(C) C##ULL
43#endif
44
45typedef enum g89_mode_ {
46 G89_ECB,
47 G89_CFB,
48 G89_CNT,
49 G89_IMIT
50} g89_mode;
51
52typedef struct g89_tc_ {
53 uint64_t ullLen; /* ullLen > G89_MAX_TC_LEN */
54 /* Clear text ullLen */
55 /* of zero unsigned chars */
56 const unsigned char bIn[G89_MAX_TC_LEN]; /* Clear text, when */
57 /* ullLen <= G89_MAX_TC_LEN */
58 const char *szParamSet; /* S-Box ID */
59 const char *szDerive; /* String for derive bRawKey */
60 const unsigned char bRawKey[EVP_MAX_KEY_LENGTH];
61 g89_mode gMode; /* Mode of encryption or MAC */
62 const unsigned char bIV[EVP_MAX_IV_LENGTH]; /* IV for CFB or CNT mode */
63 const unsigned char bOut[G89_MAX_TC_LEN]; /* Cipher text for ECB/CFB/CNT */
64 /* mode, when ullLen <= G89_MAX_TC_LEN;
65 * Last 16 unsigned char of cipher text for
66 * ECB/CFB/CNT, when ullLen >
67 * G89_MAX_TC_LEN;
68 * 4 unsigned char MAC for imitovstavka */
69} g89_tc;
70
71const g89_tc tcs[] = {
72 /*
73 * GOST R 34.11-94 Test cases
74 */
75 { /* see p. A.3.1 [GOSTR341194], p. 7.3.1 [ENG-GOSTR341194] */
76 /* <http://tools.ietf.org/html/rfc5831#section-7.3.1> */
77 /* Iteration 1, K[1], see Errata for RFC 5831 */
78 8,
79 {
80 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
81 },
82 "id-GostR3411-94-TestParamSet",
83 NULL,
84 {
85 0x54, 0x6d, 0x20, 0x33, 0x68, 0x65, 0x6c, 0x32,
86 0x69, 0x73, 0x65, 0x20, 0x73, 0x73, 0x6e, 0x62,
87 0x20, 0x61, 0x67, 0x79, 0x69, 0x67, 0x74, 0x74,
88 0x73, 0x65, 0x68, 0x65, 0x20, 0x2c, 0x3d, 0x73
89 },
90 G89_ECB,
91 { 0 },
92 {
93 0x1b, 0x0b, 0xbc, 0x32, 0xce, 0xbc, 0xab, 0x42
94 }
95 },
96 { /* see p. A.3.1 [GOSTR341194], p. 7.3.1 [ENG-GOSTR341194] */
97 /* <http://tools.ietf.org/html/rfc5831#section-7.3.1> */
98 /* Iteration 1, K[4] */
99 8,
100 {
101 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
102 },
103 "id-GostR3411-94-TestParamSet",
104 NULL,
105 {
106 0xec, 0x0a, 0x8b, 0xa1, 0x5e, 0xc0, 0x04, 0xa8,
107 0xba, 0xc5, 0x0c, 0xac, 0x0c, 0x62, 0x1d, 0xee,
108 0xe1, 0xc7, 0xb8, 0xe7, 0x00, 0x7a, 0xe2, 0xec,
109 0xf2, 0x73, 0x1b, 0xff, 0x4e, 0x80, 0xe2, 0xa0
110 },
111 G89_ECB,
112 { 0 },
113 {
114 0x2d, 0x56, 0x2a, 0x0d, 0x19, 0x04, 0x86, 0xe7
115 }
116 },
117 { /* see p. A.3.1 [GOSTR341194], p. 7.3.1 [ENG-GOSTR341194] */
118 /* <http://tools.ietf.org/html/rfc5831#section-7.3.1> */
119 /* Iteration 2, K[1] */
120 8,
121 {
122 0x34, 0xc0, 0x15, 0x33, 0xe3, 0x7d, 0x1c, 0x56
123 },
124 "id-GostR3411-94-TestParamSet",
125 NULL,
126 {
127 0x34, 0x87, 0x24, 0xa4, 0xc1, 0xa6, 0x76, 0x67,
128 0x15, 0x3d, 0xde, 0x59, 0x33, 0x88, 0x42, 0x50,
129 0xe3, 0x24, 0x8c, 0x65, 0x7d, 0x41, 0x3b, 0x8c,
130 0x1c, 0x9c, 0xa0, 0x9a, 0x56, 0xd9, 0x68, 0xcf
131 },
132 G89_ECB,
133 { 0 },
134 {
135 0x86, 0x3e, 0x78, 0xdd, 0x2d, 0x60, 0xd1, 0x3c
136 }
137 },
138 /*
139 * id-Gost28147-89-CryptoPro-A-ParamSet (1.2.643.2.2.31.1)
140 * Test cases
141 */
142 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
143 16,
144 {
145 0x74, 0x3d, 0x76, 0xf9, 0x1b, 0xee, 0x35, 0x3c,
146 0xa2, 0x5c, 0x3b, 0x10, 0xeb, 0x64, 0xcf, 0xf5
147 },
148 "id-Gost28147-89-CryptoPro-A-ParamSet",
149 "testecb1",
150 {
151 0xbb, 0xf1, 0xed, 0xd3, 0x20, 0xaf, 0x8a, 0x62,
152 0x8e, 0x11, 0xc8, 0xa9, 0x51, 0xcc, 0xbe, 0x81,
153 0x47, 0x7b, 0x41, 0xa1, 0x6a, 0xf6, 0x7f, 0x05,
154 0xe8, 0x51, 0x2f, 0x9e, 0x01, 0xf8, 0xcf, 0x49
155 },
156 G89_ECB,
157 { 0 },
158 {
159 0xc3, 0x73, 0x90, 0x95, 0x35, 0x58, 0x08, 0x63,
160 0xcb, 0x68, 0x85, 0x96, 0x77, 0xe8, 0xfb, 0xa9
161 }
162 },
163 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
164 16,
165 {
166 0xd2, 0xfd, 0xf8, 0x3a, 0xc1, 0xb4, 0x39, 0x23,
167 0x2e, 0xaa, 0xcc, 0x98, 0x0a, 0x02, 0xda, 0x33
168 },
169 "id-Gost28147-89-CryptoPro-A-ParamSet",
170 "testcfb1",
171 {
172 0x8d, 0x5a, 0x2c, 0x83, 0xa7, 0xc7, 0x0a, 0x61,
173 0xd6, 0x1b, 0x34, 0xb5, 0x1f, 0xdf, 0x42, 0x68,
174 0x66, 0x71, 0xa3, 0x5d, 0x87, 0x4c, 0xfd, 0x84,
175 0x99, 0x36, 0x63, 0xb6, 0x1e, 0xd6, 0x0d, 0xad
176 },
177 G89_CFB,
178 {
179 0x46, 0x60, 0x6f, 0x0d, 0x88, 0x34, 0x23, 0x5a
180 },
181 {
182 0x88, 0xb7, 0x75, 0x16, 0x74, 0xa5, 0xee, 0x2d,
183 0x14, 0xfe, 0x91, 0x67, 0xd0, 0x5c, 0xcc, 0x40
184 }
185 },
186 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
187 16,
188 {
189 0x90, 0xa2, 0x39, 0x66, 0xae, 0x01, 0xb9, 0xa3,
190 0x52, 0x4e, 0xc8, 0xed, 0x6c, 0xdd, 0x88, 0x30
191 },
192 "id-Gost28147-89-CryptoPro-A-ParamSet",
193 "testcnt1",
194 {
195 0x59, 0x9f, 0x84, 0xba, 0xc3, 0xf3, 0xd2, 0xf1,
196 0x60, 0xe1, 0xe3, 0xf2, 0x6a, 0x96, 0x1a, 0xf9,
197 0x9c, 0x48, 0xb2, 0x4e, 0xbc, 0xbb, 0xbf, 0x7c,
198 0xd8, 0xf3, 0xac, 0xcd, 0x96, 0x8d, 0x28, 0x6a
199 },
200 G89_CNT,
201 {
202 0x8d, 0xaf, 0xa8, 0xd1, 0x58, 0xed, 0x05, 0x8d
203 },
204 {
205 0x6e, 0x72, 0x62, 0xcc, 0xe3, 0x59, 0x36, 0x90,
206 0x83, 0x3a, 0xfe, 0xa9, 0x1b, 0xc9, 0xbe, 0xce
207 }
208 },
209 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
210 16,
211 {
212 0xb5, 0xa1, 0xf0, 0xe3, 0xce, 0x2f, 0x02, 0x1d,
213 0x67, 0x61, 0x94, 0x34, 0x5c, 0x41, 0xe3, 0x6e
214 },
215 "id-Gost28147-89-CryptoPro-A-ParamSet",
216 "testimit1",
217 {
218 0x9d, 0x05, 0xb7, 0x9e, 0x90, 0xca, 0xd0, 0x0a,
219 0x2c, 0xda, 0xd2, 0x2e, 0xf4, 0xe8, 0x6f, 0x5c,
220 0xf5, 0xdc, 0x37, 0x68, 0x19, 0x85, 0xb3, 0xbf,
221 0xaa, 0x18, 0xc1, 0xc3, 0x05, 0x0a, 0x91, 0xa2
222 },
223 G89_IMIT,
224 { 0 },
225 {
226 0xf8, 0x1f, 0x08, 0xa3
227 }
228 },
229 /*
230 * Other paramsets and key meshing test cases.
231 */
232 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
233 1039,
234 {
235 0x8c, 0x9c, 0x44, 0x35, 0xfb, 0xe9, 0xa5, 0xa3,
236 0xa0, 0xae, 0x28, 0x56, 0x91, 0x10, 0x8e, 0x1e ,
237 0xd2, 0xbb, 0x18, 0x53, 0x81, 0x27, 0x0d, 0xa6,
238 0x68, 0x59, 0x36, 0xc5, 0x81, 0x62, 0x9a, 0x8e,
239 0x7d, 0x50, 0xf1, 0x6f, 0x97, 0x62, 0x29, 0xec,
240 0x80, 0x51, 0xe3, 0x7d, 0x6c, 0xc4, 0x07, 0x95,
241 0x28, 0x63, 0xdc, 0xb4, 0xb9, 0x2d, 0xb8, 0x13,
242 0xb1, 0x05, 0xb5, 0xf9, 0xeb, 0x75, 0x37, 0x4e,
243 0xf7, 0xbf, 0x51, 0xf1, 0x98, 0x86, 0x43, 0xc4,
244 0xe4, 0x3d, 0x3e, 0xa7, 0x62, 0xec, 0x41, 0x59,
245 0xe0, 0xbd, 0xfb, 0xb6, 0xfd, 0xec, 0xe0, 0x77,
246 0x13, 0xd2, 0x59, 0x90, 0xa1, 0xb8, 0x97, 0x6b,
247 0x3d, 0x8b, 0x7d, 0xfc, 0x9d, 0xca, 0x82, 0x73,
248 0x32, 0x70, 0x0a, 0x74, 0x03, 0xc6, 0x0c, 0x26,
249 0x7f, 0x56, 0xf0, 0x9d, 0xb2, 0xeb, 0x71, 0x40,
250 0xd7, 0xc3, 0xb1, 0xa7, 0xc5, 0x1e, 0x20, 0x17,
251 0xb3, 0x50, 0x1d, 0x8a, 0x6e, 0x19, 0xcb, 0xbe,
252 0x20, 0x86, 0x2b, 0xd6, 0x1c, 0xfd, 0xb4, 0xb7,
253 0x5d, 0x9a, 0xb3, 0xe3, 0x7d, 0x15, 0x7a, 0x35,
254 0x01, 0x9f, 0x5d, 0x65, 0x89, 0x4b, 0x34, 0xc6,
255 0xf4, 0x81, 0x3f, 0x78, 0x30, 0xcf, 0xe9, 0x15,
256 0x90, 0x9a, 0xf9, 0xde, 0xba, 0x63, 0xd0, 0x19,
257 0x14, 0x66, 0x3c, 0xb9, 0xa4, 0xb2, 0x84, 0x94,
258 0x02, 0xcf, 0xce, 0x20, 0xcf, 0x76, 0xe7, 0xc5,
259 0x48, 0xf7, 0x69, 0x3a, 0x5d, 0xec, 0xaf, 0x41,
260 0xa7, 0x12, 0x64, 0x83, 0xf5, 0x99, 0x1e, 0x9e,
261 0xb2, 0xab, 0x86, 0x16, 0x00, 0x23, 0x8e, 0xe6,
262 0xd9, 0x80, 0x0b, 0x6d, 0xc5, 0x93, 0xe2, 0x5c,
263 0x8c, 0xd8, 0x5e, 0x5a, 0xae, 0x4a, 0x85, 0xfd,
264 0x76, 0x01, 0xea, 0x30, 0xf3, 0x78, 0x34, 0x10,
265 0x72, 0x51, 0xbc, 0x9f, 0x76, 0xce, 0x1f, 0xd4,
266 0x8f, 0x33, 0x50, 0x34, 0xc7, 0x4d, 0x7b, 0xcf,
267 0x91, 0x63, 0x7d, 0x82, 0x9e, 0xa1, 0x23, 0x45,
268 0xf5, 0x45, 0xac, 0x98, 0x7a, 0x48, 0xff, 0x64,
269 0xd5, 0x59, 0x47, 0xde, 0x2b, 0x3f, 0xfa, 0xec,
270 0x50, 0xe0, 0x81, 0x60, 0x8b, 0xc3, 0xfc, 0x80,
271 0x98, 0x17, 0xc7, 0xa3, 0xc2, 0x57, 0x3d, 0xab,
272 0x91, 0x67, 0xf5, 0xc4, 0xab, 0x92, 0xc8, 0xd6,
273 0x3b, 0x6b, 0x3f, 0xff, 0x15, 0x6b, 0xcf, 0x53,
274 0x65, 0x02, 0xf1, 0x74, 0xca, 0xa9, 0xbe, 0x24,
275 0xd2, 0xf0, 0xb7, 0x26, 0xa8, 0xd7, 0x6d, 0xed,
276 0x90, 0x36, 0x7b, 0x3e, 0x41, 0xa9, 0x7f, 0xa3,
277 0x1b, 0xf4, 0x43, 0xc5, 0x51, 0xbe, 0x28, 0x59,
278 0xe9, 0x45, 0x26, 0x49, 0x38, 0x32, 0xf8, 0xf3,
279 0x92, 0x6e, 0x30, 0xcc, 0xb0, 0xa0, 0xf9, 0x01,
280 0x14, 0xc8, 0xba, 0xd9, 0xf0, 0x2a, 0x29, 0xe2,
281 0x52, 0x9a, 0x76, 0x95, 0x3a, 0x16, 0x32, 0xec,
282 0xf4, 0x10, 0xec, 0xee, 0x47, 0x00, 0x70, 0x19,
283 0xe4, 0x72, 0x35, 0x66, 0x44, 0x53, 0x2d, 0xa2,
284 0xf3, 0xaa, 0x7e, 0x8a, 0x33, 0x13, 0xcd, 0xc8,
285 0xbf, 0x0e, 0x40, 0x90, 0x00, 0xe4, 0x42, 0xc3,
286 0x09, 0x84, 0xe1, 0x66, 0x17, 0xa2, 0xaf, 0x03,
287 0xab, 0x6b, 0xa1, 0xec, 0xfb, 0x17, 0x72, 0x81,
288 0xfe, 0x9a, 0x9f, 0xf4, 0xb2, 0x33, 0x1f, 0xae,
289 0x0c, 0xd1, 0x6a, 0xae, 0x19, 0xb8, 0xaf, 0xec,
290 0xe3, 0xea, 0x00, 0xf8, 0xac, 0x87, 0x07, 0x5f,
291 0x6d, 0xb0, 0xac, 0x6b, 0x22, 0x48, 0x36, 0xbf,
292 0x22, 0x18, 0xb0, 0x03, 0x9f, 0x6c, 0x70, 0x45,
293 0x36, 0xf0, 0x6b, 0xc6, 0xc2, 0xa5, 0x72, 0x2c,
294 0xd8, 0xe0, 0x27, 0x3d, 0xec, 0x56, 0x07, 0x05,
295 0x7d, 0x83, 0xa1, 0x65, 0x7d, 0x41, 0x5b, 0xcd,
296 0x77, 0x24, 0xe5, 0xaa, 0x76, 0x47, 0xd0, 0x50,
297 0xf6, 0xe7, 0xb5, 0x59, 0x75, 0x31, 0x27, 0xef,
298 0xd8, 0xa6, 0x4e, 0x7f, 0xb8, 0x40, 0xb1, 0xdf,
299 0x53, 0x14, 0xed, 0xf1, 0x68, 0x5f, 0xfc, 0x3f,
300 0x02, 0xdb, 0x05, 0xeb, 0x31, 0xe4, 0x2c, 0x7f,
301 0x32, 0xb5, 0x70, 0x8e, 0x75, 0x85, 0xa4, 0x5c,
302 0x16, 0x23, 0x37, 0xf2, 0x10, 0x79, 0xcb, 0xdc,
303 0xf8, 0x1c, 0x25, 0xc2, 0xa1, 0x3d, 0x9c, 0x33,
304 0x6c, 0xed, 0xc3, 0xe7, 0xf3, 0x02, 0x87, 0x82,
305 0x4e, 0xfb, 0xac, 0xb3, 0x2d, 0xfc, 0xf8, 0x0d,
306 0x1d, 0x4a, 0x39, 0xd4, 0xb3, 0x09, 0xbb, 0xe9,
307 0x25, 0xc7, 0xec, 0x6a, 0x87, 0x72, 0x84, 0xed,
308 0x12, 0x60, 0x19, 0x64, 0xeb, 0x16, 0x2a, 0x5b,
309 0x10, 0x76, 0x27, 0xff, 0x7b, 0xe4, 0xae, 0xe5,
310 0xa4, 0x04, 0x02, 0x7f, 0xbb, 0x0a, 0xb5, 0xf4,
311 0x05, 0xa5, 0x56, 0x1c, 0x53, 0x31, 0x7a, 0x93,
312 0xba, 0x16, 0x15, 0xab, 0x62, 0x60, 0xfc, 0xde,
313 0x72, 0x36, 0x6e, 0x28, 0xaf, 0x98, 0x0d, 0xe6,
314 0xf4, 0xde, 0x60, 0xa7, 0x7e, 0x06, 0x07, 0x86,
315 0xf3, 0x94, 0xb6, 0x6d, 0x0d, 0x93, 0xa6, 0xbc,
316 0x60, 0x70, 0x33, 0xac, 0x3f, 0xa1, 0xa8, 0x4a,
317 0x20, 0x61, 0xb6, 0xb5, 0x43, 0xa3, 0x15, 0x5a,
318 0x00, 0xbe, 0x76, 0x98, 0x57, 0x72, 0xab, 0x7a,
319 0x0e, 0x18, 0x93, 0x82, 0x3a, 0x18, 0x78, 0x6e,
320 0x71, 0x7b, 0x78, 0x4f, 0x7e, 0x8c, 0xde, 0x7a,
321 0x62, 0xb5, 0x0a, 0x7c, 0x45, 0x1d, 0x16, 0xd5,
322 0xc3, 0x8c, 0x9b, 0x25, 0xb4, 0x50, 0x90, 0xcd,
323 0x96, 0x93, 0xad, 0x0f, 0xd4, 0x43, 0xcb, 0x49,
324 0x0f, 0xfc, 0x5a, 0x31, 0xf4, 0x19, 0xb7, 0xd4,
325 0xeb, 0x4d, 0x40, 0x58, 0xd0, 0x3b, 0xc8, 0xe0,
326 0x4a, 0x54, 0x2f, 0xdb, 0x22, 0xc3, 0x29, 0x7b,
327 0x40, 0x90, 0x61, 0x43, 0xd3, 0x7e, 0xe2, 0x30,
328 0x2b, 0x48, 0x3c, 0xce, 0x90, 0x93, 0xb1, 0x8b,
329 0x31, 0x96, 0x65, 0x6d, 0x57, 0x8b, 0x9d, 0x4d,
330 0x53, 0xf0, 0x83, 0x1c, 0xe5, 0xa1, 0x9d, 0x55,
331 0xe3, 0xbf, 0x7e, 0xca, 0x1a, 0x74, 0x66, 0x14,
332 0xcc, 0x47, 0x43, 0xd9, 0xbb, 0xef, 0x97, 0x7d,
333 0xb7, 0x6e, 0xff, 0xf1, 0x22, 0xf8, 0x10, 0x2d,
334 0x3f, 0xcd, 0x49, 0x96, 0xd9, 0x09, 0x11, 0xb8,
335 0x33, 0xd0, 0x23, 0x9a, 0xfa, 0x16, 0xcb, 0x50,
336 0x26, 0x57, 0x24, 0x5c, 0x0e, 0xba, 0xf0, 0x3f,
337 0x37, 0x2f, 0xa3, 0xf7, 0x18, 0x57, 0x48, 0x48,
338 0x95, 0xcf, 0xef, 0x87, 0x67, 0x2a, 0xe9, 0xb6,
339 0x8a, 0x21, 0x36, 0x7f, 0xff, 0x48, 0x6c, 0x46,
340 0x35, 0x57, 0xf2, 0xbc, 0x48, 0x67, 0x8f, 0x63,
341 0x23, 0x78, 0x11, 0x2b, 0xc2, 0x08, 0xde, 0x51,
342 0xe8, 0x8b, 0x92, 0x29, 0xf9, 0x9a, 0x9e, 0xad,
343 0xed, 0x0f, 0xeb, 0xa2, 0xd2, 0x40, 0x92, 0xd4,
344 0xde, 0x62, 0x95, 0x76, 0xfd, 0x6e, 0x3c, 0xbf,
345 0xc0, 0xd7, 0x0d, 0xe5, 0x1b, 0xa4, 0xc7, 0x18,
346 0xe1, 0x58, 0xa4, 0x56, 0xef, 0x2e, 0x17, 0x1b,
347 0x75, 0xcb, 0xbc, 0xf9, 0x2a, 0x95, 0x71, 0xa7,
348 0x1d, 0x7f, 0xe7, 0x73, 0x63, 0x05, 0x6b, 0x19,
349 0x4c, 0xf4, 0x22, 0x14, 0xc4, 0x59, 0x88, 0x66,
350 0x92, 0x86, 0x61, 0x5c, 0x6a, 0xae, 0xec, 0x58,
351 0xff, 0xc9, 0xf2, 0x44, 0xd4, 0xa2, 0xf5, 0x98,
352 0xeb, 0x5f, 0x09, 0xbc, 0x8a, 0xbf, 0x3c, 0xb4,
353 0x3e, 0xb1, 0x20, 0x05, 0x44, 0x96, 0x79, 0x0a,
354 0x40, 0x92, 0x7f, 0x9d, 0xd1, 0xaf, 0xbc, 0x90,
355 0x95, 0x0a, 0x81, 0xd4, 0xa7, 0xc6, 0xb8, 0xe0,
356 0xe4, 0x39, 0x30, 0x1d, 0x79, 0xc0, 0xe5, 0xfa,
357 0xb4, 0xe9, 0x63, 0xb4, 0x09, 0x72, 0x3b, 0x3e,
358 0xd9, 0xf6, 0xd9, 0x10, 0x21, 0x18, 0x7e, 0xe5,
359 0xad, 0x81, 0xd7, 0xd5, 0x82, 0xd0, 0x8c, 0x3b,
360 0x38, 0x95, 0xf8, 0x92, 0x01, 0xa9, 0x92, 0x00,
361 0x70, 0xd1, 0xa7, 0x88, 0x77, 0x1f, 0x3a, 0xeb,
362 0xb5, 0xe4, 0xf5, 0x9d, 0xc7, 0x37, 0x86, 0xb2,
363 0x12, 0x46, 0x34, 0x19, 0x72, 0x8c, 0xf5, 0x8c,
364 0xf6, 0x78, 0x98, 0xe0, 0x7c, 0xd3, 0xf4
365 },
366 "id-Gost28147-89-CryptoPro-B-ParamSet",
367 "testcfb2",
368 {
369 0x48, 0x0c, 0x74, 0x1b, 0x02, 0x6b, 0x55, 0xd5,
370 0xb6, 0x6d, 0xd7, 0x1d, 0x40, 0x48, 0x05, 0x6b,
371 0x6d, 0xeb, 0x3c, 0x29, 0x0f, 0x84, 0x80, 0x23,
372 0xee, 0x0d, 0x47, 0x77, 0xe3, 0xfe, 0x61, 0xc9
373 },
374 G89_CFB,
375 {
376 0x1f, 0x3f, 0x82, 0x1e, 0x0d, 0xd8, 0x1e, 0x22
377 },
378 {
379 0x23, 0xc6, 0x7f, 0x20, 0xa1, 0x23, 0x58, 0xbc,
380 0x7b, 0x05, 0xdb, 0x21, 0x15, 0xcf, 0x96, 0x41,
381 0xc7, 0x88, 0xef, 0x76, 0x5c, 0x49, 0xdb, 0x42,
382 0xbf, 0xf3, 0xc0, 0xf5, 0xbd, 0x5d, 0xd9, 0x8e,
383 0xaf, 0x3d, 0xf4, 0xe4, 0xda, 0x88, 0xbd, 0xbc,
384 0x47, 0x5d, 0x76, 0x07, 0xc9, 0x5f, 0x54, 0x1d,
385 0x1d, 0x6a, 0xa1, 0x2e, 0x18, 0xd6, 0x60, 0x84,
386 0x02, 0x18, 0x37, 0x92, 0x92, 0x15, 0xab, 0x21,
387 0xee, 0x21, 0xcc, 0x71, 0x6e, 0x51, 0xd9, 0x2b,
388 0xcc, 0x81, 0x97, 0x3f, 0xeb, 0x45, 0x99, 0xb8,
389 0x1b, 0xda, 0xff, 0x90, 0xd3, 0x41, 0x06, 0x9c,
390 0x3f, 0xfb, 0xe4, 0xb2, 0xdc, 0xc9, 0x03, 0x0d,
391 0xa7, 0xae, 0xd7, 0x7d, 0x02, 0xb8, 0x32, 0xab,
392 0xf3, 0x65, 0xa3, 0x65, 0x6c, 0x4e, 0xe4, 0xa2,
393 0x5e, 0x9e, 0xee, 0xcd, 0xde, 0x79, 0x36, 0x6b,
394 0x1b, 0xe1, 0x3c, 0xdf, 0x10, 0xad, 0x4f, 0x02,
395 0xe1, 0x14, 0xaa, 0x09, 0xb4, 0x0b, 0x76, 0xeb,
396 0x69, 0x38, 0x20, 0x02, 0xcb, 0x8e, 0xc0, 0xdf,
397 0xca, 0x48, 0x74, 0xc3, 0x31, 0xad, 0x42, 0x2c,
398 0x51, 0x9b, 0xd0, 0x6a, 0xc1, 0x36, 0xd7, 0x21,
399 0xdf, 0xb0, 0x45, 0xba, 0xca, 0x7f, 0x35, 0x20,
400 0x28, 0xbb, 0xc1, 0x76, 0xfd, 0x43, 0x5d, 0x23,
401 0x7d, 0x31, 0x84, 0x1a, 0x97, 0x4d, 0x83, 0xaa,
402 0x7e, 0xf1, 0xc4, 0xe6, 0x83, 0xac, 0x0d, 0xef,
403 0xef, 0x3c, 0xa4, 0x7c, 0x48, 0xe4, 0xc8, 0xca,
404 0x0d, 0x7d, 0xea, 0x7c, 0x45, 0xd7, 0x73, 0x50,
405 0x25, 0x1d, 0x01, 0xc4, 0x02, 0x1a, 0xcd, 0xe0,
406 0x38, 0x5b, 0xa8, 0x5a, 0x16, 0x9a, 0x10, 0x59,
407 0x74, 0xd7, 0x19, 0xc6, 0xf3, 0xb5, 0x17, 0xf6,
408 0x59, 0x8d, 0x62, 0xaf, 0x44, 0xe8, 0xdc, 0xe9,
409 0xc1, 0x76, 0xf1, 0xd0, 0xbd, 0x29, 0xd7, 0xec,
410 0x1d, 0xac, 0x57, 0xdb, 0x1a, 0x3f, 0xd8, 0xf6,
411 0x6e, 0xb6, 0xe6, 0xdf, 0x36, 0xe7, 0x89, 0xce,
412 0x56, 0x35, 0x43, 0x1c, 0x7d, 0x57, 0x79, 0x0e,
413 0xd8, 0xf4, 0xd7, 0xa7, 0x0d, 0xc6, 0x8f, 0x91,
414 0x66, 0x67, 0x82, 0x0f, 0x49, 0xc9, 0xc5, 0x65,
415 0x81, 0xa1, 0x39, 0x5a, 0x53, 0x9f, 0x02, 0xa5,
416 0xd5, 0x36, 0x22, 0xa8, 0xa8, 0x1c, 0x37, 0x0e,
417 0x76, 0x46, 0xdf, 0xbd, 0x6a, 0xdb, 0xfc, 0x1b,
418 0xbd, 0x10, 0xb8, 0xb1, 0xbc, 0x72, 0x4c, 0x58,
419 0x4a, 0xda, 0x6d, 0x66, 0x00, 0xda, 0x7a, 0x66,
420 0xa0, 0xe7, 0x3b, 0x39, 0xa3, 0xf7, 0x05, 0x07,
421 0xfa, 0x21, 0x4b, 0xc7, 0x94, 0xc0, 0xd3, 0x7b,
422 0x19, 0x02, 0x5d, 0x4a, 0x10, 0xf1, 0xc2, 0x0f,
423 0x19, 0x68, 0x27, 0xc7, 0x7d, 0xbf, 0x55, 0x03,
424 0x57, 0x7d, 0xaf, 0x77, 0xae, 0x80, 0x2f, 0x7a,
425 0xe6, 0x1f, 0x4b, 0xdc, 0x15, 0x18, 0xc0, 0x62,
426 0xa1, 0xe8, 0xd9, 0x1c, 0x9e, 0x8c, 0x96, 0x39,
427 0xc1, 0xc4, 0x88, 0xf7, 0x0c, 0xe1, 0x04, 0x84,
428 0x68, 0x51, 0xce, 0xf1, 0x90, 0xda, 0x7f, 0x76,
429 0xc8, 0xc0, 0x88, 0xef, 0x8e, 0x15, 0x25, 0x3e,
430 0x7b, 0xe4, 0x79, 0xb5, 0x66, 0x2d, 0x9c, 0xd1,
431 0x13, 0xda, 0xd0, 0xd5, 0x46, 0xd5, 0x8d, 0x46,
432 0x18, 0x07, 0xee, 0xd8, 0xc9, 0x64, 0xe3, 0xbe,
433 0x0e, 0x68, 0x27, 0x09, 0x96, 0x26, 0xf6, 0xe2,
434 0x19, 0x61, 0x3f, 0xf4, 0x58, 0x27, 0x0a, 0xeb,
435 0xce, 0x7c, 0xb6, 0x68, 0x92, 0xe7, 0x12, 0x3b,
436 0x31, 0xd4, 0x48, 0xdf, 0x35, 0x8d, 0xf4, 0x86,
437 0x42, 0x2a, 0x15, 0x4b, 0xe8, 0x19, 0x1f, 0x26,
438 0x65, 0x9b, 0xa8, 0xda, 0x4b, 0x79, 0x1f, 0x8e,
439 0xe6, 0x13, 0x7e, 0x49, 0x8f, 0xc1, 0xce, 0xdc,
440 0x5e, 0x64, 0x74, 0xce, 0x02, 0x78, 0xe0, 0xcf,
441 0xa0, 0xed, 0x5e, 0x31, 0x74, 0xd1, 0xd0, 0xb4,
442 0xee, 0x70, 0x19, 0x14, 0x3c, 0x8f, 0x16, 0xa6,
443 0xcf, 0x12, 0x93, 0x15, 0x88, 0xeb, 0x91, 0x65,
444 0x76, 0x98, 0xfd, 0xa1, 0x94, 0x30, 0xba, 0x43,
445 0x62, 0x65, 0x40, 0x04, 0x77, 0x9e, 0xd6, 0xab,
446 0x8b, 0x0d, 0x93, 0x80, 0x50, 0x5f, 0xa2, 0x76,
447 0x20, 0xa7, 0xd6, 0x9c, 0x27, 0x15, 0x27, 0xbc,
448 0xa5, 0x5a, 0xbf, 0xe9, 0x92, 0x82, 0x05, 0xa8,
449 0x41, 0xe9, 0xb5, 0x60, 0xd5, 0xc0, 0xd7, 0x4b,
450 0xad, 0x38, 0xb2, 0xe9, 0xd1, 0xe5, 0x51, 0x5f,
451 0x24, 0x78, 0x24, 0x9a, 0x23, 0xd2, 0xc2, 0x48,
452 0xbd, 0x0e, 0xf1, 0x37, 0x72, 0x91, 0x87, 0xb0,
453 0x4e, 0xbd, 0x99, 0x6b, 0x2c, 0x01, 0xb6, 0x79,
454 0x69, 0xec, 0x0c, 0xed, 0xe5, 0x3f, 0x50, 0x64,
455 0x7c, 0xb9, 0xdd, 0xe1, 0x92, 0x81, 0xb5, 0xd0,
456 0xcb, 0x17, 0x83, 0x86, 0x8b, 0xea, 0x4f, 0x93,
457 0x08, 0xbc, 0x22, 0x0c, 0xef, 0xe8, 0x0d, 0xf5,
458 0x9e, 0x23, 0xe1, 0xf9, 0xb7, 0x6b, 0x45, 0x0b,
459 0xcb, 0xa9, 0xb6, 0x4d, 0x28, 0x25, 0xba, 0x3e,
460 0x86, 0xf2, 0x75, 0x47, 0x5d, 0x9d, 0x6b, 0xf6,
461 0x8a, 0x05, 0x58, 0x73, 0x3d, 0x00, 0xde, 0xfd,
462 0x69, 0xb1, 0x61, 0x16, 0xf5, 0x2e, 0xb0, 0x9f,
463 0x31, 0x6a, 0x00, 0xb9, 0xef, 0x71, 0x63, 0x47,
464 0xa3, 0xca, 0xe0, 0x40, 0xa8, 0x7e, 0x02, 0x04,
465 0xfe, 0xe5, 0xce, 0x48, 0x73, 0xe3, 0x94, 0xcf,
466 0xe2, 0xff, 0x29, 0x7e, 0xf6, 0x32, 0xbb, 0xb7,
467 0x55, 0x12, 0x21, 0x7a, 0x9c, 0x75, 0x04, 0x0c,
468 0xb4, 0x7c, 0xb0, 0x3d, 0x40, 0xb3, 0x11, 0x9a,
469 0x7a, 0x9a, 0x13, 0xfb, 0x77, 0xa7, 0x51, 0x68,
470 0xf7, 0x05, 0x47, 0x3b, 0x0f, 0x52, 0x5c, 0xe6,
471 0xc2, 0x99, 0x3a, 0x37, 0x54, 0x5c, 0x4f, 0x2b,
472 0xa7, 0x01, 0x08, 0x74, 0xbc, 0x91, 0xe3, 0xe2,
473 0xfe, 0x65, 0x94, 0xfd, 0x3d, 0x18, 0xe0, 0xf0,
474 0x62, 0xed, 0xc2, 0x10, 0x82, 0x9c, 0x58, 0x7f,
475 0xb2, 0xa3, 0x87, 0x8a, 0x74, 0xd9, 0xc1, 0xfb,
476 0x84, 0x28, 0x17, 0xc7, 0x2b, 0xcb, 0x53, 0x1f,
477 0x4e, 0x8a, 0x82, 0xfc, 0xb4, 0x3f, 0xc1, 0x47,
478 0x25, 0xf3, 0x21, 0xdc, 0x4c, 0x2d, 0x08, 0xfa,
479 0xe7, 0x0f, 0x03, 0xa9, 0x68, 0xde, 0x6b, 0x41,
480 0xa0, 0xf9, 0x41, 0x6c, 0x57, 0x4d, 0x3a, 0x0e,
481 0xea, 0x51, 0xca, 0x9f, 0x97, 0x11, 0x7d, 0xf6,
482 0x8e, 0x88, 0x63, 0x67, 0xc9, 0x65, 0x13, 0xca,
483 0x38, 0xed, 0x35, 0xbe, 0xf4, 0x27, 0xa9, 0xfc,
484 0xa9, 0xe6, 0xc3, 0x40, 0x86, 0x08, 0x39, 0x72,
485 0x37, 0xee, 0xb2, 0x87, 0x09, 0x96, 0xb7, 0x40,
486 0x87, 0x36, 0x92, 0xc1, 0x5d, 0x6a, 0x2c, 0x43,
487 0xca, 0x25, 0xc8, 0x35, 0x37, 0x2d, 0xb5, 0xa9,
488 0x27, 0x44, 0x50, 0xf2, 0x6d, 0x22, 0x75, 0x41,
489 0x77, 0x2a, 0xdb, 0xb1, 0x8c, 0x6d, 0x05, 0xe8,
490 0xc9, 0x99, 0xc7, 0x08, 0xf9, 0x14, 0x8f, 0x78,
491 0xa9, 0x8f, 0xc2, 0x5a, 0x7a, 0x65, 0xc5, 0xd8,
492 0x86, 0xbb, 0x72, 0x69, 0x6b, 0x6b, 0x45, 0x83,
493 0x5b, 0xb1, 0xf7, 0xcd, 0x16, 0x73, 0xee, 0xe9,
494 0x80, 0x85, 0xfe, 0x8e, 0xe1, 0xae, 0x53, 0x8f,
495 0xde, 0xbe, 0x48, 0x8b, 0x59, 0xef, 0xf6, 0x7e,
496 0xd8, 0xb5, 0xa8, 0x47, 0xc0, 0x4e, 0x15, 0x58,
497 0xca, 0xd3, 0x2f, 0xf8, 0x6c, 0xa6, 0x3d, 0x78,
498 0x4d, 0x7a, 0x54, 0xd6, 0x10, 0xe5, 0xcc, 0x05,
499 0xe2, 0x29, 0xb5, 0x86, 0x07, 0x39, 0x7d, 0x78,
500 0x8e, 0x5a, 0x8f, 0x83, 0x4c, 0xe7, 0x3d, 0x68,
501 0x3e, 0xe5, 0x02, 0xe6, 0x64, 0x4f, 0x5e, 0xb4,
502 0x49, 0x77, 0xf0, 0xc0, 0xfa, 0x6f, 0xc8, 0xfb,
503 0x9f, 0x84, 0x6f, 0x55, 0xfb, 0x30, 0x5e, 0x89,
504 0x93, 0xa9, 0xf3, 0xa6, 0xa3, 0xd7, 0x26, 0xbb,
505 0xd8, 0xa8, 0xd9, 0x95, 0x1d, 0xfe, 0xfc, 0xd7,
506 0xa8, 0x93, 0x66, 0x2f, 0x04, 0x53, 0x06, 0x64,
507 0x7f, 0x31, 0x29, 0xae, 0xb7, 0x9f, 0xba, 0xc4,
508 0x6d, 0x68, 0xd1, 0x24, 0x32, 0xf4, 0x11
509 }
510 },
511 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
512 4,
513 {
514 0x07, 0x9c, 0x91, 0xbe
515 },
516 "id-Gost28147-89-CryptoPro-C-ParamSet",
517 "testcfb3",
518 {
519 0x77, 0xc3, 0x45, 0x8e, 0xf6, 0x42, 0xe7, 0x04,
520 0x8e, 0xfc, 0x08, 0xe4, 0x70, 0x96, 0xd6, 0x05,
521 0x93, 0x59, 0x02, 0x6d, 0x6f, 0x97, 0xca, 0xe9,
522 0xcf, 0x89, 0x44, 0x4b, 0xde, 0x6c, 0x22, 0x1d
523 },
524 G89_CFB,
525 {
526 0x43, 0x7c, 0x3e, 0x8e, 0x2f, 0x2a, 0x00, 0x98
527 },
528 {
529 0x19, 0x35, 0x81, 0x34
530 }
531 },
532 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
533 9,
534 {
535 0x2f, 0x31, 0xd8, 0x83, 0xb4, 0x20, 0xe8, 0x6e,
536 0xda
537 },
538 "id-Gost28147-89-CryptoPro-D-ParamSet",
539 "testcfb4",
540 {
541 0x38, 0x9f, 0xe8, 0x37, 0xff, 0x9c, 0x5d, 0x29,
542 0xfc, 0x48, 0x55, 0xa0, 0x87, 0xea, 0xe8, 0x40,
543 0x20, 0x87, 0x5b, 0xb2, 0x01, 0x15, 0x55, 0xa7,
544 0xe3, 0x2d, 0xcb, 0x3d, 0xd6, 0x59, 0x04, 0x73
545 },
546 G89_CFB,
547 {
548 0xc5, 0xa2, 0xd2, 0x1f, 0x2f, 0xdf, 0xb8, 0xeb
549 },
550 {
551 0x6d, 0xa4, 0xed, 0x40, 0x08, 0x88, 0x71, 0xad,
552 0x16
553 }
554 },
555 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
556 5242880+8,
557 { 0 },
558 "id-Gost28147-89-CryptoPro-A-ParamSet",
559 "test5Mcfb",
560 {
561 0x61, 0x58, 0x44, 0x5a, 0x41, 0xf6, 0xc7, 0x0f,
562 0x6b, 0xdb, 0x51, 0x91, 0x6a, 0xf6, 0x81, 0x30,
563 0x8c, 0xa7, 0x98, 0xdd, 0x38, 0x35, 0x8a, 0x60,
564 0x85, 0xb4, 0xf0, 0xf9, 0x43, 0xa2, 0x7d, 0x9a
565 },
566 G89_CFB,
567 {
568 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
569 },
570 {
571 0x1c, 0x16, 0xa0, 0xe9, 0x63, 0x94, 0xfe, 0x38,
572 0x37, 0xa7, 0x9b, 0x70, 0x25, 0x2e, 0xd6, 0x00
573 }
574 },
575 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
576 U64(4294967296)+16,
577 { 0 },
578 "id-Gost28147-89-CryptoPro-A-ParamSet",
579 "test4Gcfb",
580 {
581 0xae, 0x57, 0xa2, 0xdd, 0xa4, 0xef, 0x4f, 0x96,
582 0xb8, 0x94, 0xa5, 0xd1, 0x1b, 0xc8, 0x9b, 0x42,
583 0xa5, 0x24, 0xcc, 0x89, 0x5c, 0xb8, 0x92, 0x52,
584 0xc1, 0x12, 0x6a, 0xb0, 0x9a, 0x26, 0xe8, 0x06
585 },
586 G89_CFB,
587 {
588 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
589 },
590 {
591 0x2e, 0x62, 0xb0, 0x2e, 0xc7, 0x87, 0x4b, 0x29,
592 0x33, 0x16, 0x6b, 0xb4, 0xd6, 0x61, 0x66, 0xd9
593 }
594 },
595 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
596 1037,
597 {
598 0x3d, 0x0b, 0x69, 0xf7, 0xa8, 0xe4, 0xfc, 0x99,
599 0x22, 0x2e, 0xee, 0xd1, 0x63, 0x12, 0xfe, 0xa8,
600 0x9d, 0xcb, 0x6c, 0x4d, 0x48, 0x8c, 0xe8, 0xbd,
601 0x8b, 0x60, 0xf1, 0xbf, 0x7b, 0xe3, 0x79, 0xd5,
602 0x2b, 0x25, 0x97, 0x13, 0xef, 0x35, 0xda, 0xf4,
603 0xbc, 0x77, 0xce, 0xea, 0xe9, 0x3f, 0xa4, 0xb6,
604 0x01, 0xd5, 0x73, 0x29, 0x58, 0xda, 0xd7, 0x67,
605 0x17, 0xac, 0xe4, 0x75, 0x2f, 0x57, 0x23, 0xac,
606 0x96, 0x21, 0xc7, 0x62, 0x2d, 0xf7, 0x32, 0xb5,
607 0x44, 0x5f, 0x72, 0xb1, 0x5f, 0xba, 0x1b, 0x1e,
608 0xdb, 0x4a, 0x09, 0x8c, 0x92, 0x61, 0xa2, 0xb0,
609 0x49, 0x68, 0xe5, 0xb3, 0xa2, 0x8f, 0x13, 0x4b,
610 0xf5, 0x4d, 0x84, 0xda, 0xab, 0xa0, 0xb6, 0xd1,
611 0x5a, 0x63, 0x19, 0xe8, 0xa2, 0x09, 0xf6, 0x76,
612 0x6f, 0x9b, 0x48, 0x0a, 0x15, 0x5d, 0xb7, 0x20,
613 0x21, 0x9a, 0x2e, 0xb9, 0x6d, 0xfa, 0x1e, 0xc2,
614 0x0e, 0xef, 0x15, 0xab, 0x59, 0x01, 0xfe, 0x43,
615 0x90, 0xf2, 0x62, 0xca, 0x4a, 0x9a, 0x48, 0x38,
616 0xab, 0x6f, 0x9d, 0x21, 0xb3, 0xad, 0xa7, 0x60,
617 0x46, 0xe3, 0xef, 0xd0, 0xe3, 0x1d, 0xc5, 0xe1,
618 0xb8, 0xa1, 0xe2, 0x99, 0x20, 0xc5, 0x76, 0xcc,
619 0xaa, 0x8a, 0xa9, 0x45, 0x55, 0xa0, 0x78, 0x00,
620 0x64, 0xde, 0xcf, 0x5b, 0xdf, 0x26, 0x48, 0xcd,
621 0xba, 0x8a, 0xb5, 0xfb, 0xfd, 0x4a, 0xd5, 0xc4,
622 0xe0, 0x43, 0xa6, 0x71, 0x90, 0xa4, 0x8b, 0xca,
623 0x2e, 0x88, 0x7b, 0xac, 0xb2, 0xdc, 0xf2, 0x01,
624 0xcb, 0xda, 0x6e, 0x91, 0x27, 0x28, 0x44, 0x88,
625 0x9a, 0xd2, 0x12, 0xf1, 0xa6, 0xf5, 0xb7, 0x61,
626 0xce, 0x79, 0x62, 0x52, 0x3c, 0xe6, 0x14, 0x73,
627 0xd1, 0x41, 0x92, 0x50, 0xbd, 0xdc, 0x3b, 0xd0,
628 0xa7, 0x11, 0x8c, 0x3a, 0xe4, 0x2d, 0xf2, 0x52,
629 0xd3, 0x2f, 0x7c, 0x8e, 0x54, 0x90, 0x4e, 0x23,
630 0xae, 0xb3, 0xa0, 0xf3, 0x25, 0x7e, 0x66, 0xaa,
631 0x0f, 0x6f, 0x81, 0x72, 0x77, 0xbb, 0xd3, 0x47,
632 0xe8, 0x05, 0xff, 0xe1, 0x5b, 0xc9, 0x37, 0x50,
633 0x33, 0x49, 0x17, 0xaf, 0xab, 0x1d, 0xe1, 0x15,
634 0xf2, 0xe5, 0x98, 0x5e, 0x2d, 0x05, 0x1f, 0x0d,
635 0x55, 0x97, 0xed, 0xff, 0x5e, 0xe0, 0x0f, 0xc3,
636 0x9c, 0xbd, 0x82, 0xc2, 0x06, 0xbe, 0x45, 0x66,
637 0xae, 0x33, 0xbe, 0x28, 0x48, 0xe9, 0x2d, 0x1a,
638 0xe6, 0x65, 0x8e, 0xdf, 0x76, 0x03, 0x73, 0x4b,
639 0xc0, 0x80, 0x71, 0xf9, 0xac, 0xba, 0xa0, 0xb0,
640 0x19, 0x1a, 0x0a, 0xd4, 0x35, 0x12, 0x88, 0x76,
641 0x05, 0x75, 0x8f, 0x7c, 0xb5, 0xf0, 0x19, 0x75,
642 0x6d, 0x05, 0xcb, 0x0d, 0xbc, 0x8d, 0xe9, 0xf0,
643 0xd4, 0xdb, 0x3c, 0x3c, 0x29, 0x8e, 0x2c, 0x32,
644 0x1d, 0xf7, 0xb6, 0x49, 0xcf, 0xdb, 0x63, 0xee,
645 0x3c, 0xfa, 0x33, 0x73, 0x6f, 0xe4, 0x97, 0x4e,
646 0x2f, 0xc9, 0x4c, 0x5c, 0x65, 0xfe, 0xea, 0xfb,
647 0xc6, 0xdd, 0xc1, 0x1c, 0x47, 0x3f, 0xf4, 0x50,
648 0x2f, 0xde, 0x1b, 0x5b, 0x0b, 0x16, 0xca, 0xb6,
649 0x46, 0x44, 0xf2, 0xc1, 0x0d, 0xa1, 0x1d, 0xa6,
650 0xdb, 0xf0, 0x3d, 0xb1, 0x6c, 0x05, 0x31, 0x85,
651 0x8e, 0x74, 0xae, 0xf2, 0x39, 0x26, 0xf7, 0xc1,
652 0xe7, 0x4c, 0xdd, 0x9d, 0x40, 0xb8, 0xf3, 0xc5,
653 0xc2, 0x16, 0x64, 0x6b, 0xaa, 0xdb, 0x4b, 0x82,
654 0x5c, 0xd3, 0x02, 0xd3, 0x8f, 0x26, 0x79, 0x8d,
655 0xb0, 0x78, 0x70, 0x19, 0x58, 0x0c, 0xb4, 0x31,
656 0x88, 0x44, 0x1c, 0x91, 0x6f, 0xf4, 0x52, 0x39,
657 0xa8, 0xf5, 0xc0, 0x1b, 0xfe, 0xf2, 0x0e, 0x4b,
658 0xac, 0x0a, 0xc2, 0x7e, 0x9c, 0x9b, 0xeb, 0x5d,
659 0x4e, 0x4f, 0x42, 0xd8, 0x71, 0x0a, 0x97, 0x27,
660 0x03, 0x14, 0x96, 0xa6, 0x3d, 0x04, 0xea, 0x9f,
661 0x14, 0x14, 0x27, 0x4c, 0xd9, 0xa2, 0x89, 0x5f,
662 0x65, 0x4a, 0xe1, 0x9d, 0x2c, 0xb8, 0xf8, 0xd4,
663 0x8f, 0x2a, 0x57, 0x36, 0xcc, 0x06, 0x9c, 0x2c,
664 0xc5, 0x13, 0x16, 0xdf, 0xfc, 0xae, 0x22, 0x16,
665 0xa8, 0x2b, 0x71, 0x6f, 0x1d, 0xb3, 0x47, 0x54,
666 0x3f, 0x2d, 0x0a, 0x68, 0x9f, 0x2e, 0xf6, 0x90,
667 0xd8, 0xa1, 0x21, 0x09, 0xd4, 0x97, 0xb9, 0x7b,
668 0x7f, 0x9b, 0x6a, 0xed, 0xd1, 0xf0, 0xe3, 0xb6,
669 0x28, 0xc7, 0x62, 0x82, 0x00, 0xc9, 0x38, 0xa1,
670 0x82, 0x78, 0xce, 0x87, 0xc8, 0x53, 0xac, 0x4f,
671 0x2e, 0x31, 0xb9, 0x50, 0x7f, 0x36, 0x00, 0x4a,
672 0x32, 0xe6, 0xd8, 0xbb, 0x59, 0x45, 0x0e, 0x91,
673 0x1b, 0x38, 0xa9, 0xbc, 0xb9, 0x5e, 0x6c, 0x6a,
674 0x9c, 0x03, 0x01, 0x1c, 0xde, 0xe8, 0x1f, 0x1e,
675 0xe3, 0xde, 0x25, 0xa2, 0x56, 0x79, 0xe1, 0xbd,
676 0x58, 0xc4, 0x93, 0xe6, 0xd0, 0x8a, 0x4d, 0x08,
677 0xab, 0xf7, 0xaa, 0xc3, 0x7d, 0xc1, 0xee, 0x68,
678 0x37, 0xbc, 0x78, 0x0b, 0x19, 0x68, 0x2b, 0x2b,
679 0x2e, 0x6d, 0xc4, 0x6f, 0xaa, 0x3b, 0xc6, 0x19,
680 0xcb, 0xf1, 0x58, 0xb9, 0x60, 0x85, 0x45, 0xae,
681 0x52, 0x97, 0xba, 0x24, 0x32, 0x13, 0x72, 0x16,
682 0x6e, 0x7b, 0xc1, 0x98, 0xac, 0xb1, 0xed, 0xb4,
683 0xcc, 0x6c, 0xcf, 0x45, 0xfc, 0x50, 0x89, 0x80,
684 0x8e, 0x7a, 0xa4, 0xd3, 0x64, 0x50, 0x63, 0x37,
685 0xc9, 0x6c, 0xf1, 0xc4, 0x3d, 0xfb, 0xde, 0x5a,
686 0x5c, 0xa8, 0x21, 0x35, 0xe6, 0x2e, 0x8c, 0x2a,
687 0x3c, 0x12, 0x17, 0x79, 0x9a, 0x0d, 0x2e, 0x79,
688 0xeb, 0x67, 0x1f, 0x2b, 0xf8, 0x6e, 0xca, 0xc1,
689 0xfa, 0x45, 0x18, 0x9e, 0xdf, 0x6a, 0xe6, 0xcb,
690 0xe9, 0x5c, 0xc3, 0x09, 0xaf, 0x93, 0x58, 0x13,
691 0xbf, 0x90, 0x84, 0x87, 0x75, 0xd6, 0x82, 0x28,
692 0x8d, 0xe7, 0x2f, 0xa3, 0xfb, 0x97, 0x74, 0x2a,
693 0x73, 0x04, 0x82, 0x06, 0x76, 0x69, 0xb1, 0x0b,
694 0x19, 0xfc, 0xae, 0xb3, 0xdd, 0x2a, 0xe5, 0xc1,
695 0x05, 0xd8, 0x80, 0x95, 0x22, 0x90, 0x71, 0xfc,
696 0xc2, 0x92, 0x42, 0xfd, 0xf1, 0x70, 0xb4, 0x68,
697 0x88, 0xa4, 0x9e, 0x0a, 0x24, 0x40, 0x13, 0xc8,
698 0xa2, 0x56, 0x4f, 0x39, 0xe6, 0x06, 0xf1, 0xdc,
699 0xf5, 0x13, 0x0e, 0xad, 0x9c, 0x8b, 0xaf, 0xe9,
700 0xe3, 0x88, 0x72, 0xff, 0xa0, 0x6d, 0xda, 0x08,
701 0x70, 0xb9, 0x2e, 0x83, 0xc5, 0xbb, 0x32, 0xa5,
702 0x74, 0xc7, 0xfb, 0x7b, 0x76, 0xaf, 0x02, 0xbb,
703 0x2b, 0xb8, 0x5e, 0x65, 0x02, 0xfe, 0x0e, 0xa0,
704 0x99, 0xce, 0x01, 0x3b, 0x35, 0xe1, 0xb0, 0x22,
705 0xe5, 0x94, 0xbd, 0xdd, 0x8e, 0xbb, 0xf6, 0x75,
706 0xbf, 0xbf, 0xee, 0x7a, 0xb1, 0x58, 0xb4, 0x81,
707 0xb8, 0x39, 0x3e, 0xb6, 0x1e, 0xde, 0xda, 0x1b,
708 0xd5, 0xf7, 0xdd, 0x7d, 0x65, 0x9c, 0xaa, 0x56,
709 0x93, 0xb8, 0xaf, 0x48, 0x53, 0xc7, 0x22, 0xe4,
710 0x1c, 0xdf, 0xe9, 0x79, 0xb4, 0x20, 0x89, 0xcc,
711 0x2a, 0x79, 0x2c, 0x09, 0xbe, 0x78, 0xcf, 0xcc,
712 0xf2, 0x90, 0xd6, 0x65, 0xc5, 0x29, 0xfc, 0xda,
713 0x69, 0xfc, 0xc0, 0xd6, 0x70, 0x99, 0x61, 0x3f,
714 0x60, 0x02, 0xd8, 0x12, 0x22, 0xc8, 0x34, 0xc6,
715 0x3b, 0xb3, 0xc2, 0x33, 0xa1, 0x5c, 0x8f, 0x4c,
716 0xd1, 0x52, 0x72, 0xf2, 0x42, 0x05, 0x8e, 0x18,
717 0x1f, 0x16, 0xda, 0xb8, 0x53, 0xa1, 0x5f, 0x01,
718 0x32, 0x1b, 0x90, 0xb3, 0x53, 0x9b, 0xd0, 0x85,
719 0x61, 0x2d, 0x17, 0xed, 0x0a, 0xa4, 0xa5, 0x27,
720 0x09, 0x75, 0x7c, 0xbc, 0x30, 0xf7, 0x5e, 0x59,
721 0x9a, 0x07, 0x96, 0x84, 0x28, 0x86, 0x4b, 0xa7,
722 0x22, 0x35, 0x28, 0xc7, 0xed, 0x0d, 0xc3, 0xce,
723 0x98, 0xcc, 0x2d, 0xec, 0xd4, 0x98, 0x09, 0x8e,
724 0x52, 0x5f, 0x2b, 0x9a, 0x13, 0xbe, 0x99, 0x16,
725 0x73, 0xd1, 0x1f, 0x81, 0xe5, 0xa2, 0x08, 0x78,
726 0xcb, 0x0c, 0x20, 0xd4, 0xa5, 0xea, 0x4b, 0x5b,
727 0x95, 0x5a, 0x92, 0x9a, 0x52
728 },
729 "id-Gost28147-89-CryptoPro-A-ParamSet",
730 "testcnt2",
731 {
732 0x1b, 0x5d, 0xdb, 0x77, 0xcf, 0xf9, 0xec, 0x95,
733 0x5e, 0xcc, 0x67, 0x9f, 0x5d, 0x28, 0xad, 0x4a,
734 0x27, 0xf4, 0x32, 0xc6, 0xb2, 0xcb, 0xb1, 0x45,
735 0x6a, 0x88, 0x14, 0x0c, 0x9b, 0x9b, 0x5f, 0x48
736 },
737 G89_CNT,
738 {
739 0x71, 0x58, 0x8c, 0xe1, 0x55, 0xf4, 0xf6, 0xb3
740 },
741 {
742 0x8e, 0xcd, 0x8f, 0xc8, 0xac, 0xe1, 0x15, 0x48,
743 0x2d, 0xae, 0x24, 0x8a, 0xc7, 0xfb, 0xba, 0x0f,
744 0x1d, 0x8a, 0x95, 0xa2, 0x43, 0xef, 0xcb, 0xdc,
745 0x59, 0x57, 0xa7, 0xc7, 0x0e, 0xe3, 0xe2, 0xb9,
746 0x0d, 0x86, 0x29, 0x62, 0xcb, 0x83, 0x4d, 0x07,
747 0x0c, 0x40, 0xd4, 0x7b, 0x2e, 0xca, 0xba, 0xbf,
748 0x4a, 0x60, 0x3b, 0x31, 0x98, 0xc8, 0x88, 0x47,
749 0xd9, 0x82, 0xab, 0xfc, 0x8f, 0x48, 0xe2, 0x46,
750 0xab, 0xd3, 0xa1, 0xab, 0x8a, 0x05, 0x22, 0x8c,
751 0xf4, 0xec, 0x9a, 0x1e, 0x76, 0xab, 0x1a, 0x60,
752 0xd9, 0x25, 0x6b, 0xb8, 0x56, 0xe5, 0xb2, 0xea,
753 0x10, 0xf3, 0x62, 0x04, 0x32, 0x5e, 0xaa, 0x3b,
754 0x7b, 0x57, 0xbc, 0x3b, 0x8b, 0x43, 0x47, 0xf2,
755 0xd5, 0x03, 0x7e, 0x51, 0x01, 0xff, 0x77, 0x28,
756 0xca, 0x90, 0xa3, 0xfe, 0x7e, 0x2e, 0x70, 0x16,
757 0x75, 0x18, 0x44, 0xf0, 0x1b, 0x85, 0x05, 0xea,
758 0xe3, 0x21, 0xf7, 0x26, 0x86, 0x76, 0x3c, 0x67,
759 0x9d, 0xfc, 0xbc, 0x10, 0x7f, 0x77, 0xe4, 0xed,
760 0xd3, 0x12, 0xf8, 0x83, 0x00, 0x1f, 0x4b, 0x92,
761 0x95, 0x92, 0x5c, 0xf3, 0x5a, 0xf3, 0xb7, 0xd0,
762 0xa9, 0x5f, 0xf2, 0x18, 0xc4, 0x66, 0x62, 0xc1,
763 0x84, 0x0e, 0x66, 0xe8, 0x80, 0x7d, 0x1f, 0xf0,
764 0xba, 0x01, 0x9b, 0x71, 0xae, 0x93, 0xcc, 0x27,
765 0x54, 0x34, 0x9a, 0xbd, 0xca, 0xee, 0x52, 0x09,
766 0x92, 0x9d, 0xb0, 0xd5, 0xd9, 0xba, 0x2f, 0xb9,
767 0x96, 0xdc, 0xfa, 0xbd, 0xce, 0xea, 0x1a, 0x7b,
768 0x9a, 0x1d, 0x13, 0xa7, 0x11, 0xe2, 0x9a, 0x64,
769 0xf6, 0xd3, 0xee, 0xc6, 0x33, 0xb7, 0x6e, 0xef,
770 0x25, 0x9e, 0x1e, 0x7c, 0xe3, 0x1f, 0x2c, 0x6e,
771 0xa9, 0xc0, 0xf8, 0xc1, 0xbf, 0x3b, 0xf8, 0x34,
772 0x03, 0x9b, 0xa1, 0x40, 0x5b, 0x0c, 0x3c, 0x09,
773 0x66, 0x9d, 0x63, 0xe2, 0xe2, 0x04, 0x8f, 0x06,
774 0x84, 0x74, 0x68, 0xb2, 0x5c, 0x3b, 0x4c, 0xad,
775 0x0b, 0x3f, 0x03, 0xb3, 0x07, 0x8a, 0x64, 0xa7,
776 0x36, 0x56, 0x26, 0x39, 0x66, 0xda, 0xe9, 0x6d,
777 0x1b, 0xd5, 0x88, 0xe8, 0x5c, 0xaf, 0x5a, 0x4c,
778 0x49, 0xf7, 0xf5, 0xb7, 0x78, 0xf0, 0xde, 0xec,
779 0xcd, 0x16, 0x23, 0x9e, 0x8c, 0x13, 0xbe, 0x6b,
780 0x6f, 0x9b, 0x07, 0xe5, 0xbb, 0xcc, 0x3a, 0x1b,
781 0x6f, 0x43, 0xdf, 0xff, 0x46, 0x2a, 0xae, 0x47,
782 0x19, 0x18, 0x9a, 0x25, 0x09, 0xc9, 0x24, 0x40,
783 0x0c, 0x4b, 0xa7, 0xda, 0x5e, 0x0d, 0xee, 0xfa,
784 0x62, 0x45, 0x8e, 0xcc, 0x2f, 0x23, 0x08, 0x1d,
785 0x92, 0xf0, 0xfe, 0x82, 0x0f, 0xd7, 0x11, 0x60,
786 0x7e, 0x0b, 0x0b, 0x75, 0xf4, 0xf5, 0x3b, 0xc0,
787 0xa4, 0xe8, 0x72, 0xa5, 0xb6, 0xfa, 0x5a, 0xad,
788 0x5a, 0x4f, 0x39, 0xb5, 0xa2, 0x12, 0x96, 0x0a,
789 0x32, 0x84, 0xb2, 0xa1, 0x06, 0x68, 0x56, 0x57,
790 0x97, 0xa3, 0x7b, 0x22, 0x61, 0x76, 0x5d, 0x30,
791 0x1a, 0x31, 0xab, 0x99, 0x06, 0xc5, 0x1a, 0x96,
792 0xcf, 0xcf, 0x14, 0xff, 0xb2, 0xc4, 0xcc, 0x2b,
793 0xbf, 0x0c, 0x9d, 0x91, 0x8f, 0x79, 0x5b, 0xbc,
794 0xa9, 0x6b, 0x91, 0x6a, 0xb4, 0x93, 0x5c, 0x7b,
795 0x5d, 0xc2, 0x8a, 0x75, 0xc0, 0xc1, 0x08, 0xfa,
796 0x99, 0xf9, 0x4d, 0x5e, 0x0c, 0x06, 0x64, 0x60,
797 0xa9, 0x01, 0x4a, 0x34, 0x0f, 0x33, 0x84, 0x95,
798 0x69, 0x30, 0xc1, 0x1c, 0x36, 0xf8, 0xfc, 0x30,
799 0x23, 0xb2, 0x71, 0xe5, 0x52, 0x4d, 0x12, 0x1a,
800 0xc9, 0xbe, 0xee, 0xc9, 0xcb, 0x01, 0x85, 0xf3,
801 0xdb, 0x30, 0xf9, 0x41, 0xa9, 0x40, 0xb0, 0x06,
802 0x29, 0x77, 0xcd, 0xc5, 0xec, 0x58, 0x02, 0x48,
803 0x83, 0x53, 0x44, 0x6a, 0xd2, 0xca, 0x05, 0xd8,
804 0x5a, 0x08, 0xeb, 0xa9, 0xf4, 0xe6, 0xc7, 0x9d,
805 0xd5, 0x7b, 0x74, 0x0b, 0x31, 0xb7, 0xa5, 0x57,
806 0x7c, 0x7a, 0xfd, 0x1a, 0x0e, 0xd7, 0x97, 0x41,
807 0xbf, 0xdd, 0xc6, 0x19, 0x6c, 0x77, 0x8c, 0x18,
808 0x52, 0x57, 0x83, 0xba, 0x71, 0x25, 0xee, 0x39,
809 0xbb, 0xe2, 0x43, 0xa0, 0x14, 0xdc, 0x0e, 0x84,
810 0xb4, 0x2b, 0xde, 0x3e, 0xe5, 0x36, 0xb7, 0xa2,
811 0x92, 0x98, 0x05, 0xb8, 0x96, 0xe5, 0xd0, 0x8c,
812 0x08, 0x93, 0x35, 0xc2, 0x81, 0xe0, 0xfc, 0x59,
813 0x71, 0xe2, 0x44, 0x49, 0x5d, 0xda, 0xfb, 0x9c,
814 0xaa, 0x70, 0x9f, 0x43, 0xa8, 0xa5, 0xd9, 0x67,
815 0xd9, 0x8f, 0xa3, 0x1e, 0xbe, 0x0e, 0xec, 0xdf,
816 0x12, 0x2b, 0x6a, 0xe7, 0x1c, 0x12, 0x17, 0xe7,
817 0xc4, 0x6d, 0x50, 0xc9, 0x52, 0x7a, 0xd5, 0xe8,
818 0x7f, 0xbc, 0x07, 0x15, 0xac, 0xdb, 0x93, 0x66,
819 0xb1, 0xf0, 0xa7, 0x7b, 0x2f, 0xe9, 0xec, 0xd0,
820 0x47, 0x69, 0x59, 0x87, 0xf1, 0x4c, 0x3e, 0x4b,
821 0x9b, 0x11, 0x79, 0x13, 0xe4, 0x96, 0xf6, 0x56,
822 0x04, 0x6e, 0x0b, 0x33, 0xfc, 0x40, 0xf6, 0xc7,
823 0xc1, 0x43, 0xb1, 0xbf, 0x0e, 0xb3, 0x87, 0xfd,
824 0x0b, 0x1c, 0x63, 0x46, 0x3a, 0xd3, 0xa0, 0x17,
825 0x59, 0x25, 0x94, 0x6c, 0x9c, 0x3d, 0x0c, 0x81,
826 0xce, 0x82, 0x72, 0x42, 0x28, 0xf9, 0x37, 0x6a,
827 0x6d, 0xe4, 0x12, 0xf4, 0x21, 0xaa, 0xf7, 0xfe,
828 0x27, 0x55, 0x40, 0x1a, 0x14, 0xc3, 0x39, 0x5b,
829 0xbf, 0x63, 0xc2, 0x5f, 0x10, 0x1f, 0x14, 0x25,
830 0xd0, 0xce, 0xf3, 0x14, 0x48, 0x13, 0xa5, 0x0b,
831 0x4d, 0x38, 0xcf, 0x0d, 0x34, 0xc0, 0x0a, 0x11,
832 0xb4, 0xb5, 0x72, 0xc8, 0x4b, 0xc2, 0x6f, 0xe7,
833 0x9d, 0x93, 0xf7, 0xdf, 0xb8, 0x43, 0x72, 0x7e,
834 0xda, 0x3e, 0x20, 0x1f, 0xbc, 0x21, 0x2a, 0xce,
835 0x00, 0xfa, 0x96, 0x9f, 0x3d, 0xe5, 0x88, 0x96,
836 0xef, 0x29, 0x84, 0xdf, 0x6c, 0x1c, 0x96, 0xd8,
837 0x58, 0x47, 0xaa, 0x92, 0xf3, 0x07, 0xe5, 0xfb,
838 0xaf, 0xea, 0x95, 0x7e, 0x0b, 0x71, 0xcd, 0x81,
839 0x0f, 0xb7, 0x0a, 0x59, 0x8f, 0x31, 0x4d, 0xd1,
840 0xc3, 0xf3, 0x2f, 0x70, 0x5c, 0x59, 0x18, 0x97,
841 0xaf, 0x77, 0x95, 0x5e, 0xaf, 0x40, 0x06, 0x12,
842 0x81, 0x61, 0x86, 0x08, 0x4e, 0xbc, 0x89, 0x46,
843 0x07, 0x2e, 0x5b, 0x10, 0xaa, 0x12, 0xf0, 0xa7,
844 0x84, 0xe2, 0x9a, 0x08, 0xf1, 0xde, 0x59, 0xe3,
845 0x0e, 0x47, 0x4b, 0xff, 0xc3, 0xc9, 0x18, 0xaf,
846 0x95, 0x9c, 0x67, 0x2a, 0xde, 0x8a, 0x7a, 0x99,
847 0x04, 0xc4, 0xb8, 0x97, 0x4c, 0x04, 0x29, 0x71,
848 0x05, 0xda, 0xb3, 0xd6, 0xdb, 0x6c, 0x71, 0xe6,
849 0xe8, 0x03, 0xbf, 0x94, 0x7d, 0xde, 0x3d, 0xc8,
850 0x44, 0xfa, 0x7d, 0x62, 0xb4, 0x36, 0x03, 0xee,
851 0x36, 0x52, 0x64, 0xb4, 0x85, 0x6d, 0xd5, 0x78,
852 0xf0, 0x6f, 0x67, 0x2d, 0x0e, 0xe0, 0x2c, 0x88,
853 0x9b, 0x55, 0x19, 0x29, 0x40, 0xf6, 0x8c, 0x12,
854 0xbb, 0x2c, 0x83, 0x96, 0x40, 0xc0, 0x36, 0xf5,
855 0x77, 0xff, 0x70, 0x8c, 0x75, 0x92, 0x0b, 0xad,
856 0x05, 0x9b, 0x7e, 0xa2, 0xfc, 0xa9, 0xd1, 0x64,
857 0x76, 0x82, 0x13, 0xba, 0x22, 0x5e, 0x33, 0x0e,
858 0x26, 0x70, 0xa9, 0xbe, 0x74, 0x28, 0xf5, 0xe2,
859 0xc4, 0x96, 0xee, 0x3a, 0xbc, 0x97, 0xa6, 0x2c,
860 0x2a, 0xe0, 0x64, 0x8d, 0x35, 0xc6, 0x1a, 0xca,
861 0xf4, 0x92, 0xfa, 0xc3, 0xf1, 0x1f, 0x98, 0xe4,
862 0x43, 0x88, 0x69, 0x3a, 0x09, 0xbf, 0x63, 0xe5,
863 0x96, 0x29, 0x0b, 0x9b, 0x62, 0x23, 0x14, 0x8a,
864 0x95, 0xe4, 0x1c, 0x5c, 0x0a, 0xa9, 0xc5, 0xb9,
865 0x6f, 0x4f, 0x2b, 0x25, 0x6f, 0x74, 0x1e, 0x18,
866 0xd5, 0xfe, 0x27, 0x7d, 0x3f, 0x6e, 0x55, 0x2c,
867 0x67, 0xe6, 0xde, 0xb5, 0xcc, 0xc0, 0x2d, 0xff,
868 0xc4, 0xe4, 0x06, 0x21, 0xa5, 0xc8, 0xd3, 0xd6,
869 0x6c, 0xa1, 0xc3, 0xfb, 0x88, 0x92, 0xb1, 0x1d,
870 0x90, 0xe1, 0x35, 0x05, 0x9b, 0x29, 0x6d, 0xba,
871 0xf1, 0xf4, 0x1e, 0x23, 0x2e
872 }
873 },
874 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
875 5242880+8,
876 { 0 },
877 "id-Gost28147-89-CryptoPro-A-ParamSet",
878 "test5Mcnt",
879 {
880 0x07, 0x52, 0x65, 0xe7, 0xca, 0xa3, 0xca, 0x45,
881 0xcf, 0x3a, 0x05, 0x1d, 0x38, 0x03, 0x53, 0x0c,
882 0x22, 0x31, 0xba, 0x99, 0x4f, 0x9b, 0x6a, 0x1b,
883 0x7e, 0x09, 0x9d, 0x4e, 0xb5, 0xc9, 0x84, 0x2e
884 },
885 G89_CNT,
886 {
887 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
888 },
889 {
890 0x3d, 0x05, 0x07, 0x57, 0xc0, 0x75, 0x89, 0x97,
891 0xd6, 0x94, 0x49, 0x11, 0x1d, 0xd0, 0x91, 0xee
892 }
893 },
894 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
895 U64(4294967296)+16,
896 { 0 },
897 "id-Gost28147-89-CryptoPro-A-ParamSet",
898 "test4Gcnt",
899 {
900 0x75, 0xa3, 0x3c, 0xae, 0x03, 0x6b, 0x10, 0xdb,
901 0xc1, 0x56, 0x50, 0x89, 0x03, 0xd2, 0x9f, 0x91,
902 0xee, 0xe8, 0x64, 0x1d, 0x43, 0xf2, 0x4e, 0xf8,
903 0xf2, 0x6c, 0xed, 0xda, 0x8f, 0xe4, 0x88, 0xe9
904 },
905 G89_CNT,
906 {
907 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
908 },
909 {
910 0xfa, 0x6c, 0x96, 0x78, 0xe2, 0xf8, 0xdd, 0xaa,
911 0x67, 0x5a, 0xc9, 0x5d, 0x57, 0xf1, 0xbd, 0x99
912 }
913 },
914 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
915 1035,
916 {
917 0xd6, 0xcf, 0x31, 0x96, 0x9c, 0xa1, 0xfb, 0xd6,
918 0x8d, 0xa3, 0xdd, 0x01, 0xd9, 0x88, 0xc0, 0x2f,
919 0xbc, 0x46, 0xc7, 0x3a, 0xe4, 0x21, 0x86, 0x96,
920 0x8d, 0xe2, 0xca, 0xb6, 0x37, 0xa2, 0xe1, 0xa8,
921 0x7e, 0xa7, 0x79, 0x2e, 0xa4, 0x56, 0x75, 0x7f,
922 0x3e, 0x55, 0x8b, 0x43, 0xae, 0x65, 0xdf, 0xaa,
923 0x42, 0xb6, 0x00, 0xa6, 0x61, 0x03, 0x0d, 0xd3,
924 0x41, 0x02, 0x27, 0x23, 0x95, 0x79, 0x9b, 0x34,
925 0x81, 0xa9, 0x86, 0xb5, 0xa7, 0x90, 0xe2, 0xae,
926 0xc4, 0x2f, 0xc3, 0x8e, 0x32, 0x56, 0x13, 0xfa,
927 0x4d, 0x4e, 0x9f, 0x15, 0x75, 0x7e, 0x74, 0xdc,
928 0x32, 0x2d, 0xee, 0x4d, 0x67, 0x70, 0x9f, 0x62,
929 0xb9, 0xc4, 0xdb, 0x24, 0x84, 0xcc, 0x16, 0x7b,
930 0xda, 0x22, 0xf7, 0xc5, 0xf3, 0x93, 0x35, 0x73,
931 0xc6, 0x03, 0x1c, 0x77, 0xa5, 0xf2, 0x76, 0x56,
932 0xb4, 0x95, 0xd4, 0x7e, 0x0d, 0x20, 0xc6, 0x6e,
933 0xee, 0x8f, 0x25, 0x48, 0xff, 0x7e, 0x01, 0x3a,
934 0xb4, 0x1f, 0xaa, 0x35, 0xc0, 0x33, 0x58, 0x9c,
935 0xb5, 0xba, 0x65, 0x4b, 0xd3, 0x51, 0x14, 0xec,
936 0x61, 0xce, 0xe4, 0xba, 0x49, 0xba, 0x39, 0x32,
937 0xab, 0xce, 0x81, 0x72, 0xce, 0xab, 0xed, 0xd4,
938 0xd2, 0x19, 0x87, 0x85, 0x92, 0xfa, 0x64, 0x34,
939 0xd8, 0x86, 0xf4, 0x8a, 0x08, 0x3c, 0xde, 0xee,
940 0x97, 0x92, 0x92, 0x69, 0xba, 0x9b, 0x5f, 0x7a,
941 0x03, 0xc1, 0x5d, 0x43, 0x02, 0x8c, 0xbe, 0xd2,
942 0x46, 0x72, 0x81, 0x40, 0x7d, 0x68, 0x98, 0x45,
943 0x0b, 0x54, 0x27, 0x1c, 0xaf, 0x80, 0x42, 0xe4,
944 0xd5, 0xd4, 0xe4, 0xa2, 0x98, 0x07, 0x8f, 0x03,
945 0xf5, 0x2c, 0x8c, 0x88, 0xca, 0x5a, 0xde, 0xe4,
946 0x9f, 0xb1, 0x5f, 0x82, 0xff, 0x20, 0x67, 0x52,
947 0x85, 0x84, 0x4f, 0xc8, 0xfe, 0xa7, 0x9e, 0xae,
948 0x1c, 0xfa, 0xb8, 0x75, 0xd3, 0xf7, 0x9f, 0x0d,
949 0xda, 0x2d, 0xe6, 0xcc, 0x86, 0x6b, 0xa4, 0x14,
950 0x65, 0xc3, 0xf9, 0x15, 0xbc, 0x87, 0xf5, 0xae,
951 0x8c, 0x10, 0xd4, 0xce, 0x5b, 0x9c, 0xe2, 0xdd,
952 0x42, 0x03, 0x09, 0x87, 0x47, 0xed, 0x5d, 0xd0,
953 0x7a, 0x69, 0x4c, 0xfa, 0x43, 0x7d, 0xbf, 0x07,
954 0x85, 0x6a, 0xee, 0x68, 0xe6, 0x7a, 0x57, 0xb2,
955 0x20, 0x8d, 0x80, 0xf2, 0x91, 0x6f, 0x5c, 0x07,
956 0x8c, 0xe4, 0x6a, 0x49, 0x90, 0x85, 0x8b, 0x77,
957 0x29, 0x56, 0x1c, 0x5e, 0xa9, 0x3f, 0xab, 0x8b,
958 0x79, 0xa3, 0x6f, 0x6b, 0x34, 0xcb, 0x61, 0xf6,
959 0xe6, 0x92, 0xd1, 0x48, 0x9e, 0x11, 0xa2, 0x82,
960 0xc0, 0x4e, 0x23, 0xd2, 0x15, 0x0d, 0x8d, 0xff,
961 0xfa, 0x17, 0x9d, 0x81, 0xb8, 0xbc, 0xd7, 0x5b,
962 0x08, 0x81, 0x20, 0x40, 0xc0, 0x3c, 0x06, 0x8b,
963 0x1a, 0x88, 0x0b, 0x4b, 0x7b, 0x31, 0xf5, 0xd4,
964 0x4e, 0x09, 0xd1, 0x4d, 0x0d, 0x7f, 0x45, 0xd1,
965 0x09, 0x35, 0xba, 0xce, 0x65, 0xdd, 0xf2, 0xb8,
966 0xfb, 0x7a, 0xbc, 0xc4, 0x4b, 0xc8, 0x75, 0xda,
967 0x6b, 0xce, 0x3d, 0xe8, 0x94, 0xcc, 0x23, 0x6f,
968 0xb0, 0x3b, 0x4f, 0x7d, 0x07, 0xb9, 0x0f, 0x62,
969 0x92, 0x7e, 0xda, 0x70, 0x50, 0xce, 0xd3, 0x28,
970 0x12, 0x11, 0x00, 0xeb, 0x8d, 0x63, 0x70, 0x78,
971 0xa8, 0x7b, 0x76, 0xab, 0xc6, 0x40, 0xc0, 0x4e,
972 0x80, 0xdd, 0xf0, 0xfe, 0x83, 0x72, 0x56, 0x4c,
973 0x09, 0x4c, 0xf1, 0x72, 0x72, 0x86, 0x26, 0x31,
974 0xc3, 0xc2, 0xdc, 0x8e, 0xc7, 0xf4, 0x35, 0xec,
975 0x17, 0x06, 0x63, 0x47, 0x49, 0x88, 0x47, 0xaf,
976 0xb3, 0x38, 0x4f, 0x7e, 0x44, 0x95, 0xb5, 0xbb,
977 0x1d, 0xbd, 0x5a, 0x91, 0x5b, 0xd0, 0x1a, 0xdf,
978 0x0d, 0x0b, 0x50, 0xd8, 0xe2, 0x0e, 0xc5, 0x00,
979 0x2d, 0x5b, 0x29, 0x19, 0xaa, 0x2b, 0x64, 0xc5,
980 0x40, 0x31, 0x48, 0x11, 0xbc, 0x04, 0xd1, 0xcf,
981 0x6d, 0xf9, 0xa5, 0x2f, 0x4a, 0xc9, 0x82, 0xfa,
982 0x59, 0xe1, 0xfc, 0xab, 0x1c, 0x33, 0x26, 0x0a,
983 0x5f, 0xef, 0xf2, 0x06, 0xd8, 0xd3, 0x7e, 0x16,
984 0x58, 0x16, 0x78, 0x73, 0xae, 0xba, 0xeb, 0xe5,
985 0x3d, 0xb2, 0x0a, 0xb3, 0x32, 0x2d, 0x14, 0xa4,
986 0xfa, 0x3f, 0x1f, 0x43, 0xf9, 0x7b, 0xa9, 0x43,
987 0x98, 0x18, 0x94, 0x07, 0x07, 0xe5, 0x19, 0x34,
988 0xa8, 0x16, 0x5f, 0x71, 0x67, 0xaa, 0x29, 0xe5,
989 0xfa, 0xf0, 0x83, 0x06, 0x1d, 0x9d, 0xfc, 0xfe,
990 0xfe, 0x8c, 0xb5, 0xb2, 0xa9, 0xe7, 0xa0, 0x40,
991 0x60, 0xb6, 0x71, 0x9e, 0xab, 0x5b, 0x83, 0xb9,
992 0x0c, 0x2b, 0x58, 0x23, 0x80, 0x09, 0x9e, 0x5d,
993 0x94, 0x7d, 0x40, 0x76, 0xa9, 0x16, 0x96, 0x9e,
994 0x83, 0xe0, 0x0d, 0xec, 0xa0, 0xec, 0x76, 0x2a,
995 0xb7, 0xa0, 0xff, 0xb8, 0x50, 0x4c, 0x5b, 0xc6,
996 0x8b, 0x0a, 0x65, 0x2e, 0xfe, 0xb4, 0x40, 0x9a,
997 0x01, 0xd8, 0xc6, 0xa3, 0xab, 0x99, 0xa2, 0xc5,
998 0x0c, 0x08, 0xc4, 0xb7, 0xee, 0x4d, 0x1d, 0xc4,
999 0x08, 0x15, 0xd0, 0xdb, 0xaa, 0x63, 0x4f, 0x31,
1000 0xeb, 0x14, 0x97, 0x43, 0xbd, 0xc1, 0x94, 0x08,
1001 0xe6, 0xde, 0x43, 0x9f, 0x95, 0x0b, 0x96, 0x7e,
1002 0x7f, 0x3c, 0x68, 0xba, 0x6f, 0xc4, 0xc9, 0x35,
1003 0x2b, 0xc4, 0x0e, 0xda, 0x1f, 0x91, 0x68, 0x64,
1004 0x63, 0x34, 0x73, 0xbe, 0x57, 0x75, 0xb9, 0xed,
1005 0xf7, 0x2d, 0x3b, 0x05, 0x21, 0x93, 0x28, 0x48,
1006 0x96, 0x95, 0x97, 0xa0, 0xd2, 0x7d, 0x78, 0xbb,
1007 0x6a, 0x49, 0x8f, 0x76, 0x55, 0x74, 0x63, 0xb9,
1008 0xc5, 0x36, 0x12, 0x25, 0xbf, 0x03, 0x82, 0x8f,
1009 0xf0, 0xf6, 0x80, 0xbb, 0x33, 0xb4, 0xf4, 0x17,
1010 0x27, 0x1c, 0xf3, 0x4c, 0x10, 0xa3, 0xe4, 0xd1,
1011 0x55, 0xd9, 0x68, 0x21, 0x4e, 0x5a, 0x83, 0x67,
1012 0xbf, 0xf8, 0x3c, 0x7d, 0x4e, 0x62, 0xd3, 0x28,
1013 0xa7, 0x26, 0x6f, 0xe9, 0xee, 0xc2, 0x0b, 0x2d,
1014 0x03, 0x84, 0xb1, 0xff, 0xd6, 0x68, 0x1f, 0xb6,
1015 0xf2, 0xe4, 0x0f, 0xda, 0x2d, 0xee, 0x5f, 0x6e,
1016 0x21, 0xc8, 0xe1, 0xfc, 0xad, 0x6b, 0x0e, 0x04,
1017 0x7d, 0xaf, 0xc2, 0x3b, 0xa5, 0x68, 0x9b, 0x0c,
1018 0xf3, 0x56, 0xf3, 0xda, 0x8d, 0xc8, 0x7d, 0x39,
1019 0xdc, 0xd5, 0x99, 0xc6, 0x01, 0x10, 0xce, 0x42,
1020 0x1b, 0xac, 0x48, 0xdc, 0x97, 0x78, 0x0a, 0xec,
1021 0xb3, 0x8f, 0x47, 0x35, 0xa3, 0x6a, 0x64, 0xb2,
1022 0x8e, 0x63, 0x69, 0x22, 0x66, 0xae, 0x2e, 0xe0,
1023 0x88, 0xf9, 0x40, 0x3c, 0xc9, 0xa2, 0x57, 0x61,
1024 0xf6, 0xad, 0xf0, 0xdc, 0x90, 0x56, 0x3f, 0x06,
1025 0x9b, 0x7d, 0xbd, 0xc2, 0x81, 0x02, 0xab, 0xb8,
1026 0x15, 0x09, 0x88, 0x4a, 0xff, 0x2f, 0x31, 0xbf,
1027 0x5e, 0xfa, 0x6a, 0x7e, 0xf6, 0xc5, 0xa7, 0xf7,
1028 0xd5, 0xab, 0x55, 0xac, 0xae, 0x0d, 0x8c, 0x8d,
1029 0x7f, 0x4b, 0x25, 0xbb, 0x32, 0xff, 0x11, 0x33,
1030 0x2e, 0x37, 0x37, 0x69, 0x96, 0x15, 0x17, 0xb1,
1031 0x17, 0x49, 0xe0, 0x9a, 0x9c, 0xd9, 0x5b, 0x8d,
1032 0x58, 0xa3, 0x1d, 0x92, 0x87, 0xf8, 0x80, 0xb9,
1033 0xbd, 0x5a, 0xec, 0x40, 0xe1, 0x00, 0x33, 0x60,
1034 0xe4, 0x86, 0x16, 0x6d, 0x61, 0x81, 0xf2, 0x28,
1035 0x6a, 0xa7, 0xce, 0x3f, 0x95, 0xae, 0x43, 0xca,
1036 0xe1, 0x3f, 0x81, 0x74, 0x7e, 0x1c, 0x47, 0x17,
1037 0x95, 0xc6, 0x60, 0xda, 0x74, 0x77, 0xd9, 0x9f,
1038 0xfa, 0x92, 0xb4, 0xbe, 0xe1, 0x23, 0x98, 0x18,
1039 0x95, 0x63, 0x03, 0x13, 0x4c, 0x1a, 0x2d, 0x41,
1040 0xcd, 0xe4, 0x84, 0xf7, 0xe6, 0x38, 0xef, 0xff,
1041 0x95, 0xb2, 0xe8, 0x7c, 0x8f, 0x58, 0xb5, 0xb5,
1042 0xed, 0x27, 0x7f, 0x3c, 0x18, 0xab, 0xbe, 0x7f,
1043 0x4f, 0xe2, 0x35, 0x15, 0x71, 0xb7, 0x6f, 0x85,
1044 0x38, 0x9b, 0x88, 0xf6, 0x9c, 0x8d, 0x43, 0xb5,
1045 0x58, 0x9e, 0xf2, 0xd1, 0x96, 0xbe, 0xb7, 0xad,
1046 0x1a, 0xa0, 0x98
1047 },
1048 "id-Gost28147-89-CryptoPro-A-ParamSet",
1049 "testimit2",
1050 {
1051 0x80, 0xd9, 0xa0, 0xdc, 0x21, 0xf9, 0x30, 0x40,
1052 0x75, 0xfe, 0x49, 0x1b, 0x9e, 0x71, 0x90, 0x91,
1053 0x78, 0x88, 0x21, 0x60, 0x39, 0xe7, 0xc9, 0x2b,
1054 0xfb, 0x55, 0x1d, 0xf4, 0xdd, 0x2b, 0x0a, 0x01
1055 },
1056 G89_IMIT,
1057 { 0 },
1058 {
1059 0x90, 0xf2, 0x11, 0x9a
1060 }
1061 },
1062 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1063 10,
1064 {
1065 0x1d, 0xeb, 0xe6, 0x79, 0x0a, 0x59, 0x00, 0xe6,
1066 0x8e, 0x5c
1067 },
1068 "id-Gost28147-89-CryptoPro-A-ParamSet",
1069 "testimit3",
1070 {
1071 0xa9, 0xb6, 0x37, 0xcc, 0x6d, 0x9b, 0x2f, 0x25,
1072 0xb0, 0xdf, 0x47, 0x04, 0x50, 0x68, 0xb0, 0x27,
1073 0x41, 0x27, 0x58, 0x6a, 0xbd, 0x0a, 0x6e, 0x50,
1074 0x2f, 0xc6, 0xfc, 0xc0, 0x3e, 0x29, 0x42, 0xa5
1075 },
1076 G89_IMIT,
1077 { 0 },
1078 {
1079 0x31, 0x7c, 0x16, 0xe4
1080 }
1081 },
1082 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1083 6,
1084 {
1085 0xef, 0x06, 0x8f, 0x14, 0xc9, 0x04
1086 },
1087 "id-Gost28147-89-CryptoPro-A-ParamSet",
1088 "testimit4",
1089 {
1090 0xb0, 0x6c, 0x48, 0x23, 0x0a, 0x6e, 0xf4, 0xec,
1091 0x27, 0x98, 0x01, 0x23, 0xa7, 0xd8, 0xbf, 0x60,
1092 0x89, 0xef, 0xad, 0xe8, 0x8f, 0x79, 0x14, 0x8c,
1093 0x18, 0x5c, 0x9a, 0xda, 0xef, 0x0b, 0xdd, 0xa0
1094 },
1095 G89_IMIT,
1096 { 0 },
1097 {
1098 0xe9, 0x72, 0xae, 0xbf
1099 }
1100 },
1101 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1102 16,
1103 {
1104 0x02, 0xf8, 0xec, 0x2b, 0x4d, 0x1f, 0xbc, 0x7c,
1105 0x6e, 0x47, 0xe3, 0x87, 0x22, 0x75, 0x41, 0xa7
1106 },
1107 "id-Gost28147-89-CryptoPro-B-ParamSet",
1108 "testimit5",
1109 {
1110 0x33, 0xd3, 0xef, 0x01, 0x19, 0x95, 0x0e, 0x15,
1111 0xa1, 0x69, 0x75, 0xae, 0x56, 0x27, 0x17, 0x79,
1112 0x63, 0x47, 0xab, 0x62, 0x9d, 0x4a, 0xf0, 0x34,
1113 0xd3, 0x1e, 0x69, 0x74, 0xec, 0x31, 0x48, 0xfc
1114 },
1115 G89_IMIT,
1116 { 0 },
1117 {
1118 0xf5, 0x55, 0x1f, 0x28
1119 }
1120 },
1121 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1122 8,
1123 {
1124 0xf3, 0xb2, 0x29, 0xd2, 0x7a, 0x37, 0x03, 0x12
1125 },
1126 "id-Gost28147-89-CryptoPro-A-ParamSet",
1127 "testimit6",
1128 {
1129 0x42, 0x35, 0x81, 0x91, 0x0b, 0xa9, 0x99, 0xff,
1130 0xd9, 0x43, 0xf8, 0xc6, 0x19, 0x55, 0x1f, 0x2f,
1131 0x2d, 0x45, 0x40, 0x20, 0x1e, 0x1d, 0x32, 0x7a,
1132 0xb1, 0x07, 0x6b, 0x4f, 0x45, 0x90, 0xd9, 0x80
1133 },
1134 G89_IMIT,
1135 { 0 },
1136 {
1137 0x6e, 0x15, 0xfa, 0xe8
1138 }
1139 },
1140 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1141 0,
1142 {
1143 0
1144 },
1145 "id-Gost28147-89-CryptoPro-A-ParamSet",
1146 "testimit7",
1147 {
1148 0x26, 0xcb, 0xb9, 0xf0, 0x0c, 0x62, 0x9f, 0xaa,
1149 0x4a, 0x1d, 0xb6, 0x30, 0x09, 0x01, 0x56, 0x89,
1150 0x66, 0xd4, 0xe4, 0x0e, 0xfe, 0xf6, 0x10, 0x6b,
1151 0x6c, 0xe8, 0x04, 0x3a, 0xe3, 0x61, 0x4b, 0x19
1152 },
1153 G89_IMIT,
1154 { 0 },
1155 {
1156 0x00, 0x00, 0x00, 0x00
1157 }
1158 },
1159 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1160 5242880,
1161 { 0 },
1162 "id-Gost28147-89-CryptoPro-A-ParamSet",
1163 "test5Mimit",
1164 {
1165 0xaa, 0x85, 0x84, 0xcd, 0x65, 0x28, 0xe1, 0xdb,
1166 0xb8, 0x20, 0x19, 0x43, 0xe0, 0x36, 0x35, 0x10,
1167 0x19, 0xc3, 0x70, 0x5b, 0x27, 0xc1, 0x9d, 0x84,
1168 0x75, 0xa3, 0xc6, 0x49, 0x46, 0x8f, 0x7c, 0x4e
1169 },
1170 G89_IMIT,
1171 { 0 },
1172 {
1173 0x2a, 0xe6, 0x23, 0xc6
1174 }
1175 },
1176 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1177 3221225472U + 16,
1178 { 0 },
1179 "id-Gost28147-89-CryptoPro-A-ParamSet",
1180 "test3Gimit1",
1181 {
1182 0xd5, 0xda, 0xfe, 0x06, 0x60, 0xdc, 0xf0, 0xb3,
1183 0x49, 0x5a, 0x02, 0x59, 0xc8, 0x2e, 0x4a, 0x2b,
1184 0xcc, 0x9b, 0x98, 0x04, 0xb7, 0xf2, 0x78, 0xb7,
1185 0xce, 0xa3, 0xf2, 0xdb, 0x9e, 0xa8, 0x49, 0x1d
1186 },
1187 G89_IMIT,
1188 { 0 },
1189 {
1190 0xcc, 0x46, 0x67, 0xe4
1191 }
1192 },
1193 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1194 U64(4)*1024*1024*1024,
1195 { 0 },
1196 "id-Gost28147-89-CryptoPro-A-ParamSet",
1197 "test4Gimit3",
1198 {
1199 0x0d, 0xf1, 0xa8, 0x7f, 0x57, 0x03, 0x44, 0xcc,
1200 0xdb, 0x20, 0xde, 0xed, 0x85, 0x50, 0x38, 0xda,
1201 0xc9, 0x44, 0xec, 0x2c, 0x0d, 0x66, 0xb7, 0xdc,
1202 0x17, 0x14, 0x55, 0x95, 0x33, 0x6e, 0x43, 0x3e
1203 },
1204 G89_IMIT,
1205 { 0 },
1206 {
1207 0xb7, 0x21, 0x2e, 0x48
1208 }
1209 },
1210 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1211 U64(4)*1024*1024*1024+4,
1212 { 0 },
1213 "id-Gost28147-89-CryptoPro-A-ParamSet",
1214 "test4Gimit1",
1215 {
1216 0x0c, 0xf3, 0xe9, 0xb0, 0x28, 0x3b, 0x9f, 0x8b,
1217 0xe3, 0x82, 0xb9, 0xa2, 0xa6, 0xbd, 0x80, 0xd2,
1218 0xcd, 0xfa, 0x3f, 0xf7, 0x90, 0xa7, 0x55, 0x06,
1219 0x9b, 0x7a, 0x58, 0xee, 0xe7, 0xf1, 0x9d, 0xbe
1220 },
1221 G89_IMIT,
1222 { 0 },
1223 {
1224 0xda, 0x15, 0x10, 0x73
1225 }
1226 },
1227 { /* Calculated by libcapi10, CryptoPro CSP 3.6R2, Mac OSX */
1228 U64(4)*1024*1024*1024+10,
1229 { 0 },
1230 "id-Gost28147-89-CryptoPro-A-ParamSet",
1231 "test4Gimit2",
1232 {
1233 0x97, 0x1a, 0x42, 0x22, 0xfa, 0x07, 0xb2, 0xca,
1234 0xf9, 0xd2, 0x34, 0x5a, 0x92, 0xb1, 0x1f, 0x6b,
1235 0x53, 0xf8, 0xaf, 0xed, 0x9a, 0x73, 0xc4, 0x38,
1236 0xd7, 0x7d, 0x25, 0x81, 0x00, 0x0d, 0xd4, 0x29
1237 },
1238 G89_IMIT,
1239 { 0 },
1240 {
1241 0x52, 0xaa, 0x22, 0xb4
1242 }
1243 }
1244};
1245
1246/* const */ unsigned char bZB[40*1024*1024];
1247unsigned char bTS[40*1024*1024];
1248
1249int main(int argc, char *argv[])
1250{
1251 unsigned int t;
1252 uint64_t ullMaxLen = 6*1000*1000;
1253 int ignore = 0;
1254 EVP_MD_CTX *mctx = NULL;
1255 EVP_CIPHER_CTX *ectx = NULL;
1256 EVP_PKEY *mac_key;
1257 unsigned char bDerive[EVP_MAX_KEY_LENGTH];
1258 unsigned char bTest[G89_MAX_TC_LEN];
1259 unsigned char bTest1[G89_MAX_TC_LEN];
1260 uint64_t ullLeft;
1261 unsigned int mdl = 0;
1262 int enlu = 0;
1263 int enlf = 0;
1264 size_t siglen;
1265 size_t l = 0;
1266 BIO *bio_err;
1267 const EVP_MD *md_gost94 = NULL;
1268 const EVP_CIPHER *cp_g89ecb = NULL;
1269 const EVP_CIPHER *cp_g89cfb = NULL;
1270 const EVP_CIPHER *cp_g89cnt = NULL;
1271 const EVP_CIPHER *ctype = NULL;
1272 const EVP_MD *md_g89imit = NULL;
1273 int ret = 0;
1274
1275 printf("Testing GOST 28147-89 ");
1276
1277 if(1 < argc) {
1278 if(1 != sscanf(argv[1], "%" SCNu64, &ullMaxLen) ||
1279 ( 2 < argc ?
1280 1 != sscanf(argv[2], "%d", &ignore) : 0)) {
1281 fflush(NULL);
1282 fprintf(stderr, "Usage: %s [maxlen [ignore-error]]\n",
1283 argv[0]);
1284 ret = 1;
1285 goto out;
1286 }
1287 }
1288
1289 ERR_load_crypto_strings();
1290 OPENSSL_load_builtin_modules();
1291 OpenSSL_add_all_algorithms();
1292
1293 memset(bZB, 0, sizeof bZB);
1294 memset(bTS, 0, sizeof bTS);
1295
1296 /* Test load engine */
1297 if(NULL == (md_gost94 = EVP_get_digestbyname(SN_id_GostR3411_94))) {
1298 fflush(NULL);
1299 fprintf(stderr, "\"" SN_id_GostR3411_94 "\" - not found\n");
1300 if(!ignore) {
1301 ret = 7;
1302 goto out;
1303 }
1304 }
1305 if(NULL == (cp_g89cfb = EVP_get_cipherbyname(SN_id_Gost28147_89))) {
1306 fflush(NULL);
1307 fprintf(stderr, "\"" SN_id_Gost28147_89 "\" - not found\n");
1308 if(!ignore) {
1309 ret = 8;
1310 goto out;
1311 }
1312 }
1313 if(NULL == (cp_g89cnt = EVP_get_cipherbyname(SN_gost89_cnt))) {
1314 fflush(NULL);
1315 fprintf(stderr, "\"" SN_gost89_cnt "\" - not found\n");
1316 if(!ignore) {
1317 ret = 9;
1318 goto out;
1319 }
1320 }
1321 if(NULL == (cp_g89ecb = EVP_get_cipherbyname(SN_gost89_ecb))) {
1322 fflush(NULL);
1323 fprintf(stderr, "\"" SN_gost89_ecb "\" - not found\n");
1324 if(!ignore) {
1325 ret = 8;
1326 goto out;
1327 }
1328 }
1329 if(NULL == (md_g89imit = EVP_get_digestbyname(SN_id_Gost28147_89_MAC))) {
1330 fflush(NULL);
1331 fprintf(stderr, "\"" SN_id_Gost28147_89_MAC "\" - not found\n");
1332 if(!ignore) {
1333 ret = 10;
1334 goto out;
1335 }
1336 }
1337
1338 /* Test cases */
1339 for(t = 0; t < sizeof(tcs)/sizeof(tcs[0]); t++) {
1340 if(NULL != tcs[t].szDerive) {
1341 memset(bDerive, 0x3c, sizeof(bDerive));
1342 mdl = sizeof(bDerive);
1343 if (!EVP_Digest(tcs[t].szDerive, strlen(tcs[t].szDerive), bDerive,
1344 &mdl, md_gost94, NULL))
1345 goto out;
1346 if(0 != memcmp(tcs[t].bRawKey, bDerive, mdl)) {
1347 fflush(NULL);
1348 fprintf(stderr, "Engine test t=%d "
1349 "derive key error.\n", t);
1350 if(!ignore) {
1351 ret = 12;
1352 goto out;
1353 }
1354 }
1355 }
1356 if(ullMaxLen < tcs[t].ullLen) {
1357 printf("@");
1358 continue;
1359 }
1360 memset(bTest, 0xa5, sizeof(bTest));
1361 memset(bTest1, 0x5a, sizeof(bTest1));
1362
1363 switch(tcs[t].gMode) {
1364 case G89_ECB:
1365 ctype = cp_g89ecb;
1366 goto engine_cipher_check;
1367 case G89_CFB:
1368 ctype = cp_g89cfb;
1369 goto engine_cipher_check;
1370 case G89_CNT:
1371 ctype = cp_g89cnt;
1372engine_cipher_check:
1373 if ((ectx = EVP_CIPHER_CTX_new()) == NULL)
1374 goto imit_fail;
1375 if (!EVP_EncryptInit_ex(ectx, ctype, NULL, tcs[t].bRawKey,
1376 tcs[t].bIV))
1377 goto imit_fail;
1378 if (!EVP_CIPHER_CTX_ctrl(ectx, EVP_CTRL_GOST_SET_SBOX,
1379 OBJ_txt2nid(tcs[t].szParamSet), 0))
1380 goto imit_fail;
1381 if(G89_MAX_TC_LEN >= tcs[t].ullLen) {
1382 enlu = sizeof(bTest);
1383 if (!EVP_EncryptUpdate(ectx, bTest, &enlu, tcs[t].bIn,
1384 (int)tcs[t].ullLen))
1385 goto imit_fail;
1386 l = (size_t)tcs[t].ullLen;
1387 } else {
1388 for(ullLeft = tcs[t].ullLen;
1389 ullLeft >= sizeof(bZB);
1390 ullLeft -= sizeof(bZB)) {
1391 printf("B");
1392 fflush(NULL);
1393 enlu = sizeof(bTS);
1394 if (!EVP_EncryptUpdate(ectx, bTS, &enlu, bZB,
1395 sizeof(bZB)))
1396 goto imit_fail;
1397 }
1398 printf("b%" PRIu64 "/%" PRIu64, ullLeft, tcs[t].ullLen);
1399 fflush(NULL);
1400 if (!EVP_EncryptUpdate(ectx, bTS, &enlu, bZB, (int)ullLeft))
1401 goto imit_fail;
1402 memcpy(bTest, &bTS[enlu-16], 16);
1403 enlu = (int)tcs[t].ullLen;
1404 l = 16;
1405 }
1406 enlf = sizeof(bTest1);
1407 if (tcs[t].gMode == G89_ECB)
1408 enlf = 0;
1409 else {
1410 if (!EVP_EncryptFinal_ex(ectx, bTest1, &enlf))
1411 goto imit_fail;
1412 }
1413 EVP_CIPHER_CTX_free(ectx);
1414 ectx = NULL;
1415 break;
1416 case G89_IMIT:
1417 if ((mctx = EVP_MD_CTX_new()) == NULL)
1418 goto imit_fail;
1419 mac_key = EVP_PKEY_new_mac_key(
1420 NID_id_Gost28147_89_MAC, NULL,
1421 bDerive, mdl);
1422 if (mac_key == NULL)
1423 goto imit_fail;
1424 if (!EVP_DigestSignInit(mctx, NULL, md_g89imit, NULL, mac_key))
1425 goto imit_fail;
1426 if (!EVP_MD_CTX_ctrl(mctx, EVP_MD_CTRL_GOST_SET_SBOX,
1427 OBJ_txt2nid(tcs[t].szParamSet), 0))
1428 goto imit_fail;
1429 if(G89_MAX_TC_LEN >= tcs[t].ullLen) {
1430 if (!EVP_DigestSignUpdate(mctx, tcs[t].bIn,
1431 (unsigned int)tcs[t].ullLen))
1432 goto imit_fail;
1433 } else {
1434 for(ullLeft = tcs[t].ullLen;
1435 ullLeft >= sizeof(bZB);
1436 ullLeft -= sizeof(bZB)) {
1437 printf("B");
1438 fflush(NULL);
1439 if (!EVP_DigestSignUpdate(mctx, bZB, sizeof(bZB)))
1440 goto imit_fail;
1441 }
1442 printf("b%" PRIu64 "/%" PRIu64, ullLeft, tcs[t].ullLen);
1443 fflush(NULL);
1444 if (!EVP_DigestSignUpdate(mctx, bZB, (unsigned int)ullLeft))
1445 goto imit_fail;
1446 }
1447 siglen = 4;
1448 OPENSSL_assert(EVP_DigestSignFinal(mctx, bTest, &siglen));
1449 EVP_MD_CTX_free(mctx);
1450 mctx = NULL;
1451 EVP_PKEY_free(mac_key);
1452 enlu = (int)tcs[t].ullLen;
1453 enlf = 0;
1454 l = siglen;
1455 break;
1456 }
1457 if((int)tcs[t].ullLen != enlu || 0 != enlf ||
1458 0 != memcmp(tcs[t].bOut, bTest, l)) {
1459imit_fail:
1460 fflush(NULL);
1461 fprintf(stderr, "\nEngine test t=%d len=%" PRIu64
1462 " mode=%d failed.\n", t, tcs[t].ullLen, tcs[t].gMode);
1463 if(!ignore) {
1464 ret = 13;
1465 goto out;
1466 }
1467 } else {
1468 printf(".");
1469 fflush(NULL);
1470 }
1471 }
1472
1473 printf(" passed\n");
1474 fflush(NULL);
1475
1476 out:
1477
1478 bio_err = BIO_new_fp(stderr, BIO_NOCLOSE);
1479 ERR_print_errors(bio_err);
1480 (void)BIO_flush(bio_err);
1481 BIO_free(bio_err);
1482 EVP_CIPHER_CTX_free(ectx);
1483 EVP_MD_CTX_free(mctx);
1484 return ret;
1485}
1486#endif