New upstream version 18.11-rc1
[deb_dpdk.git] / drivers / crypto / octeontx / otx_cryptodev_capabilities.c
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2018 Cavium, Inc
3  */
4
5 #include <rte_cryptodev.h>
6
7 #include "otx_cryptodev_capabilities.h"
8
9 static const struct rte_cryptodev_capabilities otx_capabilities[] = {
10         /* Symmetric capabilities */
11         {       /* NULL (AUTH) */
12                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
13                 {.sym = {
14                         .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
15                         {.auth = {
16                                 .algo = RTE_CRYPTO_AUTH_NULL,
17                                 .block_size = 1,
18                                 .key_size = {
19                                         .min = 0,
20                                         .max = 0,
21                                         .increment = 0
22                                 },
23                                 .digest_size = {
24                                         .min = 0,
25                                         .max = 0,
26                                         .increment = 0
27                                 },
28                         }, },
29                 }, },
30         },
31         {       /* AES GMAC (AUTH) */
32                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
33                 {.sym = {
34                         .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
35                         {.auth = {
36                                 .algo = RTE_CRYPTO_AUTH_AES_GMAC,
37                                 .block_size = 16,
38                                 .key_size = {
39                                         .min = 16,
40                                         .max = 32,
41                                         .increment = 8
42                                 },
43                                 .digest_size = {
44                                         .min = 8,
45                                         .max = 16,
46                                         .increment = 4
47                                 },
48                                 .iv_size = {
49                                         .min = 12,
50                                         .max = 12,
51                                         .increment = 0
52                                 }
53                         }, }
54                 }, }
55         },
56         {       /* KASUMI (F9) */
57                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
58                 {.sym = {
59                         .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
60                         {.auth = {
61                                 .algo = RTE_CRYPTO_AUTH_KASUMI_F9,
62                                 .block_size = 8,
63                                 .key_size = {
64                                         .min = 16,
65                                         .max = 16,
66                                         .increment = 0
67                                 },
68                                 .digest_size = {
69                                         .min = 4,
70                                         .max = 4,
71                                         .increment = 0
72                                 },
73                         }, }
74                 }, }
75         },
76         {       /* MD5 */
77                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
78                 {.sym = {
79                         .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
80                         {.auth = {
81                                 .algo = RTE_CRYPTO_AUTH_MD5,
82                                 .block_size = 64,
83                                 .key_size = {
84                                         .min = 0,
85                                         .max = 0,
86                                         .increment = 0
87                                 },
88                                 .digest_size = {
89                                         .min = 1,
90                                         .max = 16,
91                                         .increment = 1
92                                 },
93                         }, }
94                 }, }
95         },
96         {       /* MD5 HMAC */
97                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
98                 {.sym = {
99                         .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
100                         {.auth = {
101                                 .algo = RTE_CRYPTO_AUTH_MD5_HMAC,
102                                 .block_size = 64,
103                                 .key_size = {
104                                         .min = 8,
105                                         .max = 64,
106                                         .increment = 8
107                                 },
108                                 .digest_size = {
109                                         .min = 1,
110                                         .max = 16,
111                                         .increment = 1
112                                 },
113                         }, }
114                 }, }
115         },
116         {       /* SHA1 */
117                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
118                 {.sym = {
119                         .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
120                         {.auth = {
121                                 .algo = RTE_CRYPTO_AUTH_SHA1,
122                                 .block_size = 64,
123                                 .key_size = {
124                                         .min = 0,
125                                         .max = 0,
126                                         .increment = 0
127                                 },
128                                 .digest_size = {
129                                         .min = 1,
130                                         .max = 20,
131                                         .increment = 1
132                                 },
133                         }, }
134                 }, }
135         },
136         {       /* SHA1 HMAC */
137                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
138                 {.sym = {
139                         .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
140                         {.auth = {
141                                 .algo = RTE_CRYPTO_AUTH_SHA1_HMAC,
142                                 .block_size = 64,
143                                 .key_size = {
144                                         .min = 64,
145                                         .max = 64,
146                                         .increment = 0
147                                 },
148                                 .digest_size = {
149                                         .min = 1,
150                                         .max = 20,
151                                         .increment = 1
152                                 },
153                         }, }
154                 }, }
155         },
156         {       /* SHA224 */
157                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
158                 {.sym = {
159                         .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
160                         {.auth = {
161                                 .algo = RTE_CRYPTO_AUTH_SHA224,
162                                 .block_size = 64,
163                                         .key_size = {
164                                         .min = 0,
165                                         .max = 0,
166                                         .increment = 0
167                                 },
168                                 .digest_size = {
169                                         .min = 1,
170                                         .max = 28,
171                                         .increment = 1
172                                 },
173                         }, }
174                 }, }
175         },
176         {       /* SHA224 HMAC */
177                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
178                 {.sym = {
179                         .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
180                         {.auth = {
181                                 .algo = RTE_CRYPTO_AUTH_SHA224_HMAC,
182                                 .block_size = 64,
183                                         .key_size = {
184                                         .min = 64,
185                                         .max = 64,
186                                         .increment = 0
187                                 },
188                                 .digest_size = {
189                                         .min = 1,
190                                         .max = 28,
191                                         .increment = 1
192                                 },
193                         }, }
194                 }, }
195         },
196         {       /* SHA256 */
197                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
198                 {.sym = {
199                         .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
200                         {.auth = {
201                                 .algo = RTE_CRYPTO_AUTH_SHA256,
202                                 .block_size = 64,
203                                 .key_size = {
204                                         .min = 0,
205                                         .max = 0,
206                                         .increment = 0
207                                 },
208                                 .digest_size = {
209                                         .min = 1,
210                                         .max = 32,
211                                         .increment = 1
212                                 },
213                         }, }
214                 }, }
215         },
216         {       /* SHA256 HMAC */
217                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
218                 {.sym = {
219                         .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
220                         {.auth = {
221                                 .algo = RTE_CRYPTO_AUTH_SHA256_HMAC,
222                                 .block_size = 64,
223                                 .key_size = {
224                                         .min = 64,
225                                         .max = 64,
226                                         .increment = 0
227                                 },
228                                 .digest_size = {
229                                         .min = 1,
230                                         .max = 32,
231                                         .increment = 1
232                                 },
233                         }, }
234                 }, }
235         },
236         {       /* SHA384 */
237                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
238                 {.sym = {
239                         .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
240                         {.auth = {
241                                 .algo = RTE_CRYPTO_AUTH_SHA384,
242                                 .block_size = 64,
243                                 .key_size = {
244                                         .min = 0,
245                                         .max = 0,
246                                         .increment = 0
247                                 },
248                                 .digest_size = {
249                                         .min = 1,
250                                         .max = 48,
251                                         .increment = 1
252                                         },
253                         }, }
254                 }, }
255         },
256         {       /* SHA384 HMAC */
257                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
258                 {.sym = {
259                         .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
260                         {.auth = {
261                                 .algo = RTE_CRYPTO_AUTH_SHA384_HMAC,
262                                 .block_size = 64,
263                                 .key_size = {
264                                         .min = 64,
265                                         .max = 64,
266                                         .increment = 0
267                                 },
268                                 .digest_size = {
269                                         .min = 1,
270                                         .max = 48,
271                                         .increment = 1
272                                         },
273                         }, }
274                 }, }
275         },
276         {       /* SHA512 */
277                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
278                 {.sym = {
279                         .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
280                         {.auth = {
281                                 .algo = RTE_CRYPTO_AUTH_SHA512,
282                                 .block_size = 128,
283                                 .key_size = {
284                                         .min = 0,
285                                         .max = 0,
286                                         .increment = 0
287                                 },
288                                 .digest_size = {
289                                         .min = 1,
290                                         .max = 64,
291                                         .increment = 1
292                                 },
293                         }, }
294                 }, }
295         },
296         {       /* SHA512 HMAC */
297                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
298                 {.sym = {
299                         .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
300                         {.auth = {
301                                 .algo = RTE_CRYPTO_AUTH_SHA512_HMAC,
302                                 .block_size = 128,
303                                 .key_size = {
304                                         .min = 64,
305                                         .max = 64,
306                                         .increment = 0
307                                 },
308                                 .digest_size = {
309                                         .min = 1,
310                                         .max = 64,
311                                         .increment = 1
312                                 },
313                         }, }
314                 }, }
315         },
316         {       /* SNOW 3G (UIA2) */
317                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
318                 {.sym = {
319                         .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
320                         {.auth = {
321                                 .algo = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
322                                 .block_size = 16,
323                                 .key_size = {
324                                         .min = 16,
325                                         .max = 16,
326                                         .increment = 0
327                                 },
328                                 .digest_size = {
329                                         .min = 4,
330                                         .max = 4,
331                                         .increment = 0
332                                 },
333                                 .iv_size = {
334                                         .min = 16,
335                                         .max = 16,
336                                         .increment = 0
337                                 }
338                         }, }
339                 }, }
340         },
341         {       /* ZUC (EIA3) */
342                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
343                 {.sym = {
344                         .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
345                         {.auth = {
346                                 .algo = RTE_CRYPTO_AUTH_ZUC_EIA3,
347                                 .block_size = 16,
348                                 .key_size = {
349                                         .min = 16,
350                                         .max = 16,
351                                         .increment = 0
352                                 },
353                                 .digest_size = {
354                                         .min = 4,
355                                         .max = 4,
356                                         .increment = 0
357                                 },
358                                 .iv_size = {
359                                         .min = 16,
360                                         .max = 16,
361                                         .increment = 0
362                                 }
363                         }, }
364                 }, }
365         },
366         {       /* NULL (CIPHER) */
367                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
368                 {.sym = {
369                         .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
370                         {.cipher = {
371                                 .algo = RTE_CRYPTO_CIPHER_NULL,
372                                 .block_size = 1,
373                                 .key_size = {
374                                         .min = 0,
375                                         .max = 0,
376                                         .increment = 0
377                                 },
378                                 .iv_size = {
379                                         .min = 0,
380                                         .max = 0,
381                                         .increment = 0
382                                 }
383                         }, },
384                 }, }
385         },
386         {       /* 3DES CBC */
387                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
388                 {.sym = {
389                         .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
390                         {.cipher = {
391                                 .algo = RTE_CRYPTO_CIPHER_3DES_CBC,
392                                 .block_size = 8,
393                                 .key_size = {
394                                         .min = 24,
395                                         .max = 24,
396                                         .increment = 0
397                                 },
398                                 .iv_size = {
399                                         .min = 8,
400                                         .max = 16,
401                                         .increment = 8
402                                 }
403                         }, }
404                 }, }
405         },
406         {       /* 3DES ECB */
407                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
408                 {.sym = {
409                         .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
410                         {.cipher = {
411                                 .algo = RTE_CRYPTO_CIPHER_3DES_ECB,
412                                 .block_size = 8,
413                                 .key_size = {
414                                         .min = 24,
415                                         .max = 24,
416                                         .increment = 0
417                                 },
418                                 .iv_size = {
419                                         .min = 0,
420                                         .max = 0,
421                                         .increment = 0
422                                 }
423                         }, }
424                 }, }
425         },
426         {       /* AES CBC */
427                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
428                 {.sym = {
429                         .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
430                         {.cipher = {
431                                 .algo = RTE_CRYPTO_CIPHER_AES_CBC,
432                                 .block_size = 16,
433                                 .key_size = {
434                                         .min = 16,
435                                         .max = 32,
436                                         .increment = 8
437                                 },
438                                 .iv_size = {
439                                         .min = 16,
440                                         .max = 16,
441                                         .increment = 0
442                                 }
443                         }, }
444                 }, }
445         },
446         {       /* AES CTR */
447                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
448                 {.sym = {
449                         .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
450                         {.cipher = {
451                                 .algo = RTE_CRYPTO_CIPHER_AES_CTR,
452                                 .block_size = 16,
453                                 .key_size = {
454                                         .min = 16,
455                                         .max = 32,
456                                         .increment = 8
457                                 },
458                                 .iv_size = {
459                                         .min = 12,
460                                         .max = 16,
461                                         .increment = 4
462                                 }
463                         }, }
464                 }, }
465         },
466         {       /* AES XTS */
467                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
468                 {.sym = {
469                         .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
470                         {.cipher = {
471                                 .algo = RTE_CRYPTO_CIPHER_AES_XTS,
472                                 .block_size = 16,
473                                 .key_size = {
474                                         .min = 32,
475                                         .max = 64,
476                                         .increment = 0
477                                 },
478                                 .iv_size = {
479                                         .min = 16,
480                                         .max = 16,
481                                         .increment = 0
482                                 }
483                         }, }
484                 }, }
485         },
486         {       /* DES CBC */
487                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
488                 {.sym = {
489                         .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
490                         {.cipher = {
491                                 .algo = RTE_CRYPTO_CIPHER_DES_CBC,
492                                 .block_size = 8,
493                                 .key_size = {
494                                         .min = 8,
495                                         .max = 8,
496                                         .increment = 0
497                                 },
498                                 .iv_size = {
499                                         .min = 8,
500                                         .max = 8,
501                                         .increment = 0
502                                 }
503                         }, }
504                 }, }
505         },
506         {       /* KASUMI (F8) */
507                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
508                 {.sym = {
509                         .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
510                         {.cipher = {
511                                 .algo = RTE_CRYPTO_CIPHER_KASUMI_F8,
512                                 .block_size = 8,
513                                 .key_size = {
514                                         .min = 16,
515                                         .max = 16,
516                                         .increment = 0
517                                 },
518                                 .iv_size = {
519                                         .min = 8,
520                                         .max = 8,
521                                         .increment = 0
522                                 }
523                         }, }
524                 }, }
525         },
526         {       /* SNOW 3G (UEA2) */
527                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
528                 {.sym = {
529                         .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
530                         {.cipher = {
531                                 .algo = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
532                                 .block_size = 16,
533                                 .key_size = {
534                                         .min = 16,
535                                         .max = 16,
536                                         .increment = 0
537                                 },
538                                 .iv_size = {
539                                         .min = 16,
540                                         .max = 16,
541                                         .increment = 0
542                                 }
543                         }, }
544                 }, }
545         },
546         {       /* ZUC (EEA3) */
547                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
548                 {.sym = {
549                         .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
550                         {.cipher = {
551                                 .algo = RTE_CRYPTO_CIPHER_ZUC_EEA3,
552                                 .block_size = 16,
553                                 .key_size = {
554                                         .min = 16,
555                                         .max = 16,
556                                         .increment = 0
557                                 },
558                                 .iv_size = {
559                                         .min = 16,
560                                         .max = 16,
561                                         .increment = 0
562                                 }
563                         }, }
564                 }, }
565         },
566         {       /* AES GCM */
567                 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
568                 {.sym = {
569                         .xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,
570                         {.aead = {
571                                 .algo = RTE_CRYPTO_AEAD_AES_GCM,
572                                 .block_size = 16,
573                                 .key_size = {
574                                         .min = 16,
575                                         .max = 32,
576                                         .increment = 8
577                                 },
578                                 .digest_size = {
579                                         .min = 8,
580                                         .max = 16,
581                                         .increment = 4
582                                 },
583                                 .aad_size = {
584                                         .min = 0,
585                                         .max = 1024,
586                                         .increment = 1
587                                 },
588                                 .iv_size = {
589                                         .min = 12,
590                                         .max = 12,
591                                         .increment = 0
592                                 }
593                         }, }
594                 }, }
595         },
596         /* End of symmetric capabilities */
597         RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST()
598 };
599
600 const struct rte_cryptodev_capabilities *
601 otx_get_capabilities(void)
602 {
603         return otx_capabilities;
604 }