#include "otx_cryptodev_capabilities.h"
-static const struct rte_cryptodev_capabilities otx_capabilities[] = {
+static const struct rte_cryptodev_capabilities otx_sym_capabilities[] = {
/* Symmetric capabilities */
{ /* NULL (AUTH) */
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
.increment = 0
},
.digest_size = {
- .min = 1,
+ .min = 16,
.max = 16,
- .increment = 1
+ .increment = 0
},
}, }
}, }
.increment = 8
},
.digest_size = {
- .min = 1,
+ .min = 16,
.max = 16,
- .increment = 1
+ .increment = 0
},
}, }
}, }
.increment = 0
},
.digest_size = {
- .min = 1,
+ .min = 20,
.max = 20,
- .increment = 1
+ .increment = 0
},
}, }
}, }
.algo = RTE_CRYPTO_AUTH_SHA1_HMAC,
.block_size = 64,
.key_size = {
- .min = 64,
- .max = 64,
- .increment = 0
+ .min = 1,
+ .max = 1024,
+ .increment = 1
},
.digest_size = {
- .min = 1,
+ .min = 20,
.max = 20,
- .increment = 1
+ .increment = 0
},
}, }
}, }
.increment = 0
},
.digest_size = {
- .min = 1,
+ .min = 28,
.max = 28,
- .increment = 1
+ .increment = 0
},
}, }
}, }
.algo = RTE_CRYPTO_AUTH_SHA224_HMAC,
.block_size = 64,
.key_size = {
- .min = 64,
- .max = 64,
- .increment = 0
+ .min = 1,
+ .max = 1024,
+ .increment = 1
},
.digest_size = {
- .min = 1,
+ .min = 28,
.max = 28,
- .increment = 1
+ .increment = 0
},
}, }
}, }
.increment = 0
},
.digest_size = {
- .min = 1,
+ .min = 32,
.max = 32,
- .increment = 1
+ .increment = 0
},
}, }
}, }
.algo = RTE_CRYPTO_AUTH_SHA256_HMAC,
.block_size = 64,
.key_size = {
- .min = 64,
- .max = 64,
- .increment = 0
+ .min = 1,
+ .max = 1024,
+ .increment = 1
},
.digest_size = {
- .min = 1,
+ .min = 32,
.max = 32,
- .increment = 1
+ .increment = 0
},
}, }
}, }
.increment = 0
},
.digest_size = {
- .min = 1,
+ .min = 48,
.max = 48,
- .increment = 1
+ .increment = 0
},
}, }
}, }
.algo = RTE_CRYPTO_AUTH_SHA384_HMAC,
.block_size = 64,
.key_size = {
- .min = 64,
- .max = 64,
- .increment = 0
+ .min = 1,
+ .max = 1024,
+ .increment = 1
},
.digest_size = {
- .min = 1,
+ .min = 48,
.max = 48,
- .increment = 1
+ .increment = 0
},
}, }
}, }
.increment = 0
},
.digest_size = {
- .min = 1,
+ .min = 64,
.max = 64,
- .increment = 1
+ .increment = 0
},
}, }
}, }
.algo = RTE_CRYPTO_AUTH_SHA512_HMAC,
.block_size = 128,
.key_size = {
- .min = 64,
- .max = 64,
- .increment = 0
+ .min = 1,
+ .max = 1024,
+ .increment = 1
},
.digest_size = {
- .min = 1,
+ .min = 64,
.max = 64,
- .increment = 1
+ .increment = 0
},
}, }
}, }
RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST()
};
+static const struct rte_cryptodev_capabilities otx_asym_capabilities[] = {
+ /* Asymmetric capabilities */
+ { /* RSA */
+ .op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC,
+ {.asym = {
+ .xform_capa = {
+ .xform_type = RTE_CRYPTO_ASYM_XFORM_RSA,
+ .op_types = ((1 << RTE_CRYPTO_ASYM_OP_SIGN) |
+ (1 << RTE_CRYPTO_ASYM_OP_VERIFY) |
+ (1 << RTE_CRYPTO_ASYM_OP_ENCRYPT) |
+ (1 << RTE_CRYPTO_ASYM_OP_DECRYPT)),
+ {.modlen = {
+ .min = 17,
+ .max = 1024,
+ .increment = 1
+ }, }
+ }
+ }, }
+ },
+ { /* MOD_EXP */
+ .op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC,
+ {.asym = {
+ .xform_capa = {
+ .xform_type = RTE_CRYPTO_ASYM_XFORM_MODEX,
+ .op_types = 0,
+ {.modlen = {
+ .min = 17,
+ .max = 1024,
+ .increment = 1
+ }, }
+ }
+ }, }
+ },
+ { /* ECDSA */
+ .op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC,
+ {.asym = {
+ .xform_capa = {
+ .xform_type = RTE_CRYPTO_ASYM_XFORM_ECDSA,
+ .op_types = ((1 << RTE_CRYPTO_ASYM_OP_SIGN) |
+ (1 << RTE_CRYPTO_ASYM_OP_VERIFY)),
+ }
+ },
+ }
+ },
+ { /* ECPM */
+ .op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC,
+ {.asym = {
+ .xform_capa = {
+ .xform_type = RTE_CRYPTO_ASYM_XFORM_ECPM,
+ .op_types = 0
+ }
+ },
+ }
+ },
+ /* End of asymmetric capabilities */
+ RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST()
+};
+
const struct rte_cryptodev_capabilities *
-otx_get_capabilities(void)
+otx_get_capabilities(uint64_t flags)
{
- return otx_capabilities;
+ if (flags & RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO)
+ return otx_asym_capabilities;
+ else
+ return otx_sym_capabilities;
+
}