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