1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2020 Intel Corporation
3  */
4 
5 #ifndef _IAVF_IPSEC_CRYPTO_CAPABILITIES_H_
6 #define _IAVF_IPSEC_CRYPTO_CAPABILITIES_H_
7 
8 static const struct rte_cryptodev_capabilities iavf_crypto_capabilities[] = {
9 	{	/* SHA1 HMAC */
10 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
11 		{.sym = {
12 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
13 			{.auth = {
14 				.algo = RTE_CRYPTO_AUTH_SHA1_HMAC,
15 				.block_size = 64,
16 				.key_size = {
17 					.min = 1,
18 					.max = 64,
19 					.increment = 1
20 				},
21 				.digest_size = {
22 					.min = 20,
23 					.max = 20,
24 					.increment = 0
25 				},
26 				.iv_size = { 0 }
27 			}, }
28 		}, }
29 	},
30 	{	/* SHA256 HMAC */
31 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
32 		{.sym = {
33 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
34 			{.auth = {
35 				.algo = RTE_CRYPTO_AUTH_SHA256_HMAC,
36 				.block_size = 64,
37 				.key_size = {
38 					.min = 1,
39 					.max = 64,
40 					.increment = 1
41 				},
42 				.digest_size = {
43 					.min = 32,
44 					.max = 32,
45 					.increment = 0
46 				},
47 				.iv_size = { 0 }
48 			}, }
49 		}, }
50 	},
51 	{	/* SHA384 HMAC */
52 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
53 		{.sym = {
54 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
55 			{.auth = {
56 				.algo = RTE_CRYPTO_AUTH_SHA384_HMAC,
57 				.block_size = 128,
58 				.key_size = {
59 					.min = 1,
60 					.max = 128,
61 					.increment = 1
62 				},
63 				.digest_size = {
64 					.min = 48,
65 					.max = 48,
66 					.increment = 0
67 				},
68 				.iv_size = { 0 }
69 			}, }
70 		}, }
71 	},
72 	{	/* SHA512 HMAC */
73 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
74 		{.sym = {
75 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
76 			{.auth = {
77 				.algo = RTE_CRYPTO_AUTH_SHA512_HMAC,
78 				.block_size = 128,
79 				.key_size = {
80 					.min = 1,
81 					.max = 128,
82 					.increment = 1
83 				},
84 				.digest_size = {
85 					.min = 64,
86 					.max = 64,
87 					.increment = 0
88 				},
89 				.iv_size = { 0 }
90 			}, }
91 		}, }
92 	},
93 	{	/* MD5 HMAC */
94 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
95 		{.sym = {
96 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
97 			{.auth = {
98 				.algo = RTE_CRYPTO_AUTH_MD5_HMAC,
99 				.block_size = 64,
100 				.key_size = {
101 					.min = 1,
102 					.max = 64,
103 					.increment = 1
104 				},
105 				.digest_size = {
106 					.min = 16,
107 					.max = 16,
108 					.increment = 0
109 				},
110 				.iv_size = { 0 }
111 			}, }
112 		}, }
113 	},
114 	{	/* AES XCBC MAC */
115 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
116 		{.sym = {
117 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
118 			{.auth = {
119 				.algo = RTE_CRYPTO_AUTH_AES_XCBC_MAC,
120 				.block_size = 16,
121 				.key_size = {
122 					.min = 16,
123 					.max = 16,
124 					.increment = 0
125 				},
126 				.digest_size = {
127 					.min = 16,
128 					.max = 16,
129 					.increment = 0
130 				},
131 				.aad_size = { 0 },
132 				.iv_size = { 0 }
133 			}, }
134 		}, }
135 	},
136 	{	/* AES GCM */
137 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
138 		{.sym = {
139 			.xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,
140 			{.aead = {
141 				.algo = RTE_CRYPTO_AEAD_AES_GCM,
142 				.block_size = 16,
143 				.key_size = {
144 					.min = 16,
145 					.max = 32,
146 					.increment = 8
147 				},
148 				.digest_size = {
149 					.min = 8,
150 					.max = 16,
151 					.increment = 4
152 				},
153 				.aad_size = {
154 					.min = 0,
155 					.max = 240,
156 					.increment = 1
157 				},
158 				.iv_size = {
159 					.min = 8,
160 					.max = 8,
161 					.increment = 0
162 				},
163 			}, }
164 		}, }
165 	},
166 	{	/* ChaCha20-Poly1305 */
167 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
168 		{.sym = {
169 			.xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,
170 			{.aead = {
171 				.algo = RTE_CRYPTO_AEAD_CHACHA20_POLY1305,
172 				.block_size = 16,
173 				.key_size = {
174 					.min = 32,
175 					.max = 32,
176 					.increment = 0
177 				},
178 				.digest_size = {
179 					.min = 8,
180 					.max = 16,
181 					.increment = 4
182 				},
183 				.aad_size = {
184 					.min = 0,
185 					.max = 240,
186 					.increment = 1
187 				},
188 				.iv_size = {
189 					.min = 12,
190 					.max = 12,
191 					.increment = 0
192 				},
193 			}, }
194 		}, }
195 	},
196 	{	/* AES CCM */
197 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
198 		{.sym = {
199 			.xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,
200 			{.aead = {
201 				.algo = RTE_CRYPTO_AEAD_AES_CCM,
202 				.block_size = 16,
203 				.key_size = {
204 					.min = 16,
205 					.max = 32,
206 					.increment = 8
207 				},
208 				.digest_size = {
209 					.min = 8,
210 					.max = 16,
211 					.increment = 4
212 				},
213 				.aad_size = {
214 					.min = 0,
215 					.max = 240,
216 					.increment = 1
217 				},
218 				.iv_size = {
219 					.min = 12,
220 					.max = 12,
221 					.increment = 0
222 				},
223 			}, }
224 		}, }
225 	},
226 	{	/* AES GMAC (AUTH) */
227 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
228 		{.sym = {
229 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
230 			{.auth = {
231 				.algo = RTE_CRYPTO_AUTH_AES_GMAC,
232 				.block_size = 16,
233 				.key_size = {
234 					.min = 16,
235 					.max = 32,
236 					.increment = 8
237 				},
238 				.digest_size = {
239 					.min = 8,
240 					.max = 16,
241 					.increment = 4
242 				},
243 				.iv_size = {
244 					.min = 12,
245 					.max = 12,
246 					.increment = 0
247 				}
248 			}, }
249 		}, }
250 	},
251 	{	/* AES CMAC (AUTH) */
252 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
253 		{.sym = {
254 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
255 			{.auth = {
256 				.algo = RTE_CRYPTO_AUTH_AES_CMAC,
257 				.block_size = 16,
258 				.key_size = {
259 					.min = 16,
260 					.max = 32,
261 					.increment = 8
262 				},
263 				.digest_size = {
264 					.min = 8,
265 					.max = 16,
266 					.increment = 4
267 				},
268 				.iv_size = {
269 					.min = 12,
270 					.max = 12,
271 					.increment = 0
272 				}
273 			}, }
274 		}, }
275 	},
276 	{	/* AES CBC */
277 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
278 		{.sym = {
279 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
280 			{.cipher = {
281 				.algo = RTE_CRYPTO_CIPHER_AES_CBC,
282 				.block_size = 16,
283 				.key_size = {
284 					.min = 16,
285 					.max = 32,
286 					.increment = 8
287 				},
288 				.iv_size = {
289 					.min = 16,
290 					.max = 16,
291 					.increment = 0
292 				}
293 			}, }
294 		}, }
295 	},
296 	{	/* AES CTR */
297 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
298 		{.sym = {
299 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
300 			{.cipher = {
301 				.algo = RTE_CRYPTO_CIPHER_AES_CTR,
302 				.block_size = 16,
303 				.key_size = {
304 					.min = 16,
305 					.max = 32,
306 					.increment = 8
307 				},
308 				.iv_size = {
309 					.min = 8,
310 					.max = 8,
311 					.increment = 0
312 				}
313 			}, }
314 		}, }
315 	},
316 	{	/* NULL (AUTH) */
317 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
318 		{.sym = {
319 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
320 			{.auth = {
321 				.algo = RTE_CRYPTO_AUTH_NULL,
322 				.block_size = 1,
323 				.key_size = {
324 					.min = 0,
325 					.max = 0,
326 					.increment = 0
327 				},
328 				.digest_size = {
329 					.min = 0,
330 					.max = 0,
331 					.increment = 0
332 				},
333 				.iv_size = { 0 }
334 			}, },
335 		}, },
336 	},
337 	{	/* NULL (CIPHER) */
338 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
339 		{.sym = {
340 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
341 			{.cipher = {
342 				.algo = RTE_CRYPTO_CIPHER_NULL,
343 				.block_size = 1,
344 				.key_size = {
345 					.min = 0,
346 					.max = 0,
347 					.increment = 0
348 				},
349 				.iv_size = {
350 					.min = 0,
351 					.max = 0,
352 					.increment = 0
353 				}
354 			}, },
355 		}, }
356 	},
357 	{	/* 3DES CBC */
358 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
359 		{.sym = {
360 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
361 			{.cipher = {
362 				.algo = RTE_CRYPTO_CIPHER_3DES_CBC,
363 				.block_size = 8,
364 				.key_size = {
365 					.min = 24,
366 					.max = 24,
367 					.increment = 0
368 				},
369 				.iv_size = {
370 					.min = 8,
371 					.max = 8,
372 					.increment = 0
373 				}
374 			}, }
375 		}, }
376 	},
377 	{
378 		.op = RTE_CRYPTO_OP_TYPE_UNDEFINED,
379 	}
380 };
381 
382 
383 #endif /* _IAVF_IPSEC_CRYPTO_CAPABILITIES_H_ */
384