Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wine-mirror
GitHub Repository: wine-mirror/wine
Path: blob/master/libs/symcrypt/lib/ec_internal_curve_params.c
15010 views
1
//
2
// ec_internal_curve_params.c Parameters for internally supported curves.
3
//
4
// Copyright (c) Microsoft Corporation. Licensed under the MIT license.
5
//
6
//
7
8
#include "precomp.h"
9
10
// Do not delete the following preprocessor directive.
11
// It is used for folding the parameters.
12
#if 1
13
14
/***********************************
15
* *
16
* NIST CURVES *
17
* *
18
***********************************/
19
20
static const BYTE rgbNistP192[] = {
21
//dwVersion
22
0x01, 0x00, 0x00, 0x00,
23
//dwCurveType
24
0x01, 0x00, 0x00, 0x00,
25
//dwCurveGenerationAlgId
26
0x00, 0x00, 0x00, 0x00,
27
//cbFieldLength
28
0x18, 0x00, 0x00, 0x00,
29
//cbSubgroupOrder
30
0x18, 0x00, 0x00, 0x00,
31
//cbCofactor
32
0x01, 0x00, 0x00, 0x00,
33
//cbSeed
34
0x00, 0x00, 0x00, 0x00,
35
//p
36
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
37
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
38
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
39
//A
40
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
41
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
42
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC,
43
//B
44
0x64, 0x21, 0x05, 0x19, 0xE5, 0x9C, 0x80, 0xE7,
45
0x0F, 0xA7, 0xE9, 0xAB, 0x72, 0x24, 0x30, 0x49,
46
0xFE, 0xB8, 0xDE, 0xEC, 0xC1, 0x46, 0xB9, 0xB1,
47
//x
48
0x18, 0x8D, 0xA8, 0x0E, 0xB0, 0x30, 0x90, 0xF6,
49
0x7C, 0xBF, 0x20, 0xEB, 0x43, 0xA1, 0x88, 0x00,
50
0xf4, 0xFF, 0x0A, 0xFD, 0x82, 0xFF, 0x10, 0x12,
51
//y
52
0x07, 0x19, 0x2B, 0x95, 0xFF, 0xC8, 0xDA, 0x78,
53
0x63, 0x10, 0x11, 0xED, 0x6B, 0x24, 0xCD, 0xD5,
54
0x73, 0xF9, 0x77, 0xA1, 0x1E, 0x79, 0x48, 0x11,
55
//q
56
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
57
0xFF, 0xFF, 0xFF, 0xFF, 0x99, 0xDE, 0xF8, 0x36,
58
0x14, 0x6B, 0xC9, 0xB1, 0xB4, 0xD2, 0x28, 0x31,
59
//h
60
0x01
61
};
62
63
static const BYTE rgbNistP224[] = {
64
//dwVersion
65
0x01, 0x00, 0x00, 0x00,
66
//dwCurveType
67
0x01, 0x00, 0x00, 0x00,
68
//dwCurveGenerationAlgId
69
0x00, 0x00, 0x00, 0x00,
70
//cbFieldLength
71
0x1C, 0x00, 0x00, 0x00,
72
//cbSubgroupOrder
73
0x1C, 0x00, 0x00, 0x00,
74
//cbCofactor
75
0x01, 0x00, 0x00, 0x00,
76
//cbSeed
77
0x00, 0x00, 0x00, 0x00,
78
//p
79
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
80
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
81
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
82
0x00, 0x00, 0x00, 0x01,
83
//A
84
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
85
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
86
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
87
0xFF, 0xFF, 0xFF, 0xFE,
88
//B
89
0xB4, 0x05, 0x0A, 0x85, 0x0C, 0x04, 0xB3, 0xAB,
90
0xF5, 0x41, 0x32, 0x56, 0x50, 0x44, 0xB0, 0xB7,
91
0xD7, 0xBF, 0xD8, 0xBA, 0x27, 0x0B, 0x39, 0x43,
92
0x23, 0x55, 0xFF, 0xB4,
93
//x
94
0xB7, 0x0E, 0x0C, 0xBD, 0x6B, 0xB4, 0xBF, 0x7F,
95
0x32, 0x13, 0x90, 0xB9, 0x4A, 0x03, 0xC1, 0xD3,
96
0x56, 0xC2, 0x11, 0x22, 0x34, 0x32, 0x80, 0xD6,
97
0x11, 0x5C, 0x1D, 0x21,
98
//y
99
0xBD, 0x37, 0x63, 0x88, 0xB5, 0xF7, 0x23, 0xFB,
100
0x4C, 0x22, 0xDF, 0xE6, 0xCD, 0x43, 0x75, 0xA0,
101
0x5A, 0x07, 0x47, 0x64, 0x44, 0xD5, 0x81, 0x99,
102
0x85, 0x00, 0x7E, 0x34,
103
//q
104
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
105
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x16, 0xA2,
106
0xE0, 0xB8, 0xF0, 0x3E, 0x13, 0xDD, 0x29, 0x45,
107
0x5C, 0x5C, 0x2A, 0x3D,
108
//h
109
0x01
110
};
111
112
static const BYTE rgbNistP256[] = {
113
//dwVersion
114
0x01, 0x00, 0x00, 0x00,
115
//dwCurveType
116
0x01, 0x00, 0x00, 0x00,
117
//dwCurveGenerationAlgId
118
0x00, 0x00, 0x00, 0x00,
119
//cbFieldLength
120
0x20, 0x00, 0x00, 0x00,
121
//cbSubgroupOrder
122
0x20, 0x00, 0x00, 0x00,
123
//cbCofactor
124
0x01, 0x00, 0x00, 0x00,
125
//cbSeed
126
0x00, 0x00, 0x00, 0x00,
127
//p
128
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01,
129
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
130
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
131
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
132
//A
133
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01,
134
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
135
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
136
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC,
137
//B
138
0x5A, 0xC6, 0x35, 0xD8, 0xAA, 0x3A, 0x93, 0xE7,
139
0xB3, 0xEB, 0xBD, 0x55, 0x76, 0x98, 0x86, 0xBC,
140
0x65, 0x1D, 0x06, 0xB0, 0xCC, 0x53, 0xB0, 0xF6,
141
0x3B, 0xCE, 0x3C, 0x3E, 0x27, 0xD2, 0x60, 0x4B,
142
//x
143
0x6B, 0x17, 0xD1, 0xF2, 0xE1, 0x2C, 0x42, 0x47,
144
0xF8, 0xBC, 0xE6, 0xE5, 0x63, 0xA4, 0x40, 0xF2,
145
0x77, 0x03, 0x7D, 0x81, 0x2D, 0xEB, 0x33, 0xA0,
146
0xF4, 0xA1, 0x39, 0x45, 0xD8, 0x98, 0xC2, 0x96,
147
//y
148
0x4F, 0xE3, 0x42, 0xE2, 0xFE, 0x1A, 0x7F, 0x9B,
149
0x8E, 0xE7, 0xEB, 0x4A, 0x7C, 0x0F, 0x9E, 0x16,
150
0x2B, 0xCE, 0x33, 0x57, 0x6B, 0x31, 0x5E, 0xCE,
151
0xCB, 0xB6, 0x40, 0x68, 0x37, 0xBF, 0x51, 0xF5,
152
//q
153
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
154
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
155
0xBC, 0xE6, 0xFA, 0xAD, 0xA7, 0x17, 0x9E, 0x84,
156
0xF3, 0xB9, 0xCA, 0xC2, 0xFC, 0x63, 0x25, 0x51,
157
//h
158
0x01
159
};
160
161
static const BYTE rgbNistP384[] = {
162
//dwVersion
163
0x01, 0x00, 0x00, 0x00,
164
//dwCurveType
165
0x01, 0x00, 0x00, 0x00,
166
//dwCurveGenerationAlgId
167
0x00, 0x00, 0x00, 0x00,
168
//cbFieldLength
169
0x30, 0x00, 0x00, 0x00,
170
//cbSubgroupOrder
171
0x30, 0x00, 0x00, 0x00,
172
//cbCofactor
173
0x01, 0x00, 0x00, 0x00,
174
//cbSeed
175
0x00, 0x00, 0x00, 0x00,
176
//p
177
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
178
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
179
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
180
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
181
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
182
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
183
//A
184
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
185
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
186
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
187
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
188
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
189
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFC,
190
//B
191
0xB3, 0x31, 0x2F, 0xA7, 0xE2, 0x3E, 0xE7, 0xE4,
192
0x98, 0x8E, 0x05, 0x6B, 0xE3, 0xF8, 0x2D, 0x19,
193
0x18, 0x1D, 0x9C, 0x6E, 0xFE, 0x81, 0x41, 0x12,
194
0x03, 0x14, 0x08, 0x8F, 0x50, 0x13, 0x87, 0x5A,
195
0xC6, 0x56, 0x39, 0x8D, 0x8A, 0x2E, 0xD1, 0x9D,
196
0x2A, 0x85, 0xC8, 0xED, 0xD3, 0xEC, 0x2A, 0xEF,
197
//x
198
0xAA, 0x87, 0xCA, 0x22, 0xBE, 0x8B, 0x05, 0x37,
199
0x8E, 0xB1, 0xC7, 0x1E, 0xF3, 0x20, 0xAD, 0x74,
200
0x6E, 0x1D, 0x3B, 0x62, 0x8B, 0xA7, 0x9B, 0x98,
201
0x59, 0xF7, 0x41, 0xE0, 0x82, 0x54, 0x2A, 0x38,
202
0x55, 0x02, 0xF2, 0x5D, 0xBF, 0x55, 0x29, 0x6C,
203
0x3A, 0x54, 0x5E, 0x38, 0x72, 0x76, 0x0A, 0xB7,
204
//y
205
0x36, 0x17, 0xDE, 0x4A, 0x96, 0x26, 0x2C, 0x6F,
206
0x5D, 0x9E, 0x98, 0xBF, 0x92, 0x92, 0xDC, 0x29,
207
0xF8, 0xF4, 0x1D, 0xBD, 0x28, 0x9A, 0x14, 0x7C,
208
0xE9, 0xDA, 0x31, 0x13, 0xB5, 0xF0, 0xB8, 0xC0,
209
0x0A, 0x60, 0xB1, 0xCE, 0x1D, 0x7E, 0x81, 0x9D,
210
0x7A, 0x43, 0x1D, 0x7C, 0x90, 0xEA, 0x0E, 0x5F,
211
//q
212
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
213
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
214
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
215
0xC7, 0x63, 0x4D, 0x81, 0xF4, 0x37, 0x2D, 0xDF,
216
0x58, 0x1A, 0x0D, 0xB2, 0x48, 0xB0, 0xA7, 0x7A,
217
0xEC, 0xEC, 0x19, 0x6A, 0xCC, 0xC5, 0x29, 0x73,
218
//h
219
0x01
220
};
221
222
static const BYTE rgbNistP521[] = {
223
//dwVersion
224
0x01, 0x00, 0x00, 0x00,
225
//dwCurveType
226
0x01, 0x00, 0x00, 0x00,
227
//dwCurveGenerationAlgId
228
0x00, 0x00, 0x00, 0x00,
229
//cbFieldLength
230
0x42, 0x00, 0x00, 0x00,
231
//cbSubgroupOrder
232
0x42, 0x00, 0x00, 0x00,
233
//cbCofactor
234
0x01, 0x00, 0x00, 0x00,
235
//cbSeed
236
0x00, 0x00, 0x00, 0x00,
237
//p
238
0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
239
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
240
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
241
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
242
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
243
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
244
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
245
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
246
0xFF, 0xFF,
247
//A
248
0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
249
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
250
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
251
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
252
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
253
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
254
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
255
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
256
0xFF, 0xFC,
257
//B
258
0x00, 0x51, 0x95, 0x3E, 0xB9, 0x61, 0x8E, 0x1C,
259
0x9A, 0x1F, 0x92, 0x9A, 0x21, 0xA0, 0xB6, 0x85,
260
0x40, 0xEE, 0xA2, 0xDA, 0x72, 0x5B, 0x99, 0xB3,
261
0x15, 0xF3, 0xB8, 0xB4, 0x89, 0x91, 0x8E, 0xF1,
262
0x09, 0xE1, 0x56, 0x19, 0x39, 0x51, 0xEC, 0x7E,
263
0x93, 0x7B, 0x16, 0x52, 0xC0, 0xBD, 0x3B, 0xB1,
264
0xBF, 0x07, 0x35, 0x73, 0xDF, 0x88, 0x3D, 0x2C,
265
0x34, 0xF1, 0xEF, 0x45, 0x1F, 0xD4, 0x6B, 0x50,
266
0x3F, 0x00,
267
//x
268
0x00, 0xC6, 0x85, 0x8E, 0x06, 0xB7, 0x04, 0x04,
269
0xE9, 0xCD, 0x9E, 0x3E, 0xCB, 0x66, 0x23, 0x95,
270
0xB4, 0x42, 0x9C, 0x64, 0x81, 0x39, 0x05, 0x3F,
271
0xB5, 0x21, 0xF8, 0x28, 0xAF, 0x60, 0x6B, 0x4D,
272
0x3D, 0xBA, 0xA1, 0x4B, 0x5E, 0x77, 0xEF, 0xE7,
273
0x59, 0x28, 0xFE, 0x1D, 0xC1, 0x27, 0xA2, 0xFF,
274
0xA8, 0xDE, 0x33, 0x48, 0xB3, 0xC1, 0x85, 0x6A,
275
0x42, 0x9B, 0xF9, 0x7E, 0x7E, 0x31, 0xC2, 0xE5,
276
0xBD, 0x66,
277
//y
278
0x01, 0x18, 0x39, 0x29, 0x6A, 0x78, 0x9A, 0x3B,
279
0xC0, 0x04, 0x5C, 0x8A, 0x5F, 0xB4, 0x2C, 0x7D,
280
0x1B, 0xD9, 0x98, 0xF5, 0x44, 0x49, 0x57, 0x9B,
281
0x44, 0x68, 0x17, 0xAF, 0xBD, 0x17, 0x27, 0x3E,
282
0x66, 0x2C, 0x97, 0xEE, 0x72, 0x99, 0x5E, 0xF4,
283
0x26, 0x40, 0xC5, 0x50, 0xB9, 0x01, 0x3F, 0xAD,
284
0x07, 0x61, 0x35, 0x3C, 0x70, 0x86, 0xA2, 0x72,
285
0xC2, 0x40, 0x88, 0xBE, 0x94, 0x76, 0x9F, 0xD1,
286
0x66, 0x50,
287
//q
288
0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
289
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
290
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
291
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
292
0xFF, 0xFA, 0x51, 0x86, 0x87, 0x83, 0xBF, 0x2F,
293
0x96, 0x6B, 0x7F, 0xCC, 0x01, 0x48, 0xF7, 0x09,
294
0xA5, 0xD0, 0x3B, 0xB5, 0xC9, 0xB8, 0x89, 0x9C,
295
0x47, 0xAE, 0xBB, 0x6F, 0xB7, 0x1E, 0x91, 0x38,
296
0x64, 0x09,
297
//h
298
0x01
299
};
300
301
/*****************************************
302
* *
303
* TWISTED EDWARDS CURVES *
304
* *
305
******************************************/
306
static const BYTE rgbNumsP256t1[] = {
307
//dwVersion
308
0x01, 0x00, 0x00, 0x00,
309
//dwCurveType
310
0x02, 0x00, 0x00, 0x00,
311
//dwCurveGenerationAlgId
312
0x00, 0x00, 0x00, 0x00,
313
//cbFieldLength
314
0x20, 0x00, 0x00, 0x00,
315
//cbSubgroupOrder
316
0x20, 0x00, 0x00, 0x00,
317
//cbCofactor
318
0x01, 0x00, 0x00, 0x00,
319
//cbSeed
320
0x00, 0x00, 0x00, 0x00,
321
//p
322
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
323
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
324
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
325
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x43,
326
//A
327
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
328
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
329
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
330
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x42,
331
//d
332
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
333
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
334
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
335
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xEE,
336
//x
337
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
338
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
339
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
340
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D,
341
//y
342
0x7D, 0x0A, 0xB4, 0x1E, 0x2A, 0x12, 0x76, 0xDB,
343
0xA3, 0xD3, 0x30, 0xB3, 0x9F, 0xA0, 0x46, 0xBF,
344
0xBE, 0x2A, 0x6D, 0x63, 0x82, 0x4D, 0x30, 0x3F,
345
0x70, 0x7F, 0x6F, 0xB5, 0x33, 0x1C, 0xAD, 0xBA,
346
//q
347
0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
348
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
349
0xBE, 0x6A, 0xA5, 0x5A, 0xD0, 0xA6, 0xBC, 0x64,
350
0xE5, 0xB8, 0x4E, 0x6F, 0x11, 0x22, 0xB4, 0xAD,
351
//h
352
0x04
353
};
354
355
static const BYTE rgbNumsP384t1[] = {
356
//dwVersion
357
0x01, 0x00, 0x00, 0x00,
358
//dwCurveType
359
0x02, 0x00, 0x00, 0x00,
360
//dwCurveGenerationAlgId
361
0x00, 0x00, 0x00, 0x00,
362
//cbFieldLength
363
0x30, 0x00, 0x00, 0x00,
364
//cbSubgroupOrder
365
0x30, 0x00, 0x00, 0x00,
366
//cbCofactor
367
0x01, 0x00, 0x00, 0x00,
368
//cbSeed
369
0x00, 0x00, 0x00, 0x00,
370
//p
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, 0xFE, 0xC3,
377
//A
378
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
379
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
380
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
381
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
382
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
383
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xC2,
384
//d
385
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
386
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
387
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
388
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
389
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
390
0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x15, 0x8A,
391
//x
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, 0x08,
398
//y
399
0x74, 0x9C, 0xDA, 0xBA, 0x13, 0x6C, 0xE9, 0xB6,
400
0x5B, 0xD4, 0x47, 0x17, 0x94, 0xAA, 0x61, 0x9D,
401
0xAA, 0x5C, 0x7B, 0x4C, 0x93, 0x0B, 0xFF, 0x8E,
402
0xBD, 0x79, 0x8A, 0x8A, 0xE7, 0x53, 0xC6, 0xD7,
403
0x2F, 0x00, 0x38, 0x60, 0xFE, 0xBA, 0xBA, 0xD5,
404
0x34, 0xA4, 0xAC, 0xF5, 0xFA, 0x7F, 0x5B, 0xEE,
405
//q
406
0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
407
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
408
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
409
0xEC, 0xD7, 0xD1, 0x1E, 0xD5, 0xA2, 0x59, 0xA2,
410
0x5A, 0x13, 0xA0, 0x45, 0x8E, 0x39, 0xF4, 0xE4,
411
0x51, 0xD6, 0xD7, 0x1F, 0x70, 0x42, 0x6E, 0x25,
412
//h
413
0x04
414
};
415
416
static const BYTE rgbNumsP512t1[] = {
417
//dwVersion
418
0x01, 0x00, 0x00, 0x00,
419
//dwCurveType
420
0x02, 0x00, 0x00, 0x00,
421
//dwCurveGenerationAlgId
422
0x00, 0x00, 0x00, 0x00,
423
//cbFieldLength
424
0x40, 0x00, 0x00, 0x00,
425
//cbSubgroupOrder
426
0x40, 0x00, 0x00, 0x00,
427
//cbCofactor
428
0x01, 0x00, 0x00, 0x00,
429
//cbSeed
430
0x00, 0x00, 0x00, 0x00,
431
//p
432
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
433
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
434
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
435
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
436
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
437
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
438
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
439
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC7,
440
//A
441
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
442
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
443
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
444
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
445
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
446
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
447
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
448
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC6,
449
//d
450
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
451
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
452
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
453
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
454
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
455
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
456
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
457
0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xBA, 0xA8,
458
//x
459
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
460
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
461
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
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, 0x20,
467
//y
468
0x7D, 0x67, 0xE8, 0x41, 0xDC, 0x4C, 0x46, 0x7B,
469
0x60, 0x50, 0x91, 0xD8, 0x08, 0x69, 0x21, 0x2F,
470
0x9C, 0xEB, 0x12, 0x4B, 0xF7, 0x26, 0x97, 0x3F,
471
0x9F, 0xF0, 0x48, 0x77, 0x9E, 0x1D, 0x61, 0x4E,
472
0x62, 0xAE, 0x2E, 0xCE, 0x50, 0x57, 0xB5, 0xDA,
473
0xD9, 0x6B, 0x7A, 0x89, 0x7C, 0x1D, 0x72, 0x79,
474
0x92, 0x61, 0x13, 0x46, 0x38, 0x75, 0x0F, 0x4F,
475
0x0C, 0xB9, 0x10, 0x27, 0x54, 0x3B, 0x1C, 0x5E,
476
//q
477
0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
478
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
479
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
480
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
481
0xA7, 0xE5, 0x08, 0x09, 0xEF, 0xDA, 0xBB, 0xB9,
482
0xA6, 0x24, 0x78, 0x4F, 0x44, 0x95, 0x45, 0xF0,
483
0xDC, 0xEA, 0x5F, 0xF0, 0xCB, 0x80, 0x0F, 0x89,
484
0x4E, 0x78, 0xD1, 0xCB, 0x0B, 0x5F, 0x01, 0x89,
485
//h
486
0x04
487
};
488
489
490
/************************************
491
* *
492
* MONTGOMERY CURVES *
493
* *
494
*************************************/
495
496
static const BYTE rgbCurve25519[] = {
497
//dwVersion
498
0x02, 0x00, 0x00, 0x00,
499
//dwCurveType
500
0x03, 0x00, 0x00, 0x00,
501
//dwCurveGenerationAlgId
502
0x00, 0x00, 0x00, 0x00,
503
//cbFieldLength
504
0x20, 0x00, 0x00, 0x00,
505
//cbSubgroupOrder
506
0x20, 0x00, 0x00, 0x00,
507
//cbCofactor
508
0x01, 0x00, 0x00, 0x00,
509
//cbSeed
510
0x00, 0x00, 0x00, 0x00,
511
//p
512
0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
513
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
514
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
515
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xED,
516
//A
517
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
518
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
519
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
520
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x6D, 0x06,
521
//B
522
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
523
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
524
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
525
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
526
//x
527
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
528
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
529
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
530
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09,
531
//y
532
0x20, 0xAE, 0x19, 0xA1, 0xB8, 0xA0, 0x86, 0xB4,
533
0xE0, 0x1E, 0xDD, 0x2C, 0x77, 0x48, 0xD1, 0x4C,
534
0x92, 0x3D, 0x4D, 0x7E, 0x6D, 0x7C, 0x61, 0xB2,
535
0x29, 0xE9, 0xC5, 0xA2, 0x7E, 0xCE, 0xD3, 0xD9,
536
//q
537
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
538
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
539
0x14, 0xDE, 0xF9, 0xDE, 0xA2, 0xF7, 0x9C, 0xD6,
540
0x58, 0x12, 0x63, 0x1A, 0x5C, 0xF5, 0xD3, 0xED,
541
//h
542
0x08,
543
544
// Version 2 parameters
545
// PrivateKeyDefaultFormat
546
0x03, 0x00, 0x00, 0x00,
547
// HighBitRestrictionNumOfBits
548
0x02, 0x00, 0x00, 0x00,
549
// HighBitRestrictionPosition
550
0xFE, 0x00, 0x00, 0x00,
551
// HighBitRestrictionValue
552
0x01, 0x00, 0x00, 0x00,
553
};
554
555
#endif // 1
556
557
// Version 2 parameter extension
558
static const SYMCRYPT_ECURVE_PARAMS_V2_EXTENSION paramsV2ExtensionShortWeierstrass =
559
{
560
SYMCRYPT_ECKEY_PRIVATE_FORMAT_CANONICAL,
561
0,
562
0,
563
0,
564
};
565
566
static const SYMCRYPT_ECURVE_PARAMS_V2_EXTENSION paramsV2ExtensionTwistedEdwards =
567
{
568
SYMCRYPT_ECKEY_PRIVATE_FORMAT_DIVH,
569
0,
570
0,
571
0,
572
};
573
574
static const SYMCRYPT_ECURVE_PARAMS_V2_EXTENSION paramsV2ExtensionMontgomery =
575
{
576
SYMCRYPT_ECKEY_PRIVATE_FORMAT_DIVH_TIMESH,
577
0,
578
0,
579
0,
580
};
581
582
// Definitions
583
const PCSYMCRYPT_ECURVE_PARAMS SymCryptEcurveParamsNistP192 = (PCSYMCRYPT_ECURVE_PARAMS) rgbNistP192;
584
const PCSYMCRYPT_ECURVE_PARAMS SymCryptEcurveParamsNistP224 = (PCSYMCRYPT_ECURVE_PARAMS) rgbNistP224;
585
const PCSYMCRYPT_ECURVE_PARAMS SymCryptEcurveParamsNistP256 = (PCSYMCRYPT_ECURVE_PARAMS) rgbNistP256;
586
const PCSYMCRYPT_ECURVE_PARAMS SymCryptEcurveParamsNistP384 = (PCSYMCRYPT_ECURVE_PARAMS) rgbNistP384;
587
const PCSYMCRYPT_ECURVE_PARAMS SymCryptEcurveParamsNistP521 = (PCSYMCRYPT_ECURVE_PARAMS) rgbNistP521;
588
589
const PCSYMCRYPT_ECURVE_PARAMS SymCryptEcurveParamsNumsP256t1 = (PCSYMCRYPT_ECURVE_PARAMS) rgbNumsP256t1;
590
const PCSYMCRYPT_ECURVE_PARAMS SymCryptEcurveParamsNumsP384t1 = (PCSYMCRYPT_ECURVE_PARAMS) rgbNumsP384t1;
591
const PCSYMCRYPT_ECURVE_PARAMS SymCryptEcurveParamsNumsP512t1 = (PCSYMCRYPT_ECURVE_PARAMS) rgbNumsP512t1;
592
593
const PCSYMCRYPT_ECURVE_PARAMS SymCryptEcurveParamsCurve25519 = (PCSYMCRYPT_ECURVE_PARAMS) rgbCurve25519;
594
595
const PCSYMCRYPT_ECURVE_PARAMS_V2_EXTENSION SymCryptEcurveParamsV2ExtensionShortWeierstrass = &paramsV2ExtensionShortWeierstrass;
596
const PCSYMCRYPT_ECURVE_PARAMS_V2_EXTENSION SymCryptEcurveParamsV2ExtensionTwistedEdwards = &paramsV2ExtensionTwistedEdwards;
597
const PCSYMCRYPT_ECURVE_PARAMS_V2_EXTENSION SymCryptEcurveParamsV2ExtensionMontgomery = &paramsV2ExtensionMontgomery;
598
599