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