1*4ed19f0dSVikas Gupta /* SPDX-License-Identifier: BSD-3-Clause
2*4ed19f0dSVikas Gupta * Copyright(c) 2020 Broadcom
3*4ed19f0dSVikas Gupta * All rights reserved.
4*4ed19f0dSVikas Gupta */
5*4ed19f0dSVikas Gupta
6*4ed19f0dSVikas Gupta #include <rte_cryptodev.h>
7*4ed19f0dSVikas Gupta
8*4ed19f0dSVikas Gupta #include "bcmfs_sym_capabilities.h"
9*4ed19f0dSVikas Gupta
10*4ed19f0dSVikas Gupta static const struct rte_cryptodev_capabilities bcmfs_sym_capabilities[] = {
11*4ed19f0dSVikas Gupta {
12*4ed19f0dSVikas Gupta /* SHA1 */
13*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
14*4ed19f0dSVikas Gupta {.sym = {
15*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
16*4ed19f0dSVikas Gupta {.auth = {
17*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AUTH_SHA1,
18*4ed19f0dSVikas Gupta .block_size = 64,
19*4ed19f0dSVikas Gupta .key_size = {
20*4ed19f0dSVikas Gupta .min = 0,
21*4ed19f0dSVikas Gupta .max = 0,
22*4ed19f0dSVikas Gupta .increment = 0
23*4ed19f0dSVikas Gupta },
24*4ed19f0dSVikas Gupta .digest_size = {
25*4ed19f0dSVikas Gupta .min = 20,
26*4ed19f0dSVikas Gupta .max = 20,
27*4ed19f0dSVikas Gupta .increment = 0
28*4ed19f0dSVikas Gupta },
29*4ed19f0dSVikas Gupta .aad_size = { 0 }
30*4ed19f0dSVikas Gupta }, }
31*4ed19f0dSVikas Gupta }, }
32*4ed19f0dSVikas Gupta },
33*4ed19f0dSVikas Gupta {
34*4ed19f0dSVikas Gupta /* MD5 */
35*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
36*4ed19f0dSVikas Gupta {.sym = {
37*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
38*4ed19f0dSVikas Gupta {.auth = {
39*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AUTH_MD5,
40*4ed19f0dSVikas Gupta .block_size = 64,
41*4ed19f0dSVikas Gupta .key_size = {
42*4ed19f0dSVikas Gupta .min = 0,
43*4ed19f0dSVikas Gupta .max = 0,
44*4ed19f0dSVikas Gupta .increment = 0
45*4ed19f0dSVikas Gupta },
46*4ed19f0dSVikas Gupta .digest_size = {
47*4ed19f0dSVikas Gupta .min = 16,
48*4ed19f0dSVikas Gupta .max = 16,
49*4ed19f0dSVikas Gupta .increment = 0
50*4ed19f0dSVikas Gupta },
51*4ed19f0dSVikas Gupta }, }
52*4ed19f0dSVikas Gupta }, }
53*4ed19f0dSVikas Gupta },
54*4ed19f0dSVikas Gupta {
55*4ed19f0dSVikas Gupta /* SHA224 */
56*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
57*4ed19f0dSVikas Gupta {.sym = {
58*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
59*4ed19f0dSVikas Gupta {.auth = {
60*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AUTH_SHA224,
61*4ed19f0dSVikas Gupta .block_size = 64,
62*4ed19f0dSVikas Gupta .key_size = {
63*4ed19f0dSVikas Gupta .min = 0,
64*4ed19f0dSVikas Gupta .max = 0,
65*4ed19f0dSVikas Gupta .increment = 0
66*4ed19f0dSVikas Gupta },
67*4ed19f0dSVikas Gupta .digest_size = {
68*4ed19f0dSVikas Gupta .min = 28,
69*4ed19f0dSVikas Gupta .max = 28,
70*4ed19f0dSVikas Gupta .increment = 0
71*4ed19f0dSVikas Gupta },
72*4ed19f0dSVikas Gupta .aad_size = { 0 }
73*4ed19f0dSVikas Gupta }, }
74*4ed19f0dSVikas Gupta }, }
75*4ed19f0dSVikas Gupta },
76*4ed19f0dSVikas Gupta {
77*4ed19f0dSVikas Gupta /* SHA256 */
78*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
79*4ed19f0dSVikas Gupta {.sym = {
80*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
81*4ed19f0dSVikas Gupta {.auth = {
82*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AUTH_SHA256,
83*4ed19f0dSVikas Gupta .block_size = 64,
84*4ed19f0dSVikas Gupta .key_size = {
85*4ed19f0dSVikas Gupta .min = 0,
86*4ed19f0dSVikas Gupta .max = 0,
87*4ed19f0dSVikas Gupta .increment = 0
88*4ed19f0dSVikas Gupta },
89*4ed19f0dSVikas Gupta .digest_size = {
90*4ed19f0dSVikas Gupta .min = 32,
91*4ed19f0dSVikas Gupta .max = 32,
92*4ed19f0dSVikas Gupta .increment = 0
93*4ed19f0dSVikas Gupta },
94*4ed19f0dSVikas Gupta .aad_size = { 0 }
95*4ed19f0dSVikas Gupta }, }
96*4ed19f0dSVikas Gupta }, }
97*4ed19f0dSVikas Gupta },
98*4ed19f0dSVikas Gupta {
99*4ed19f0dSVikas Gupta /* SHA384 */
100*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
101*4ed19f0dSVikas Gupta {.sym = {
102*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
103*4ed19f0dSVikas Gupta {.auth = {
104*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AUTH_SHA384,
105*4ed19f0dSVikas Gupta .block_size = 64,
106*4ed19f0dSVikas Gupta .key_size = {
107*4ed19f0dSVikas Gupta .min = 0,
108*4ed19f0dSVikas Gupta .max = 0,
109*4ed19f0dSVikas Gupta .increment = 0
110*4ed19f0dSVikas Gupta },
111*4ed19f0dSVikas Gupta .digest_size = {
112*4ed19f0dSVikas Gupta .min = 48,
113*4ed19f0dSVikas Gupta .max = 48,
114*4ed19f0dSVikas Gupta .increment = 0
115*4ed19f0dSVikas Gupta },
116*4ed19f0dSVikas Gupta .aad_size = { 0 }
117*4ed19f0dSVikas Gupta }, }
118*4ed19f0dSVikas Gupta }, }
119*4ed19f0dSVikas Gupta },
120*4ed19f0dSVikas Gupta {
121*4ed19f0dSVikas Gupta /* SHA512 */
122*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
123*4ed19f0dSVikas Gupta {.sym = {
124*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
125*4ed19f0dSVikas Gupta {.auth = {
126*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AUTH_SHA512,
127*4ed19f0dSVikas Gupta .block_size = 64,
128*4ed19f0dSVikas Gupta .key_size = {
129*4ed19f0dSVikas Gupta .min = 0,
130*4ed19f0dSVikas Gupta .max = 0,
131*4ed19f0dSVikas Gupta .increment = 0
132*4ed19f0dSVikas Gupta },
133*4ed19f0dSVikas Gupta .digest_size = {
134*4ed19f0dSVikas Gupta .min = 64,
135*4ed19f0dSVikas Gupta .max = 64,
136*4ed19f0dSVikas Gupta .increment = 0
137*4ed19f0dSVikas Gupta },
138*4ed19f0dSVikas Gupta .aad_size = { 0 }
139*4ed19f0dSVikas Gupta }, }
140*4ed19f0dSVikas Gupta }, }
141*4ed19f0dSVikas Gupta },
142*4ed19f0dSVikas Gupta {
143*4ed19f0dSVikas Gupta /* SHA3_224 */
144*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
145*4ed19f0dSVikas Gupta {.sym = {
146*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
147*4ed19f0dSVikas Gupta {.auth = {
148*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AUTH_SHA3_224,
149*4ed19f0dSVikas Gupta .block_size = 144,
150*4ed19f0dSVikas Gupta .key_size = {
151*4ed19f0dSVikas Gupta .min = 0,
152*4ed19f0dSVikas Gupta .max = 0,
153*4ed19f0dSVikas Gupta .increment = 0
154*4ed19f0dSVikas Gupta },
155*4ed19f0dSVikas Gupta .digest_size = {
156*4ed19f0dSVikas Gupta .min = 28,
157*4ed19f0dSVikas Gupta .max = 28,
158*4ed19f0dSVikas Gupta .increment = 0
159*4ed19f0dSVikas Gupta },
160*4ed19f0dSVikas Gupta .aad_size = { 0 }
161*4ed19f0dSVikas Gupta }, }
162*4ed19f0dSVikas Gupta }, }
163*4ed19f0dSVikas Gupta },
164*4ed19f0dSVikas Gupta {
165*4ed19f0dSVikas Gupta /* SHA3_256 */
166*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
167*4ed19f0dSVikas Gupta {.sym = {
168*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
169*4ed19f0dSVikas Gupta {.auth = {
170*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AUTH_SHA3_256,
171*4ed19f0dSVikas Gupta .block_size = 136,
172*4ed19f0dSVikas Gupta .key_size = {
173*4ed19f0dSVikas Gupta .min = 0,
174*4ed19f0dSVikas Gupta .max = 0,
175*4ed19f0dSVikas Gupta .increment = 0
176*4ed19f0dSVikas Gupta },
177*4ed19f0dSVikas Gupta .digest_size = {
178*4ed19f0dSVikas Gupta .min = 32,
179*4ed19f0dSVikas Gupta .max = 32,
180*4ed19f0dSVikas Gupta .increment = 0
181*4ed19f0dSVikas Gupta },
182*4ed19f0dSVikas Gupta .aad_size = { 0 }
183*4ed19f0dSVikas Gupta }, }
184*4ed19f0dSVikas Gupta }, }
185*4ed19f0dSVikas Gupta },
186*4ed19f0dSVikas Gupta {
187*4ed19f0dSVikas Gupta /* SHA3_384 */
188*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
189*4ed19f0dSVikas Gupta {.sym = {
190*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
191*4ed19f0dSVikas Gupta {.auth = {
192*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AUTH_SHA3_384,
193*4ed19f0dSVikas Gupta .block_size = 104,
194*4ed19f0dSVikas Gupta .key_size = {
195*4ed19f0dSVikas Gupta .min = 0,
196*4ed19f0dSVikas Gupta .max = 0,
197*4ed19f0dSVikas Gupta .increment = 0
198*4ed19f0dSVikas Gupta },
199*4ed19f0dSVikas Gupta .digest_size = {
200*4ed19f0dSVikas Gupta .min = 48,
201*4ed19f0dSVikas Gupta .max = 48,
202*4ed19f0dSVikas Gupta .increment = 0
203*4ed19f0dSVikas Gupta },
204*4ed19f0dSVikas Gupta .aad_size = { 0 }
205*4ed19f0dSVikas Gupta }, }
206*4ed19f0dSVikas Gupta }, }
207*4ed19f0dSVikas Gupta },
208*4ed19f0dSVikas Gupta {
209*4ed19f0dSVikas Gupta /* SHA3_512 */
210*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
211*4ed19f0dSVikas Gupta {.sym = {
212*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
213*4ed19f0dSVikas Gupta {.auth = {
214*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AUTH_SHA3_512,
215*4ed19f0dSVikas Gupta .block_size = 72,
216*4ed19f0dSVikas Gupta .key_size = {
217*4ed19f0dSVikas Gupta .min = 0,
218*4ed19f0dSVikas Gupta .max = 0,
219*4ed19f0dSVikas Gupta .increment = 0
220*4ed19f0dSVikas Gupta },
221*4ed19f0dSVikas Gupta .digest_size = {
222*4ed19f0dSVikas Gupta .min = 64,
223*4ed19f0dSVikas Gupta .max = 64,
224*4ed19f0dSVikas Gupta .increment = 0
225*4ed19f0dSVikas Gupta },
226*4ed19f0dSVikas Gupta .aad_size = { 0 }
227*4ed19f0dSVikas Gupta }, }
228*4ed19f0dSVikas Gupta }, }
229*4ed19f0dSVikas Gupta },
230*4ed19f0dSVikas Gupta {
231*4ed19f0dSVikas Gupta /* SHA1 HMAC */
232*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
233*4ed19f0dSVikas Gupta {.sym = {
234*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
235*4ed19f0dSVikas Gupta {.auth = {
236*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AUTH_SHA1_HMAC,
237*4ed19f0dSVikas Gupta .block_size = 64,
238*4ed19f0dSVikas Gupta .key_size = {
239*4ed19f0dSVikas Gupta .min = 1,
240*4ed19f0dSVikas Gupta .max = 64,
241*4ed19f0dSVikas Gupta .increment = 1
242*4ed19f0dSVikas Gupta },
243*4ed19f0dSVikas Gupta .digest_size = {
244*4ed19f0dSVikas Gupta .min = 20,
245*4ed19f0dSVikas Gupta .max = 20,
246*4ed19f0dSVikas Gupta .increment = 0
247*4ed19f0dSVikas Gupta },
248*4ed19f0dSVikas Gupta .aad_size = { 0 }
249*4ed19f0dSVikas Gupta }, }
250*4ed19f0dSVikas Gupta }, }
251*4ed19f0dSVikas Gupta },
252*4ed19f0dSVikas Gupta {
253*4ed19f0dSVikas Gupta /* MD5 HMAC */
254*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
255*4ed19f0dSVikas Gupta {.sym = {
256*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
257*4ed19f0dSVikas Gupta {.auth = {
258*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AUTH_MD5_HMAC,
259*4ed19f0dSVikas Gupta .block_size = 64,
260*4ed19f0dSVikas Gupta .key_size = {
261*4ed19f0dSVikas Gupta .min = 1,
262*4ed19f0dSVikas Gupta .max = 64,
263*4ed19f0dSVikas Gupta .increment = 1
264*4ed19f0dSVikas Gupta },
265*4ed19f0dSVikas Gupta .digest_size = {
266*4ed19f0dSVikas Gupta .min = 16,
267*4ed19f0dSVikas Gupta .max = 16,
268*4ed19f0dSVikas Gupta .increment = 0
269*4ed19f0dSVikas Gupta },
270*4ed19f0dSVikas Gupta .aad_size = { 0 }
271*4ed19f0dSVikas Gupta }, }
272*4ed19f0dSVikas Gupta }, }
273*4ed19f0dSVikas Gupta },
274*4ed19f0dSVikas Gupta {
275*4ed19f0dSVikas Gupta /* SHA224 HMAC */
276*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
277*4ed19f0dSVikas Gupta {.sym = {
278*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
279*4ed19f0dSVikas Gupta {.auth = {
280*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AUTH_SHA224_HMAC,
281*4ed19f0dSVikas Gupta .block_size = 64,
282*4ed19f0dSVikas Gupta .key_size = {
283*4ed19f0dSVikas Gupta .min = 1,
284*4ed19f0dSVikas Gupta .max = 64,
285*4ed19f0dSVikas Gupta .increment = 1
286*4ed19f0dSVikas Gupta },
287*4ed19f0dSVikas Gupta .digest_size = {
288*4ed19f0dSVikas Gupta .min = 28,
289*4ed19f0dSVikas Gupta .max = 28,
290*4ed19f0dSVikas Gupta .increment = 0
291*4ed19f0dSVikas Gupta },
292*4ed19f0dSVikas Gupta .aad_size = { 0 }
293*4ed19f0dSVikas Gupta }, }
294*4ed19f0dSVikas Gupta }, }
295*4ed19f0dSVikas Gupta },
296*4ed19f0dSVikas Gupta {
297*4ed19f0dSVikas Gupta /* SHA256 HMAC */
298*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
299*4ed19f0dSVikas Gupta {.sym = {
300*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
301*4ed19f0dSVikas Gupta {.auth = {
302*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AUTH_SHA256_HMAC,
303*4ed19f0dSVikas Gupta .block_size = 64,
304*4ed19f0dSVikas Gupta .key_size = {
305*4ed19f0dSVikas Gupta .min = 1,
306*4ed19f0dSVikas Gupta .max = 64,
307*4ed19f0dSVikas Gupta .increment = 1
308*4ed19f0dSVikas Gupta },
309*4ed19f0dSVikas Gupta .digest_size = {
310*4ed19f0dSVikas Gupta .min = 32,
311*4ed19f0dSVikas Gupta .max = 32,
312*4ed19f0dSVikas Gupta .increment = 0
313*4ed19f0dSVikas Gupta },
314*4ed19f0dSVikas Gupta .aad_size = { 0 }
315*4ed19f0dSVikas Gupta }, }
316*4ed19f0dSVikas Gupta }, }
317*4ed19f0dSVikas Gupta },
318*4ed19f0dSVikas Gupta {
319*4ed19f0dSVikas Gupta /* SHA384 HMAC */
320*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
321*4ed19f0dSVikas Gupta {.sym = {
322*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
323*4ed19f0dSVikas Gupta {.auth = {
324*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AUTH_SHA384_HMAC,
325*4ed19f0dSVikas Gupta .block_size = 128,
326*4ed19f0dSVikas Gupta .key_size = {
327*4ed19f0dSVikas Gupta .min = 1,
328*4ed19f0dSVikas Gupta .max = 128,
329*4ed19f0dSVikas Gupta .increment = 1
330*4ed19f0dSVikas Gupta },
331*4ed19f0dSVikas Gupta .digest_size = {
332*4ed19f0dSVikas Gupta .min = 48,
333*4ed19f0dSVikas Gupta .max = 48,
334*4ed19f0dSVikas Gupta .increment = 0
335*4ed19f0dSVikas Gupta },
336*4ed19f0dSVikas Gupta .aad_size = { 0 }
337*4ed19f0dSVikas Gupta }, }
338*4ed19f0dSVikas Gupta }, }
339*4ed19f0dSVikas Gupta },
340*4ed19f0dSVikas Gupta {
341*4ed19f0dSVikas Gupta /* SHA512 HMAC*/
342*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
343*4ed19f0dSVikas Gupta {.sym = {
344*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
345*4ed19f0dSVikas Gupta {.auth = {
346*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AUTH_SHA512_HMAC,
347*4ed19f0dSVikas Gupta .block_size = 128,
348*4ed19f0dSVikas Gupta .key_size = {
349*4ed19f0dSVikas Gupta .min = 1,
350*4ed19f0dSVikas Gupta .max = 128,
351*4ed19f0dSVikas Gupta .increment = 1
352*4ed19f0dSVikas Gupta },
353*4ed19f0dSVikas Gupta .digest_size = {
354*4ed19f0dSVikas Gupta .min = 64,
355*4ed19f0dSVikas Gupta .max = 64,
356*4ed19f0dSVikas Gupta .increment = 0
357*4ed19f0dSVikas Gupta },
358*4ed19f0dSVikas Gupta .aad_size = { 0 }
359*4ed19f0dSVikas Gupta }, }
360*4ed19f0dSVikas Gupta }, }
361*4ed19f0dSVikas Gupta },
362*4ed19f0dSVikas Gupta {
363*4ed19f0dSVikas Gupta /* SHA3_224 HMAC */
364*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
365*4ed19f0dSVikas Gupta {.sym = {
366*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
367*4ed19f0dSVikas Gupta {.auth = {
368*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AUTH_SHA3_224_HMAC,
369*4ed19f0dSVikas Gupta .block_size = 144,
370*4ed19f0dSVikas Gupta .key_size = {
371*4ed19f0dSVikas Gupta .min = 1,
372*4ed19f0dSVikas Gupta .max = 144,
373*4ed19f0dSVikas Gupta .increment = 1
374*4ed19f0dSVikas Gupta },
375*4ed19f0dSVikas Gupta .digest_size = {
376*4ed19f0dSVikas Gupta .min = 28,
377*4ed19f0dSVikas Gupta .max = 28,
378*4ed19f0dSVikas Gupta .increment = 0
379*4ed19f0dSVikas Gupta },
380*4ed19f0dSVikas Gupta .aad_size = { 0 }
381*4ed19f0dSVikas Gupta }, }
382*4ed19f0dSVikas Gupta }, }
383*4ed19f0dSVikas Gupta },
384*4ed19f0dSVikas Gupta {
385*4ed19f0dSVikas Gupta /* SHA3_256 HMAC */
386*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
387*4ed19f0dSVikas Gupta {.sym = {
388*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
389*4ed19f0dSVikas Gupta {.auth = {
390*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AUTH_SHA3_256_HMAC,
391*4ed19f0dSVikas Gupta .block_size = 136,
392*4ed19f0dSVikas Gupta .key_size = {
393*4ed19f0dSVikas Gupta .min = 1,
394*4ed19f0dSVikas Gupta .max = 136,
395*4ed19f0dSVikas Gupta .increment = 1
396*4ed19f0dSVikas Gupta },
397*4ed19f0dSVikas Gupta .digest_size = {
398*4ed19f0dSVikas Gupta .min = 32,
399*4ed19f0dSVikas Gupta .max = 32,
400*4ed19f0dSVikas Gupta .increment = 0
401*4ed19f0dSVikas Gupta },
402*4ed19f0dSVikas Gupta .aad_size = { 0 }
403*4ed19f0dSVikas Gupta }, }
404*4ed19f0dSVikas Gupta }, }
405*4ed19f0dSVikas Gupta },
406*4ed19f0dSVikas Gupta {
407*4ed19f0dSVikas Gupta /* SHA3_384 HMAC */
408*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
409*4ed19f0dSVikas Gupta {.sym = {
410*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
411*4ed19f0dSVikas Gupta {.auth = {
412*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AUTH_SHA3_384_HMAC,
413*4ed19f0dSVikas Gupta .block_size = 104,
414*4ed19f0dSVikas Gupta .key_size = {
415*4ed19f0dSVikas Gupta .min = 1,
416*4ed19f0dSVikas Gupta .max = 104,
417*4ed19f0dSVikas Gupta .increment = 1
418*4ed19f0dSVikas Gupta },
419*4ed19f0dSVikas Gupta .digest_size = {
420*4ed19f0dSVikas Gupta .min = 48,
421*4ed19f0dSVikas Gupta .max = 48,
422*4ed19f0dSVikas Gupta .increment = 0
423*4ed19f0dSVikas Gupta },
424*4ed19f0dSVikas Gupta .aad_size = { 0 }
425*4ed19f0dSVikas Gupta }, }
426*4ed19f0dSVikas Gupta }, }
427*4ed19f0dSVikas Gupta },
428*4ed19f0dSVikas Gupta {
429*4ed19f0dSVikas Gupta /* SHA3_512 HMAC */
430*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
431*4ed19f0dSVikas Gupta {.sym = {
432*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
433*4ed19f0dSVikas Gupta {.auth = {
434*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AUTH_SHA3_512_HMAC,
435*4ed19f0dSVikas Gupta .block_size = 72,
436*4ed19f0dSVikas Gupta .key_size = {
437*4ed19f0dSVikas Gupta .min = 1,
438*4ed19f0dSVikas Gupta .max = 72,
439*4ed19f0dSVikas Gupta .increment = 1
440*4ed19f0dSVikas Gupta },
441*4ed19f0dSVikas Gupta .digest_size = {
442*4ed19f0dSVikas Gupta .min = 64,
443*4ed19f0dSVikas Gupta .max = 64,
444*4ed19f0dSVikas Gupta .increment = 0
445*4ed19f0dSVikas Gupta },
446*4ed19f0dSVikas Gupta .aad_size = { 0 }
447*4ed19f0dSVikas Gupta }, }
448*4ed19f0dSVikas Gupta }, }
449*4ed19f0dSVikas Gupta },
450*4ed19f0dSVikas Gupta {
451*4ed19f0dSVikas Gupta /* AES XCBC MAC */
452*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
453*4ed19f0dSVikas Gupta {.sym = {
454*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
455*4ed19f0dSVikas Gupta {.auth = {
456*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AUTH_AES_XCBC_MAC,
457*4ed19f0dSVikas Gupta .block_size = 16,
458*4ed19f0dSVikas Gupta .key_size = {
459*4ed19f0dSVikas Gupta .min = 1,
460*4ed19f0dSVikas Gupta .max = 16,
461*4ed19f0dSVikas Gupta .increment = 1
462*4ed19f0dSVikas Gupta },
463*4ed19f0dSVikas Gupta .digest_size = {
464*4ed19f0dSVikas Gupta .min = 16,
465*4ed19f0dSVikas Gupta .max = 16,
466*4ed19f0dSVikas Gupta .increment = 0
467*4ed19f0dSVikas Gupta },
468*4ed19f0dSVikas Gupta .aad_size = { 0 }
469*4ed19f0dSVikas Gupta }, }
470*4ed19f0dSVikas Gupta }, }
471*4ed19f0dSVikas Gupta },
472*4ed19f0dSVikas Gupta {
473*4ed19f0dSVikas Gupta /* AES GMAC */
474*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
475*4ed19f0dSVikas Gupta {.sym = {
476*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
477*4ed19f0dSVikas Gupta {.auth = {
478*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AUTH_AES_GMAC,
479*4ed19f0dSVikas Gupta .block_size = 16,
480*4ed19f0dSVikas Gupta .key_size = {
481*4ed19f0dSVikas Gupta .min = 16,
482*4ed19f0dSVikas Gupta .max = 32,
483*4ed19f0dSVikas Gupta .increment = 8
484*4ed19f0dSVikas Gupta },
485*4ed19f0dSVikas Gupta .digest_size = {
486*4ed19f0dSVikas Gupta .min = 16,
487*4ed19f0dSVikas Gupta .max = 16,
488*4ed19f0dSVikas Gupta .increment = 0
489*4ed19f0dSVikas Gupta },
490*4ed19f0dSVikas Gupta .aad_size = {
491*4ed19f0dSVikas Gupta .min = 0,
492*4ed19f0dSVikas Gupta .max = 65535,
493*4ed19f0dSVikas Gupta .increment = 1
494*4ed19f0dSVikas Gupta },
495*4ed19f0dSVikas Gupta .iv_size = {
496*4ed19f0dSVikas Gupta .min = 12,
497*4ed19f0dSVikas Gupta .max = 16,
498*4ed19f0dSVikas Gupta .increment = 4
499*4ed19f0dSVikas Gupta },
500*4ed19f0dSVikas Gupta }, }
501*4ed19f0dSVikas Gupta }, }
502*4ed19f0dSVikas Gupta },
503*4ed19f0dSVikas Gupta {
504*4ed19f0dSVikas Gupta /* AES CMAC */
505*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
506*4ed19f0dSVikas Gupta {.sym = {
507*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
508*4ed19f0dSVikas Gupta {.auth = {
509*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AUTH_AES_CMAC,
510*4ed19f0dSVikas Gupta .block_size = 16,
511*4ed19f0dSVikas Gupta .key_size = {
512*4ed19f0dSVikas Gupta .min = 1,
513*4ed19f0dSVikas Gupta .max = 16,
514*4ed19f0dSVikas Gupta .increment = 1
515*4ed19f0dSVikas Gupta },
516*4ed19f0dSVikas Gupta .digest_size = {
517*4ed19f0dSVikas Gupta .min = 16,
518*4ed19f0dSVikas Gupta .max = 16,
519*4ed19f0dSVikas Gupta .increment = 0
520*4ed19f0dSVikas Gupta },
521*4ed19f0dSVikas Gupta .aad_size = { 0 }
522*4ed19f0dSVikas Gupta }, }
523*4ed19f0dSVikas Gupta }, }
524*4ed19f0dSVikas Gupta },
525*4ed19f0dSVikas Gupta {
526*4ed19f0dSVikas Gupta /* AES CBC MAC */
527*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
528*4ed19f0dSVikas Gupta {.sym = {
529*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
530*4ed19f0dSVikas Gupta {.auth = {
531*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AUTH_AES_CBC_MAC,
532*4ed19f0dSVikas Gupta .block_size = 16,
533*4ed19f0dSVikas Gupta .key_size = {
534*4ed19f0dSVikas Gupta .min = 1,
535*4ed19f0dSVikas Gupta .max = 16,
536*4ed19f0dSVikas Gupta .increment = 1
537*4ed19f0dSVikas Gupta },
538*4ed19f0dSVikas Gupta .digest_size = {
539*4ed19f0dSVikas Gupta .min = 16,
540*4ed19f0dSVikas Gupta .max = 16,
541*4ed19f0dSVikas Gupta .increment = 0
542*4ed19f0dSVikas Gupta },
543*4ed19f0dSVikas Gupta .aad_size = { 0 }
544*4ed19f0dSVikas Gupta }, }
545*4ed19f0dSVikas Gupta }, }
546*4ed19f0dSVikas Gupta },
547*4ed19f0dSVikas Gupta {
548*4ed19f0dSVikas Gupta /* AES ECB */
549*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
550*4ed19f0dSVikas Gupta {.sym = {
551*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
552*4ed19f0dSVikas Gupta {.cipher = {
553*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_CIPHER_AES_ECB,
554*4ed19f0dSVikas Gupta .block_size = 16,
555*4ed19f0dSVikas Gupta .key_size = {
556*4ed19f0dSVikas Gupta .min = 16,
557*4ed19f0dSVikas Gupta .max = 32,
558*4ed19f0dSVikas Gupta .increment = 8
559*4ed19f0dSVikas Gupta },
560*4ed19f0dSVikas Gupta .iv_size = {
561*4ed19f0dSVikas Gupta .min = 0,
562*4ed19f0dSVikas Gupta .max = 0,
563*4ed19f0dSVikas Gupta .increment = 0
564*4ed19f0dSVikas Gupta }
565*4ed19f0dSVikas Gupta }, }
566*4ed19f0dSVikas Gupta }, }
567*4ed19f0dSVikas Gupta },
568*4ed19f0dSVikas Gupta {
569*4ed19f0dSVikas Gupta /* AES CBC */
570*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
571*4ed19f0dSVikas Gupta {.sym = {
572*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
573*4ed19f0dSVikas Gupta {.cipher = {
574*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_CIPHER_AES_CBC,
575*4ed19f0dSVikas Gupta .block_size = 16,
576*4ed19f0dSVikas Gupta .key_size = {
577*4ed19f0dSVikas Gupta .min = 16,
578*4ed19f0dSVikas Gupta .max = 32,
579*4ed19f0dSVikas Gupta .increment = 8
580*4ed19f0dSVikas Gupta },
581*4ed19f0dSVikas Gupta .iv_size = {
582*4ed19f0dSVikas Gupta .min = 16,
583*4ed19f0dSVikas Gupta .max = 16,
584*4ed19f0dSVikas Gupta .increment = 0
585*4ed19f0dSVikas Gupta }
586*4ed19f0dSVikas Gupta }, }
587*4ed19f0dSVikas Gupta }, }
588*4ed19f0dSVikas Gupta },
589*4ed19f0dSVikas Gupta {
590*4ed19f0dSVikas Gupta /* AES CTR */
591*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
592*4ed19f0dSVikas Gupta {.sym = {
593*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
594*4ed19f0dSVikas Gupta {.cipher = {
595*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_CIPHER_AES_CTR,
596*4ed19f0dSVikas Gupta .block_size = 16,
597*4ed19f0dSVikas Gupta .key_size = {
598*4ed19f0dSVikas Gupta .min = 16,
599*4ed19f0dSVikas Gupta .max = 32,
600*4ed19f0dSVikas Gupta .increment = 8
601*4ed19f0dSVikas Gupta },
602*4ed19f0dSVikas Gupta .iv_size = {
603*4ed19f0dSVikas Gupta .min = 16,
604*4ed19f0dSVikas Gupta .max = 16,
605*4ed19f0dSVikas Gupta .increment = 0
606*4ed19f0dSVikas Gupta }
607*4ed19f0dSVikas Gupta }, }
608*4ed19f0dSVikas Gupta }, }
609*4ed19f0dSVikas Gupta },
610*4ed19f0dSVikas Gupta {
611*4ed19f0dSVikas Gupta /* AES XTS */
612*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
613*4ed19f0dSVikas Gupta {.sym = {
614*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
615*4ed19f0dSVikas Gupta {.cipher = {
616*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_CIPHER_AES_XTS,
617*4ed19f0dSVikas Gupta .block_size = 16,
618*4ed19f0dSVikas Gupta .key_size = {
619*4ed19f0dSVikas Gupta .min = 32,
620*4ed19f0dSVikas Gupta .max = 64,
621*4ed19f0dSVikas Gupta .increment = 32
622*4ed19f0dSVikas Gupta },
623*4ed19f0dSVikas Gupta .iv_size = {
624*4ed19f0dSVikas Gupta .min = 16,
625*4ed19f0dSVikas Gupta .max = 16,
626*4ed19f0dSVikas Gupta .increment = 0
627*4ed19f0dSVikas Gupta }
628*4ed19f0dSVikas Gupta }, }
629*4ed19f0dSVikas Gupta }, }
630*4ed19f0dSVikas Gupta },
631*4ed19f0dSVikas Gupta {
632*4ed19f0dSVikas Gupta /* DES CBC */
633*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
634*4ed19f0dSVikas Gupta {.sym = {
635*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
636*4ed19f0dSVikas Gupta {.cipher = {
637*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_CIPHER_DES_CBC,
638*4ed19f0dSVikas Gupta .block_size = 8,
639*4ed19f0dSVikas Gupta .key_size = {
640*4ed19f0dSVikas Gupta .min = 8,
641*4ed19f0dSVikas Gupta .max = 8,
642*4ed19f0dSVikas Gupta .increment = 0
643*4ed19f0dSVikas Gupta },
644*4ed19f0dSVikas Gupta .iv_size = {
645*4ed19f0dSVikas Gupta .min = 16,
646*4ed19f0dSVikas Gupta .max = 16,
647*4ed19f0dSVikas Gupta .increment = 0
648*4ed19f0dSVikas Gupta }
649*4ed19f0dSVikas Gupta }, }
650*4ed19f0dSVikas Gupta }, }
651*4ed19f0dSVikas Gupta },
652*4ed19f0dSVikas Gupta {
653*4ed19f0dSVikas Gupta /* 3DES CBC */
654*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
655*4ed19f0dSVikas Gupta {.sym = {
656*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
657*4ed19f0dSVikas Gupta {.cipher = {
658*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_CIPHER_3DES_CBC,
659*4ed19f0dSVikas Gupta .block_size = 8,
660*4ed19f0dSVikas Gupta .key_size = {
661*4ed19f0dSVikas Gupta .min = 24,
662*4ed19f0dSVikas Gupta .max = 24,
663*4ed19f0dSVikas Gupta .increment = 0
664*4ed19f0dSVikas Gupta },
665*4ed19f0dSVikas Gupta .iv_size = {
666*4ed19f0dSVikas Gupta .min = 16,
667*4ed19f0dSVikas Gupta .max = 16,
668*4ed19f0dSVikas Gupta .increment = 0
669*4ed19f0dSVikas Gupta }
670*4ed19f0dSVikas Gupta }, }
671*4ed19f0dSVikas Gupta }, }
672*4ed19f0dSVikas Gupta },
673*4ed19f0dSVikas Gupta {
674*4ed19f0dSVikas Gupta /* 3DES ECB */
675*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
676*4ed19f0dSVikas Gupta {.sym = {
677*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
678*4ed19f0dSVikas Gupta {.cipher = {
679*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_CIPHER_3DES_ECB,
680*4ed19f0dSVikas Gupta .block_size = 8,
681*4ed19f0dSVikas Gupta .key_size = {
682*4ed19f0dSVikas Gupta .min = 24,
683*4ed19f0dSVikas Gupta .max = 24,
684*4ed19f0dSVikas Gupta .increment = 0
685*4ed19f0dSVikas Gupta },
686*4ed19f0dSVikas Gupta .iv_size = {
687*4ed19f0dSVikas Gupta .min = 0,
688*4ed19f0dSVikas Gupta .max = 0,
689*4ed19f0dSVikas Gupta .increment = 0
690*4ed19f0dSVikas Gupta }
691*4ed19f0dSVikas Gupta }, }
692*4ed19f0dSVikas Gupta }, }
693*4ed19f0dSVikas Gupta },
694*4ed19f0dSVikas Gupta {
695*4ed19f0dSVikas Gupta /* AES GCM */
696*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
697*4ed19f0dSVikas Gupta {.sym = {
698*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,
699*4ed19f0dSVikas Gupta {.aead = {
700*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AEAD_AES_GCM,
701*4ed19f0dSVikas Gupta .block_size = 16,
702*4ed19f0dSVikas Gupta .key_size = {
703*4ed19f0dSVikas Gupta .min = 16,
704*4ed19f0dSVikas Gupta .max = 32,
705*4ed19f0dSVikas Gupta .increment = 8
706*4ed19f0dSVikas Gupta },
707*4ed19f0dSVikas Gupta .digest_size = {
708*4ed19f0dSVikas Gupta .min = 16,
709*4ed19f0dSVikas Gupta .max = 16,
710*4ed19f0dSVikas Gupta .increment = 0
711*4ed19f0dSVikas Gupta },
712*4ed19f0dSVikas Gupta .aad_size = {
713*4ed19f0dSVikas Gupta .min = 0,
714*4ed19f0dSVikas Gupta .max = 65535,
715*4ed19f0dSVikas Gupta .increment = 1
716*4ed19f0dSVikas Gupta },
717*4ed19f0dSVikas Gupta .iv_size = {
718*4ed19f0dSVikas Gupta .min = 12,
719*4ed19f0dSVikas Gupta .max = 16,
720*4ed19f0dSVikas Gupta .increment = 4
721*4ed19f0dSVikas Gupta },
722*4ed19f0dSVikas Gupta }, }
723*4ed19f0dSVikas Gupta }, }
724*4ed19f0dSVikas Gupta },
725*4ed19f0dSVikas Gupta {
726*4ed19f0dSVikas Gupta /* AES CCM */
727*4ed19f0dSVikas Gupta .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
728*4ed19f0dSVikas Gupta {.sym = {
729*4ed19f0dSVikas Gupta .xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,
730*4ed19f0dSVikas Gupta {.aead = {
731*4ed19f0dSVikas Gupta .algo = RTE_CRYPTO_AEAD_AES_CCM,
732*4ed19f0dSVikas Gupta .block_size = 16,
733*4ed19f0dSVikas Gupta .key_size = {
734*4ed19f0dSVikas Gupta .min = 16,
735*4ed19f0dSVikas Gupta .max = 32,
736*4ed19f0dSVikas Gupta .increment = 8
737*4ed19f0dSVikas Gupta },
738*4ed19f0dSVikas Gupta .digest_size = {
739*4ed19f0dSVikas Gupta .min = 4,
740*4ed19f0dSVikas Gupta .max = 16,
741*4ed19f0dSVikas Gupta .increment = 2
742*4ed19f0dSVikas Gupta },
743*4ed19f0dSVikas Gupta .aad_size = {
744*4ed19f0dSVikas Gupta .min = 0,
745*4ed19f0dSVikas Gupta .max = 65535,
746*4ed19f0dSVikas Gupta .increment = 1
747*4ed19f0dSVikas Gupta },
748*4ed19f0dSVikas Gupta .iv_size = {
749*4ed19f0dSVikas Gupta .min = 7,
750*4ed19f0dSVikas Gupta .max = 13,
751*4ed19f0dSVikas Gupta .increment = 1
752*4ed19f0dSVikas Gupta },
753*4ed19f0dSVikas Gupta }, }
754*4ed19f0dSVikas Gupta }, }
755*4ed19f0dSVikas Gupta },
756*4ed19f0dSVikas Gupta
757*4ed19f0dSVikas Gupta RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST()
758*4ed19f0dSVikas Gupta };
759*4ed19f0dSVikas Gupta
760*4ed19f0dSVikas Gupta const struct rte_cryptodev_capabilities *
bcmfs_sym_get_capabilities(void)761*4ed19f0dSVikas Gupta bcmfs_sym_get_capabilities(void)
762*4ed19f0dSVikas Gupta {
763*4ed19f0dSVikas Gupta return bcmfs_sym_capabilities;
764*4ed19f0dSVikas Gupta }
765