Branch data Line data Source code
1 : : /* SPDX-License-Identifier: BSD-3-Clause
2 : : * Copyright(C) 2021 Marvell.
3 : : */
4 : :
5 : : #include <cryptodev_pmd.h>
6 : : #include <rte_security.h>
7 : :
8 : : #include "roc_api.h"
9 : :
10 : : #include "cnxk_cryptodev.h"
11 : : #include "cnxk_cryptodev_capabilities.h"
12 : : #include "cnxk_security_ar.h"
13 : :
14 : : #define CPT_CAPS_ADD(cnxk_caps, cur_pos, hw_caps, name) \
15 : : do { \
16 : : if ((hw_caps[CPT_ENG_TYPE_SE].name) || \
17 : : (hw_caps[CPT_ENG_TYPE_IE].name) || \
18 : : (hw_caps[CPT_ENG_TYPE_AE].name)) \
19 : : cpt_caps_add(cnxk_caps, cur_pos, caps_##name, \
20 : : RTE_DIM(caps_##name)); \
21 : : } while (0)
22 : :
23 : : #define SEC_IPSEC_CAPS_ADD(cnxk_caps, cur_pos, hw_caps, name) \
24 : : do { \
25 : : if ((hw_caps[CPT_ENG_TYPE_SE].name) || \
26 : : (hw_caps[CPT_ENG_TYPE_IE].name) || \
27 : : (hw_caps[CPT_ENG_TYPE_AE].name)) \
28 : : sec_ipsec_caps_add(cnxk_caps, cur_pos, \
29 : : sec_ipsec_caps_##name, \
30 : : RTE_DIM(sec_ipsec_caps_##name)); \
31 : : } while (0)
32 : :
33 : : #define SEC_TLS12_CAPS_ADD(cnxk_caps, cur_pos, hw_caps, name) \
34 : : do { \
35 : : if ((hw_caps[CPT_ENG_TYPE_SE].name) || \
36 : : (hw_caps[CPT_ENG_TYPE_IE].name) || \
37 : : (hw_caps[CPT_ENG_TYPE_AE].name)) \
38 : : sec_tls12_caps_add(cnxk_caps, cur_pos, \
39 : : sec_tls12_caps_##name, \
40 : : RTE_DIM(sec_tls12_caps_##name)); \
41 : : } while (0)
42 : :
43 : : #define SEC_TLS13_CAPS_ADD(cnxk_caps, cur_pos, hw_caps, name) \
44 : : do { \
45 : : if ((hw_caps[CPT_ENG_TYPE_SE].name) || \
46 : : (hw_caps[CPT_ENG_TYPE_IE].name) || \
47 : : (hw_caps[CPT_ENG_TYPE_AE].name)) \
48 : : sec_tls13_caps_add(cnxk_caps, cur_pos, \
49 : : sec_tls13_caps_##name, \
50 : : RTE_DIM(sec_tls13_caps_##name)); \
51 : : } while (0)
52 : :
53 : : static const struct rte_cryptodev_capabilities caps_mul[] = {
54 : : { /* RSA */
55 : : .op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC,
56 : : {.asym = {
57 : : .xform_capa = {
58 : : .xform_type = RTE_CRYPTO_ASYM_XFORM_RSA,
59 : : .op_types = ((1 << RTE_CRYPTO_ASYM_OP_SIGN) |
60 : : (1 << RTE_CRYPTO_ASYM_OP_VERIFY) |
61 : : (1 << RTE_CRYPTO_ASYM_OP_ENCRYPT) |
62 : : (1 << RTE_CRYPTO_ASYM_OP_DECRYPT)),
63 : : {.modlen = {
64 : : .min = 17,
65 : : .max = 1024,
66 : : .increment = 1
67 : : }, }
68 : : }
69 : : }, }
70 : : },
71 : : { /* MOD_EXP */
72 : : .op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC,
73 : : {.asym = {
74 : : .xform_capa = {
75 : : .xform_type = RTE_CRYPTO_ASYM_XFORM_MODEX,
76 : : .op_types = 0,
77 : : {.modlen = {
78 : : .min = 17,
79 : : .max = 1024,
80 : : .increment = 1
81 : : }, }
82 : : }
83 : : }, }
84 : : },
85 : : { /* ECDSA */
86 : : .op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC,
87 : : {.asym = {
88 : : .xform_capa = {
89 : : .xform_type = RTE_CRYPTO_ASYM_XFORM_ECDSA,
90 : : .op_types = ((1 << RTE_CRYPTO_ASYM_OP_SIGN) |
91 : : (1 << RTE_CRYPTO_ASYM_OP_VERIFY)),
92 : : }
93 : : },
94 : : }
95 : : },
96 : : { /* ECPM */
97 : : .op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC,
98 : : {.asym = {
99 : : .xform_capa = {
100 : : .xform_type = RTE_CRYPTO_ASYM_XFORM_ECPM,
101 : : .op_types = 0
102 : : }
103 : : },
104 : : }
105 : : },
106 : : { /* ECFPM */
107 : : .op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC,
108 : : {.asym = {
109 : : .xform_capa = {
110 : : .xform_type = RTE_CRYPTO_ASYM_XFORM_ECFPM,
111 : : .op_types = 0
112 : : }
113 : : },
114 : : }
115 : : },
116 : : { /* ECDH */
117 : : .op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC,
118 : : {.asym = {
119 : : .xform_capa = {
120 : : .xform_type = RTE_CRYPTO_ASYM_XFORM_ECDH,
121 : : .op_types = ((1 << RTE_CRYPTO_ASYM_KE_PRIV_KEY_GENERATE) |
122 : : (1 << RTE_CRYPTO_ASYM_KE_PUB_KEY_GENERATE) |
123 : : (1 << RTE_CRYPTO_ASYM_KE_PUB_KEY_VERIFY) |
124 : : (1 << RTE_CRYPTO_ASYM_KE_SHARED_SECRET_COMPUTE)
125 : : ),
126 : : }
127 : : },
128 : : }
129 : : },
130 : : };
131 : :
132 : : static const struct rte_cryptodev_capabilities caps_pqc[] = {
133 : : {
134 : : /* ML-KEM */
135 : : .op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC,
136 : : .asym = {
137 : : .xform_capa = {
138 : : .xform_type = RTE_CRYPTO_ASYM_XFORM_ML_KEM,
139 : : .op_types =
140 : : ((1 << RTE_CRYPTO_ML_KEM_OP_KEYGEN) |
141 : : (1 << RTE_CRYPTO_ML_KEM_OP_ENCAP) |
142 : : (1 << RTE_CRYPTO_ML_KEM_OP_DECAP)),
143 : : .mlkem_capa = {
144 : : [RTE_CRYPTO_ML_KEM_OP_KEYGEN] =
145 : : (1 << RTE_CRYPTO_ML_KEM_512) |
146 : : (1 << RTE_CRYPTO_ML_KEM_768) |
147 : : (1 << RTE_CRYPTO_ML_KEM_1024),
148 : : [RTE_CRYPTO_ML_KEM_OP_ENCAP] =
149 : : (1 << RTE_CRYPTO_ML_KEM_512) |
150 : : (1 << RTE_CRYPTO_ML_KEM_768) |
151 : : (1 << RTE_CRYPTO_ML_KEM_1024),
152 : : [RTE_CRYPTO_ML_KEM_OP_DECAP] =
153 : : (1 << RTE_CRYPTO_ML_KEM_512) |
154 : : (1 << RTE_CRYPTO_ML_KEM_768) |
155 : : (1 << RTE_CRYPTO_ML_KEM_1024)
156 : : }
157 : : }
158 : : }
159 : : },
160 : : {
161 : : /* ML-DSA */
162 : : .op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC,
163 : : .asym = {
164 : : .xform_capa = {
165 : : .xform_type = RTE_CRYPTO_ASYM_XFORM_ML_DSA,
166 : : .op_types =
167 : : ((1 << RTE_CRYPTO_ML_DSA_OP_SIGN) |
168 : : (1 << RTE_CRYPTO_ML_DSA_OP_KEYGEN) |
169 : : (1 << RTE_CRYPTO_ML_DSA_OP_VERIFY)),
170 : : .mldsa_capa = {
171 : : [RTE_CRYPTO_ML_DSA_OP_KEYGEN] =
172 : : (1 << RTE_CRYPTO_ML_DSA_44) |
173 : : (1 << RTE_CRYPTO_ML_DSA_65) |
174 : : (1 << RTE_CRYPTO_ML_DSA_87),
175 : : [RTE_CRYPTO_ML_DSA_OP_SIGN] =
176 : : (1 << RTE_CRYPTO_ML_DSA_44) |
177 : : (1 << RTE_CRYPTO_ML_DSA_65) |
178 : : (1 << RTE_CRYPTO_ML_DSA_87),
179 : : [RTE_CRYPTO_ML_DSA_OP_VERIFY] =
180 : : (1 << RTE_CRYPTO_ML_DSA_44) |
181 : : (1 << RTE_CRYPTO_ML_DSA_65) |
182 : : (1 << RTE_CRYPTO_ML_DSA_87)
183 : : }
184 : : }
185 : : }
186 : : },
187 : : };
188 : :
189 : : static const struct rte_cryptodev_capabilities caps_sha1_sha2[] = {
190 : : { /* SHA1 */
191 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
192 : : {.sym = {
193 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
194 : : {.auth = {
195 : : .algo = RTE_CRYPTO_AUTH_SHA1,
196 : : .block_size = 64,
197 : : .key_size = {
198 : : .min = 0,
199 : : .max = 0,
200 : : .increment = 0
201 : : },
202 : : .digest_size = {
203 : : .min = 1,
204 : : .max = 20,
205 : : .increment = 1
206 : : },
207 : : }, }
208 : : }, }
209 : : },
210 : : { /* SHA1 HMAC */
211 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
212 : : {.sym = {
213 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
214 : : {.auth = {
215 : : .algo = RTE_CRYPTO_AUTH_SHA1_HMAC,
216 : : .block_size = 64,
217 : : .key_size = {
218 : : .min = 1,
219 : : .max = 1024,
220 : : .increment = 1
221 : : },
222 : : .digest_size = {
223 : : .min = 1,
224 : : .max = 20,
225 : : .increment = 1
226 : : },
227 : : }, }
228 : : }, }
229 : : },
230 : : { /* SHA224 */
231 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
232 : : {.sym = {
233 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
234 : : {.auth = {
235 : : .algo = RTE_CRYPTO_AUTH_SHA224,
236 : : .block_size = 64,
237 : : .key_size = {
238 : : .min = 0,
239 : : .max = 0,
240 : : .increment = 0
241 : : },
242 : : .digest_size = {
243 : : .min = 1,
244 : : .max = 28,
245 : : .increment = 1
246 : : },
247 : : }, }
248 : : }, }
249 : : },
250 : : { /* SHA224 HMAC */
251 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
252 : : {.sym = {
253 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
254 : : {.auth = {
255 : : .algo = RTE_CRYPTO_AUTH_SHA224_HMAC,
256 : : .block_size = 64,
257 : : .key_size = {
258 : : .min = 1,
259 : : .max = 1024,
260 : : .increment = 1
261 : : },
262 : : .digest_size = {
263 : : .min = 1,
264 : : .max = 28,
265 : : .increment = 1
266 : : },
267 : : }, }
268 : : }, }
269 : : },
270 : : { /* SHA256 */
271 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
272 : : {.sym = {
273 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
274 : : {.auth = {
275 : : .algo = RTE_CRYPTO_AUTH_SHA256,
276 : : .block_size = 64,
277 : : .key_size = {
278 : : .min = 0,
279 : : .max = 0,
280 : : .increment = 0
281 : : },
282 : : .digest_size = {
283 : : .min = 1,
284 : : .max = 32,
285 : : .increment = 1
286 : : },
287 : : }, }
288 : : }, }
289 : : },
290 : : { /* SHA256 HMAC */
291 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
292 : : {.sym = {
293 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
294 : : {.auth = {
295 : : .algo = RTE_CRYPTO_AUTH_SHA256_HMAC,
296 : : .block_size = 64,
297 : : .key_size = {
298 : : .min = 1,
299 : : .max = 1024,
300 : : .increment = 1
301 : : },
302 : : .digest_size = {
303 : : .min = 1,
304 : : .max = 32,
305 : : .increment = 1
306 : : },
307 : : }, }
308 : : }, }
309 : : },
310 : : { /* SHA384 */
311 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
312 : : {.sym = {
313 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
314 : : {.auth = {
315 : : .algo = RTE_CRYPTO_AUTH_SHA384,
316 : : .block_size = 64,
317 : : .key_size = {
318 : : .min = 0,
319 : : .max = 0,
320 : : .increment = 0
321 : : },
322 : : .digest_size = {
323 : : .min = 1,
324 : : .max = 48,
325 : : .increment = 1
326 : : },
327 : : }, }
328 : : }, }
329 : : },
330 : : { /* SHA384 HMAC */
331 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
332 : : {.sym = {
333 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
334 : : {.auth = {
335 : : .algo = RTE_CRYPTO_AUTH_SHA384_HMAC,
336 : : .block_size = 64,
337 : : .key_size = {
338 : : .min = 1,
339 : : .max = 1024,
340 : : .increment = 1
341 : : },
342 : : .digest_size = {
343 : : .min = 1,
344 : : .max = 48,
345 : : .increment = 1
346 : : },
347 : : }, }
348 : : }, }
349 : : },
350 : : { /* SHA512 */
351 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
352 : : {.sym = {
353 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
354 : : {.auth = {
355 : : .algo = RTE_CRYPTO_AUTH_SHA512,
356 : : .block_size = 128,
357 : : .key_size = {
358 : : .min = 0,
359 : : .max = 0,
360 : : .increment = 0
361 : : },
362 : : .digest_size = {
363 : : .min = 1,
364 : : .max = 64,
365 : : .increment = 1
366 : : },
367 : : }, }
368 : : }, }
369 : : },
370 : : { /* SHA512 HMAC */
371 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
372 : : {.sym = {
373 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
374 : : {.auth = {
375 : : .algo = RTE_CRYPTO_AUTH_SHA512_HMAC,
376 : : .block_size = 128,
377 : : .key_size = {
378 : : .min = 1,
379 : : .max = 1024,
380 : : .increment = 1
381 : : },
382 : : .digest_size = {
383 : : .min = 1,
384 : : .max = 64,
385 : : .increment = 1
386 : : },
387 : : }, }
388 : : }, }
389 : : },
390 : : { /* MD5 */
391 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
392 : : {.sym = {
393 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
394 : : {.auth = {
395 : : .algo = RTE_CRYPTO_AUTH_MD5,
396 : : .block_size = 64,
397 : : .key_size = {
398 : : .min = 0,
399 : : .max = 0,
400 : : .increment = 0
401 : : },
402 : : .digest_size = {
403 : : .min = 1,
404 : : .max = 16,
405 : : .increment = 1
406 : : },
407 : : }, }
408 : : }, }
409 : : },
410 : : { /* MD5 HMAC */
411 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
412 : : {.sym = {
413 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
414 : : {.auth = {
415 : : .algo = RTE_CRYPTO_AUTH_MD5_HMAC,
416 : : .block_size = 64,
417 : : .key_size = {
418 : : .min = 8,
419 : : .max = 64,
420 : : .increment = 8
421 : : },
422 : : .digest_size = {
423 : : .min = 1,
424 : : .max = 16,
425 : : .increment = 1
426 : : },
427 : : }, }
428 : : }, }
429 : : },
430 : : };
431 : :
432 : : static const struct rte_cryptodev_capabilities caps_sm3[] = {
433 : : { /* SM3 */
434 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
435 : : {.sym = {
436 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
437 : : {.auth = {
438 : : .algo = RTE_CRYPTO_AUTH_SM3,
439 : : .block_size = 64,
440 : : .key_size = {
441 : : .min = 0,
442 : : .max = 0,
443 : : .increment = 0
444 : : },
445 : : .digest_size = {
446 : : .min = 32,
447 : : .max = 32,
448 : : .increment = 0
449 : : },
450 : : }, }
451 : : }, }
452 : : }
453 : : };
454 : :
455 : : static const struct rte_cryptodev_capabilities caps_sha3[] = {
456 : : { /* SHA3_224 */
457 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
458 : : {.sym = {
459 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
460 : : {.auth = {
461 : : .algo = RTE_CRYPTO_AUTH_SHA3_224,
462 : : .block_size = 144,
463 : : .key_size = {
464 : : .min = 0,
465 : : .max = 0,
466 : : .increment = 0
467 : : },
468 : : .digest_size = {
469 : : .min = 1,
470 : : .max = 28,
471 : : .increment = 1
472 : : },
473 : : }, }
474 : : }, }
475 : : },
476 : : { /* SHA3_224 HMAC */
477 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
478 : : {.sym = {
479 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
480 : : {.auth = {
481 : : .algo = RTE_CRYPTO_AUTH_SHA3_224_HMAC,
482 : : .block_size = 144,
483 : : .key_size = {
484 : : .min = 1,
485 : : .max = 1024,
486 : : .increment = 1
487 : : },
488 : : .digest_size = {
489 : : .min = 1,
490 : : .max = 28,
491 : : .increment = 1
492 : : },
493 : : }, }
494 : : }, }
495 : : },
496 : : { /* SHA3_256 */
497 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
498 : : {.sym = {
499 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
500 : : {.auth = {
501 : : .algo = RTE_CRYPTO_AUTH_SHA3_256,
502 : : .block_size = 136,
503 : : .key_size = {
504 : : .min = 0,
505 : : .max = 0,
506 : : .increment = 0
507 : : },
508 : : .digest_size = {
509 : : .min = 1,
510 : : .max = 32,
511 : : .increment = 1
512 : : },
513 : : }, }
514 : : }, }
515 : : },
516 : : { /* SHA3_256 HMAC */
517 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
518 : : {.sym = {
519 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
520 : : {.auth = {
521 : : .algo = RTE_CRYPTO_AUTH_SHA3_256_HMAC,
522 : : .block_size = 136,
523 : : .key_size = {
524 : : .min = 1,
525 : : .max = 1024,
526 : : .increment = 1
527 : : },
528 : : .digest_size = {
529 : : .min = 1,
530 : : .max = 32,
531 : : .increment = 1
532 : : },
533 : : }, }
534 : : }, }
535 : : },
536 : : { /* SHA3_384 */
537 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
538 : : {.sym = {
539 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
540 : : {.auth = {
541 : : .algo = RTE_CRYPTO_AUTH_SHA3_384,
542 : : .block_size = 104,
543 : : .key_size = {
544 : : .min = 0,
545 : : .max = 0,
546 : : .increment = 0
547 : : },
548 : : .digest_size = {
549 : : .min = 1,
550 : : .max = 48,
551 : : .increment = 0
552 : : },
553 : : }, }
554 : : }, }
555 : : },
556 : : { /* SHA3_384 HMAC */
557 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
558 : : {.sym = {
559 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
560 : : {.auth = {
561 : : .algo = RTE_CRYPTO_AUTH_SHA3_384_HMAC,
562 : : .block_size = 104,
563 : : .key_size = {
564 : : .min = 1,
565 : : .max = 1024,
566 : : .increment = 1
567 : : },
568 : : .digest_size = {
569 : : .min = 1,
570 : : .max = 48,
571 : : .increment = 1
572 : : },
573 : : }, }
574 : : }, }
575 : : },
576 : : { /* SHA3_512 */
577 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
578 : : {.sym = {
579 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
580 : : {.auth = {
581 : : .algo = RTE_CRYPTO_AUTH_SHA3_512,
582 : : .block_size = 72,
583 : : .key_size = {
584 : : .min = 0,
585 : : .max = 0,
586 : : .increment = 0
587 : : },
588 : : .digest_size = {
589 : : .min = 1,
590 : : .max = 64,
591 : : .increment = 1
592 : : },
593 : : }, }
594 : : }, }
595 : : },
596 : : { /* SHA3_512 HMAC */
597 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
598 : : {.sym = {
599 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
600 : : {.auth = {
601 : : .algo = RTE_CRYPTO_AUTH_SHA3_512_HMAC,
602 : : .block_size = 72,
603 : : .key_size = {
604 : : .min = 1,
605 : : .max = 1024,
606 : : .increment = 1
607 : : },
608 : : .digest_size = {
609 : : .min = 1,
610 : : .max = 64,
611 : : .increment = 1
612 : : },
613 : : }, }
614 : : }, }
615 : : },
616 : : { /* SHAKE_128 */
617 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
618 : : {.sym = {
619 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
620 : : {.auth = {
621 : : .algo = RTE_CRYPTO_AUTH_SHAKE_128,
622 : : .block_size = 168,
623 : : .key_size = {
624 : : .min = 0,
625 : : .max = 0,
626 : : .increment = 0
627 : : },
628 : : .digest_size = {
629 : : .min = 1,
630 : : .max = 255,
631 : : .increment = 1
632 : : },
633 : : }, }
634 : : }, }
635 : : },
636 : : { /* SHAKE_256 */
637 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
638 : : {.sym = {
639 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
640 : : {.auth = {
641 : : .algo = RTE_CRYPTO_AUTH_SHAKE_256,
642 : : .block_size = 136,
643 : : .key_size = {
644 : : .min = 0,
645 : : .max = 0,
646 : : .increment = 0
647 : : },
648 : : .digest_size = {
649 : : .min = 1,
650 : : .max = 255,
651 : : .increment = 1
652 : : },
653 : : }, }
654 : : }, }
655 : : },
656 : : };
657 : :
658 : : static const struct rte_cryptodev_capabilities caps_chacha20[] = {
659 : : { /* Chacha20-Poly1305 */
660 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
661 : : {.sym = {
662 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,
663 : : {.aead = {
664 : : .algo = RTE_CRYPTO_AEAD_CHACHA20_POLY1305,
665 : : .block_size = 64,
666 : : .key_size = {
667 : : .min = 32,
668 : : .max = 32,
669 : : .increment = 0
670 : : },
671 : : .digest_size = {
672 : : .min = 16,
673 : : .max = 16,
674 : : .increment = 0
675 : : },
676 : : .aad_size = {
677 : : .min = 0,
678 : : .max = 1024,
679 : : .increment = 1
680 : : },
681 : : .iv_size = {
682 : : .min = 12,
683 : : .max = 12,
684 : : .increment = 0
685 : : },
686 : : }, }
687 : : }, }
688 : : }
689 : : };
690 : :
691 : : static const struct rte_cryptodev_capabilities caps_zuc_snow3g[] = {
692 : : { /* SNOW 3G (UEA2) */
693 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
694 : : {.sym = {
695 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
696 : : {.cipher = {
697 : : .algo = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
698 : : .block_size = 16,
699 : : .key_size = {
700 : : .min = 16,
701 : : .max = 16,
702 : : .increment = 0
703 : : },
704 : : .iv_size = {
705 : : .min = 16,
706 : : .max = 16,
707 : : .increment = 0
708 : : }
709 : : }, }
710 : : }, }
711 : : },
712 : : { /* ZUC (EEA3) */
713 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
714 : : {.sym = {
715 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
716 : : {.cipher = {
717 : : .algo = RTE_CRYPTO_CIPHER_ZUC_EEA3,
718 : : .block_size = 16,
719 : : .key_size = {
720 : : .min = 16,
721 : : .max = 16,
722 : : .increment = 0
723 : : },
724 : : .iv_size = {
725 : : .min = 16,
726 : : .max = 16,
727 : : .increment = 0
728 : : }
729 : : }, }
730 : : }, }
731 : : },
732 : : { /* SNOW 3G (UIA2) */
733 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
734 : : {.sym = {
735 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
736 : : {.auth = {
737 : : .algo = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
738 : : .block_size = 16,
739 : : .key_size = {
740 : : .min = 16,
741 : : .max = 16,
742 : : .increment = 0
743 : : },
744 : : .digest_size = {
745 : : .min = 4,
746 : : .max = 4,
747 : : .increment = 0
748 : : },
749 : : .iv_size = {
750 : : .min = 16,
751 : : .max = 16,
752 : : .increment = 0
753 : : }
754 : : }, }
755 : : }, }
756 : : },
757 : : { /* ZUC (EIA3) */
758 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
759 : : {.sym = {
760 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
761 : : {.auth = {
762 : : .algo = RTE_CRYPTO_AUTH_ZUC_EIA3,
763 : : .block_size = 16,
764 : : .key_size = {
765 : : .min = 16,
766 : : .max = 16,
767 : : .increment = 0
768 : : },
769 : : .digest_size = {
770 : : .min = 4,
771 : : .max = 4,
772 : : .increment = 0
773 : : },
774 : : .iv_size = {
775 : : .min = 16,
776 : : .max = 16,
777 : : .increment = 0
778 : : }
779 : : }, }
780 : : }, }
781 : : },
782 : : };
783 : :
784 : : static const struct rte_cryptodev_capabilities caps_zuc256_snow5g[] = {
785 : : { /* SNOW 5G (NEA4) */
786 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
787 : : {.sym = {
788 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
789 : : {.cipher = {
790 : : .algo = RTE_CRYPTO_CIPHER_SNOW5G_NEA4,
791 : : .block_size = 16,
792 : : .key_size = {
793 : : .min = 32,
794 : : .max = 32,
795 : : .increment = 0
796 : : },
797 : : .iv_size = {
798 : : .min = 16,
799 : : .max = 16,
800 : : .increment = 0
801 : : }
802 : : }, }
803 : : }, }
804 : : },
805 : : { /* SNOW 5G (NIA4) */
806 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
807 : : {.sym = {
808 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
809 : : {.auth = {
810 : : .algo = RTE_CRYPTO_AUTH_SNOW5G_NIA4,
811 : : .block_size = 16,
812 : : .key_size = {
813 : : .min = 32,
814 : : .max = 32,
815 : : .increment = 0
816 : : },
817 : : .digest_size = {
818 : : .min = 4,
819 : : .max = 16,
820 : : .increment = 0
821 : : },
822 : : .iv_size = {
823 : : .min = 16,
824 : : .max = 16,
825 : : .increment = 0
826 : : }
827 : : }, }
828 : : }, }
829 : : },
830 : : { /* ZUC 256 (NEA6) */
831 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
832 : : {.sym = {
833 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
834 : : {.cipher = {
835 : : .algo = RTE_CRYPTO_CIPHER_ZUC_NEA6,
836 : : .block_size = 16,
837 : : .key_size = {
838 : : .min = 32,
839 : : .max = 32,
840 : : .increment = 0
841 : : },
842 : : .iv_size = {
843 : : .min = 16,
844 : : .max = 16,
845 : : .increment = 0
846 : : }
847 : : }, }
848 : : }, }
849 : : },
850 : : { /* ZUC 256 (NIA6) */
851 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
852 : : {.sym = {
853 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
854 : : {.auth = {
855 : : .algo = RTE_CRYPTO_AUTH_ZUC_NIA6,
856 : : .block_size = 16,
857 : : .key_size = {
858 : : .min = 32,
859 : : .max = 32,
860 : : .increment = 0
861 : : },
862 : : .digest_size = {
863 : : .min = 4,
864 : : .max = 16,
865 : : .increment = 0
866 : : },
867 : : .iv_size = {
868 : : .min = 16,
869 : : .max = 16,
870 : : .increment = 0
871 : : }
872 : : }, }
873 : : }, }
874 : : },
875 : : };
876 : :
877 : : static const struct rte_cryptodev_capabilities caps_aes[] = {
878 : : { /* AES GMAC (AUTH) */
879 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
880 : : {.sym = {
881 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
882 : : {.auth = {
883 : : .algo = RTE_CRYPTO_AUTH_AES_GMAC,
884 : : .block_size = 16,
885 : : .key_size = {
886 : : .min = 16,
887 : : .max = 32,
888 : : .increment = 8
889 : : },
890 : : .digest_size = {
891 : : .min = 8,
892 : : .max = 16,
893 : : .increment = 4
894 : : },
895 : : .iv_size = {
896 : : .min = 12,
897 : : .max = 12,
898 : : .increment = 0
899 : : }
900 : : }, }
901 : : }, }
902 : : },
903 : : { /* AES CBC */
904 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
905 : : {.sym = {
906 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
907 : : {.cipher = {
908 : : .algo = RTE_CRYPTO_CIPHER_AES_CBC,
909 : : .block_size = 16,
910 : : .key_size = {
911 : : .min = 16,
912 : : .max = 32,
913 : : .increment = 8
914 : : },
915 : : .iv_size = {
916 : : .min = 16,
917 : : .max = 16,
918 : : .increment = 0
919 : : }
920 : : }, }
921 : : }, }
922 : : },
923 : : { /* AES CTR */
924 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
925 : : {.sym = {
926 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
927 : : {.cipher = {
928 : : .algo = RTE_CRYPTO_CIPHER_AES_CTR,
929 : : .block_size = 16,
930 : : .key_size = {
931 : : .min = 16,
932 : : .max = 32,
933 : : .increment = 8
934 : : },
935 : : .iv_size = {
936 : : .min = 12,
937 : : .max = 16,
938 : : .increment = 4
939 : : }
940 : : }, }
941 : : }, }
942 : : },
943 : : { /* AES XTS */
944 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
945 : : {.sym = {
946 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
947 : : {.cipher = {
948 : : .algo = RTE_CRYPTO_CIPHER_AES_XTS,
949 : : .block_size = 16,
950 : : .key_size = {
951 : : .min = 32,
952 : : .max = 64,
953 : : .increment = 32
954 : : },
955 : : .iv_size = {
956 : : .min = 16,
957 : : .max = 16,
958 : : .increment = 0
959 : : }
960 : : }, }
961 : : }, }
962 : : },
963 : : { /* AES GCM */
964 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
965 : : {.sym = {
966 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,
967 : : {.aead = {
968 : : .algo = RTE_CRYPTO_AEAD_AES_GCM,
969 : : .block_size = 16,
970 : : .key_size = {
971 : : .min = 16,
972 : : .max = 32,
973 : : .increment = 8
974 : : },
975 : : .digest_size = {
976 : : .min = 4,
977 : : .max = 16,
978 : : .increment = 1
979 : : },
980 : : .aad_size = {
981 : : .min = 0,
982 : : .max = 1024,
983 : : .increment = 1
984 : : },
985 : : .iv_size = {
986 : : .min = 12,
987 : : .max = 12,
988 : : .increment = 0
989 : : }
990 : : }, }
991 : : }, }
992 : : },
993 : : { /* AES CCM */
994 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
995 : : {.sym = {
996 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,
997 : : {.aead = {
998 : : .algo = RTE_CRYPTO_AEAD_AES_CCM,
999 : : .block_size = 16,
1000 : : .key_size = {
1001 : : .min = 16,
1002 : : .max = 32,
1003 : : .increment = 8
1004 : : },
1005 : : .digest_size = {
1006 : : .min = 4,
1007 : : .max = 16,
1008 : : .increment = 1
1009 : : },
1010 : : .aad_size = {
1011 : : .min = 0,
1012 : : .max = 1024,
1013 : : .increment = 1
1014 : : },
1015 : : .iv_size = {
1016 : : .min = 11,
1017 : : .max = 13,
1018 : : .increment = 1
1019 : : }
1020 : : }, }
1021 : : }, }
1022 : : },
1023 : : { /* AES CMAC */
1024 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1025 : : {.sym = {
1026 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
1027 : : {.auth = {
1028 : : .algo = RTE_CRYPTO_AUTH_AES_CMAC,
1029 : : .block_size = 16,
1030 : : .key_size = {
1031 : : .min = 16,
1032 : : .max = 32,
1033 : : .increment = 8
1034 : : },
1035 : : .digest_size = {
1036 : : .min = 4,
1037 : : .max = 4,
1038 : : .increment = 0
1039 : : },
1040 : : }, }
1041 : : }, }
1042 : : },
1043 : : };
1044 : :
1045 : : static const struct rte_cryptodev_capabilities caps_kasumi[] = {
1046 : : { /* KASUMI (F8) */
1047 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1048 : : {.sym = {
1049 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
1050 : : {.cipher = {
1051 : : .algo = RTE_CRYPTO_CIPHER_KASUMI_F8,
1052 : : .block_size = 8,
1053 : : .key_size = {
1054 : : .min = 16,
1055 : : .max = 16,
1056 : : .increment = 0
1057 : : },
1058 : : .iv_size = {
1059 : : .min = 8,
1060 : : .max = 8,
1061 : : .increment = 0
1062 : : }
1063 : : }, }
1064 : : }, }
1065 : : },
1066 : : { /* KASUMI (F9) */
1067 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1068 : : {.sym = {
1069 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
1070 : : {.auth = {
1071 : : .algo = RTE_CRYPTO_AUTH_KASUMI_F9,
1072 : : .block_size = 8,
1073 : : .key_size = {
1074 : : .min = 16,
1075 : : .max = 16,
1076 : : .increment = 0
1077 : : },
1078 : : .digest_size = {
1079 : : .min = 4,
1080 : : .max = 4,
1081 : : .increment = 0
1082 : : },
1083 : : }, }
1084 : : }, }
1085 : : },
1086 : : };
1087 : :
1088 : : static const struct rte_cryptodev_capabilities caps_des[] = {
1089 : : { /* 3DES CBC */
1090 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1091 : : {.sym = {
1092 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
1093 : : {.cipher = {
1094 : : .algo = RTE_CRYPTO_CIPHER_3DES_CBC,
1095 : : .block_size = 8,
1096 : : .key_size = {
1097 : : .min = 24,
1098 : : .max = 24,
1099 : : .increment = 0
1100 : : },
1101 : : .iv_size = {
1102 : : .min = 8,
1103 : : .max = 16,
1104 : : .increment = 8
1105 : : }
1106 : : }, }
1107 : : }, }
1108 : : },
1109 : : { /* 3DES ECB */
1110 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1111 : : {.sym = {
1112 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
1113 : : {.cipher = {
1114 : : .algo = RTE_CRYPTO_CIPHER_3DES_ECB,
1115 : : .block_size = 8,
1116 : : .key_size = {
1117 : : .min = 24,
1118 : : .max = 24,
1119 : : .increment = 0
1120 : : },
1121 : : .iv_size = {
1122 : : .min = 0,
1123 : : .max = 0,
1124 : : .increment = 0
1125 : : }
1126 : : }, }
1127 : : }, }
1128 : : },
1129 : : { /* DES CBC */
1130 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1131 : : {.sym = {
1132 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
1133 : : {.cipher = {
1134 : : .algo = RTE_CRYPTO_CIPHER_DES_CBC,
1135 : : .block_size = 8,
1136 : : .key_size = {
1137 : : .min = 8,
1138 : : .max = 8,
1139 : : .increment = 0
1140 : : },
1141 : : .iv_size = {
1142 : : .min = 8,
1143 : : .max = 8,
1144 : : .increment = 0
1145 : : }
1146 : : }, }
1147 : : }, }
1148 : : },
1149 : : };
1150 : :
1151 : : static const struct rte_cryptodev_capabilities caps_docsis[] = {
1152 : : { /* AES DOCSIS BPI */
1153 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1154 : : {.sym = {
1155 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
1156 : : {.cipher = {
1157 : : .algo = RTE_CRYPTO_CIPHER_AES_DOCSISBPI,
1158 : : .block_size = 16,
1159 : : .key_size = {
1160 : : .min = 16,
1161 : : .max = 32,
1162 : : .increment = 16
1163 : : },
1164 : : .iv_size = {
1165 : : .min = 16,
1166 : : .max = 16,
1167 : : .increment = 0
1168 : : }
1169 : : }, }
1170 : : }, }
1171 : : },
1172 : : { /* DES DOCSIS BPI */
1173 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1174 : : {.sym = {
1175 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
1176 : : {.cipher = {
1177 : : .algo = RTE_CRYPTO_CIPHER_DES_DOCSISBPI,
1178 : : .block_size = 8,
1179 : : .key_size = {
1180 : : .min = 8,
1181 : : .max = 8,
1182 : : .increment = 0
1183 : : },
1184 : : .iv_size = {
1185 : : .min = 8,
1186 : : .max = 8,
1187 : : .increment = 0
1188 : : }
1189 : : }, }
1190 : : }, }
1191 : : },
1192 : : };
1193 : :
1194 : : static const struct rte_cryptodev_capabilities caps_null[] = {
1195 : : { /* NULL (AUTH) */
1196 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1197 : : {.sym = {
1198 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
1199 : : {.auth = {
1200 : : .algo = RTE_CRYPTO_AUTH_NULL,
1201 : : .block_size = 1,
1202 : : .key_size = {
1203 : : .min = 0,
1204 : : .max = 0,
1205 : : .increment = 0
1206 : : },
1207 : : .digest_size = {
1208 : : .min = 0,
1209 : : .max = 0,
1210 : : .increment = 0
1211 : : },
1212 : : }, },
1213 : : }, },
1214 : : },
1215 : : { /* NULL (CIPHER) */
1216 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1217 : : {.sym = {
1218 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
1219 : : {.cipher = {
1220 : : .algo = RTE_CRYPTO_CIPHER_NULL,
1221 : : .block_size = 1,
1222 : : .key_size = {
1223 : : .min = 0,
1224 : : .max = 0,
1225 : : .increment = 0
1226 : : },
1227 : : .iv_size = {
1228 : : .min = 0,
1229 : : .max = 0,
1230 : : .increment = 0
1231 : : }
1232 : : }, },
1233 : : }, }
1234 : : },
1235 : : };
1236 : :
1237 : : static const struct rte_cryptodev_capabilities caps_sm4[] = {
1238 : : { /* SM4 CBC */
1239 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1240 : : {.sym = {
1241 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
1242 : : {.cipher = {
1243 : : .algo = RTE_CRYPTO_CIPHER_SM4_CBC,
1244 : : .block_size = 16,
1245 : : .key_size = {
1246 : : .min = 16,
1247 : : .max = 16,
1248 : : .increment = 0
1249 : : },
1250 : : .iv_size = {
1251 : : .min = 16,
1252 : : .max = 16,
1253 : : .increment = 0
1254 : : }
1255 : : }, }
1256 : : }, }
1257 : : },
1258 : : { /* SM4 ECB */
1259 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1260 : : {.sym = {
1261 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
1262 : : {.cipher = {
1263 : : .algo = RTE_CRYPTO_CIPHER_SM4_ECB,
1264 : : .block_size = 16,
1265 : : .key_size = {
1266 : : .min = 16,
1267 : : .max = 16,
1268 : : .increment = 0
1269 : : },
1270 : : .iv_size = {
1271 : : .min = 0,
1272 : : .max = 0,
1273 : : .increment = 0
1274 : : }
1275 : : }, }
1276 : : }, }
1277 : : },
1278 : : { /* SM4 CTR */
1279 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1280 : : {.sym = {
1281 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
1282 : : {.cipher = {
1283 : : .algo = RTE_CRYPTO_CIPHER_SM4_CTR,
1284 : : .block_size = 16,
1285 : : .key_size = {
1286 : : .min = 16,
1287 : : .max = 16,
1288 : : .increment = 0
1289 : : },
1290 : : .iv_size = {
1291 : : .min = 16,
1292 : : .max = 16,
1293 : : .increment = 0
1294 : : }
1295 : : }, }
1296 : : }, }
1297 : : },
1298 : : { /* SM4 OFB */
1299 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1300 : : {.sym = {
1301 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
1302 : : {.cipher = {
1303 : : .algo = RTE_CRYPTO_CIPHER_SM4_OFB,
1304 : : .block_size = 16,
1305 : : .key_size = {
1306 : : .min = 16,
1307 : : .max = 16,
1308 : : .increment = 0
1309 : : },
1310 : : .iv_size = {
1311 : : .min = 16,
1312 : : .max = 16,
1313 : : .increment = 0
1314 : : }
1315 : : }, }
1316 : : }, }
1317 : : },
1318 : : { /* SM4 CFB */
1319 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1320 : : {.sym = {
1321 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
1322 : : {.cipher = {
1323 : : .algo = RTE_CRYPTO_CIPHER_SM4_CFB,
1324 : : .block_size = 16,
1325 : : .key_size = {
1326 : : .min = 16,
1327 : : .max = 16,
1328 : : .increment = 0
1329 : : },
1330 : : .iv_size = {
1331 : : .min = 16,
1332 : : .max = 16,
1333 : : .increment = 0
1334 : : }
1335 : : }, }
1336 : : }, }
1337 : : },
1338 : : };
1339 : :
1340 : : static const struct rte_cryptodev_capabilities caps_sm2[] = {
1341 : : { /* SM2 */
1342 : : .op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC,
1343 : : {.asym = {
1344 : : .xform_capa = {
1345 : : .xform_type = RTE_CRYPTO_ASYM_XFORM_SM2,
1346 : : .op_types = ((1 << RTE_CRYPTO_ASYM_OP_SIGN) |
1347 : : (1 << RTE_CRYPTO_ASYM_OP_VERIFY))
1348 : : }
1349 : : }
1350 : : }
1351 : : }
1352 : : };
1353 : :
1354 : : static const struct rte_cryptodev_capabilities caps_eddsa[] = {
1355 : : { /* EdDSA */
1356 : : .op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC,
1357 : : {.asym = {
1358 : : .xform_capa = {
1359 : : .xform_type = RTE_CRYPTO_ASYM_XFORM_EDDSA,
1360 : : .hash_algos = (RTE_BIT64(RTE_CRYPTO_AUTH_SHA512) |
1361 : : RTE_BIT64(RTE_CRYPTO_AUTH_SHAKE_256)),
1362 : : .op_types = ((1 << RTE_CRYPTO_ASYM_OP_SIGN) |
1363 : : (1 << RTE_CRYPTO_ASYM_OP_VERIFY))
1364 : : }
1365 : : }
1366 : : }
1367 : : }
1368 : : };
1369 : :
1370 : : static const struct rte_cryptodev_capabilities caps_end[] = {
1371 : : RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST()
1372 : : };
1373 : :
1374 : : static const struct rte_cryptodev_capabilities sec_ipsec_caps_aes[] = {
1375 : : { /* AES GCM */
1376 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1377 : : {.sym = {
1378 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,
1379 : : {.aead = {
1380 : : .algo = RTE_CRYPTO_AEAD_AES_GCM,
1381 : : .block_size = 16,
1382 : : .key_size = {
1383 : : .min = 16,
1384 : : .max = 32,
1385 : : .increment = 8
1386 : : },
1387 : : .digest_size = {
1388 : : .min = 16,
1389 : : .max = 16,
1390 : : .increment = 0
1391 : : },
1392 : : .aad_size = {
1393 : : .min = 8,
1394 : : .max = 12,
1395 : : .increment = 4
1396 : : },
1397 : : .iv_size = {
1398 : : .min = 12,
1399 : : .max = 12,
1400 : : .increment = 0
1401 : : }
1402 : : }, }
1403 : : }, }
1404 : : },
1405 : : { /* AES CCM */
1406 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1407 : : {.sym = {
1408 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,
1409 : : {.aead = {
1410 : : .algo = RTE_CRYPTO_AEAD_AES_CCM,
1411 : : .block_size = 16,
1412 : : .key_size = {
1413 : : .min = 16,
1414 : : .max = 32,
1415 : : .increment = 8
1416 : : },
1417 : : .digest_size = {
1418 : : .min = 16,
1419 : : .max = 16,
1420 : : .increment = 0
1421 : : },
1422 : : .aad_size = {
1423 : : .min = 8,
1424 : : .max = 12,
1425 : : .increment = 4
1426 : : },
1427 : : .iv_size = {
1428 : : .min = 11,
1429 : : .max = 11,
1430 : : .increment = 0
1431 : : }
1432 : : }, }
1433 : : }, }
1434 : : },
1435 : : { /* AES CTR */
1436 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1437 : : {.sym = {
1438 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
1439 : : {.cipher = {
1440 : : .algo = RTE_CRYPTO_CIPHER_AES_CTR,
1441 : : .block_size = 16,
1442 : : .key_size = {
1443 : : .min = 16,
1444 : : .max = 32,
1445 : : .increment = 8
1446 : : },
1447 : : .iv_size = {
1448 : : .min = 12,
1449 : : .max = 16,
1450 : : .increment = 4
1451 : : }
1452 : : }, }
1453 : : }, }
1454 : : },
1455 : : { /* AES CBC */
1456 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1457 : : {.sym = {
1458 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
1459 : : {.cipher = {
1460 : : .algo = RTE_CRYPTO_CIPHER_AES_CBC,
1461 : : .block_size = 16,
1462 : : .key_size = {
1463 : : .min = 16,
1464 : : .max = 32,
1465 : : .increment = 8
1466 : : },
1467 : : .iv_size = {
1468 : : .min = 16,
1469 : : .max = 16,
1470 : : .increment = 0
1471 : : }
1472 : : }, }
1473 : : }, }
1474 : : },
1475 : : { /* AES-XCBC */
1476 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1477 : : { .sym = {
1478 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
1479 : : {.auth = {
1480 : : .algo = RTE_CRYPTO_AUTH_AES_XCBC_MAC,
1481 : : .block_size = 16,
1482 : : .key_size = {
1483 : : .min = 16,
1484 : : .max = 16,
1485 : : .increment = 0
1486 : : },
1487 : : .digest_size = {
1488 : : .min = 12,
1489 : : .max = 12,
1490 : : .increment = 0,
1491 : : },
1492 : : }, }
1493 : : }, }
1494 : : },
1495 : : { /* AES GMAC (AUTH) */
1496 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1497 : : {.sym = {
1498 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
1499 : : {.auth = {
1500 : : .algo = RTE_CRYPTO_AUTH_AES_GMAC,
1501 : : .block_size = 16,
1502 : : .key_size = {
1503 : : .min = 16,
1504 : : .max = 32,
1505 : : .increment = 8
1506 : : },
1507 : : .digest_size = {
1508 : : .min = 8,
1509 : : .max = 16,
1510 : : .increment = 4
1511 : : },
1512 : : .iv_size = {
1513 : : .min = 12,
1514 : : .max = 12,
1515 : : .increment = 0
1516 : : }
1517 : : }, }
1518 : : }, }
1519 : : },
1520 : : };
1521 : :
1522 : : static const struct rte_cryptodev_capabilities sec_ipsec_caps_des[] = {
1523 : : { /* DES */
1524 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1525 : : {.sym = {
1526 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
1527 : : {.cipher = {
1528 : : .algo = RTE_CRYPTO_CIPHER_DES_CBC,
1529 : : .block_size = 8,
1530 : : .key_size = {
1531 : : .min = 8,
1532 : : .max = 8,
1533 : : .increment = 0
1534 : : },
1535 : : .iv_size = {
1536 : : .min = 8,
1537 : : .max = 8,
1538 : : .increment = 0
1539 : : }
1540 : : }, },
1541 : : }, }
1542 : : },
1543 : : { /* 3DES CBC */
1544 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1545 : : {.sym = {
1546 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
1547 : : {.cipher = {
1548 : : .algo = RTE_CRYPTO_CIPHER_3DES_CBC,
1549 : : .block_size = 8,
1550 : : .key_size = {
1551 : : .min = 24,
1552 : : .max = 24,
1553 : : .increment = 0
1554 : : },
1555 : : .iv_size = {
1556 : : .min = 8,
1557 : : .max = 16,
1558 : : .increment = 8
1559 : : }
1560 : : }, }
1561 : : }, }
1562 : : },
1563 : : };
1564 : :
1565 : : static const struct rte_cryptodev_capabilities sec_ipsec_caps_sha1_sha2[] = {
1566 : : { /* SHA1 HMAC */
1567 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1568 : : {.sym = {
1569 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
1570 : : {.auth = {
1571 : : .algo = RTE_CRYPTO_AUTH_SHA1_HMAC,
1572 : : .block_size = 64,
1573 : : .key_size = {
1574 : : .min = 20,
1575 : : .max = 64,
1576 : : .increment = 1
1577 : : },
1578 : : .digest_size = {
1579 : : .min = 12,
1580 : : .max = 12,
1581 : : .increment = 0
1582 : : },
1583 : : }, }
1584 : : }, }
1585 : : },
1586 : : { /* SHA256 HMAC */
1587 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1588 : : {.sym = {
1589 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
1590 : : {.auth = {
1591 : : .algo = RTE_CRYPTO_AUTH_SHA256_HMAC,
1592 : : .block_size = 64,
1593 : : .key_size = {
1594 : : .min = 1,
1595 : : .max = 1024,
1596 : : .increment = 1
1597 : : },
1598 : : .digest_size = {
1599 : : .min = 16,
1600 : : .max = 16,
1601 : : .increment = 0
1602 : : },
1603 : : }, }
1604 : : }, }
1605 : : },
1606 : : { /* SHA384 HMAC */
1607 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1608 : : {.sym = {
1609 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
1610 : : {.auth = {
1611 : : .algo = RTE_CRYPTO_AUTH_SHA384_HMAC,
1612 : : .block_size = 64,
1613 : : .key_size = {
1614 : : .min = 48,
1615 : : .max = 48,
1616 : : .increment = 0
1617 : : },
1618 : : .digest_size = {
1619 : : .min = 24,
1620 : : .max = 24,
1621 : : .increment = 0
1622 : : },
1623 : : }, }
1624 : : }, }
1625 : : },
1626 : : { /* SHA512 HMAC */
1627 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1628 : : {.sym = {
1629 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
1630 : : {.auth = {
1631 : : .algo = RTE_CRYPTO_AUTH_SHA512_HMAC,
1632 : : .block_size = 128,
1633 : : .key_size = {
1634 : : .min = 64,
1635 : : .max = 64,
1636 : : .increment = 0
1637 : : },
1638 : : .digest_size = {
1639 : : .min = 32,
1640 : : .max = 32,
1641 : : .increment = 0
1642 : : },
1643 : : }, }
1644 : : }, }
1645 : : },
1646 : : { /* MD5 HMAC */
1647 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1648 : : {.sym = {
1649 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
1650 : : {.auth = {
1651 : : .algo = RTE_CRYPTO_AUTH_MD5_HMAC,
1652 : : .block_size = 64,
1653 : : .key_size = {
1654 : : .min = 16,
1655 : : .max = 16,
1656 : : .increment = 0
1657 : : },
1658 : : .digest_size = {
1659 : : .min = 12,
1660 : : .max = 12,
1661 : : .increment = 0
1662 : : },
1663 : : }, }
1664 : : }, }
1665 : : },
1666 : : };
1667 : :
1668 : : static const struct rte_cryptodev_capabilities sec_ipsec_caps_null[] = {
1669 : : { /* NULL (CIPHER) */
1670 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1671 : : {.sym = {
1672 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
1673 : : {.cipher = {
1674 : : .algo = RTE_CRYPTO_CIPHER_NULL,
1675 : : .block_size = 1,
1676 : : .key_size = {
1677 : : .min = 0,
1678 : : .max = 0,
1679 : : .increment = 0
1680 : : },
1681 : : .iv_size = {
1682 : : .min = 0,
1683 : : .max = 0,
1684 : : .increment = 0
1685 : : }
1686 : : }, },
1687 : : }, }
1688 : : },
1689 : : };
1690 : :
1691 : : static const struct rte_cryptodev_capabilities sec_tls12_caps_aes[] = {
1692 : : { /* AES GCM */
1693 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1694 : : {.sym = {
1695 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,
1696 : : {.aead = {
1697 : : .algo = RTE_CRYPTO_AEAD_AES_GCM,
1698 : : .block_size = 16,
1699 : : .key_size = {
1700 : : .min = 16,
1701 : : .max = 32,
1702 : : .increment = 16
1703 : : },
1704 : : .digest_size = {
1705 : : .min = 16,
1706 : : .max = 16,
1707 : : .increment = 0
1708 : : },
1709 : : .aad_size = {
1710 : : .min = 13,
1711 : : .max = 13,
1712 : : .increment = 0
1713 : : },
1714 : : .iv_size = {
1715 : : .min = 12,
1716 : : .max = 12,
1717 : : .increment = 0
1718 : : }
1719 : : }, }
1720 : : }, }
1721 : : },
1722 : : { /* AES CBC */
1723 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1724 : : {.sym = {
1725 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
1726 : : {.cipher = {
1727 : : .algo = RTE_CRYPTO_CIPHER_AES_CBC,
1728 : : .block_size = 16,
1729 : : .key_size = {
1730 : : .min = 16,
1731 : : .max = 32,
1732 : : .increment = 8
1733 : : },
1734 : : .iv_size = {
1735 : : .min = 16,
1736 : : .max = 16,
1737 : : .increment = 0
1738 : : }
1739 : : }, }
1740 : : }, }
1741 : : },
1742 : : };
1743 : :
1744 : : static const struct rte_cryptodev_capabilities sec_tls12_caps_des[] = {
1745 : : { /* 3DES CBC */
1746 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1747 : : {.sym = {
1748 : : .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
1749 : : {.cipher = {
1750 : : .algo = RTE_CRYPTO_CIPHER_3DES_CBC,
1751 : : .block_size = 8,
1752 : : .key_size = {
1753 : : .min = 24,
1754 : : .max = 24,
1755 : : .increment = 0
1756 : : },
1757 : : .iv_size = {
1758 : : .min = 8,
1759 : : .max = 8,
1760 : : .increment = 0
1761 : : }
1762 : : }, }
1763 : : }, }
1764 : : },
1765 : : };
1766 : :
1767 : : static const struct rte_cryptodev_capabilities sec_tls12_caps_sha1_sha2[] = {
1768 : : { /* SHA1 HMAC */
1769 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1770 : : {.sym = {
1771 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
1772 : : {.auth = {
1773 : : .algo = RTE_CRYPTO_AUTH_SHA1_HMAC,
1774 : : .block_size = 64,
1775 : : .key_size = {
1776 : : .min = 20,
1777 : : .max = 20,
1778 : : .increment = 0
1779 : : },
1780 : : .digest_size = {
1781 : : .min = 20,
1782 : : .max = 20,
1783 : : .increment = 0
1784 : : },
1785 : : }, }
1786 : : }, }
1787 : : },
1788 : : { /* SHA256 HMAC */
1789 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1790 : : {.sym = {
1791 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
1792 : : {.auth = {
1793 : : .algo = RTE_CRYPTO_AUTH_SHA256_HMAC,
1794 : : .block_size = 64,
1795 : : .key_size = {
1796 : : .min = 32,
1797 : : .max = 32,
1798 : : .increment = 0
1799 : : },
1800 : : .digest_size = {
1801 : : .min = 32,
1802 : : .max = 32,
1803 : : .increment = 0
1804 : : },
1805 : : }, }
1806 : : }, }
1807 : : },
1808 : : { /* SHA384 HMAC */
1809 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1810 : : {.sym = {
1811 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
1812 : : {.auth = {
1813 : : .algo = RTE_CRYPTO_AUTH_SHA384_HMAC,
1814 : : .block_size = 64,
1815 : : .key_size = {
1816 : : .min = 48,
1817 : : .max = 48,
1818 : : .increment = 0
1819 : : },
1820 : : .digest_size = {
1821 : : .min = 48,
1822 : : .max = 48,
1823 : : .increment = 0
1824 : : },
1825 : : }, }
1826 : : }, }
1827 : : },
1828 : :
1829 : : };
1830 : :
1831 : : static const struct rte_cryptodev_capabilities sec_tls13_caps_aes[] = {
1832 : : { /* AES GCM */
1833 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1834 : : {.sym = {
1835 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,
1836 : : {.aead = {
1837 : : .algo = RTE_CRYPTO_AEAD_AES_GCM,
1838 : : .block_size = 16,
1839 : : .key_size = {
1840 : : .min = 16,
1841 : : .max = 32,
1842 : : .increment = 16
1843 : : },
1844 : : .digest_size = {
1845 : : .min = 16,
1846 : : .max = 16,
1847 : : .increment = 0
1848 : : },
1849 : : .aad_size = {
1850 : : .min = 5,
1851 : : .max = 5,
1852 : : .increment = 0
1853 : : },
1854 : : .iv_size = {
1855 : : .min = 0,
1856 : : .max = 0,
1857 : : .increment = 0
1858 : : }
1859 : : }, }
1860 : : }, }
1861 : : },
1862 : : { /* CHACHA POLY */
1863 : : .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
1864 : : {.sym = {
1865 : : .xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,
1866 : : {.aead = {
1867 : : .algo = RTE_CRYPTO_AEAD_CHACHA20_POLY1305,
1868 : : .block_size = 64,
1869 : : .key_size = {
1870 : : .min = 32,
1871 : : .max = 32,
1872 : : .increment = 0
1873 : : },
1874 : : .digest_size = {
1875 : : .min = 16,
1876 : : .max = 16,
1877 : : .increment = 0
1878 : : },
1879 : : .aad_size = {
1880 : : .min = 5,
1881 : : .max = 5,
1882 : : .increment = 0
1883 : : },
1884 : : .iv_size = {
1885 : : .min = 0,
1886 : : .max = 0,
1887 : : .increment = 0
1888 : : }
1889 : : }, }
1890 : : }, }
1891 : : },
1892 : :
1893 : : };
1894 : :
1895 : :
1896 : : static const struct rte_security_capability sec_caps_templ[] = {
1897 : : { /* IPsec Lookaside Protocol ESP Tunnel Ingress */
1898 : : .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
1899 : : .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
1900 : : .ipsec = {
1901 : : .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
1902 : : .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
1903 : : .direction = RTE_SECURITY_IPSEC_SA_DIR_INGRESS,
1904 : : .options = { 0 },
1905 : : },
1906 : : .crypto_capabilities = NULL,
1907 : : },
1908 : : { /* IPsec Lookaside Protocol ESP Tunnel Egress */
1909 : : .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
1910 : : .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
1911 : : .ipsec = {
1912 : : .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
1913 : : .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
1914 : : .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS,
1915 : : .options = { 0 },
1916 : : },
1917 : : .crypto_capabilities = NULL,
1918 : : },
1919 : : { /* IPsec Lookaside Protocol ESP Transport Ingress */
1920 : : .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
1921 : : .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
1922 : : .ipsec = {
1923 : : .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
1924 : : .mode = RTE_SECURITY_IPSEC_SA_MODE_TRANSPORT,
1925 : : .direction = RTE_SECURITY_IPSEC_SA_DIR_INGRESS,
1926 : : .options = { 0 },
1927 : : },
1928 : : .crypto_capabilities = NULL,
1929 : : },
1930 : : { /* IPsec Lookaside Protocol ESP Transport Egress */
1931 : : .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
1932 : : .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
1933 : : .ipsec = {
1934 : : .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
1935 : : .mode = RTE_SECURITY_IPSEC_SA_MODE_TRANSPORT,
1936 : : .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS,
1937 : : .options = { 0 },
1938 : : },
1939 : : .crypto_capabilities = NULL,
1940 : : },
1941 : : { /* IPsec Lookaside Protocol AH Tunnel Ingress */
1942 : : .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
1943 : : .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
1944 : : .ipsec = {
1945 : : .proto = RTE_SECURITY_IPSEC_SA_PROTO_AH,
1946 : : .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
1947 : : .direction = RTE_SECURITY_IPSEC_SA_DIR_INGRESS,
1948 : : .options = { 0 },
1949 : : },
1950 : : .crypto_capabilities = NULL,
1951 : : },
1952 : : { /* IPsec Lookaside Protocol AH Tunnel Egress */
1953 : : .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
1954 : : .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
1955 : : .ipsec = {
1956 : : .proto = RTE_SECURITY_IPSEC_SA_PROTO_AH,
1957 : : .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
1958 : : .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS,
1959 : : .options = { 0 },
1960 : : },
1961 : : .crypto_capabilities = NULL,
1962 : : },
1963 : : { /* IPsec Lookaside Protocol AH Transport Ingress */
1964 : : .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
1965 : : .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
1966 : : .ipsec = {
1967 : : .proto = RTE_SECURITY_IPSEC_SA_PROTO_AH,
1968 : : .mode = RTE_SECURITY_IPSEC_SA_MODE_TRANSPORT,
1969 : : .direction = RTE_SECURITY_IPSEC_SA_DIR_INGRESS,
1970 : : .options = { 0 },
1971 : : },
1972 : : .crypto_capabilities = NULL,
1973 : : },
1974 : : { /* IPsec Lookaside Protocol AH Transport Egress */
1975 : : .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
1976 : : .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
1977 : : .ipsec = {
1978 : : .proto = RTE_SECURITY_IPSEC_SA_PROTO_AH,
1979 : : .mode = RTE_SECURITY_IPSEC_SA_MODE_TRANSPORT,
1980 : : .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS,
1981 : : .options = { 0 },
1982 : : },
1983 : : .crypto_capabilities = NULL,
1984 : : },
1985 : : { /* TLS 1.2 Record Read */
1986 : : .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
1987 : : .protocol = RTE_SECURITY_PROTOCOL_TLS_RECORD,
1988 : : .tls_record = {
1989 : : .ver = RTE_SECURITY_VERSION_TLS_1_2,
1990 : : .type = RTE_SECURITY_TLS_SESS_TYPE_READ,
1991 : : .ar_win_size = 0,
1992 : : },
1993 : : .crypto_capabilities = NULL,
1994 : : },
1995 : : { /* TLS 1.2 Record Write */
1996 : : .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
1997 : : .protocol = RTE_SECURITY_PROTOCOL_TLS_RECORD,
1998 : : .tls_record = {
1999 : : .ver = RTE_SECURITY_VERSION_TLS_1_2,
2000 : : .type = RTE_SECURITY_TLS_SESS_TYPE_WRITE,
2001 : : .ar_win_size = 0,
2002 : : },
2003 : : .crypto_capabilities = NULL,
2004 : : },
2005 : : { /* DTLS 1.2 Record Read */
2006 : : .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2007 : : .protocol = RTE_SECURITY_PROTOCOL_TLS_RECORD,
2008 : : .tls_record = {
2009 : : .ver = RTE_SECURITY_VERSION_DTLS_1_2,
2010 : : .type = RTE_SECURITY_TLS_SESS_TYPE_READ,
2011 : : .ar_win_size = 0,
2012 : : },
2013 : : .crypto_capabilities = NULL,
2014 : : },
2015 : : { /* DTLS 1.2 Record Write */
2016 : : .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2017 : : .protocol = RTE_SECURITY_PROTOCOL_TLS_RECORD,
2018 : : .tls_record = {
2019 : : .ver = RTE_SECURITY_VERSION_DTLS_1_2,
2020 : : .type = RTE_SECURITY_TLS_SESS_TYPE_WRITE,
2021 : : .ar_win_size = 0,
2022 : : },
2023 : : .crypto_capabilities = NULL,
2024 : : },
2025 : : { /* TLS 1.3 Record Read */
2026 : : .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2027 : : .protocol = RTE_SECURITY_PROTOCOL_TLS_RECORD,
2028 : : .tls_record = {
2029 : : .ver = RTE_SECURITY_VERSION_TLS_1_3,
2030 : : .type = RTE_SECURITY_TLS_SESS_TYPE_READ,
2031 : : .ar_win_size = 0,
2032 : : },
2033 : : .crypto_capabilities = NULL,
2034 : : },
2035 : : { /* TLS 1.3 Record Write */
2036 : : .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2037 : : .protocol = RTE_SECURITY_PROTOCOL_TLS_RECORD,
2038 : : .tls_record = {
2039 : : .ver = RTE_SECURITY_VERSION_TLS_1_3,
2040 : : .type = RTE_SECURITY_TLS_SESS_TYPE_WRITE,
2041 : : .ar_win_size = 0,
2042 : : },
2043 : : .crypto_capabilities = NULL,
2044 : : },
2045 : : {
2046 : : .action = RTE_SECURITY_ACTION_TYPE_NONE
2047 : : }
2048 : : };
2049 : :
2050 : : static void
2051 : 0 : cpt_caps_add(struct rte_cryptodev_capabilities cnxk_caps[], int *cur_pos,
2052 : : const struct rte_cryptodev_capabilities *caps, int nb_caps)
2053 : : {
2054 [ # # ]: 0 : PLT_VERIFY(*cur_pos + nb_caps <= CNXK_CPT_MAX_CAPS);
2055 : :
2056 : 0 : memcpy(&cnxk_caps[*cur_pos], caps, nb_caps * sizeof(caps[0]));
2057 : 0 : *cur_pos += nb_caps;
2058 : 0 : }
2059 : :
2060 : : static void
2061 : 0 : cn10k_20k_crypto_caps_update(struct rte_cryptodev_capabilities cnxk_caps[])
2062 : : {
2063 : :
2064 : : struct rte_cryptodev_capabilities *caps;
2065 : : int i = 0;
2066 : :
2067 [ # # ]: 0 : while ((caps = &cnxk_caps[i++])->op != RTE_CRYPTO_OP_TYPE_UNDEFINED) {
2068 [ # # ]: 0 : if ((caps->op == RTE_CRYPTO_OP_TYPE_SYMMETRIC) &&
2069 [ # # ]: 0 : (caps->sym.xform_type == RTE_CRYPTO_SYM_XFORM_CIPHER) &&
2070 [ # # ]: 0 : ((caps->sym.cipher.algo == RTE_CRYPTO_CIPHER_ZUC_EEA3) ||
2071 : : (caps->sym.cipher.algo == RTE_CRYPTO_CIPHER_ZUC_NEA6))) {
2072 : :
2073 : 0 : caps->sym.cipher.key_size.max = 32;
2074 [ # # ]: 0 : caps->sym.cipher.key_size.increment = 16;
2075 [ # # ]: 0 : if (roc_model_is_cn20k())
2076 : 0 : caps->sym.cipher.iv_size.max = 16;
2077 : : else
2078 : 0 : caps->sym.cipher.iv_size.max = 25;
2079 : 0 : caps->sym.cipher.iv_size.increment = 1;
2080 : : }
2081 : :
2082 [ # # ]: 0 : if ((caps->op == RTE_CRYPTO_OP_TYPE_SYMMETRIC) &&
2083 [ # # ]: 0 : (caps->sym.xform_type == RTE_CRYPTO_SYM_XFORM_AUTH) &&
2084 [ # # ]: 0 : ((caps->sym.auth.algo == RTE_CRYPTO_AUTH_ZUC_EIA3) ||
2085 : : (caps->sym.auth.algo == RTE_CRYPTO_AUTH_ZUC_NIA6))) {
2086 : 0 : caps->sym.auth.key_size.max = 32;
2087 : 0 : caps->sym.auth.key_size.increment = 16;
2088 : 0 : caps->sym.auth.digest_size.max = 16;
2089 : 0 : caps->sym.auth.digest_size.increment = 4;
2090 : 0 : caps->sym.auth.iv_size.max = 25;
2091 : 0 : caps->sym.auth.iv_size.increment = 1;
2092 : : }
2093 : : }
2094 : 0 : }
2095 : :
2096 : : static void
2097 : : cn9k_crypto_caps_add(struct rte_cryptodev_capabilities cnxk_caps[], int *cur_pos)
2098 : : {
2099 : 0 : cpt_caps_add(cnxk_caps, cur_pos, caps_docsis, RTE_DIM(caps_docsis));
2100 : 0 : }
2101 : :
2102 : : static void
2103 : 0 : cn10k_20k_crypto_caps_add(struct rte_cryptodev_capabilities cnxk_caps[],
2104 : : union cpt_eng_caps *hw_caps, int *cur_pos)
2105 : : {
2106 [ # # ]: 0 : if (hw_caps[CPT_ENG_TYPE_SE].sg_ver2) {
2107 [ # # # # : 0 : CPT_CAPS_ADD(cnxk_caps, cur_pos, hw_caps, sm3);
# # ]
2108 [ # # # # : 0 : CPT_CAPS_ADD(cnxk_caps, cur_pos, hw_caps, sm4);
# # ]
2109 : : }
2110 : :
2111 [ # # ]: 0 : if (hw_caps[CPT_ENG_TYPE_AE].sm2)
2112 [ # # # # : 0 : CPT_CAPS_ADD(cnxk_caps, cur_pos, hw_caps, sm2);
# # ]
2113 : :
2114 [ # # ]: 0 : if (hw_caps[CPT_ENG_TYPE_AE].eddsa)
2115 [ # # # # : 0 : CPT_CAPS_ADD(cnxk_caps, cur_pos, hw_caps, eddsa);
# # ]
2116 : 0 : }
2117 : :
2118 : : static void
2119 : 0 : crypto_caps_populate(struct rte_cryptodev_capabilities cnxk_caps[],
2120 : : union cpt_eng_caps *hw_caps)
2121 : : {
2122 : 0 : int cur_pos = 0;
2123 : :
2124 [ # # # # : 0 : CPT_CAPS_ADD(cnxk_caps, &cur_pos, hw_caps, mul);
# # ]
2125 [ # # # # : 0 : CPT_CAPS_ADD(cnxk_caps, &cur_pos, hw_caps, sha1_sha2);
# # ]
2126 [ # # # # : 0 : CPT_CAPS_ADD(cnxk_caps, &cur_pos, hw_caps, sha3);
# # ]
2127 [ # # # # : 0 : CPT_CAPS_ADD(cnxk_caps, &cur_pos, hw_caps, chacha20);
# # ]
2128 [ # # # # : 0 : CPT_CAPS_ADD(cnxk_caps, &cur_pos, hw_caps, zuc_snow3g);
# # ]
2129 [ # # # # : 0 : CPT_CAPS_ADD(cnxk_caps, &cur_pos, hw_caps, aes);
# # ]
2130 [ # # # # : 0 : CPT_CAPS_ADD(cnxk_caps, &cur_pos, hw_caps, kasumi);
# # ]
2131 [ # # # # : 0 : CPT_CAPS_ADD(cnxk_caps, &cur_pos, hw_caps, des);
# # ]
2132 : :
2133 [ # # ]: 0 : if (roc_model_is_cn9k())
2134 : : cn9k_crypto_caps_add(cnxk_caps, &cur_pos);
2135 : :
2136 [ # # # # ]: 0 : if (roc_model_is_cn10k() || roc_model_is_cn20k())
2137 : 0 : cn10k_20k_crypto_caps_add(cnxk_caps, hw_caps, &cur_pos);
2138 : :
2139 [ # # ]: 0 : if (roc_model_is_cn20k()) {
2140 [ # # # # : 0 : CPT_CAPS_ADD(cnxk_caps, &cur_pos, hw_caps, zuc256_snow5g);
# # ]
2141 : 0 : cpt_caps_add(cnxk_caps, &cur_pos, caps_pqc, RTE_DIM(caps_pqc));
2142 : : }
2143 : :
2144 : 0 : cpt_caps_add(cnxk_caps, &cur_pos, caps_null, RTE_DIM(caps_null));
2145 : :
2146 : 0 : cpt_caps_add(cnxk_caps, &cur_pos, caps_end, RTE_DIM(caps_end));
2147 : :
2148 [ # # # # ]: 0 : if (roc_model_is_cn10k() || roc_model_is_cn20k())
2149 : 0 : cn10k_20k_crypto_caps_update(cnxk_caps);
2150 : 0 : }
2151 : :
2152 : : const struct rte_cryptodev_capabilities *
2153 : 0 : cnxk_crypto_capabilities_get(struct cnxk_cpt_vf *vf)
2154 : : {
2155 : 0 : return vf->crypto_caps;
2156 : : }
2157 : :
2158 : : static void
2159 : : sec_ipsec_caps_limit_check(int *cur_pos, int nb_caps)
2160 : : {
2161 : 0 : PLT_VERIFY(*cur_pos + nb_caps <= CNXK_SEC_IPSEC_CRYPTO_MAX_CAPS);
2162 : : }
2163 : :
2164 : : static void
2165 [ # # ]: 0 : sec_ipsec_caps_add(struct rte_cryptodev_capabilities cnxk_caps[], int *cur_pos,
2166 : : const struct rte_cryptodev_capabilities *caps, int nb_caps)
2167 : : {
2168 : : sec_ipsec_caps_limit_check(cur_pos, nb_caps);
2169 : :
2170 : 0 : memcpy(&cnxk_caps[*cur_pos], caps, nb_caps * sizeof(caps[0]));
2171 : 0 : *cur_pos += nb_caps;
2172 : 0 : }
2173 : :
2174 : : static void
2175 [ # # ]: 0 : cn10k_sec_ipsec_crypto_caps_update(struct rte_cryptodev_capabilities cnxk_caps[], int *cur_pos)
2176 : : {
2177 : : const struct rte_cryptodev_capabilities *cap;
2178 : : unsigned int i;
2179 : :
2180 : : sec_ipsec_caps_limit_check(cur_pos, 1);
2181 : :
2182 : : /* NULL auth */
2183 [ # # ]: 0 : for (i = 0; i < RTE_DIM(caps_null); i++) {
2184 : : cap = &caps_null[i];
2185 [ # # ]: 0 : if (cap->sym.xform_type == RTE_CRYPTO_SYM_XFORM_AUTH &&
2186 : : cap->sym.auth.algo == RTE_CRYPTO_AUTH_NULL) {
2187 : 0 : cnxk_caps[*cur_pos] = caps_null[i];
2188 : 0 : *cur_pos += 1;
2189 : : }
2190 : : }
2191 : 0 : }
2192 : :
2193 : : static void
2194 : : cn9k_sec_ipsec_crypto_caps_update(struct rte_cryptodev_capabilities cnxk_caps[])
2195 : : {
2196 : :
2197 : : struct rte_cryptodev_capabilities *caps;
2198 : : int i = 0;
2199 : :
2200 [ # # ]: 0 : while ((caps = &cnxk_caps[i++])->op != RTE_CRYPTO_OP_TYPE_UNDEFINED) {
2201 [ # # ]: 0 : if ((caps->op == RTE_CRYPTO_OP_TYPE_SYMMETRIC) &&
2202 [ # # ]: 0 : (caps->sym.xform_type == RTE_CRYPTO_SYM_XFORM_AUTH) &&
2203 : : (caps->sym.auth.algo == RTE_CRYPTO_AUTH_SHA256_HMAC)) {
2204 : 0 : caps->sym.auth.key_size.min = 32;
2205 : 0 : caps->sym.auth.key_size.max = 64;
2206 : 0 : caps->sym.auth.key_size.increment = 1;
2207 : :
2208 : 0 : break;
2209 : : }
2210 : : }
2211 : : }
2212 : :
2213 : : static void
2214 : 0 : sec_ipsec_crypto_caps_populate(struct rte_cryptodev_capabilities cnxk_caps[],
2215 : : union cpt_eng_caps *hw_caps)
2216 : : {
2217 : 0 : int cur_pos = 0;
2218 : :
2219 [ # # # # : 0 : SEC_IPSEC_CAPS_ADD(cnxk_caps, &cur_pos, hw_caps, aes);
# # ]
2220 [ # # # # : 0 : SEC_IPSEC_CAPS_ADD(cnxk_caps, &cur_pos, hw_caps, des);
# # ]
2221 [ # # # # : 0 : SEC_IPSEC_CAPS_ADD(cnxk_caps, &cur_pos, hw_caps, sha1_sha2);
# # ]
2222 : :
2223 [ # # # # ]: 0 : if (roc_model_is_cn10k() || roc_model_is_cn20k())
2224 : 0 : cn10k_sec_ipsec_crypto_caps_update(cnxk_caps, &cur_pos);
2225 : : else
2226 : : cn9k_sec_ipsec_crypto_caps_update(cnxk_caps);
2227 : :
2228 : 0 : sec_ipsec_caps_add(cnxk_caps, &cur_pos, sec_ipsec_caps_null, RTE_DIM(sec_ipsec_caps_null));
2229 : 0 : sec_ipsec_caps_add(cnxk_caps, &cur_pos, caps_end, RTE_DIM(caps_end));
2230 : 0 : }
2231 : :
2232 : : static void
2233 : : cnxk_sec_ipsec_caps_update(struct rte_security_capability *sec_cap)
2234 : : {
2235 : 0 : sec_cap->ipsec.options.udp_encap = 1;
2236 : 0 : sec_cap->ipsec.options.copy_df = 1;
2237 : 0 : sec_cap->ipsec.options.copy_dscp = 1;
2238 : : }
2239 : :
2240 : : static void
2241 : : cn10k_sec_ipsec_caps_update(struct rte_security_capability *sec_cap)
2242 : : {
2243 [ # # ]: 0 : if (sec_cap->ipsec.direction == RTE_SECURITY_IPSEC_SA_DIR_EGRESS) {
2244 : : #ifdef LA_IPSEC_DEBUG
2245 : : sec_cap->ipsec.options.iv_gen_disable = 1;
2246 : : #endif
2247 : : } else {
2248 : 0 : sec_cap->ipsec.options.udp_ports_verify = 1;
2249 [ # # ]: 0 : if (sec_cap->ipsec.mode == RTE_SECURITY_IPSEC_SA_MODE_TUNNEL)
2250 : 0 : sec_cap->ipsec.options.tunnel_hdr_verify =
2251 : : RTE_SECURITY_IPSEC_TUNNEL_VERIFY_SRC_DST_ADDR;
2252 : : }
2253 : 0 : sec_cap->ipsec.options.dec_ttl = 1;
2254 : 0 : sec_cap->ipsec.options.ip_csum_enable = 1;
2255 : 0 : sec_cap->ipsec.options.l4_csum_enable = 1;
2256 : 0 : sec_cap->ipsec.options.stats = 1;
2257 : 0 : sec_cap->ipsec.options.esn = 1;
2258 : 0 : sec_cap->ipsec.options.copy_flabel = 1;
2259 : 0 : sec_cap->ipsec.replay_win_sz_max = ROC_AR_WIN_SIZE_MAX;
2260 : 0 : }
2261 : :
2262 : : static void
2263 : : cn9k_sec_ipsec_caps_update(struct rte_security_capability *sec_cap)
2264 : : {
2265 [ # # ]: 0 : if (sec_cap->ipsec.direction == RTE_SECURITY_IPSEC_SA_DIR_EGRESS)
2266 : 0 : sec_cap->ipsec.options.iv_gen_disable = 1;
2267 : :
2268 : 0 : sec_cap->ipsec.replay_win_sz_max = CNXK_ON_AR_WIN_SIZE_MAX;
2269 : 0 : sec_cap->ipsec.options.esn = 1;
2270 : 0 : }
2271 : :
2272 : : static void
2273 : : sec_tls12_caps_limit_check(int *cur_pos, int nb_caps)
2274 : : {
2275 : 0 : PLT_VERIFY(*cur_pos + nb_caps <= CNXK_SEC_TLS_1_2_CRYPTO_MAX_CAPS);
2276 : : }
2277 : :
2278 : : static void
2279 [ # # ]: 0 : sec_tls12_caps_add(struct rte_cryptodev_capabilities cnxk_caps[], int *cur_pos,
2280 : : const struct rte_cryptodev_capabilities *caps, int nb_caps)
2281 : : {
2282 : : sec_tls12_caps_limit_check(cur_pos, nb_caps);
2283 : :
2284 : 0 : memcpy(&cnxk_caps[*cur_pos], caps, nb_caps * sizeof(caps[0]));
2285 : 0 : *cur_pos += nb_caps;
2286 : 0 : }
2287 : :
2288 : : static void
2289 : 0 : sec_tls12_crypto_caps_populate(struct rte_cryptodev_capabilities cnxk_caps[],
2290 : : union cpt_eng_caps *hw_caps)
2291 : : {
2292 : 0 : int cur_pos = 0;
2293 : :
2294 [ # # # # : 0 : SEC_TLS12_CAPS_ADD(cnxk_caps, &cur_pos, hw_caps, aes);
# # ]
2295 [ # # # # : 0 : SEC_TLS12_CAPS_ADD(cnxk_caps, &cur_pos, hw_caps, des);
# # ]
2296 [ # # # # : 0 : SEC_TLS12_CAPS_ADD(cnxk_caps, &cur_pos, hw_caps, sha1_sha2);
# # ]
2297 : :
2298 : 0 : sec_tls12_caps_add(cnxk_caps, &cur_pos, caps_end, RTE_DIM(caps_end));
2299 : 0 : }
2300 : :
2301 : : static void
2302 : : sec_tls13_caps_limit_check(int *cur_pos, int nb_caps)
2303 : : {
2304 : 0 : PLT_VERIFY(*cur_pos + nb_caps <= CNXK_SEC_TLS_1_3_CRYPTO_MAX_CAPS);
2305 : : }
2306 : :
2307 : : static void
2308 [ # # ]: 0 : sec_tls13_caps_add(struct rte_cryptodev_capabilities cnxk_caps[], int *cur_pos,
2309 : : const struct rte_cryptodev_capabilities *caps, int nb_caps)
2310 : : {
2311 : : sec_tls13_caps_limit_check(cur_pos, nb_caps);
2312 : :
2313 : 0 : memcpy(&cnxk_caps[*cur_pos], caps, nb_caps * sizeof(caps[0]));
2314 : 0 : *cur_pos += nb_caps;
2315 : 0 : }
2316 : :
2317 : : static void
2318 : 0 : sec_tls13_crypto_caps_populate(struct rte_cryptodev_capabilities cnxk_caps[],
2319 : : union cpt_eng_caps *hw_caps)
2320 : : {
2321 : 0 : int cur_pos = 0;
2322 : :
2323 [ # # # # : 0 : SEC_TLS13_CAPS_ADD(cnxk_caps, &cur_pos, hw_caps, aes);
# # ]
2324 : :
2325 : 0 : sec_tls13_caps_add(cnxk_caps, &cur_pos, caps_end, RTE_DIM(caps_end));
2326 : 0 : }
2327 : :
2328 : : void
2329 : 0 : cnxk_cpt_caps_populate(struct cnxk_cpt_vf *vf)
2330 : : {
2331 : : unsigned long i;
2332 : :
2333 : 0 : crypto_caps_populate(vf->crypto_caps, vf->cpt.hw_caps);
2334 : 0 : sec_ipsec_crypto_caps_populate(vf->sec_ipsec_crypto_caps, vf->cpt.hw_caps);
2335 : :
2336 [ # # ]: 0 : if (vf->cpt.hw_caps[CPT_ENG_TYPE_SE].tls) {
2337 : 0 : sec_tls12_crypto_caps_populate(vf->sec_tls_1_2_crypto_caps, vf->cpt.hw_caps);
2338 : 0 : sec_tls12_crypto_caps_populate(vf->sec_dtls_1_2_crypto_caps, vf->cpt.hw_caps);
2339 : 0 : sec_tls13_crypto_caps_populate(vf->sec_tls_1_3_crypto_caps, vf->cpt.hw_caps);
2340 : : }
2341 : :
2342 : : PLT_STATIC_ASSERT(RTE_DIM(sec_caps_templ) <= RTE_DIM(vf->sec_caps));
2343 : 0 : memcpy(vf->sec_caps, sec_caps_templ, sizeof(sec_caps_templ));
2344 : :
2345 [ # # ]: 0 : for (i = 0; i < RTE_DIM(sec_caps_templ) - 1; i++) {
2346 : :
2347 [ # # ]: 0 : if (vf->sec_caps[i].protocol == RTE_SECURITY_PROTOCOL_IPSEC) {
2348 [ # # ]: 0 : vf->sec_caps[i].crypto_capabilities = vf->sec_ipsec_crypto_caps;
2349 : :
2350 : : cnxk_sec_ipsec_caps_update(&vf->sec_caps[i]);
2351 : :
2352 [ # # # # ]: 0 : if (roc_model_is_cn10k() || roc_model_is_cn20k())
2353 : : cn10k_sec_ipsec_caps_update(&vf->sec_caps[i]);
2354 : :
2355 [ # # ]: 0 : if (roc_model_is_cn9k())
2356 : : cn9k_sec_ipsec_caps_update(&vf->sec_caps[i]);
2357 [ # # ]: 0 : } else if (vf->sec_caps[i].protocol == RTE_SECURITY_PROTOCOL_TLS_RECORD) {
2358 [ # # ]: 0 : if (vf->sec_caps[i].tls_record.ver == RTE_SECURITY_VERSION_TLS_1_3)
2359 : 0 : vf->sec_caps[i].crypto_capabilities = vf->sec_tls_1_3_crypto_caps;
2360 [ # # ]: 0 : else if (vf->sec_caps[i].tls_record.ver == RTE_SECURITY_VERSION_DTLS_1_2)
2361 : 0 : vf->sec_caps[i].crypto_capabilities = vf->sec_dtls_1_2_crypto_caps;
2362 : : else
2363 : 0 : vf->sec_caps[i].crypto_capabilities = vf->sec_tls_1_2_crypto_caps;
2364 : : }
2365 : : }
2366 : 0 : }
2367 : :
2368 : : const struct rte_security_capability *
2369 : 0 : cnxk_crypto_sec_capabilities_get(void *device)
2370 : : {
2371 : : struct rte_cryptodev *dev = device;
2372 : : struct cnxk_cpt_vf *vf;
2373 : :
2374 : 0 : vf = dev->data->dev_private;
2375 : 0 : return vf->sec_caps;
2376 : : }
|