1 // GoGOST -- Pure Go GOST cryptographic functions library
2 // Copyright (C) 2015-2019 Sergey Matveev <stargrave@stargrave.org>
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, version 3 of the License.
8 // This program is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 // GNU General Public License for more details.
13 // You should have received a copy of the GNU General Public License
14 // along with this program. If not, see <http://www.gnu.org/licenses/>.
21 Mode2001 Mode = Mode(32)
22 Mode2012 Mode = Mode(64)
24 CurveGostR34102001ParamSetcc func() *Curve = func() *Curve {
25 curve, err := NewCurve(
27 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
28 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
29 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
30 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC7,
33 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
34 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
35 0x60, 0x61, 0x17, 0xa2, 0xf4, 0xbd, 0xe4, 0x28,
36 0xb7, 0x45, 0x8a, 0x54, 0xb6, 0xe8, 0x7b, 0x85,
39 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
40 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
41 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
42 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc4,
45 0x2d, 0x06, 0xB4, 0x26, 0x5e, 0xbc, 0x74, 0x9f,
46 0xf7, 0xd0, 0xf1, 0xf1, 0xf8, 0x82, 0x32, 0xe8,
47 0x16, 0x32, 0xe9, 0x08, 0x8f, 0xd4, 0x4b, 0x77,
48 0x87, 0xd5, 0xe4, 0x07, 0xe9, 0x55, 0x08, 0x0c,
51 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
54 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
57 0xa2, 0x0e, 0x03, 0x4b, 0xf8, 0x81, 0x3e, 0xf5,
58 0xc1, 0x8d, 0x01, 0x10, 0x5e, 0x72, 0x6a, 0x17,
59 0xeb, 0x24, 0x8b, 0x26, 0x4a, 0xe9, 0x70, 0x6f,
60 0x44, 0x0b, 0xed, 0xc8, 0xcc, 0xb6, 0xb2, 0x2c,
68 curve.Name = "GostR34102001ParamSetcc"
71 // id-GostR3410-2001-TestParamSet
72 CurveIdGostR34102001TestParamSet func() *Curve = func() *Curve {
73 curve, err := NewCurve(
75 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
76 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
77 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
78 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x31,
81 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
82 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
83 0x50, 0xFE, 0x8A, 0x18, 0x92, 0x97, 0x61, 0x54,
84 0xC5, 0x9C, 0xFC, 0x19, 0x3A, 0xCC, 0xF5, 0xB3,
87 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
88 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
89 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
90 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
93 0x5F, 0xBF, 0xF4, 0x98, 0xAA, 0x93, 0x8C, 0xE7,
94 0x39, 0xB8, 0xE0, 0x22, 0xFB, 0xAF, 0xEF, 0x40,
95 0x56, 0x3F, 0x6E, 0x6A, 0x34, 0x72, 0xFC, 0x2A,
96 0x51, 0x4C, 0x0C, 0xE9, 0xDA, 0xE2, 0x3B, 0x7E,
99 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
101 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
102 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
105 0x08, 0xE2, 0xA8, 0xA0, 0xE6, 0x51, 0x47, 0xD4,
106 0xBD, 0x63, 0x16, 0x03, 0x0E, 0x16, 0xD1, 0x9C,
107 0x85, 0xC9, 0x7F, 0x0A, 0x9C, 0xA2, 0x67, 0x12,
108 0x2B, 0x96, 0xAB, 0xBC, 0xEA, 0x7E, 0x8F, 0xC8,
116 curve.Name = "id-GostR3410-2001-TestParamSet"
119 // id-GostR3410-2001-CryptoPro-A-ParamSet
120 CurveIdGostR34102001CryptoProAParamSet func() *Curve = func() *Curve {
121 curve, err := NewCurve(
123 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
124 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
125 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
126 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x97,
129 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
130 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
131 0x6C, 0x61, 0x10, 0x70, 0x99, 0x5A, 0xD1, 0x00,
132 0x45, 0x84, 0x1B, 0x09, 0xB7, 0x61, 0xB8, 0x93,
135 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
136 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
137 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
138 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x94,
141 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
142 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
143 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
144 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6,
147 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
148 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
149 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
150 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
153 0x8D, 0x91, 0xE4, 0x71, 0xE0, 0x98, 0x9C, 0xDA,
154 0x27, 0xDF, 0x50, 0x5A, 0x45, 0x3F, 0x2B, 0x76,
155 0x35, 0x29, 0x4F, 0x2D, 0xDF, 0x23, 0xE3, 0xB1,
156 0x22, 0xAC, 0xC9, 0x9C, 0x9E, 0x9F, 0x1E, 0x14,
164 curve.Name = "id-GostR3410-2001-CryptoPro-A-ParamSet"
167 // id-GostR3410-2001-CryptoPro-B-ParamSet
168 CurveIdGostR34102001CryptoProBParamSet func() *Curve = func() *Curve {
169 curve, err := NewCurve(
171 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
172 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
173 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
174 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x99,
177 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
178 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
179 0x5F, 0x70, 0x0C, 0xFF, 0xF1, 0xA6, 0x24, 0xE5,
180 0xE4, 0x97, 0x16, 0x1B, 0xCC, 0x8A, 0x19, 0x8F,
183 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
184 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
185 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
186 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x96,
189 0x3E, 0x1A, 0xF4, 0x19, 0xA2, 0x69, 0xA5, 0xF8,
190 0x66, 0xA7, 0xD3, 0xC2, 0x5C, 0x3D, 0xF8, 0x0A,
191 0xE9, 0x79, 0x25, 0x93, 0x73, 0xFF, 0x2B, 0x18,
192 0x2F, 0x49, 0xD4, 0xCE, 0x7E, 0x1B, 0xBC, 0x8B,
195 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
196 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
197 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
198 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
201 0x3F, 0xA8, 0x12, 0x43, 0x59, 0xF9, 0x66, 0x80,
202 0xB8, 0x3D, 0x1C, 0x3E, 0xB2, 0xC0, 0x70, 0xE5,
203 0xC5, 0x45, 0xC9, 0x85, 0x8D, 0x03, 0xEC, 0xFB,
204 0x74, 0x4B, 0xF8, 0xD7, 0x17, 0x71, 0x7E, 0xFC,
212 curve.Name = "id-GostR3410-2001-CryptoPro-B-ParamSet"
215 // id-GostR3410-2001-CryptoPro-C-ParamSet
216 CurveIdGostR34102001CryptoProCParamSet func() *Curve = func() *Curve {
217 curve, err := NewCurve(
219 0x9B, 0x9F, 0x60, 0x5F, 0x5A, 0x85, 0x81, 0x07,
220 0xAB, 0x1E, 0xC8, 0x5E, 0x6B, 0x41, 0xC8, 0xAA,
221 0xCF, 0x84, 0x6E, 0x86, 0x78, 0x90, 0x51, 0xD3,
222 0x79, 0x98, 0xF7, 0xB9, 0x02, 0x2D, 0x75, 0x9B,
225 0x9B, 0x9F, 0x60, 0x5F, 0x5A, 0x85, 0x81, 0x07,
226 0xAB, 0x1E, 0xC8, 0x5E, 0x6B, 0x41, 0xC8, 0xAA,
227 0x58, 0x2C, 0xA3, 0x51, 0x1E, 0xDD, 0xFB, 0x74,
228 0xF0, 0x2F, 0x3A, 0x65, 0x98, 0x98, 0x0B, 0xB9,
231 0x9B, 0x9F, 0x60, 0x5F, 0x5A, 0x85, 0x81, 0x07,
232 0xAB, 0x1E, 0xC8, 0x5E, 0x6B, 0x41, 0xC8, 0xAA,
233 0xCF, 0x84, 0x6E, 0x86, 0x78, 0x90, 0x51, 0xD3,
234 0x79, 0x98, 0xF7, 0xB9, 0x02, 0x2D, 0x75, 0x98,
237 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
238 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
239 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
240 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x5a,
243 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
244 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
245 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
246 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
249 0x41, 0xEC, 0xE5, 0x57, 0x43, 0x71, 0x1A, 0x8C,
250 0x3C, 0xBF, 0x37, 0x83, 0xCD, 0x08, 0xC0, 0xEE,
251 0x4D, 0x4D, 0xC4, 0x40, 0xD4, 0x64, 0x1A, 0x8F,
252 0x36, 0x6E, 0x55, 0x0D, 0xFD, 0xB3, 0xBB, 0x67,
260 curve.Name = "id-GostR3410-2001-CryptoPro-C-ParamSet"
263 // id-GostR3410-2001-CryptoPro-XchA-ParamSet
264 CurveIdGostR34102001CryptoProXchAParamSet func() *Curve = func() *Curve {
265 c := CurveIdGostR34102001CryptoProAParamSet()
266 c.Name = "id-GostR3410-2001-CryptoPro-XchA-ParamSet"
269 // id-GostR3410-2001-CryptoPro-XchB-ParamSet
270 CurveIdGostR34102001CryptoProXchBParamSet func() *Curve = func() *Curve {
271 c := CurveIdGostR34102001CryptoProCParamSet()
272 c.Name = "id-GostR3410-2001-CryptoPro-XchB-ParamSet"
275 // id-tc26-gost-3410-2012-256-paramSetA
276 CurveIdtc26gost34102012256paramSetA func() *Curve = func() *Curve {
277 curve, err := NewCurve(
279 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
280 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
281 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
282 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x97,
285 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
286 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
287 0x0F, 0xD8, 0xCD, 0xDF, 0xC8, 0x7B, 0x66, 0x35,
288 0xC1, 0x15, 0xAF, 0x55, 0x6C, 0x36, 0x0C, 0x67,
291 0xC2, 0x17, 0x3F, 0x15, 0x13, 0x98, 0x16, 0x73,
292 0xAF, 0x48, 0x92, 0xC2, 0x30, 0x35, 0xA2, 0x7C,
293 0xE2, 0x5E, 0x20, 0x13, 0xBF, 0x95, 0xAA, 0x33,
294 0xB2, 0x2C, 0x65, 0x6F, 0x27, 0x7E, 0x73, 0x35,
297 0x29, 0x5F, 0x9B, 0xAE, 0x74, 0x28, 0xED, 0x9C,
298 0xCC, 0x20, 0xE7, 0xC3, 0x59, 0xA9, 0xD4, 0x1A,
299 0x22, 0xFC, 0xCD, 0x91, 0x08, 0xE1, 0x7B, 0xF7,
300 0xBA, 0x93, 0x37, 0xA6, 0xF8, 0xAE, 0x95, 0x13,
303 0x91, 0xE3, 0x84, 0x43, 0xA5, 0xE8, 0x2C, 0x0D,
304 0x88, 0x09, 0x23, 0x42, 0x57, 0x12, 0xB2, 0xBB,
305 0x65, 0x8B, 0x91, 0x96, 0x93, 0x2E, 0x02, 0xC7,
306 0x8B, 0x25, 0x82, 0xFE, 0x74, 0x2D, 0xAA, 0x28,
309 0x32, 0x87, 0x94, 0x23, 0xAB, 0x1A, 0x03, 0x75,
310 0x89, 0x57, 0x86, 0xC4, 0xBB, 0x46, 0xE9, 0x56,
311 0x5F, 0xDE, 0x0B, 0x53, 0x44, 0x76, 0x67, 0x40,
312 0xAF, 0x26, 0x8A, 0xDB, 0x32, 0x32, 0x2E, 0x5C,
316 0x06, 0x05, 0xF6, 0xB7, 0xC1, 0x83, 0xFA, 0x81,
317 0x57, 0x8B, 0xC3, 0x9C, 0xFA, 0xD5, 0x18, 0x13,
318 0x2B, 0x9D, 0xF6, 0x28, 0x97, 0x00, 0x9A, 0xF7,
319 0xE5, 0x22, 0xC3, 0x2D, 0x6D, 0xC7, 0xBF, 0xFB,
325 curve.Name = "id-tc26-gost-3410-2012-256-paramSetA"
328 // id-tc26-gost-3410-2012-256-paramSetB
329 CurveIdtc26gost34102012256paramSetB func() *Curve = func() *Curve {
330 c := CurveIdGostR34102001CryptoProAParamSet()
331 c.Name = "id-tc26-gost-3410-2012-256-paramSetB"
334 // id-tc26-gost-3410-2012-256-paramSetC
335 CurveIdtc26gost34102012256paramSetC func() *Curve = func() *Curve {
336 c := CurveIdGostR34102001CryptoProBParamSet()
337 c.Name = "id-tc26-gost-3410-2012-256-paramSetC"
340 // id-tc26-gost-3410-2012-256-paramSetD
341 CurveIdtc26gost34102012256paramSetD func() *Curve = func() *Curve {
342 c := CurveIdGostR34102001CryptoProCParamSet()
343 c.Name = "id-tc26-gost-3410-2012-256-paramSetD"
346 // id-tc26-gost-3410-12-512-paramSetA
347 CurveIdtc26gost341012512paramSetA func() *Curve = func() *Curve {
348 curve, err := NewCurve(
350 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
351 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
352 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
353 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
354 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
355 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
356 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
357 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC7,
360 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
361 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
362 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
363 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
364 0x27, 0xE6, 0x95, 0x32, 0xF4, 0x8D, 0x89, 0x11,
365 0x6F, 0xF2, 0x2B, 0x8D, 0x4E, 0x05, 0x60, 0x60,
366 0x9B, 0x4B, 0x38, 0xAB, 0xFA, 0xD2, 0xB8, 0x5D,
367 0xCA, 0xCD, 0xB1, 0x41, 0x1F, 0x10, 0xB2, 0x75,
370 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
371 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
372 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
373 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
374 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
375 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
376 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
377 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC4,
380 0xE8, 0xC2, 0x50, 0x5D, 0xED, 0xFC, 0x86, 0xDD,
381 0xC1, 0xBD, 0x0B, 0x2B, 0x66, 0x67, 0xF1, 0xDA,
382 0x34, 0xB8, 0x25, 0x74, 0x76, 0x1C, 0xB0, 0xE8,
383 0x79, 0xBD, 0x08, 0x1C, 0xFD, 0x0B, 0x62, 0x65,
384 0xEE, 0x3C, 0xB0, 0x90, 0xF3, 0x0D, 0x27, 0x61,
385 0x4C, 0xB4, 0x57, 0x40, 0x10, 0xDA, 0x90, 0xDD,
386 0x86, 0x2E, 0xF9, 0xD4, 0xEB, 0xEE, 0x47, 0x61,
387 0x50, 0x31, 0x90, 0x78, 0x5A, 0x71, 0xC7, 0x60,
390 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
391 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
392 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
393 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
394 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
395 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
396 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
397 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
400 0x75, 0x03, 0xCF, 0xE8, 0x7A, 0x83, 0x6A, 0xE3,
401 0xA6, 0x1B, 0x88, 0x16, 0xE2, 0x54, 0x50, 0xE6,
402 0xCE, 0x5E, 0x1C, 0x93, 0xAC, 0xF1, 0xAB, 0xC1,
403 0x77, 0x80, 0x64, 0xFD, 0xCB, 0xEF, 0xA9, 0x21,
404 0xDF, 0x16, 0x26, 0xBE, 0x4F, 0xD0, 0x36, 0xE9,
405 0x3D, 0x75, 0xE6, 0xA5, 0x0E, 0x3A, 0x41, 0xE9,
406 0x80, 0x28, 0xFE, 0x5F, 0xC2, 0x35, 0xF5, 0xB8,
407 0x89, 0xA5, 0x89, 0xCB, 0x52, 0x15, 0xF2, 0xA4,
415 curve.Name = "id-tc26-gost-3410-12-512-paramSetA"
418 // id-tc26-gost-3410-12-512-paramSetB
419 CurveIdtc26gost341012512paramSetB func() *Curve = func() *Curve {
420 curve, err := NewCurve(
422 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
423 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
424 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
425 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
426 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
427 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
428 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
429 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6F,
432 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
433 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
434 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
435 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
436 0x49, 0xA1, 0xEC, 0x14, 0x25, 0x65, 0xA5, 0x45,
437 0xAC, 0xFD, 0xB7, 0x7B, 0xD9, 0xD4, 0x0C, 0xFA,
438 0x8B, 0x99, 0x67, 0x12, 0x10, 0x1B, 0xEA, 0x0E,
439 0xC6, 0x34, 0x6C, 0x54, 0x37, 0x4F, 0x25, 0xBD,
442 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
443 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
444 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
445 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
446 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
447 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
448 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
449 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C,
452 0x68, 0x7D, 0x1B, 0x45, 0x9D, 0xC8, 0x41, 0x45,
453 0x7E, 0x3E, 0x06, 0xCF, 0x6F, 0x5E, 0x25, 0x17,
454 0xB9, 0x7C, 0x7D, 0x61, 0x4A, 0xF1, 0x38, 0xBC,
455 0xBF, 0x85, 0xDC, 0x80, 0x6C, 0x4B, 0x28, 0x9F,
456 0x3E, 0x96, 0x5D, 0x2D, 0xB1, 0x41, 0x6D, 0x21,
457 0x7F, 0x8B, 0x27, 0x6F, 0xAD, 0x1A, 0xB6, 0x9C,
458 0x50, 0xF7, 0x8B, 0xEE, 0x1F, 0xA3, 0x10, 0x6E,
459 0xFB, 0x8C, 0xCB, 0xC7, 0xC5, 0x14, 0x01, 0x16,
462 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
463 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
464 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
465 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
466 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
467 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
468 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
469 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
472 0x1A, 0x8F, 0x7E, 0xDA, 0x38, 0x9B, 0x09, 0x4C,
473 0x2C, 0x07, 0x1E, 0x36, 0x47, 0xA8, 0x94, 0x0F,
474 0x3C, 0x12, 0x3B, 0x69, 0x75, 0x78, 0xC2, 0x13,
475 0xBE, 0x6D, 0xD9, 0xE6, 0xC8, 0xEC, 0x73, 0x35,
476 0xDC, 0xB2, 0x28, 0xFD, 0x1E, 0xDF, 0x4A, 0x39,
477 0x15, 0x2C, 0xBC, 0xAA, 0xF8, 0xC0, 0x39, 0x88,
478 0x28, 0x04, 0x10, 0x55, 0xF9, 0x4C, 0xEE, 0xEC,
479 0x7E, 0x21, 0x34, 0x07, 0x80, 0xFE, 0x41, 0xBD,
487 curve.Name = "id-tc26-gost-3410-12-512-paramSetB"
490 // id-tc26-gost-3410-2012-512-paramSetC
491 CurveIdtc26gost34102012512paramSetC func() *Curve = func() *Curve {
492 curve, err := NewCurve(
494 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
495 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
496 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
497 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
498 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
499 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
500 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
501 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC7,
504 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
505 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
506 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
507 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
508 0xC9, 0x8C, 0xDB, 0xA4, 0x65, 0x06, 0xAB, 0x00,
509 0x4C, 0x33, 0xA9, 0xFF, 0x51, 0x47, 0x50, 0x2C,
510 0xC8, 0xED, 0xA9, 0xE7, 0xA7, 0x69, 0xA1, 0x26,
511 0x94, 0x62, 0x3C, 0xEF, 0x47, 0xF0, 0x23, 0xED,
514 0xDC, 0x92, 0x03, 0xE5, 0x14, 0xA7, 0x21, 0x87,
515 0x54, 0x85, 0xA5, 0x29, 0xD2, 0xC7, 0x22, 0xFB,
516 0x18, 0x7B, 0xC8, 0x98, 0x0E, 0xB8, 0x66, 0x64,
517 0x4D, 0xE4, 0x1C, 0x68, 0xE1, 0x43, 0x06, 0x45,
518 0x46, 0xE8, 0x61, 0xC0, 0xE2, 0xC9, 0xED, 0xD9,
519 0x2A, 0xDE, 0x71, 0xF4, 0x6F, 0xCF, 0x50, 0xFF,
520 0x2A, 0xD9, 0x7F, 0x95, 0x1F, 0xDA, 0x9F, 0x2A,
521 0x2E, 0xB6, 0x54, 0x6F, 0x39, 0x68, 0x9B, 0xD3,
524 0xB4, 0xC4, 0xEE, 0x28, 0xCE, 0xBC, 0x6C, 0x2C,
525 0x8A, 0xC1, 0x29, 0x52, 0xCF, 0x37, 0xF1, 0x6A,
526 0xC7, 0xEF, 0xB6, 0xA9, 0xF6, 0x9F, 0x4B, 0x57,
527 0xFF, 0xDA, 0x2E, 0x4F, 0x0D, 0xE5, 0xAD, 0xE0,
528 0x38, 0xCB, 0xC2, 0xFF, 0xF7, 0x19, 0xD2, 0xC1,
529 0x8D, 0xE0, 0x28, 0x4B, 0x8B, 0xFE, 0xF3, 0xB5,
530 0x2B, 0x8C, 0xC7, 0xA5, 0xF5, 0xBF, 0x0A, 0x3C,
531 0x8D, 0x23, 0x19, 0xA5, 0x31, 0x25, 0x57, 0xE1,
534 0xE2, 0xE3, 0x1E, 0xDF, 0xC2, 0x3D, 0xE7, 0xBD,
535 0xEB, 0xE2, 0x41, 0xCE, 0x59, 0x3E, 0xF5, 0xDE,
536 0x22, 0x95, 0xB7, 0xA9, 0xCB, 0xAE, 0xF0, 0x21,
537 0xD3, 0x85, 0xF7, 0x07, 0x4C, 0xEA, 0x04, 0x3A,
538 0xA2, 0x72, 0x72, 0xA7, 0xAE, 0x60, 0x2B, 0xF2,
539 0xA7, 0xB9, 0x03, 0x3D, 0xB9, 0xED, 0x36, 0x10,
540 0xC6, 0xFB, 0x85, 0x48, 0x7E, 0xAE, 0x97, 0xAA,
541 0xC5, 0xBC, 0x79, 0x28, 0xC1, 0x95, 0x01, 0x48,
544 0xF5, 0xCE, 0x40, 0xD9, 0x5B, 0x5E, 0xB8, 0x99,
545 0xAB, 0xBC, 0xCF, 0xF5, 0x91, 0x1C, 0xB8, 0x57,
546 0x79, 0x39, 0x80, 0x4D, 0x65, 0x27, 0x37, 0x8B,
547 0x8C, 0x10, 0x8C, 0x3D, 0x20, 0x90, 0xFF, 0x9B,
548 0xE1, 0x8E, 0x2D, 0x33, 0xE3, 0x02, 0x1E, 0xD2,
549 0xEF, 0x32, 0xD8, 0x58, 0x22, 0x42, 0x3B, 0x63,
550 0x04, 0xF7, 0x26, 0xAA, 0x85, 0x4B, 0xAE, 0x07,
551 0xD0, 0x39, 0x6E, 0x9A, 0x9A, 0xDD, 0xC4, 0x0F,
555 0x9E, 0x4F, 0x5D, 0x8C, 0x01, 0x7D, 0x8D, 0x9F,
556 0x13, 0xA5, 0xCF, 0x3C, 0xDF, 0x5B, 0xFE, 0x4D,
557 0xAB, 0x40, 0x2D, 0x54, 0x19, 0x8E, 0x31, 0xEB,
558 0xDE, 0x28, 0xA0, 0x62, 0x10, 0x50, 0x43, 0x9C,
559 0xA6, 0xB3, 0x9E, 0x0A, 0x51, 0x5C, 0x06, 0xB3,
560 0x04, 0xE2, 0xCE, 0x43, 0xE7, 0x9E, 0x36, 0x9E,
561 0x91, 0xA0, 0xCF, 0xC2, 0xBC, 0x2A, 0x22, 0xB4,
562 0xCA, 0x30, 0x2D, 0xBB, 0x33, 0xEE, 0x75, 0x50,
568 curve.Name = "id-tc26-gost-3410-2012-512-paramSetC"
572 CurveDefault = CurveIdGostR34102001CryptoProAParamSet