net/ena: fix build with GCC 12
[dpdk.git] / drivers / crypto / qat / qat_ec.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2021-2022 Intel Corporation
3  */
4
5 #ifndef _QAT_EC_H_
6 #define _QAT_EC_H_
7
8 #define EC_MAX_SIZE     571
9
10 #include <rte_crypto_asym.h>
11
12 typedef struct {
13         uint8_t data[(EC_MAX_SIZE >> 3) + 1];
14 } buffer;
15
16 enum EC_NAME {
17         SECP256R1       = 1,
18         SECP384R1,
19         SECP521R1,
20 };
21
22 struct elliptic_curve {
23         const char *name;
24         uint32_t bytesize;
25         buffer x;
26         buffer y;
27         buffer n;
28         buffer p;
29         buffer a;
30         buffer b;
31         buffer h;
32 };
33
34 static struct elliptic_curve curve[] = {
35         [SECP256R1] = {
36                 .name = "secp256r1",
37                 .bytesize = 32,
38                 .x = {
39                         .data = {
40                                 0x6B, 0x17, 0xD1, 0xF2, 0xE1, 0x2C, 0x42, 0x47,
41                                 0xF8, 0xBC, 0xE6, 0xE5, 0x63, 0xA4, 0x40, 0xF2,
42                                 0x77, 0x03, 0x7D, 0x81, 0x2D, 0xEB, 0x33, 0xA0,
43                                 0xF4, 0xA1, 0x39, 0x45, 0xD8, 0x98, 0xC2, 0x96,
44                                 },
45                 },
46                 .y = {
47                         .data = {
48                                 0x4F, 0xE3, 0x42, 0xE2, 0xFE, 0x1A, 0x7F, 0x9B,
49                                 0x8E, 0xE7, 0xEB, 0x4A, 0x7C, 0x0F, 0x9E, 0x16,
50                                 0x2B, 0xCE, 0x33, 0x57, 0x6B, 0x31, 0x5E, 0xCE,
51                                 0xCB, 0xB6, 0x40, 0x68, 0x37, 0xBF, 0x51, 0xF5,
52                                 },
53                 },
54                 .n = {
55                         .data = {
56                                 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
57                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
58                                 0xBC, 0xE6, 0xFA, 0xAD, 0xA7, 0x17, 0x9E, 0x84,
59                                 0xF3, 0xB9, 0xCA, 0xC2, 0xFC, 0x63, 0x25, 0x51,
60                                 },
61                 },
62                 .p = {
63                         .data = {
64                                 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01,
65                                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
66                                 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
67                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
68                                 },
69                 },
70                 .a = {
71                         .data = {
72                                 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01,
73                                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
74                                 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
75                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC,
76                                 },
77                 },
78                 .b = {
79                         .data = {
80                                 0x5A, 0xC6, 0x35, 0xD8, 0xAA, 0x3A, 0x93, 0xE7,
81                                 0xB3, 0xEB, 0xBD, 0x55, 0x76, 0x98, 0x86, 0xBC,
82                                 0x65, 0x1D, 0x06, 0xB0, 0xCC, 0x53, 0xB0, 0xF6,
83                                 0x3B, 0xCE, 0x3C, 0x3E, 0x27, 0xD2, 0x60, 0x4B,
84                                 },
85                 },
86                 .h = {
87                         .data = {
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, 0x00,
91                                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
92                                 },
93                 },
94         },
95         [SECP384R1] = {
96                 .name = "secp384r1",
97                 .bytesize = 48,
98                 .x = {
99                         .data = {
100                                 0xAA, 0x87, 0xCA, 0x22, 0xBE, 0x8B, 0x05, 0x37,
101                                 0x8E, 0xB1, 0xC7, 0x1E, 0xF3, 0x20, 0xAD, 0x74,
102                                 0x6E, 0x1D, 0x3B, 0x62, 0x8B, 0xA7, 0x9B, 0x98,
103                                 0x59, 0xF7, 0x41, 0xE0, 0x82, 0x54, 0x2A, 0x38,
104                                 0x55, 0x02, 0xF2, 0x5D, 0xBF, 0x55, 0x29, 0x6C,
105                                 0x3A, 0x54, 0x5E, 0x38, 0x72, 0x76, 0x0A, 0xB7
106                                 },
107                 },
108                 .y = {
109                         .data = {
110                                 0x36, 0x17, 0xDE, 0x4A, 0x96, 0x26, 0x2C, 0x6F,
111                                 0x5D, 0x9E, 0x98, 0xBF, 0x92, 0x92, 0xDC, 0x29,
112                                 0xF8, 0xF4, 0x1D, 0xBD, 0x28, 0x9A, 0x14, 0x7C,
113                                 0xE9, 0xDA, 0x31, 0x13, 0xB5, 0xF0, 0xB8, 0xC0,
114                                 0x0A, 0x60, 0xB1, 0xCE, 0x1D, 0x7E, 0x81, 0x9D,
115                                 0x7A, 0x43, 0x1D, 0x7C, 0x90, 0xEA, 0x0E, 0x5F
116                                 },
117                 },
118                 .n = {
119                         .data = {
120                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
121                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
122                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
123                                 0xC7, 0x63, 0x4D, 0x81, 0xF4, 0x37, 0x2D, 0xDF,
124                                 0x58, 0x1A, 0x0D, 0xB2, 0x48, 0xB0, 0xA7, 0x7A,
125                                 0xEC, 0xEC, 0x19, 0x6A, 0xCC, 0xC5, 0x29, 0x73,
126                                 },
127                 },
128                 .p = {
129                         .data = {
130                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
131                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
132                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
133                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
134                                 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
135                                 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
136                                 },
137                 },
138                 .a = {
139                         .data = {
140                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
141                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
142                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
143                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
144                                 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
145                                 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFC,
146                                 },
147                 },
148                 .b = {
149                         .data = {
150                                 0xB3, 0x31, 0x2F, 0xA7, 0xE2, 0x3E, 0xE7, 0xE4,
151                                 0x98, 0x8E, 0x05, 0x6B, 0xE3, 0xF8, 0x2D, 0x19,
152                                 0x18, 0x1D, 0x9C, 0x6E, 0xFE, 0x81, 0x41, 0x12,
153                                 0x03, 0x14, 0x08, 0x8F, 0x50, 0x13, 0x87, 0x5A,
154                                 0xC6, 0x56, 0x39, 0x8D, 0x8A, 0x2E, 0xD1, 0x9D,
155                                 0x2A, 0x85, 0xC8, 0xED, 0xD3, 0xEC, 0x2A, 0xEF,
156                                 },
157                 },
158                 .h = {
159                         .data = {
160                                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
161                                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
162                                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
163                                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
164                                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
165                                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
166                                 },
167                 },
168         },
169         [SECP521R1] = {
170                 .name = "secp521r1",
171                 .bytesize = 66,
172                 .x = {
173                         .data = {
174                                 0x00, 0xC6, 0x85, 0x8E, 0x06, 0xB7, 0x04, 0x04,
175                                 0xE9, 0xCD, 0x9E, 0x3E, 0xCB, 0x66, 0x23, 0x95,
176                                 0xB4, 0x42, 0x9C, 0x64, 0x81, 0x39, 0x05, 0x3F,
177                                 0xB5, 0x21, 0xF8, 0x28, 0xAF, 0x60, 0x6B, 0x4D,
178                                 0x3D, 0xBA, 0xA1, 0x4B, 0x5E, 0x77, 0xEF, 0xE7,
179                                 0x59, 0x28, 0xFE, 0x1D, 0xC1, 0x27, 0xA2, 0xFF,
180                                 0xA8, 0xDE, 0x33, 0x48, 0xB3, 0xC1, 0x85, 0x6A,
181                                 0x42, 0x9B, 0xF9, 0x7E, 0x7E, 0x31, 0xC2, 0xE5,
182                                 0xBD, 0x66,
183                                 },
184                 },
185                 .y = {
186                         .data = {
187                                 0x01, 0x18, 0x39, 0x29, 0x6A, 0x78, 0x9A, 0x3B,
188                                 0xC0, 0x04, 0x5C, 0x8A, 0x5F, 0xB4, 0x2C, 0x7D,
189                                 0x1B, 0xD9, 0x98, 0xF5, 0x44, 0x49, 0x57, 0x9B,
190                                 0x44, 0x68, 0x17, 0xAF, 0xBD, 0x17, 0x27, 0x3E,
191                                 0x66, 0x2C, 0x97, 0xEE, 0x72, 0x99, 0x5E, 0xF4,
192                                 0x26, 0x40, 0xC5, 0x50, 0xB9, 0x01, 0x3F, 0xAD,
193                                 0x07, 0x61, 0x35, 0x3C, 0x70, 0x86, 0xA2, 0x72,
194                                 0xC2, 0x40, 0x88, 0xBE, 0x94, 0x76, 0x9F, 0xD1,
195                                 0x66, 0x50,
196                                 },
197                 },
198                 .n = {
199                         .data = {
200                                 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
201                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
202                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
203                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
204                                 0xFF, 0xFA, 0x51, 0x86, 0x87, 0x83, 0xBF, 0x2F,
205                                 0x96, 0x6B, 0x7F, 0xCC, 0x01, 0x48, 0xF7, 0x09,
206                                 0xA5, 0xD0, 0x3B, 0xB5, 0xC9, 0xB8, 0x89, 0x9C,
207                                 0x47, 0xAE, 0xBB, 0x6F, 0xB7, 0x1E, 0x91, 0x38,
208                                 0x64, 0x09,
209                                 },
210                 },
211                 .p = {
212                         .data = {
213                                 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
214                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
215                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
216                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
217                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
218                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
219                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
220                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
221                                 0xFF, 0xFF,
222                                 },
223                 },
224                 .a = {
225                         .data = {
226                                 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
227                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
228                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
229                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
230                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
231                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
232                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
233                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
234                                 0xFF, 0xFC,
235                                 },
236                 },
237                 .b = {
238                         .data = {
239                                 0x00, 0x51, 0x95, 0x3E, 0xB9, 0x61, 0x8E, 0x1C,
240                                 0x9A, 0x1F, 0x92, 0x9A, 0x21, 0xA0, 0xB6, 0x85,
241                                 0x40, 0xEE, 0xA2, 0xDA, 0x72, 0x5B, 0x99, 0xB3,
242                                 0x15, 0xF3, 0xB8, 0xB4, 0x89, 0x91, 0x8E, 0xF1,
243                                 0x09, 0xE1, 0x56, 0x19, 0x39, 0x51, 0xEC, 0x7E,
244                                 0x93, 0x7B, 0x16, 0x52, 0xC0, 0xBD, 0x3B, 0xB1,
245                                 0xBF, 0x07, 0x35, 0x73, 0xDF, 0x88, 0x3D, 0x2C,
246                                 0x34, 0xF1, 0xEF, 0x45, 0x1F, 0xD4, 0x6B, 0x50,
247                                 0x3F, 0x00,
248                                 },
249                 },
250                 .h = {
251                         .data = {
252                                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
253                                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
254                                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
255                                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
256                                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
257                                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
258                                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
259                                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
260                                 0x00, 0x01,
261                                 },
262                 },
263         }
264 };
265
266 static int
267 pick_curve(struct rte_crypto_asym_xform *xform)
268 {
269         switch (xform->ec.curve_id) {
270         case RTE_CRYPTO_EC_GROUP_SECP256R1:
271                 return SECP256R1;
272         case RTE_CRYPTO_EC_GROUP_SECP384R1:
273                 return SECP384R1;
274         case RTE_CRYPTO_EC_GROUP_SECP521R1:
275                 return SECP521R1;
276         default:
277                 return -1;
278         }
279 }
280
281 #endif