xref: /dpdk/drivers/crypto/nitrox/nitrox_sym_capabilities.c (revision 68a03efeed657e6e05f281479b33b51102797e15)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(C) 2019 Marvell International Ltd.
3  */
4 
5 #include "nitrox_sym_capabilities.h"
6 
7 static const struct rte_cryptodev_capabilities nitrox_capabilities[] = {
8 	{	/* SHA1 HMAC */
9 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
10 		{.sym = {
11 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
12 			{.auth = {
13 				.algo = RTE_CRYPTO_AUTH_SHA1_HMAC,
14 				.block_size = 64,
15 				.key_size = {
16 					.min = 1,
17 					.max = 64,
18 					.increment = 1
19 				},
20 				.digest_size = {
21 					.min = 1,
22 					.max = 20,
23 					.increment = 1
24 				},
25 				.iv_size = { 0 }
26 			}, }
27 		}, }
28 	},
29 	{	/* SHA224 HMAC */
30 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
31 		{.sym = {
32 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
33 			{.auth = {
34 				.algo = RTE_CRYPTO_AUTH_SHA224_HMAC,
35 				.block_size = 64,
36 				.key_size = {
37 					.min = 1,
38 					.max = 64,
39 					.increment = 1
40 				},
41 				.digest_size = {
42 					.min = 1,
43 					.max = 28,
44 					.increment = 1
45 				},
46 				.iv_size = { 0 }
47 			}, }
48 		}, }
49 	},
50 	{	/* SHA256 HMAC */
51 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
52 		{.sym = {
53 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
54 			{.auth = {
55 				.algo = RTE_CRYPTO_AUTH_SHA256_HMAC,
56 				.block_size = 64,
57 				.key_size = {
58 					.min = 1,
59 					.max = 64,
60 					.increment = 1
61 				},
62 				.digest_size = {
63 					.min = 1,
64 					.max = 32,
65 					.increment = 1
66 				},
67 				.iv_size = { 0 }
68 			}, }
69 		}, }
70 	},
71 	{	/* AES CBC */
72 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
73 		{.sym = {
74 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
75 			{.cipher = {
76 				.algo = RTE_CRYPTO_CIPHER_AES_CBC,
77 				.block_size = 16,
78 				.key_size = {
79 					.min = 16,
80 					.max = 32,
81 					.increment = 8
82 				},
83 				.iv_size = {
84 					.min = 16,
85 					.max = 16,
86 					.increment = 0
87 				}
88 			}, }
89 		}, }
90 	},
91 	{	/* 3DES CBC */
92 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
93 		{.sym = {
94 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
95 			{.cipher = {
96 				.algo = RTE_CRYPTO_CIPHER_3DES_CBC,
97 				.block_size = 8,
98 				.key_size = {
99 					.min = 24,
100 					.max = 24,
101 					.increment = 0
102 				},
103 				.iv_size = {
104 					.min = 8,
105 					.max = 8,
106 					.increment = 0
107 				}
108 			}, }
109 		}, }
110 	},
111 	{	/* AES GCM */
112 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
113 		{.sym = {
114 			.xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,
115 			{.aead = {
116 				.algo = RTE_CRYPTO_AEAD_AES_GCM,
117 				.block_size = 16,
118 				.key_size = {
119 					.min = 16,
120 					.max = 32,
121 					.increment = 8
122 				},
123 				.digest_size = {
124 					.min = 1,
125 					.max = 16,
126 					.increment = 1
127 				},
128 				.aad_size = {
129 					.min = 0,
130 					.max = 512,
131 					.increment = 1
132 				},
133 				.iv_size = {
134 					.min = 12,
135 					.max = 16,
136 					.increment = 4
137 				},
138 			}, }
139 		}, }
140 	},
141 	RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST()
142 };
143 
144 const struct rte_cryptodev_capabilities *
145 nitrox_get_sym_capabilities(void)
146 {
147 	return nitrox_capabilities;
148 }
149