1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2018 Cavium, Inc
5 #include <rte_cryptodev.h>
7 #include "otx_cryptodev_capabilities.h"
9 static const struct rte_cryptodev_capabilities otx_sym_capabilities[] = {
10 /* Symmetric capabilities */
12 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
14 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
16 .algo = RTE_CRYPTO_AUTH_NULL,
31 { /* AES GMAC (AUTH) */
32 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
34 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
36 .algo = RTE_CRYPTO_AUTH_AES_GMAC,
57 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
59 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
61 .algo = RTE_CRYPTO_AUTH_KASUMI_F9,
77 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
79 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
81 .algo = RTE_CRYPTO_AUTH_MD5,
97 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
99 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
101 .algo = RTE_CRYPTO_AUTH_MD5_HMAC,
117 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
119 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
121 .algo = RTE_CRYPTO_AUTH_SHA1,
137 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
139 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
141 .algo = RTE_CRYPTO_AUTH_SHA1_HMAC,
157 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
159 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
161 .algo = RTE_CRYPTO_AUTH_SHA224,
177 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
179 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
181 .algo = RTE_CRYPTO_AUTH_SHA224_HMAC,
197 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
199 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
201 .algo = RTE_CRYPTO_AUTH_SHA256,
217 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
219 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
221 .algo = RTE_CRYPTO_AUTH_SHA256_HMAC,
237 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
239 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
241 .algo = RTE_CRYPTO_AUTH_SHA384,
257 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
259 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
261 .algo = RTE_CRYPTO_AUTH_SHA384_HMAC,
277 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
279 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
281 .algo = RTE_CRYPTO_AUTH_SHA512,
297 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
299 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
301 .algo = RTE_CRYPTO_AUTH_SHA512_HMAC,
316 { /* SNOW 3G (UIA2) */
317 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
319 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
321 .algo = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
342 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
344 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
346 .algo = RTE_CRYPTO_AUTH_ZUC_EIA3,
366 { /* NULL (CIPHER) */
367 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
369 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
371 .algo = RTE_CRYPTO_CIPHER_NULL,
387 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
389 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
391 .algo = RTE_CRYPTO_CIPHER_3DES_CBC,
407 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
409 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
411 .algo = RTE_CRYPTO_CIPHER_3DES_ECB,
427 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
429 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
431 .algo = RTE_CRYPTO_CIPHER_AES_CBC,
447 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
449 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
451 .algo = RTE_CRYPTO_CIPHER_AES_CTR,
467 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
469 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
471 .algo = RTE_CRYPTO_CIPHER_AES_XTS,
487 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
489 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
491 .algo = RTE_CRYPTO_CIPHER_DES_CBC,
507 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
509 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
511 .algo = RTE_CRYPTO_CIPHER_KASUMI_F8,
526 { /* SNOW 3G (UEA2) */
527 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
529 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
531 .algo = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
547 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
549 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
551 .algo = RTE_CRYPTO_CIPHER_ZUC_EEA3,
567 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
569 .xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,
571 .algo = RTE_CRYPTO_AEAD_AES_GCM,
596 /* End of symmetric capabilities */
597 RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST()
600 static const struct rte_cryptodev_capabilities otx_asym_capabilities[] = {
601 /* Asymmetric capabilities */
603 .op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC,
606 .xform_type = RTE_CRYPTO_ASYM_XFORM_RSA,
607 .op_types = ((1 << RTE_CRYPTO_ASYM_OP_SIGN) |
608 (1 << RTE_CRYPTO_ASYM_OP_VERIFY) |
609 (1 << RTE_CRYPTO_ASYM_OP_ENCRYPT) |
610 (1 << RTE_CRYPTO_ASYM_OP_DECRYPT)),
620 .op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC,
623 .xform_type = RTE_CRYPTO_ASYM_XFORM_MODEX,
634 .op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC,
637 .xform_type = RTE_CRYPTO_ASYM_XFORM_ECDSA,
638 .op_types = ((1 << RTE_CRYPTO_ASYM_OP_SIGN) |
639 (1 << RTE_CRYPTO_ASYM_OP_VERIFY)),
645 .op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC,
648 .xform_type = RTE_CRYPTO_ASYM_XFORM_ECPM,
654 /* End of asymmetric capabilities */
655 RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST()
658 const struct rte_cryptodev_capabilities *
659 otx_get_capabilities(uint64_t flags)
661 if (flags & RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO)
662 return otx_asym_capabilities;
664 return otx_sym_capabilities;