crypto/qat: refactor asym algorithm macros and logs
[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         [SECP521R1] = {
96                 .name = "secp521r1",
97                 .bytesize = 66,
98                 .x = {
99                         .data = {
100                                 0x00, 0xC6, 0x85, 0x8E, 0x06, 0xB7, 0x04, 0x04,
101                                 0xE9, 0xCD, 0x9E, 0x3E, 0xCB, 0x66, 0x23, 0x95,
102                                 0xB4, 0x42, 0x9C, 0x64, 0x81, 0x39, 0x05, 0x3F,
103                                 0xB5, 0x21, 0xF8, 0x28, 0xAF, 0x60, 0x6B, 0x4D,
104                                 0x3D, 0xBA, 0xA1, 0x4B, 0x5E, 0x77, 0xEF, 0xE7,
105                                 0x59, 0x28, 0xFE, 0x1D, 0xC1, 0x27, 0xA2, 0xFF,
106                                 0xA8, 0xDE, 0x33, 0x48, 0xB3, 0xC1, 0x85, 0x6A,
107                                 0x42, 0x9B, 0xF9, 0x7E, 0x7E, 0x31, 0xC2, 0xE5,
108                                 0xBD, 0x66,
109                                 },
110                 },
111                 .y = {
112                         .data = {
113                                 0x01, 0x18, 0x39, 0x29, 0x6A, 0x78, 0x9A, 0x3B,
114                                 0xC0, 0x04, 0x5C, 0x8A, 0x5F, 0xB4, 0x2C, 0x7D,
115                                 0x1B, 0xD9, 0x98, 0xF5, 0x44, 0x49, 0x57, 0x9B,
116                                 0x44, 0x68, 0x17, 0xAF, 0xBD, 0x17, 0x27, 0x3E,
117                                 0x66, 0x2C, 0x97, 0xEE, 0x72, 0x99, 0x5E, 0xF4,
118                                 0x26, 0x40, 0xC5, 0x50, 0xB9, 0x01, 0x3F, 0xAD,
119                                 0x07, 0x61, 0x35, 0x3C, 0x70, 0x86, 0xA2, 0x72,
120                                 0xC2, 0x40, 0x88, 0xBE, 0x94, 0x76, 0x9F, 0xD1,
121                                 0x66, 0x50,
122                                 },
123                 },
124                 .n = {
125                         .data = {
126                                 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
127                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
128                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
129                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
130                                 0xFF, 0xFA, 0x51, 0x86, 0x87, 0x83, 0xBF, 0x2F,
131                                 0x96, 0x6B, 0x7F, 0xCC, 0x01, 0x48, 0xF7, 0x09,
132                                 0xA5, 0xD0, 0x3B, 0xB5, 0xC9, 0xB8, 0x89, 0x9C,
133                                 0x47, 0xAE, 0xBB, 0x6F, 0xB7, 0x1E, 0x91, 0x38,
134                                 0x64, 0x09,
135                                 },
136                 },
137                 .p = {
138                         .data = {
139                                 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
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, 0xFF,
144                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
145                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
146                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
147                                 0xFF, 0xFF,
148                                 },
149                 },
150                 .a = {
151                         .data = {
152                                 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
153                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
154                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
155                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
156                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
157                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
158                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
159                                 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
160                                 0xFF, 0xFC,
161                                 },
162                 },
163                 .b = {
164                         .data = {
165                                 0x00, 0x51, 0x95, 0x3E, 0xB9, 0x61, 0x8E, 0x1C,
166                                 0x9A, 0x1F, 0x92, 0x9A, 0x21, 0xA0, 0xB6, 0x85,
167                                 0x40, 0xEE, 0xA2, 0xDA, 0x72, 0x5B, 0x99, 0xB3,
168                                 0x15, 0xF3, 0xB8, 0xB4, 0x89, 0x91, 0x8E, 0xF1,
169                                 0x09, 0xE1, 0x56, 0x19, 0x39, 0x51, 0xEC, 0x7E,
170                                 0x93, 0x7B, 0x16, 0x52, 0xC0, 0xBD, 0x3B, 0xB1,
171                                 0xBF, 0x07, 0x35, 0x73, 0xDF, 0x88, 0x3D, 0x2C,
172                                 0x34, 0xF1, 0xEF, 0x45, 0x1F, 0xD4, 0x6B, 0x50,
173                                 0x3F, 0x00,
174                                 },
175                 },
176                 .h = {
177                         .data = {
178                                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
179                                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
180                                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
181                                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
182                                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
183                                 0x00, 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, 0x01,
187                                 },
188                 },
189         }
190 };
191
192 static int
193 pick_curve(struct rte_crypto_asym_xform *xform)
194 {
195         switch (xform->ec.curve_id) {
196         case RTE_CRYPTO_EC_GROUP_SECP256R1:
197                 return SECP256R1;
198         case RTE_CRYPTO_EC_GROUP_SECP521R1:
199                 return SECP521R1;
200         default:
201                 return -1;
202         }
203 }
204
205 #endif