xref: /dpdk/drivers/crypto/caam_jr/caam_jr_capabilities.c (revision 42600bbc018062df811889f38822b18325bbe741)
1*42600bbcSGagandeep Singh /* SPDX-License-Identifier: BSD-3-Clause
2*42600bbcSGagandeep Singh  * Copyright 2017-2018 NXP
3*42600bbcSGagandeep Singh  */
4*42600bbcSGagandeep Singh 
5*42600bbcSGagandeep Singh #include <caam_jr_capabilities.h>
6*42600bbcSGagandeep Singh 
7*42600bbcSGagandeep Singh static const struct rte_cryptodev_capabilities caam_jr_capabilities[] = {
8*42600bbcSGagandeep Singh 	{	/* MD5 HMAC */
9*42600bbcSGagandeep Singh 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
10*42600bbcSGagandeep Singh 		{.sym = {
11*42600bbcSGagandeep Singh 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
12*42600bbcSGagandeep Singh 			{.auth = {
13*42600bbcSGagandeep Singh 				.algo = RTE_CRYPTO_AUTH_MD5_HMAC,
14*42600bbcSGagandeep Singh 				.block_size = 64,
15*42600bbcSGagandeep Singh 				.key_size = {
16*42600bbcSGagandeep Singh 					.min = 1,
17*42600bbcSGagandeep Singh 					.max = 64,
18*42600bbcSGagandeep Singh 					.increment = 1
19*42600bbcSGagandeep Singh 				},
20*42600bbcSGagandeep Singh 				.digest_size = {
21*42600bbcSGagandeep Singh 					.min = 1,
22*42600bbcSGagandeep Singh 					.max = 16,
23*42600bbcSGagandeep Singh 					.increment = 1
24*42600bbcSGagandeep Singh 				},
25*42600bbcSGagandeep Singh 				.iv_size = { 0 }
26*42600bbcSGagandeep Singh 			}, }
27*42600bbcSGagandeep Singh 		}, }
28*42600bbcSGagandeep Singh 	},
29*42600bbcSGagandeep Singh 	{	/* SHA1 HMAC */
30*42600bbcSGagandeep Singh 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
31*42600bbcSGagandeep Singh 		{.sym = {
32*42600bbcSGagandeep Singh 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
33*42600bbcSGagandeep Singh 			{.auth = {
34*42600bbcSGagandeep Singh 				.algo = RTE_CRYPTO_AUTH_SHA1_HMAC,
35*42600bbcSGagandeep Singh 				.block_size = 64,
36*42600bbcSGagandeep Singh 				.key_size = {
37*42600bbcSGagandeep Singh 					.min = 1,
38*42600bbcSGagandeep Singh 					.max = 64,
39*42600bbcSGagandeep Singh 					.increment = 1
40*42600bbcSGagandeep Singh 				},
41*42600bbcSGagandeep Singh 				.digest_size = {
42*42600bbcSGagandeep Singh 					.min = 1,
43*42600bbcSGagandeep Singh 					.max = 20,
44*42600bbcSGagandeep Singh 					.increment = 1
45*42600bbcSGagandeep Singh 				},
46*42600bbcSGagandeep Singh 				.iv_size = { 0 }
47*42600bbcSGagandeep Singh 			}, }
48*42600bbcSGagandeep Singh 		}, }
49*42600bbcSGagandeep Singh 	},
50*42600bbcSGagandeep Singh 	{	/* SHA224 HMAC */
51*42600bbcSGagandeep Singh 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
52*42600bbcSGagandeep Singh 		{.sym = {
53*42600bbcSGagandeep Singh 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
54*42600bbcSGagandeep Singh 			{.auth = {
55*42600bbcSGagandeep Singh 				.algo = RTE_CRYPTO_AUTH_SHA224_HMAC,
56*42600bbcSGagandeep Singh 				.block_size = 64,
57*42600bbcSGagandeep Singh 				.key_size = {
58*42600bbcSGagandeep Singh 					.min = 1,
59*42600bbcSGagandeep Singh 					.max = 64,
60*42600bbcSGagandeep Singh 					.increment = 1
61*42600bbcSGagandeep Singh 				},
62*42600bbcSGagandeep Singh 				.digest_size = {
63*42600bbcSGagandeep Singh 					.min = 1,
64*42600bbcSGagandeep Singh 					.max = 28,
65*42600bbcSGagandeep Singh 					.increment = 1
66*42600bbcSGagandeep Singh 				},
67*42600bbcSGagandeep Singh 				.iv_size = { 0 }
68*42600bbcSGagandeep Singh 			}, }
69*42600bbcSGagandeep Singh 		}, }
70*42600bbcSGagandeep Singh 	},
71*42600bbcSGagandeep Singh 	{	/* SHA256 HMAC */
72*42600bbcSGagandeep Singh 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
73*42600bbcSGagandeep Singh 		{.sym = {
74*42600bbcSGagandeep Singh 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
75*42600bbcSGagandeep Singh 			{.auth = {
76*42600bbcSGagandeep Singh 				.algo = RTE_CRYPTO_AUTH_SHA256_HMAC,
77*42600bbcSGagandeep Singh 				.block_size = 64,
78*42600bbcSGagandeep Singh 				.key_size = {
79*42600bbcSGagandeep Singh 					.min = 1,
80*42600bbcSGagandeep Singh 					.max = 64,
81*42600bbcSGagandeep Singh 					.increment = 1
82*42600bbcSGagandeep Singh 				},
83*42600bbcSGagandeep Singh 				.digest_size = {
84*42600bbcSGagandeep Singh 					.min = 1,
85*42600bbcSGagandeep Singh 					.max = 32,
86*42600bbcSGagandeep Singh 					.increment = 1
87*42600bbcSGagandeep Singh 				},
88*42600bbcSGagandeep Singh 				.iv_size = { 0 }
89*42600bbcSGagandeep Singh 			}, }
90*42600bbcSGagandeep Singh 		}, }
91*42600bbcSGagandeep Singh 	},
92*42600bbcSGagandeep Singh 	{	/* SHA384 HMAC */
93*42600bbcSGagandeep Singh 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
94*42600bbcSGagandeep Singh 		{.sym = {
95*42600bbcSGagandeep Singh 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
96*42600bbcSGagandeep Singh 			{.auth = {
97*42600bbcSGagandeep Singh 				.algo = RTE_CRYPTO_AUTH_SHA384_HMAC,
98*42600bbcSGagandeep Singh 				.block_size = 128,
99*42600bbcSGagandeep Singh 				.key_size = {
100*42600bbcSGagandeep Singh 					.min = 1,
101*42600bbcSGagandeep Singh 					.max = 128,
102*42600bbcSGagandeep Singh 					.increment = 1
103*42600bbcSGagandeep Singh 				},
104*42600bbcSGagandeep Singh 				.digest_size = {
105*42600bbcSGagandeep Singh 					.min = 1,
106*42600bbcSGagandeep Singh 					.max = 48,
107*42600bbcSGagandeep Singh 					.increment = 1
108*42600bbcSGagandeep Singh 				},
109*42600bbcSGagandeep Singh 				.iv_size = { 0 }
110*42600bbcSGagandeep Singh 			}, }
111*42600bbcSGagandeep Singh 		}, }
112*42600bbcSGagandeep Singh 	},
113*42600bbcSGagandeep Singh 	{	/* SHA512 HMAC */
114*42600bbcSGagandeep Singh 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
115*42600bbcSGagandeep Singh 		{.sym = {
116*42600bbcSGagandeep Singh 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
117*42600bbcSGagandeep Singh 			{.auth = {
118*42600bbcSGagandeep Singh 				.algo = RTE_CRYPTO_AUTH_SHA512_HMAC,
119*42600bbcSGagandeep Singh 				.block_size = 128,
120*42600bbcSGagandeep Singh 				.key_size = {
121*42600bbcSGagandeep Singh 					.min = 1,
122*42600bbcSGagandeep Singh 					.max = 128,
123*42600bbcSGagandeep Singh 					.increment = 1
124*42600bbcSGagandeep Singh 				},
125*42600bbcSGagandeep Singh 				.digest_size = {
126*42600bbcSGagandeep Singh 					.min = 1,
127*42600bbcSGagandeep Singh 					.max = 64,
128*42600bbcSGagandeep Singh 					.increment = 1
129*42600bbcSGagandeep Singh 				},
130*42600bbcSGagandeep Singh 				.iv_size = { 0 }
131*42600bbcSGagandeep Singh 			}, }
132*42600bbcSGagandeep Singh 		}, }
133*42600bbcSGagandeep Singh 	},
134*42600bbcSGagandeep Singh 	{	/* AES GCM */
135*42600bbcSGagandeep Singh 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
136*42600bbcSGagandeep Singh 		{.sym = {
137*42600bbcSGagandeep Singh 			.xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,
138*42600bbcSGagandeep Singh 			{.aead = {
139*42600bbcSGagandeep Singh 				.algo = RTE_CRYPTO_AEAD_AES_GCM,
140*42600bbcSGagandeep Singh 				.block_size = 16,
141*42600bbcSGagandeep Singh 				.key_size = {
142*42600bbcSGagandeep Singh 					.min = 16,
143*42600bbcSGagandeep Singh 					.max = 32,
144*42600bbcSGagandeep Singh 					.increment = 8
145*42600bbcSGagandeep Singh 				},
146*42600bbcSGagandeep Singh 				.digest_size = {
147*42600bbcSGagandeep Singh 					.min = 8,
148*42600bbcSGagandeep Singh 					.max = 16,
149*42600bbcSGagandeep Singh 					.increment = 4
150*42600bbcSGagandeep Singh 				},
151*42600bbcSGagandeep Singh 				.aad_size = {
152*42600bbcSGagandeep Singh 					.min = 0,
153*42600bbcSGagandeep Singh 					.max = 240,
154*42600bbcSGagandeep Singh 					.increment = 1
155*42600bbcSGagandeep Singh 				},
156*42600bbcSGagandeep Singh 				.iv_size = {
157*42600bbcSGagandeep Singh 					.min = 12,
158*42600bbcSGagandeep Singh 					.max = 12,
159*42600bbcSGagandeep Singh 					.increment = 0
160*42600bbcSGagandeep Singh 				},
161*42600bbcSGagandeep Singh 			}, }
162*42600bbcSGagandeep Singh 		}, }
163*42600bbcSGagandeep Singh 	},
164*42600bbcSGagandeep Singh 	{	/* AES CBC */
165*42600bbcSGagandeep Singh 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
166*42600bbcSGagandeep Singh 		{.sym = {
167*42600bbcSGagandeep Singh 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
168*42600bbcSGagandeep Singh 			{.cipher = {
169*42600bbcSGagandeep Singh 				.algo = RTE_CRYPTO_CIPHER_AES_CBC,
170*42600bbcSGagandeep Singh 				.block_size = 16,
171*42600bbcSGagandeep Singh 				.key_size = {
172*42600bbcSGagandeep Singh 					.min = 16,
173*42600bbcSGagandeep Singh 					.max = 32,
174*42600bbcSGagandeep Singh 					.increment = 8
175*42600bbcSGagandeep Singh 				},
176*42600bbcSGagandeep Singh 				.iv_size = {
177*42600bbcSGagandeep Singh 					.min = 16,
178*42600bbcSGagandeep Singh 					.max = 16,
179*42600bbcSGagandeep Singh 					.increment = 0
180*42600bbcSGagandeep Singh 				}
181*42600bbcSGagandeep Singh 			}, }
182*42600bbcSGagandeep Singh 		}, }
183*42600bbcSGagandeep Singh 	},
184*42600bbcSGagandeep Singh 	{	/* AES CTR */
185*42600bbcSGagandeep Singh 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
186*42600bbcSGagandeep Singh 		{.sym = {
187*42600bbcSGagandeep Singh 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
188*42600bbcSGagandeep Singh 			{.cipher = {
189*42600bbcSGagandeep Singh 				.algo = RTE_CRYPTO_CIPHER_AES_CTR,
190*42600bbcSGagandeep Singh 				.block_size = 16,
191*42600bbcSGagandeep Singh 				.key_size = {
192*42600bbcSGagandeep Singh 					.min = 16,
193*42600bbcSGagandeep Singh 					.max = 32,
194*42600bbcSGagandeep Singh 					.increment = 8
195*42600bbcSGagandeep Singh 				},
196*42600bbcSGagandeep Singh 				.iv_size = {
197*42600bbcSGagandeep Singh 					.min = 16,
198*42600bbcSGagandeep Singh 					.max = 16,
199*42600bbcSGagandeep Singh 					.increment = 0
200*42600bbcSGagandeep Singh 				}
201*42600bbcSGagandeep Singh 			}, }
202*42600bbcSGagandeep Singh 		}, }
203*42600bbcSGagandeep Singh 	},
204*42600bbcSGagandeep Singh 	{	/* 3DES CBC */
205*42600bbcSGagandeep Singh 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
206*42600bbcSGagandeep Singh 		{.sym = {
207*42600bbcSGagandeep Singh 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
208*42600bbcSGagandeep Singh 			{.cipher = {
209*42600bbcSGagandeep Singh 				.algo = RTE_CRYPTO_CIPHER_3DES_CBC,
210*42600bbcSGagandeep Singh 				.block_size = 8,
211*42600bbcSGagandeep Singh 				.key_size = {
212*42600bbcSGagandeep Singh 					.min = 16,
213*42600bbcSGagandeep Singh 					.max = 24,
214*42600bbcSGagandeep Singh 					.increment = 8
215*42600bbcSGagandeep Singh 				},
216*42600bbcSGagandeep Singh 				.iv_size = {
217*42600bbcSGagandeep Singh 					.min = 8,
218*42600bbcSGagandeep Singh 					.max = 8,
219*42600bbcSGagandeep Singh 					.increment = 0
220*42600bbcSGagandeep Singh 				}
221*42600bbcSGagandeep Singh 			}, }
222*42600bbcSGagandeep Singh 		}, }
223*42600bbcSGagandeep Singh 	},
224*42600bbcSGagandeep Singh 
225*42600bbcSGagandeep Singh 	RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST()
226*42600bbcSGagandeep Singh };
227*42600bbcSGagandeep Singh 
228*42600bbcSGagandeep Singh static const struct rte_security_capability caam_jr_security_cap[] = {
229*42600bbcSGagandeep Singh 	{ /* IPsec Lookaside Protocol offload ESP Transport Egress */
230*42600bbcSGagandeep Singh 		.action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
231*42600bbcSGagandeep Singh 		.protocol = RTE_SECURITY_PROTOCOL_IPSEC,
232*42600bbcSGagandeep Singh 		.ipsec = {
233*42600bbcSGagandeep Singh 			.proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
234*42600bbcSGagandeep Singh 			.mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
235*42600bbcSGagandeep Singh 			.direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS,
236*42600bbcSGagandeep Singh 			.options = { 0 }
237*42600bbcSGagandeep Singh 		},
238*42600bbcSGagandeep Singh 		.crypto_capabilities = caam_jr_capabilities
239*42600bbcSGagandeep Singh 	},
240*42600bbcSGagandeep Singh 	{ /* IPsec Lookaside Protocol offload ESP Tunnel Ingress */
241*42600bbcSGagandeep Singh 		.action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
242*42600bbcSGagandeep Singh 		.protocol = RTE_SECURITY_PROTOCOL_IPSEC,
243*42600bbcSGagandeep Singh 		.ipsec = {
244*42600bbcSGagandeep Singh 			.proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
245*42600bbcSGagandeep Singh 			.mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
246*42600bbcSGagandeep Singh 			.direction = RTE_SECURITY_IPSEC_SA_DIR_INGRESS,
247*42600bbcSGagandeep Singh 			.options = { 0 }
248*42600bbcSGagandeep Singh 		},
249*42600bbcSGagandeep Singh 		.crypto_capabilities = caam_jr_capabilities
250*42600bbcSGagandeep Singh 	},
251*42600bbcSGagandeep Singh 	{
252*42600bbcSGagandeep Singh 		.action = RTE_SECURITY_ACTION_TYPE_NONE
253*42600bbcSGagandeep Singh 	}
254*42600bbcSGagandeep Singh };
255*42600bbcSGagandeep Singh 
256*42600bbcSGagandeep Singh const struct rte_cryptodev_capabilities *
caam_jr_get_cryptodev_capabilities(void)257*42600bbcSGagandeep Singh caam_jr_get_cryptodev_capabilities(void)
258*42600bbcSGagandeep Singh {
259*42600bbcSGagandeep Singh 	return caam_jr_capabilities;
260*42600bbcSGagandeep Singh }
261*42600bbcSGagandeep Singh 
262*42600bbcSGagandeep Singh const struct rte_security_capability *
caam_jr_get_security_capabilities(void * device __rte_unused)263*42600bbcSGagandeep Singh caam_jr_get_security_capabilities(void *device __rte_unused)
264*42600bbcSGagandeep Singh {
265*42600bbcSGagandeep Singh 	return caam_jr_security_cap;
266*42600bbcSGagandeep Singh }
267