ReactOS 0.4.17-dev-1005-g171e1de
ec_internal_curve_params.c
Go to the documentation of this file.
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
20static 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
63static 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
112static 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
161static 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
222static 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******************************************/
306static 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
355static 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
416static 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
496static 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
559{
561 0,
562 0,
563 0,
564};
565
567{
569 0,
570 0,
571 0,
572};
573
575{
577 0,
578 0,
579 0,
580};
581
582// Definitions
588
592
594
static const BYTE rgbNistP521[]
const PCSYMCRYPT_ECURVE_PARAMS_V2_EXTENSION SymCryptEcurveParamsV2ExtensionShortWeierstrass
static const BYTE rgbNistP192[]
const PCSYMCRYPT_ECURVE_PARAMS SymCryptEcurveParamsNistP521
static const BYTE rgbNumsP384t1[]
const PCSYMCRYPT_ECURVE_PARAMS_V2_EXTENSION SymCryptEcurveParamsV2ExtensionMontgomery
const PCSYMCRYPT_ECURVE_PARAMS SymCryptEcurveParamsNistP384
static const BYTE rgbNistP384[]
const PCSYMCRYPT_ECURVE_PARAMS SymCryptEcurveParamsNumsP384t1
static const BYTE rgbNumsP256t1[]
const PCSYMCRYPT_ECURVE_PARAMS SymCryptEcurveParamsNistP192
const PCSYMCRYPT_ECURVE_PARAMS SymCryptEcurveParamsNumsP256t1
static const BYTE rgbNistP256[]
static const BYTE rgbCurve25519[]
static const SYMCRYPT_ECURVE_PARAMS_V2_EXTENSION paramsV2ExtensionMontgomery
const PCSYMCRYPT_ECURVE_PARAMS SymCryptEcurveParamsNistP256
const PCSYMCRYPT_ECURVE_PARAMS SymCryptEcurveParamsCurve25519
static const SYMCRYPT_ECURVE_PARAMS_V2_EXTENSION paramsV2ExtensionShortWeierstrass
const PCSYMCRYPT_ECURVE_PARAMS_V2_EXTENSION SymCryptEcurveParamsV2ExtensionTwistedEdwards
static const SYMCRYPT_ECURVE_PARAMS_V2_EXTENSION paramsV2ExtensionTwistedEdwards
const PCSYMCRYPT_ECURVE_PARAMS SymCryptEcurveParamsNistP224
const PCSYMCRYPT_ECURVE_PARAMS SymCryptEcurveParamsNumsP512t1
static const BYTE rgbNumsP512t1[]
static const BYTE rgbNistP224[]
const SYMCRYPT_ECURVE_PARAMS * PCSYMCRYPT_ECURVE_PARAMS
Definition: symcrypt.h:7187
@ SYMCRYPT_ECKEY_PRIVATE_FORMAT_DIVH_TIMESH
Definition: symcrypt.h:7132
@ SYMCRYPT_ECKEY_PRIVATE_FORMAT_CANONICAL
Definition: symcrypt.h:7130
@ SYMCRYPT_ECKEY_PRIVATE_FORMAT_DIVH
Definition: symcrypt.h:7131
unsigned char BYTE
Definition: xxhash.c:193