xref: /dpdk/drivers/crypto/octeontx/otx_cryptodev_capabilities.c (revision ef82c2e8ab78fe3c8167ed6ea2e3674a30d04118)
1*ef82c2e8SAnkur Dwivedi /* SPDX-License-Identifier: BSD-3-Clause
2*ef82c2e8SAnkur Dwivedi  * Copyright(c) 2018 Cavium, Inc
3*ef82c2e8SAnkur Dwivedi  */
4*ef82c2e8SAnkur Dwivedi 
5*ef82c2e8SAnkur Dwivedi #include <rte_cryptodev.h>
6*ef82c2e8SAnkur Dwivedi 
7*ef82c2e8SAnkur Dwivedi #include "otx_cryptodev_capabilities.h"
8*ef82c2e8SAnkur Dwivedi 
9*ef82c2e8SAnkur Dwivedi static const struct rte_cryptodev_capabilities otx_capabilities[] = {
10*ef82c2e8SAnkur Dwivedi 	/* Symmetric capabilities */
11*ef82c2e8SAnkur Dwivedi 	{	/* NULL (AUTH) */
12*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
13*ef82c2e8SAnkur Dwivedi 		{.sym = {
14*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
15*ef82c2e8SAnkur Dwivedi 			{.auth = {
16*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_AUTH_NULL,
17*ef82c2e8SAnkur Dwivedi 				.block_size = 1,
18*ef82c2e8SAnkur Dwivedi 				.key_size = {
19*ef82c2e8SAnkur Dwivedi 					.min = 0,
20*ef82c2e8SAnkur Dwivedi 					.max = 0,
21*ef82c2e8SAnkur Dwivedi 					.increment = 0
22*ef82c2e8SAnkur Dwivedi 				},
23*ef82c2e8SAnkur Dwivedi 				.digest_size = {
24*ef82c2e8SAnkur Dwivedi 					.min = 0,
25*ef82c2e8SAnkur Dwivedi 					.max = 0,
26*ef82c2e8SAnkur Dwivedi 					.increment = 0
27*ef82c2e8SAnkur Dwivedi 				},
28*ef82c2e8SAnkur Dwivedi 			}, },
29*ef82c2e8SAnkur Dwivedi 		}, },
30*ef82c2e8SAnkur Dwivedi 	},
31*ef82c2e8SAnkur Dwivedi 	{	/* AES GMAC (AUTH) */
32*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
33*ef82c2e8SAnkur Dwivedi 		{.sym = {
34*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
35*ef82c2e8SAnkur Dwivedi 			{.auth = {
36*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_AUTH_AES_GMAC,
37*ef82c2e8SAnkur Dwivedi 				.block_size = 16,
38*ef82c2e8SAnkur Dwivedi 				.key_size = {
39*ef82c2e8SAnkur Dwivedi 					.min = 16,
40*ef82c2e8SAnkur Dwivedi 					.max = 32,
41*ef82c2e8SAnkur Dwivedi 					.increment = 8
42*ef82c2e8SAnkur Dwivedi 				},
43*ef82c2e8SAnkur Dwivedi 				.digest_size = {
44*ef82c2e8SAnkur Dwivedi 					.min = 8,
45*ef82c2e8SAnkur Dwivedi 					.max = 16,
46*ef82c2e8SAnkur Dwivedi 					.increment = 4
47*ef82c2e8SAnkur Dwivedi 				},
48*ef82c2e8SAnkur Dwivedi 				.iv_size = {
49*ef82c2e8SAnkur Dwivedi 					.min = 12,
50*ef82c2e8SAnkur Dwivedi 					.max = 12,
51*ef82c2e8SAnkur Dwivedi 					.increment = 0
52*ef82c2e8SAnkur Dwivedi 				}
53*ef82c2e8SAnkur Dwivedi 			}, }
54*ef82c2e8SAnkur Dwivedi 		}, }
55*ef82c2e8SAnkur Dwivedi 	},
56*ef82c2e8SAnkur Dwivedi 	{	/* KASUMI (F9) */
57*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
58*ef82c2e8SAnkur Dwivedi 		{.sym = {
59*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
60*ef82c2e8SAnkur Dwivedi 			{.auth = {
61*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_AUTH_KASUMI_F9,
62*ef82c2e8SAnkur Dwivedi 				.block_size = 8,
63*ef82c2e8SAnkur Dwivedi 				.key_size = {
64*ef82c2e8SAnkur Dwivedi 					.min = 16,
65*ef82c2e8SAnkur Dwivedi 					.max = 16,
66*ef82c2e8SAnkur Dwivedi 					.increment = 0
67*ef82c2e8SAnkur Dwivedi 				},
68*ef82c2e8SAnkur Dwivedi 				.digest_size = {
69*ef82c2e8SAnkur Dwivedi 					.min = 4,
70*ef82c2e8SAnkur Dwivedi 					.max = 4,
71*ef82c2e8SAnkur Dwivedi 					.increment = 0
72*ef82c2e8SAnkur Dwivedi 				},
73*ef82c2e8SAnkur Dwivedi 			}, }
74*ef82c2e8SAnkur Dwivedi 		}, }
75*ef82c2e8SAnkur Dwivedi 	},
76*ef82c2e8SAnkur Dwivedi 	{	/* MD5 */
77*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
78*ef82c2e8SAnkur Dwivedi 		{.sym = {
79*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
80*ef82c2e8SAnkur Dwivedi 			{.auth = {
81*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_AUTH_MD5,
82*ef82c2e8SAnkur Dwivedi 				.block_size = 64,
83*ef82c2e8SAnkur Dwivedi 				.key_size = {
84*ef82c2e8SAnkur Dwivedi 					.min = 0,
85*ef82c2e8SAnkur Dwivedi 					.max = 0,
86*ef82c2e8SAnkur Dwivedi 					.increment = 0
87*ef82c2e8SAnkur Dwivedi 				},
88*ef82c2e8SAnkur Dwivedi 				.digest_size = {
89*ef82c2e8SAnkur Dwivedi 					.min = 1,
90*ef82c2e8SAnkur Dwivedi 					.max = 16,
91*ef82c2e8SAnkur Dwivedi 					.increment = 1
92*ef82c2e8SAnkur Dwivedi 				},
93*ef82c2e8SAnkur Dwivedi 			}, }
94*ef82c2e8SAnkur Dwivedi 		}, }
95*ef82c2e8SAnkur Dwivedi 	},
96*ef82c2e8SAnkur Dwivedi 	{	/* MD5 HMAC */
97*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
98*ef82c2e8SAnkur Dwivedi 		{.sym = {
99*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
100*ef82c2e8SAnkur Dwivedi 			{.auth = {
101*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_AUTH_MD5_HMAC,
102*ef82c2e8SAnkur Dwivedi 				.block_size = 64,
103*ef82c2e8SAnkur Dwivedi 				.key_size = {
104*ef82c2e8SAnkur Dwivedi 					.min = 8,
105*ef82c2e8SAnkur Dwivedi 					.max = 64,
106*ef82c2e8SAnkur Dwivedi 					.increment = 8
107*ef82c2e8SAnkur Dwivedi 				},
108*ef82c2e8SAnkur Dwivedi 				.digest_size = {
109*ef82c2e8SAnkur Dwivedi 					.min = 1,
110*ef82c2e8SAnkur Dwivedi 					.max = 16,
111*ef82c2e8SAnkur Dwivedi 					.increment = 1
112*ef82c2e8SAnkur Dwivedi 				},
113*ef82c2e8SAnkur Dwivedi 			}, }
114*ef82c2e8SAnkur Dwivedi 		}, }
115*ef82c2e8SAnkur Dwivedi 	},
116*ef82c2e8SAnkur Dwivedi 	{	/* SHA1 */
117*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
118*ef82c2e8SAnkur Dwivedi 		{.sym = {
119*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
120*ef82c2e8SAnkur Dwivedi 			{.auth = {
121*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_AUTH_SHA1,
122*ef82c2e8SAnkur Dwivedi 				.block_size = 64,
123*ef82c2e8SAnkur Dwivedi 				.key_size = {
124*ef82c2e8SAnkur Dwivedi 					.min = 0,
125*ef82c2e8SAnkur Dwivedi 					.max = 0,
126*ef82c2e8SAnkur Dwivedi 					.increment = 0
127*ef82c2e8SAnkur Dwivedi 				},
128*ef82c2e8SAnkur Dwivedi 				.digest_size = {
129*ef82c2e8SAnkur Dwivedi 					.min = 1,
130*ef82c2e8SAnkur Dwivedi 					.max = 20,
131*ef82c2e8SAnkur Dwivedi 					.increment = 1
132*ef82c2e8SAnkur Dwivedi 				},
133*ef82c2e8SAnkur Dwivedi 			}, }
134*ef82c2e8SAnkur Dwivedi 		}, }
135*ef82c2e8SAnkur Dwivedi 	},
136*ef82c2e8SAnkur Dwivedi 	{	/* SHA1 HMAC */
137*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
138*ef82c2e8SAnkur Dwivedi 		{.sym = {
139*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
140*ef82c2e8SAnkur Dwivedi 			{.auth = {
141*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_AUTH_SHA1_HMAC,
142*ef82c2e8SAnkur Dwivedi 				.block_size = 64,
143*ef82c2e8SAnkur Dwivedi 				.key_size = {
144*ef82c2e8SAnkur Dwivedi 					.min = 64,
145*ef82c2e8SAnkur Dwivedi 					.max = 64,
146*ef82c2e8SAnkur Dwivedi 					.increment = 0
147*ef82c2e8SAnkur Dwivedi 				},
148*ef82c2e8SAnkur Dwivedi 				.digest_size = {
149*ef82c2e8SAnkur Dwivedi 					.min = 1,
150*ef82c2e8SAnkur Dwivedi 					.max = 20,
151*ef82c2e8SAnkur Dwivedi 					.increment = 1
152*ef82c2e8SAnkur Dwivedi 				},
153*ef82c2e8SAnkur Dwivedi 			}, }
154*ef82c2e8SAnkur Dwivedi 		}, }
155*ef82c2e8SAnkur Dwivedi 	},
156*ef82c2e8SAnkur Dwivedi 	{	/* SHA224 */
157*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
158*ef82c2e8SAnkur Dwivedi 		{.sym = {
159*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
160*ef82c2e8SAnkur Dwivedi 			{.auth = {
161*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_AUTH_SHA224,
162*ef82c2e8SAnkur Dwivedi 				.block_size = 64,
163*ef82c2e8SAnkur Dwivedi 					.key_size = {
164*ef82c2e8SAnkur Dwivedi 					.min = 0,
165*ef82c2e8SAnkur Dwivedi 					.max = 0,
166*ef82c2e8SAnkur Dwivedi 					.increment = 0
167*ef82c2e8SAnkur Dwivedi 				},
168*ef82c2e8SAnkur Dwivedi 				.digest_size = {
169*ef82c2e8SAnkur Dwivedi 					.min = 1,
170*ef82c2e8SAnkur Dwivedi 					.max = 28,
171*ef82c2e8SAnkur Dwivedi 					.increment = 1
172*ef82c2e8SAnkur Dwivedi 				},
173*ef82c2e8SAnkur Dwivedi 			}, }
174*ef82c2e8SAnkur Dwivedi 		}, }
175*ef82c2e8SAnkur Dwivedi 	},
176*ef82c2e8SAnkur Dwivedi 	{	/* SHA224 HMAC */
177*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
178*ef82c2e8SAnkur Dwivedi 		{.sym = {
179*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
180*ef82c2e8SAnkur Dwivedi 			{.auth = {
181*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_AUTH_SHA224_HMAC,
182*ef82c2e8SAnkur Dwivedi 				.block_size = 64,
183*ef82c2e8SAnkur Dwivedi 					.key_size = {
184*ef82c2e8SAnkur Dwivedi 					.min = 64,
185*ef82c2e8SAnkur Dwivedi 					.max = 64,
186*ef82c2e8SAnkur Dwivedi 					.increment = 0
187*ef82c2e8SAnkur Dwivedi 				},
188*ef82c2e8SAnkur Dwivedi 				.digest_size = {
189*ef82c2e8SAnkur Dwivedi 					.min = 1,
190*ef82c2e8SAnkur Dwivedi 					.max = 28,
191*ef82c2e8SAnkur Dwivedi 					.increment = 1
192*ef82c2e8SAnkur Dwivedi 				},
193*ef82c2e8SAnkur Dwivedi 			}, }
194*ef82c2e8SAnkur Dwivedi 		}, }
195*ef82c2e8SAnkur Dwivedi 	},
196*ef82c2e8SAnkur Dwivedi 	{	/* SHA256 */
197*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
198*ef82c2e8SAnkur Dwivedi 		{.sym = {
199*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
200*ef82c2e8SAnkur Dwivedi 			{.auth = {
201*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_AUTH_SHA256,
202*ef82c2e8SAnkur Dwivedi 				.block_size = 64,
203*ef82c2e8SAnkur Dwivedi 				.key_size = {
204*ef82c2e8SAnkur Dwivedi 					.min = 0,
205*ef82c2e8SAnkur Dwivedi 					.max = 0,
206*ef82c2e8SAnkur Dwivedi 					.increment = 0
207*ef82c2e8SAnkur Dwivedi 				},
208*ef82c2e8SAnkur Dwivedi 				.digest_size = {
209*ef82c2e8SAnkur Dwivedi 					.min = 1,
210*ef82c2e8SAnkur Dwivedi 					.max = 32,
211*ef82c2e8SAnkur Dwivedi 					.increment = 1
212*ef82c2e8SAnkur Dwivedi 				},
213*ef82c2e8SAnkur Dwivedi 			}, }
214*ef82c2e8SAnkur Dwivedi 		}, }
215*ef82c2e8SAnkur Dwivedi 	},
216*ef82c2e8SAnkur Dwivedi 	{	/* SHA256 HMAC */
217*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
218*ef82c2e8SAnkur Dwivedi 		{.sym = {
219*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
220*ef82c2e8SAnkur Dwivedi 			{.auth = {
221*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_AUTH_SHA256_HMAC,
222*ef82c2e8SAnkur Dwivedi 				.block_size = 64,
223*ef82c2e8SAnkur Dwivedi 				.key_size = {
224*ef82c2e8SAnkur Dwivedi 					.min = 64,
225*ef82c2e8SAnkur Dwivedi 					.max = 64,
226*ef82c2e8SAnkur Dwivedi 					.increment = 0
227*ef82c2e8SAnkur Dwivedi 				},
228*ef82c2e8SAnkur Dwivedi 				.digest_size = {
229*ef82c2e8SAnkur Dwivedi 					.min = 1,
230*ef82c2e8SAnkur Dwivedi 					.max = 32,
231*ef82c2e8SAnkur Dwivedi 					.increment = 1
232*ef82c2e8SAnkur Dwivedi 				},
233*ef82c2e8SAnkur Dwivedi 			}, }
234*ef82c2e8SAnkur Dwivedi 		}, }
235*ef82c2e8SAnkur Dwivedi 	},
236*ef82c2e8SAnkur Dwivedi 	{	/* SHA384 */
237*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
238*ef82c2e8SAnkur Dwivedi 		{.sym = {
239*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
240*ef82c2e8SAnkur Dwivedi 			{.auth = {
241*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_AUTH_SHA384,
242*ef82c2e8SAnkur Dwivedi 				.block_size = 64,
243*ef82c2e8SAnkur Dwivedi 				.key_size = {
244*ef82c2e8SAnkur Dwivedi 					.min = 0,
245*ef82c2e8SAnkur Dwivedi 					.max = 0,
246*ef82c2e8SAnkur Dwivedi 					.increment = 0
247*ef82c2e8SAnkur Dwivedi 				},
248*ef82c2e8SAnkur Dwivedi 				.digest_size = {
249*ef82c2e8SAnkur Dwivedi 					.min = 1,
250*ef82c2e8SAnkur Dwivedi 					.max = 48,
251*ef82c2e8SAnkur Dwivedi 					.increment = 1
252*ef82c2e8SAnkur Dwivedi 					},
253*ef82c2e8SAnkur Dwivedi 			}, }
254*ef82c2e8SAnkur Dwivedi 		}, }
255*ef82c2e8SAnkur Dwivedi 	},
256*ef82c2e8SAnkur Dwivedi 	{	/* SHA384 HMAC */
257*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
258*ef82c2e8SAnkur Dwivedi 		{.sym = {
259*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
260*ef82c2e8SAnkur Dwivedi 			{.auth = {
261*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_AUTH_SHA384_HMAC,
262*ef82c2e8SAnkur Dwivedi 				.block_size = 64,
263*ef82c2e8SAnkur Dwivedi 				.key_size = {
264*ef82c2e8SAnkur Dwivedi 					.min = 64,
265*ef82c2e8SAnkur Dwivedi 					.max = 64,
266*ef82c2e8SAnkur Dwivedi 					.increment = 0
267*ef82c2e8SAnkur Dwivedi 				},
268*ef82c2e8SAnkur Dwivedi 				.digest_size = {
269*ef82c2e8SAnkur Dwivedi 					.min = 1,
270*ef82c2e8SAnkur Dwivedi 					.max = 48,
271*ef82c2e8SAnkur Dwivedi 					.increment = 1
272*ef82c2e8SAnkur Dwivedi 					},
273*ef82c2e8SAnkur Dwivedi 			}, }
274*ef82c2e8SAnkur Dwivedi 		}, }
275*ef82c2e8SAnkur Dwivedi 	},
276*ef82c2e8SAnkur Dwivedi 	{	/* SHA512 */
277*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
278*ef82c2e8SAnkur Dwivedi 		{.sym = {
279*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
280*ef82c2e8SAnkur Dwivedi 			{.auth = {
281*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_AUTH_SHA512,
282*ef82c2e8SAnkur Dwivedi 				.block_size = 128,
283*ef82c2e8SAnkur Dwivedi 				.key_size = {
284*ef82c2e8SAnkur Dwivedi 					.min = 0,
285*ef82c2e8SAnkur Dwivedi 					.max = 0,
286*ef82c2e8SAnkur Dwivedi 					.increment = 0
287*ef82c2e8SAnkur Dwivedi 				},
288*ef82c2e8SAnkur Dwivedi 				.digest_size = {
289*ef82c2e8SAnkur Dwivedi 					.min = 1,
290*ef82c2e8SAnkur Dwivedi 					.max = 64,
291*ef82c2e8SAnkur Dwivedi 					.increment = 1
292*ef82c2e8SAnkur Dwivedi 				},
293*ef82c2e8SAnkur Dwivedi 			}, }
294*ef82c2e8SAnkur Dwivedi 		}, }
295*ef82c2e8SAnkur Dwivedi 	},
296*ef82c2e8SAnkur Dwivedi 	{	/* SHA512 HMAC */
297*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
298*ef82c2e8SAnkur Dwivedi 		{.sym = {
299*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
300*ef82c2e8SAnkur Dwivedi 			{.auth = {
301*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_AUTH_SHA512_HMAC,
302*ef82c2e8SAnkur Dwivedi 				.block_size = 128,
303*ef82c2e8SAnkur Dwivedi 				.key_size = {
304*ef82c2e8SAnkur Dwivedi 					.min = 64,
305*ef82c2e8SAnkur Dwivedi 					.max = 64,
306*ef82c2e8SAnkur Dwivedi 					.increment = 0
307*ef82c2e8SAnkur Dwivedi 				},
308*ef82c2e8SAnkur Dwivedi 				.digest_size = {
309*ef82c2e8SAnkur Dwivedi 					.min = 1,
310*ef82c2e8SAnkur Dwivedi 					.max = 64,
311*ef82c2e8SAnkur Dwivedi 					.increment = 1
312*ef82c2e8SAnkur Dwivedi 				},
313*ef82c2e8SAnkur Dwivedi 			}, }
314*ef82c2e8SAnkur Dwivedi 		}, }
315*ef82c2e8SAnkur Dwivedi 	},
316*ef82c2e8SAnkur Dwivedi 	{	/* SNOW 3G (UIA2) */
317*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
318*ef82c2e8SAnkur Dwivedi 		{.sym = {
319*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
320*ef82c2e8SAnkur Dwivedi 			{.auth = {
321*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
322*ef82c2e8SAnkur Dwivedi 				.block_size = 16,
323*ef82c2e8SAnkur Dwivedi 				.key_size = {
324*ef82c2e8SAnkur Dwivedi 					.min = 16,
325*ef82c2e8SAnkur Dwivedi 					.max = 16,
326*ef82c2e8SAnkur Dwivedi 					.increment = 0
327*ef82c2e8SAnkur Dwivedi 				},
328*ef82c2e8SAnkur Dwivedi 				.digest_size = {
329*ef82c2e8SAnkur Dwivedi 					.min = 4,
330*ef82c2e8SAnkur Dwivedi 					.max = 4,
331*ef82c2e8SAnkur Dwivedi 					.increment = 0
332*ef82c2e8SAnkur Dwivedi 				},
333*ef82c2e8SAnkur Dwivedi 				.iv_size = {
334*ef82c2e8SAnkur Dwivedi 					.min = 16,
335*ef82c2e8SAnkur Dwivedi 					.max = 16,
336*ef82c2e8SAnkur Dwivedi 					.increment = 0
337*ef82c2e8SAnkur Dwivedi 				}
338*ef82c2e8SAnkur Dwivedi 			}, }
339*ef82c2e8SAnkur Dwivedi 		}, }
340*ef82c2e8SAnkur Dwivedi 	},
341*ef82c2e8SAnkur Dwivedi 	{	/* ZUC (EIA3) */
342*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
343*ef82c2e8SAnkur Dwivedi 		{.sym = {
344*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
345*ef82c2e8SAnkur Dwivedi 			{.auth = {
346*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_AUTH_ZUC_EIA3,
347*ef82c2e8SAnkur Dwivedi 				.block_size = 16,
348*ef82c2e8SAnkur Dwivedi 				.key_size = {
349*ef82c2e8SAnkur Dwivedi 					.min = 16,
350*ef82c2e8SAnkur Dwivedi 					.max = 16,
351*ef82c2e8SAnkur Dwivedi 					.increment = 0
352*ef82c2e8SAnkur Dwivedi 				},
353*ef82c2e8SAnkur Dwivedi 				.digest_size = {
354*ef82c2e8SAnkur Dwivedi 					.min = 4,
355*ef82c2e8SAnkur Dwivedi 					.max = 4,
356*ef82c2e8SAnkur Dwivedi 					.increment = 0
357*ef82c2e8SAnkur Dwivedi 				},
358*ef82c2e8SAnkur Dwivedi 				.iv_size = {
359*ef82c2e8SAnkur Dwivedi 					.min = 16,
360*ef82c2e8SAnkur Dwivedi 					.max = 16,
361*ef82c2e8SAnkur Dwivedi 					.increment = 0
362*ef82c2e8SAnkur Dwivedi 				}
363*ef82c2e8SAnkur Dwivedi 			}, }
364*ef82c2e8SAnkur Dwivedi 		}, }
365*ef82c2e8SAnkur Dwivedi 	},
366*ef82c2e8SAnkur Dwivedi 	{	/* NULL (CIPHER) */
367*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
368*ef82c2e8SAnkur Dwivedi 		{.sym = {
369*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
370*ef82c2e8SAnkur Dwivedi 			{.cipher = {
371*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_CIPHER_NULL,
372*ef82c2e8SAnkur Dwivedi 				.block_size = 1,
373*ef82c2e8SAnkur Dwivedi 				.key_size = {
374*ef82c2e8SAnkur Dwivedi 					.min = 0,
375*ef82c2e8SAnkur Dwivedi 					.max = 0,
376*ef82c2e8SAnkur Dwivedi 					.increment = 0
377*ef82c2e8SAnkur Dwivedi 				},
378*ef82c2e8SAnkur Dwivedi 				.iv_size = {
379*ef82c2e8SAnkur Dwivedi 					.min = 0,
380*ef82c2e8SAnkur Dwivedi 					.max = 0,
381*ef82c2e8SAnkur Dwivedi 					.increment = 0
382*ef82c2e8SAnkur Dwivedi 				}
383*ef82c2e8SAnkur Dwivedi 			}, },
384*ef82c2e8SAnkur Dwivedi 		}, }
385*ef82c2e8SAnkur Dwivedi 	},
386*ef82c2e8SAnkur Dwivedi 	{	/* 3DES CBC */
387*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
388*ef82c2e8SAnkur Dwivedi 		{.sym = {
389*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
390*ef82c2e8SAnkur Dwivedi 			{.cipher = {
391*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_CIPHER_3DES_CBC,
392*ef82c2e8SAnkur Dwivedi 				.block_size = 8,
393*ef82c2e8SAnkur Dwivedi 				.key_size = {
394*ef82c2e8SAnkur Dwivedi 					.min = 24,
395*ef82c2e8SAnkur Dwivedi 					.max = 24,
396*ef82c2e8SAnkur Dwivedi 					.increment = 0
397*ef82c2e8SAnkur Dwivedi 				},
398*ef82c2e8SAnkur Dwivedi 				.iv_size = {
399*ef82c2e8SAnkur Dwivedi 					.min = 8,
400*ef82c2e8SAnkur Dwivedi 					.max = 16,
401*ef82c2e8SAnkur Dwivedi 					.increment = 8
402*ef82c2e8SAnkur Dwivedi 				}
403*ef82c2e8SAnkur Dwivedi 			}, }
404*ef82c2e8SAnkur Dwivedi 		}, }
405*ef82c2e8SAnkur Dwivedi 	},
406*ef82c2e8SAnkur Dwivedi 	{	/* 3DES ECB */
407*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
408*ef82c2e8SAnkur Dwivedi 		{.sym = {
409*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
410*ef82c2e8SAnkur Dwivedi 			{.cipher = {
411*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_CIPHER_3DES_ECB,
412*ef82c2e8SAnkur Dwivedi 				.block_size = 8,
413*ef82c2e8SAnkur Dwivedi 				.key_size = {
414*ef82c2e8SAnkur Dwivedi 					.min = 24,
415*ef82c2e8SAnkur Dwivedi 					.max = 24,
416*ef82c2e8SAnkur Dwivedi 					.increment = 0
417*ef82c2e8SAnkur Dwivedi 				},
418*ef82c2e8SAnkur Dwivedi 				.iv_size = {
419*ef82c2e8SAnkur Dwivedi 					.min = 0,
420*ef82c2e8SAnkur Dwivedi 					.max = 0,
421*ef82c2e8SAnkur Dwivedi 					.increment = 0
422*ef82c2e8SAnkur Dwivedi 				}
423*ef82c2e8SAnkur Dwivedi 			}, }
424*ef82c2e8SAnkur Dwivedi 		}, }
425*ef82c2e8SAnkur Dwivedi 	},
426*ef82c2e8SAnkur Dwivedi 	{	/* AES CBC */
427*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
428*ef82c2e8SAnkur Dwivedi 		{.sym = {
429*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
430*ef82c2e8SAnkur Dwivedi 			{.cipher = {
431*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_CIPHER_AES_CBC,
432*ef82c2e8SAnkur Dwivedi 				.block_size = 16,
433*ef82c2e8SAnkur Dwivedi 				.key_size = {
434*ef82c2e8SAnkur Dwivedi 					.min = 16,
435*ef82c2e8SAnkur Dwivedi 					.max = 32,
436*ef82c2e8SAnkur Dwivedi 					.increment = 8
437*ef82c2e8SAnkur Dwivedi 				},
438*ef82c2e8SAnkur Dwivedi 				.iv_size = {
439*ef82c2e8SAnkur Dwivedi 					.min = 16,
440*ef82c2e8SAnkur Dwivedi 					.max = 16,
441*ef82c2e8SAnkur Dwivedi 					.increment = 0
442*ef82c2e8SAnkur Dwivedi 				}
443*ef82c2e8SAnkur Dwivedi 			}, }
444*ef82c2e8SAnkur Dwivedi 		}, }
445*ef82c2e8SAnkur Dwivedi 	},
446*ef82c2e8SAnkur Dwivedi 	{	/* AES CTR */
447*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
448*ef82c2e8SAnkur Dwivedi 		{.sym = {
449*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
450*ef82c2e8SAnkur Dwivedi 			{.cipher = {
451*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_CIPHER_AES_CTR,
452*ef82c2e8SAnkur Dwivedi 				.block_size = 16,
453*ef82c2e8SAnkur Dwivedi 				.key_size = {
454*ef82c2e8SAnkur Dwivedi 					.min = 16,
455*ef82c2e8SAnkur Dwivedi 					.max = 32,
456*ef82c2e8SAnkur Dwivedi 					.increment = 8
457*ef82c2e8SAnkur Dwivedi 				},
458*ef82c2e8SAnkur Dwivedi 				.iv_size = {
459*ef82c2e8SAnkur Dwivedi 					.min = 12,
460*ef82c2e8SAnkur Dwivedi 					.max = 16,
461*ef82c2e8SAnkur Dwivedi 					.increment = 4
462*ef82c2e8SAnkur Dwivedi 				}
463*ef82c2e8SAnkur Dwivedi 			}, }
464*ef82c2e8SAnkur Dwivedi 		}, }
465*ef82c2e8SAnkur Dwivedi 	},
466*ef82c2e8SAnkur Dwivedi 	{	/* AES XTS */
467*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
468*ef82c2e8SAnkur Dwivedi 		{.sym = {
469*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
470*ef82c2e8SAnkur Dwivedi 			{.cipher = {
471*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_CIPHER_AES_XTS,
472*ef82c2e8SAnkur Dwivedi 				.block_size = 16,
473*ef82c2e8SAnkur Dwivedi 				.key_size = {
474*ef82c2e8SAnkur Dwivedi 					.min = 32,
475*ef82c2e8SAnkur Dwivedi 					.max = 64,
476*ef82c2e8SAnkur Dwivedi 					.increment = 0
477*ef82c2e8SAnkur Dwivedi 				},
478*ef82c2e8SAnkur Dwivedi 				.iv_size = {
479*ef82c2e8SAnkur Dwivedi 					.min = 16,
480*ef82c2e8SAnkur Dwivedi 					.max = 16,
481*ef82c2e8SAnkur Dwivedi 					.increment = 0
482*ef82c2e8SAnkur Dwivedi 				}
483*ef82c2e8SAnkur Dwivedi 			}, }
484*ef82c2e8SAnkur Dwivedi 		}, }
485*ef82c2e8SAnkur Dwivedi 	},
486*ef82c2e8SAnkur Dwivedi 	{	/* DES CBC */
487*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
488*ef82c2e8SAnkur Dwivedi 		{.sym = {
489*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
490*ef82c2e8SAnkur Dwivedi 			{.cipher = {
491*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_CIPHER_DES_CBC,
492*ef82c2e8SAnkur Dwivedi 				.block_size = 8,
493*ef82c2e8SAnkur Dwivedi 				.key_size = {
494*ef82c2e8SAnkur Dwivedi 					.min = 8,
495*ef82c2e8SAnkur Dwivedi 					.max = 8,
496*ef82c2e8SAnkur Dwivedi 					.increment = 0
497*ef82c2e8SAnkur Dwivedi 				},
498*ef82c2e8SAnkur Dwivedi 				.iv_size = {
499*ef82c2e8SAnkur Dwivedi 					.min = 8,
500*ef82c2e8SAnkur Dwivedi 					.max = 8,
501*ef82c2e8SAnkur Dwivedi 					.increment = 0
502*ef82c2e8SAnkur Dwivedi 				}
503*ef82c2e8SAnkur Dwivedi 			}, }
504*ef82c2e8SAnkur Dwivedi 		}, }
505*ef82c2e8SAnkur Dwivedi 	},
506*ef82c2e8SAnkur Dwivedi 	{	/* KASUMI (F8) */
507*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
508*ef82c2e8SAnkur Dwivedi 		{.sym = {
509*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
510*ef82c2e8SAnkur Dwivedi 			{.cipher = {
511*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_CIPHER_KASUMI_F8,
512*ef82c2e8SAnkur Dwivedi 				.block_size = 8,
513*ef82c2e8SAnkur Dwivedi 				.key_size = {
514*ef82c2e8SAnkur Dwivedi 					.min = 16,
515*ef82c2e8SAnkur Dwivedi 					.max = 16,
516*ef82c2e8SAnkur Dwivedi 					.increment = 0
517*ef82c2e8SAnkur Dwivedi 				},
518*ef82c2e8SAnkur Dwivedi 				.iv_size = {
519*ef82c2e8SAnkur Dwivedi 					.min = 8,
520*ef82c2e8SAnkur Dwivedi 					.max = 8,
521*ef82c2e8SAnkur Dwivedi 					.increment = 0
522*ef82c2e8SAnkur Dwivedi 				}
523*ef82c2e8SAnkur Dwivedi 			}, }
524*ef82c2e8SAnkur Dwivedi 		}, }
525*ef82c2e8SAnkur Dwivedi 	},
526*ef82c2e8SAnkur Dwivedi 	{	/* SNOW 3G (UEA2) */
527*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
528*ef82c2e8SAnkur Dwivedi 		{.sym = {
529*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
530*ef82c2e8SAnkur Dwivedi 			{.cipher = {
531*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
532*ef82c2e8SAnkur Dwivedi 				.block_size = 16,
533*ef82c2e8SAnkur Dwivedi 				.key_size = {
534*ef82c2e8SAnkur Dwivedi 					.min = 16,
535*ef82c2e8SAnkur Dwivedi 					.max = 16,
536*ef82c2e8SAnkur Dwivedi 					.increment = 0
537*ef82c2e8SAnkur Dwivedi 				},
538*ef82c2e8SAnkur Dwivedi 				.iv_size = {
539*ef82c2e8SAnkur Dwivedi 					.min = 16,
540*ef82c2e8SAnkur Dwivedi 					.max = 16,
541*ef82c2e8SAnkur Dwivedi 					.increment = 0
542*ef82c2e8SAnkur Dwivedi 				}
543*ef82c2e8SAnkur Dwivedi 			}, }
544*ef82c2e8SAnkur Dwivedi 		}, }
545*ef82c2e8SAnkur Dwivedi 	},
546*ef82c2e8SAnkur Dwivedi 	{	/* ZUC (EEA3) */
547*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
548*ef82c2e8SAnkur Dwivedi 		{.sym = {
549*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
550*ef82c2e8SAnkur Dwivedi 			{.cipher = {
551*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_CIPHER_ZUC_EEA3,
552*ef82c2e8SAnkur Dwivedi 				.block_size = 16,
553*ef82c2e8SAnkur Dwivedi 				.key_size = {
554*ef82c2e8SAnkur Dwivedi 					.min = 16,
555*ef82c2e8SAnkur Dwivedi 					.max = 16,
556*ef82c2e8SAnkur Dwivedi 					.increment = 0
557*ef82c2e8SAnkur Dwivedi 				},
558*ef82c2e8SAnkur Dwivedi 				.iv_size = {
559*ef82c2e8SAnkur Dwivedi 					.min = 16,
560*ef82c2e8SAnkur Dwivedi 					.max = 16,
561*ef82c2e8SAnkur Dwivedi 					.increment = 0
562*ef82c2e8SAnkur Dwivedi 				}
563*ef82c2e8SAnkur Dwivedi 			}, }
564*ef82c2e8SAnkur Dwivedi 		}, }
565*ef82c2e8SAnkur Dwivedi 	},
566*ef82c2e8SAnkur Dwivedi 	{	/* AES GCM */
567*ef82c2e8SAnkur Dwivedi 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
568*ef82c2e8SAnkur Dwivedi 		{.sym = {
569*ef82c2e8SAnkur Dwivedi 			.xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,
570*ef82c2e8SAnkur Dwivedi 			{.aead = {
571*ef82c2e8SAnkur Dwivedi 				.algo = RTE_CRYPTO_AEAD_AES_GCM,
572*ef82c2e8SAnkur Dwivedi 				.block_size = 16,
573*ef82c2e8SAnkur Dwivedi 				.key_size = {
574*ef82c2e8SAnkur Dwivedi 					.min = 16,
575*ef82c2e8SAnkur Dwivedi 					.max = 32,
576*ef82c2e8SAnkur Dwivedi 					.increment = 8
577*ef82c2e8SAnkur Dwivedi 				},
578*ef82c2e8SAnkur Dwivedi 				.digest_size = {
579*ef82c2e8SAnkur Dwivedi 					.min = 8,
580*ef82c2e8SAnkur Dwivedi 					.max = 16,
581*ef82c2e8SAnkur Dwivedi 					.increment = 4
582*ef82c2e8SAnkur Dwivedi 				},
583*ef82c2e8SAnkur Dwivedi 				.aad_size = {
584*ef82c2e8SAnkur Dwivedi 					.min = 0,
585*ef82c2e8SAnkur Dwivedi 					.max = 1024,
586*ef82c2e8SAnkur Dwivedi 					.increment = 1
587*ef82c2e8SAnkur Dwivedi 				},
588*ef82c2e8SAnkur Dwivedi 				.iv_size = {
589*ef82c2e8SAnkur Dwivedi 					.min = 12,
590*ef82c2e8SAnkur Dwivedi 					.max = 12,
591*ef82c2e8SAnkur Dwivedi 					.increment = 0
592*ef82c2e8SAnkur Dwivedi 				}
593*ef82c2e8SAnkur Dwivedi 			}, }
594*ef82c2e8SAnkur Dwivedi 		}, }
595*ef82c2e8SAnkur Dwivedi 	},
596*ef82c2e8SAnkur Dwivedi 	/* End of symmetric capabilities */
597*ef82c2e8SAnkur Dwivedi 	RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST()
598*ef82c2e8SAnkur Dwivedi };
599*ef82c2e8SAnkur Dwivedi 
600*ef82c2e8SAnkur Dwivedi const struct rte_cryptodev_capabilities *
601*ef82c2e8SAnkur Dwivedi otx_get_capabilities(void)
602*ef82c2e8SAnkur Dwivedi {
603*ef82c2e8SAnkur Dwivedi 	return otx_capabilities;
604*ef82c2e8SAnkur Dwivedi }
605