1*4418919fSjohnjiang /* SPDX-License-Identifier: BSD-3-Clause
2*4418919fSjohnjiang  * Copyright(C) 2019 Marvell International Ltd.
3*4418919fSjohnjiang  */
4*4418919fSjohnjiang 
5*4418919fSjohnjiang #include "nitrox_sym_capabilities.h"
6*4418919fSjohnjiang 
7*4418919fSjohnjiang static const struct rte_cryptodev_capabilities nitrox_capabilities[] = {
8*4418919fSjohnjiang 	{	/* SHA1 HMAC */
9*4418919fSjohnjiang 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
10*4418919fSjohnjiang 		{.sym = {
11*4418919fSjohnjiang 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
12*4418919fSjohnjiang 			{.auth = {
13*4418919fSjohnjiang 				.algo = RTE_CRYPTO_AUTH_SHA1_HMAC,
14*4418919fSjohnjiang 				.block_size = 64,
15*4418919fSjohnjiang 				.key_size = {
16*4418919fSjohnjiang 					.min = 1,
17*4418919fSjohnjiang 					.max = 64,
18*4418919fSjohnjiang 					.increment = 1
19*4418919fSjohnjiang 				},
20*4418919fSjohnjiang 				.digest_size = {
21*4418919fSjohnjiang 					.min = 1,
22*4418919fSjohnjiang 					.max = 20,
23*4418919fSjohnjiang 					.increment = 1
24*4418919fSjohnjiang 				},
25*4418919fSjohnjiang 				.iv_size = { 0 }
26*4418919fSjohnjiang 			}, }
27*4418919fSjohnjiang 		}, }
28*4418919fSjohnjiang 	},
29*4418919fSjohnjiang 	{	/* SHA224 HMAC */
30*4418919fSjohnjiang 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
31*4418919fSjohnjiang 		{.sym = {
32*4418919fSjohnjiang 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
33*4418919fSjohnjiang 			{.auth = {
34*4418919fSjohnjiang 				.algo = RTE_CRYPTO_AUTH_SHA224_HMAC,
35*4418919fSjohnjiang 				.block_size = 64,
36*4418919fSjohnjiang 				.key_size = {
37*4418919fSjohnjiang 					.min = 1,
38*4418919fSjohnjiang 					.max = 64,
39*4418919fSjohnjiang 					.increment = 1
40*4418919fSjohnjiang 				},
41*4418919fSjohnjiang 				.digest_size = {
42*4418919fSjohnjiang 					.min = 1,
43*4418919fSjohnjiang 					.max = 28,
44*4418919fSjohnjiang 					.increment = 1
45*4418919fSjohnjiang 				},
46*4418919fSjohnjiang 				.iv_size = { 0 }
47*4418919fSjohnjiang 			}, }
48*4418919fSjohnjiang 		}, }
49*4418919fSjohnjiang 	},
50*4418919fSjohnjiang 	{	/* SHA256 HMAC */
51*4418919fSjohnjiang 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
52*4418919fSjohnjiang 		{.sym = {
53*4418919fSjohnjiang 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
54*4418919fSjohnjiang 			{.auth = {
55*4418919fSjohnjiang 				.algo = RTE_CRYPTO_AUTH_SHA256_HMAC,
56*4418919fSjohnjiang 				.block_size = 64,
57*4418919fSjohnjiang 				.key_size = {
58*4418919fSjohnjiang 					.min = 1,
59*4418919fSjohnjiang 					.max = 64,
60*4418919fSjohnjiang 					.increment = 1
61*4418919fSjohnjiang 				},
62*4418919fSjohnjiang 				.digest_size = {
63*4418919fSjohnjiang 					.min = 1,
64*4418919fSjohnjiang 					.max = 32,
65*4418919fSjohnjiang 					.increment = 1
66*4418919fSjohnjiang 				},
67*4418919fSjohnjiang 				.iv_size = { 0 }
68*4418919fSjohnjiang 			}, }
69*4418919fSjohnjiang 		}, }
70*4418919fSjohnjiang 	},
71*4418919fSjohnjiang 	{	/* AES CBC */
72*4418919fSjohnjiang 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
73*4418919fSjohnjiang 		{.sym = {
74*4418919fSjohnjiang 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
75*4418919fSjohnjiang 			{.cipher = {
76*4418919fSjohnjiang 				.algo = RTE_CRYPTO_CIPHER_AES_CBC,
77*4418919fSjohnjiang 				.block_size = 16,
78*4418919fSjohnjiang 				.key_size = {
79*4418919fSjohnjiang 					.min = 16,
80*4418919fSjohnjiang 					.max = 32,
81*4418919fSjohnjiang 					.increment = 8
82*4418919fSjohnjiang 				},
83*4418919fSjohnjiang 				.iv_size = {
84*4418919fSjohnjiang 					.min = 16,
85*4418919fSjohnjiang 					.max = 16,
86*4418919fSjohnjiang 					.increment = 0
87*4418919fSjohnjiang 				}
88*4418919fSjohnjiang 			}, }
89*4418919fSjohnjiang 		}, }
90*4418919fSjohnjiang 	},
91*4418919fSjohnjiang 
92*4418919fSjohnjiang 	RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST()
93*4418919fSjohnjiang };
94*4418919fSjohnjiang 
95*4418919fSjohnjiang const struct rte_cryptodev_capabilities *
96*4418919fSjohnjiang nitrox_get_sym_capabilities(void)
97*4418919fSjohnjiang {
98*4418919fSjohnjiang 	return nitrox_capabilities;
99*4418919fSjohnjiang }
100