crypto/bcmfs: add session handling and capabilities
[dpdk.git] / drivers / crypto / bcmfs / bcmfs_sym_capabilities.c
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 *
761 bcmfs_sym_get_capabilities(void)
762 {
763         return bcmfs_sym_capabilities;
764 }