xref: /dpdk/app/test/test_security_proto.h (revision b22cdccdd366c06e45888713ed865061c3181e3a)
11d3a3e18SAnoob Joseph /* SPDX-License-Identifier: BSD-3-Clause
21d3a3e18SAnoob Joseph  * Copyright(C) 2023 Marvell.
31d3a3e18SAnoob Joseph  */
41d3a3e18SAnoob Joseph 
51d3a3e18SAnoob Joseph #ifndef _TEST_SECURITY_PROTO_H_
61d3a3e18SAnoob Joseph #define _TEST_SECURITY_PROTO_H_
71d3a3e18SAnoob Joseph 
81d3a3e18SAnoob Joseph #include <rte_cryptodev.h>
91d3a3e18SAnoob Joseph #include <rte_security.h>
101d3a3e18SAnoob Joseph 
11cf93f07bSAakash Sasidharan #include "test_cryptodev.h"
12cf93f07bSAakash Sasidharan 
13*b22cdccdSAnoob Joseph #define TEST_SEC_CLEARTEXT_MAX_LEN  17408u
14*b22cdccdSAnoob Joseph #define TEST_SEC_CIPHERTEXT_MAX_LEN 18437u
15838e8decSVidya Sagar Velumuri #define TEST_SEC_PKTS_MAX 32
16838e8decSVidya Sagar Velumuri 
17*b22cdccdSAnoob Joseph static_assert(TEST_SEC_CIPHERTEXT_MAX_LEN <= LARGE_MBUF_DATAPAYLOAD_SIZE,
18*b22cdccdSAnoob Joseph 	      "TEST_SEC_CIPHERTEXT_MAX_LEN should not be greater than LARGE_MBUF_DATAPAYLOAD_SIZE");
19*b22cdccdSAnoob Joseph 
20f5e2f44cSVidya Sagar Velumuri struct crypto_param {
21f5e2f44cSVidya Sagar Velumuri 	enum rte_crypto_sym_xform_type type;
22f5e2f44cSVidya Sagar Velumuri 	union {
23f5e2f44cSVidya Sagar Velumuri 		enum rte_crypto_cipher_algorithm cipher;
24f5e2f44cSVidya Sagar Velumuri 		enum rte_crypto_auth_algorithm auth;
25f5e2f44cSVidya Sagar Velumuri 		enum rte_crypto_aead_algorithm aead;
26f5e2f44cSVidya Sagar Velumuri 	} alg;
27f5e2f44cSVidya Sagar Velumuri 	uint16_t key_length;
28f5e2f44cSVidya Sagar Velumuri 	uint16_t iv_length;
29f5e2f44cSVidya Sagar Velumuri 	uint16_t digest_length;
30f5e2f44cSVidya Sagar Velumuri };
31f5e2f44cSVidya Sagar Velumuri 
32f5e2f44cSVidya Sagar Velumuri static const struct crypto_param aead_list[] = {
33f5e2f44cSVidya Sagar Velumuri 	{
34f5e2f44cSVidya Sagar Velumuri 		.type = RTE_CRYPTO_SYM_XFORM_AEAD,
35f5e2f44cSVidya Sagar Velumuri 		.alg.aead =  RTE_CRYPTO_AEAD_AES_GCM,
36f5e2f44cSVidya Sagar Velumuri 		.key_length = 16,
375540192cSAakash Sasidharan 		.digest_length = 16,
38f5e2f44cSVidya Sagar Velumuri 	},
39f5e2f44cSVidya Sagar Velumuri 	{
40f5e2f44cSVidya Sagar Velumuri 		.type = RTE_CRYPTO_SYM_XFORM_AEAD,
41f5e2f44cSVidya Sagar Velumuri 		.alg.aead = RTE_CRYPTO_AEAD_AES_GCM,
42f5e2f44cSVidya Sagar Velumuri 		.key_length = 24,
435540192cSAakash Sasidharan 		.digest_length = 16,
44f5e2f44cSVidya Sagar Velumuri 	},
45f5e2f44cSVidya Sagar Velumuri 	{
46f5e2f44cSVidya Sagar Velumuri 		.type = RTE_CRYPTO_SYM_XFORM_AEAD,
47f5e2f44cSVidya Sagar Velumuri 		.alg.aead = RTE_CRYPTO_AEAD_AES_GCM,
48f5e2f44cSVidya Sagar Velumuri 		.key_length = 32,
495540192cSAakash Sasidharan 		.digest_length = 16,
50f5e2f44cSVidya Sagar Velumuri 	},
51f5e2f44cSVidya Sagar Velumuri 	{
52f5e2f44cSVidya Sagar Velumuri 		.type = RTE_CRYPTO_SYM_XFORM_AEAD,
53f5e2f44cSVidya Sagar Velumuri 		.alg.aead = RTE_CRYPTO_AEAD_AES_CCM,
54f5e2f44cSVidya Sagar Velumuri 		.key_length = 32
55f5e2f44cSVidya Sagar Velumuri 	},
56f5e2f44cSVidya Sagar Velumuri };
57f5e2f44cSVidya Sagar Velumuri 
58f5e2f44cSVidya Sagar Velumuri static const struct crypto_param cipher_list[] = {
59f5e2f44cSVidya Sagar Velumuri 	{
60f5e2f44cSVidya Sagar Velumuri 		.type = RTE_CRYPTO_SYM_XFORM_CIPHER,
61f5e2f44cSVidya Sagar Velumuri 		.alg.cipher =  RTE_CRYPTO_CIPHER_NULL,
62f5e2f44cSVidya Sagar Velumuri 		.key_length = 0,
63f5e2f44cSVidya Sagar Velumuri 		.iv_length = 0,
64f5e2f44cSVidya Sagar Velumuri 	},
65f5e2f44cSVidya Sagar Velumuri 	{
66f5e2f44cSVidya Sagar Velumuri 		.type = RTE_CRYPTO_SYM_XFORM_CIPHER,
67f5e2f44cSVidya Sagar Velumuri 		.alg.cipher =  RTE_CRYPTO_CIPHER_DES_CBC,
68f5e2f44cSVidya Sagar Velumuri 		.key_length = 8,
69f5e2f44cSVidya Sagar Velumuri 		.iv_length = 8,
70f5e2f44cSVidya Sagar Velumuri 	},
71f5e2f44cSVidya Sagar Velumuri 	{
72f5e2f44cSVidya Sagar Velumuri 		.type = RTE_CRYPTO_SYM_XFORM_CIPHER,
73f5e2f44cSVidya Sagar Velumuri 		.alg.cipher =  RTE_CRYPTO_CIPHER_3DES_CBC,
74f5e2f44cSVidya Sagar Velumuri 		.key_length = 24,
75f5e2f44cSVidya Sagar Velumuri 		.iv_length = 8,
76f5e2f44cSVidya Sagar Velumuri 	},
77f5e2f44cSVidya Sagar Velumuri 	{
78f5e2f44cSVidya Sagar Velumuri 		.type = RTE_CRYPTO_SYM_XFORM_CIPHER,
79f5e2f44cSVidya Sagar Velumuri 		.alg.cipher =  RTE_CRYPTO_CIPHER_AES_CBC,
80f5e2f44cSVidya Sagar Velumuri 		.key_length = 16,
81f5e2f44cSVidya Sagar Velumuri 		.iv_length = 16,
82f5e2f44cSVidya Sagar Velumuri 	},
83f5e2f44cSVidya Sagar Velumuri 	{
84f5e2f44cSVidya Sagar Velumuri 		.type = RTE_CRYPTO_SYM_XFORM_CIPHER,
854c87756aSVidya Sagar Velumuri 		.alg.cipher =  RTE_CRYPTO_CIPHER_AES_CBC,
864c87756aSVidya Sagar Velumuri 		.key_length = 32,
874c87756aSVidya Sagar Velumuri 		.iv_length = 16,
884c87756aSVidya Sagar Velumuri 	},
894c87756aSVidya Sagar Velumuri 	{
904c87756aSVidya Sagar Velumuri 		.type = RTE_CRYPTO_SYM_XFORM_CIPHER,
91f5e2f44cSVidya Sagar Velumuri 		.alg.cipher =  RTE_CRYPTO_CIPHER_AES_CTR,
92f5e2f44cSVidya Sagar Velumuri 		.key_length = 16,
93f5e2f44cSVidya Sagar Velumuri 		.iv_length = 16,
94f5e2f44cSVidya Sagar Velumuri 	},
95f5e2f44cSVidya Sagar Velumuri 	{
96f5e2f44cSVidya Sagar Velumuri 		.type = RTE_CRYPTO_SYM_XFORM_CIPHER,
97f5e2f44cSVidya Sagar Velumuri 		.alg.cipher =  RTE_CRYPTO_CIPHER_AES_CTR,
98f5e2f44cSVidya Sagar Velumuri 		.key_length = 24,
99f5e2f44cSVidya Sagar Velumuri 		.iv_length = 16,
100f5e2f44cSVidya Sagar Velumuri 	},
101f5e2f44cSVidya Sagar Velumuri 	{
102f5e2f44cSVidya Sagar Velumuri 		.type = RTE_CRYPTO_SYM_XFORM_CIPHER,
103f5e2f44cSVidya Sagar Velumuri 		.alg.cipher =  RTE_CRYPTO_CIPHER_AES_CTR,
104f5e2f44cSVidya Sagar Velumuri 		.key_length = 32,
105f5e2f44cSVidya Sagar Velumuri 		.iv_length = 16,
106f5e2f44cSVidya Sagar Velumuri 	},
107f5e2f44cSVidya Sagar Velumuri };
108f5e2f44cSVidya Sagar Velumuri 
109f5e2f44cSVidya Sagar Velumuri static const struct crypto_param auth_list[] = {
110f5e2f44cSVidya Sagar Velumuri 	{
111f5e2f44cSVidya Sagar Velumuri 		.type = RTE_CRYPTO_SYM_XFORM_AUTH,
112f5e2f44cSVidya Sagar Velumuri 		.alg.auth =  RTE_CRYPTO_AUTH_NULL,
113f5e2f44cSVidya Sagar Velumuri 	},
114f5e2f44cSVidya Sagar Velumuri 	{
115f5e2f44cSVidya Sagar Velumuri 		.type = RTE_CRYPTO_SYM_XFORM_AUTH,
116f5e2f44cSVidya Sagar Velumuri 		.alg.auth =  RTE_CRYPTO_AUTH_MD5_HMAC,
117f5e2f44cSVidya Sagar Velumuri 		.key_length = 16,
118f5e2f44cSVidya Sagar Velumuri 		.digest_length = 12,
119f5e2f44cSVidya Sagar Velumuri 	},
120f5e2f44cSVidya Sagar Velumuri 	{
121f5e2f44cSVidya Sagar Velumuri 		.type = RTE_CRYPTO_SYM_XFORM_AUTH,
122dee031f9SAnoob Joseph 		.alg.auth =  RTE_CRYPTO_AUTH_SHA1_HMAC,
123dee031f9SAnoob Joseph 		.key_length = 20,
124dee031f9SAnoob Joseph 		.digest_length = 12,
125dee031f9SAnoob Joseph 	},
126dee031f9SAnoob Joseph 	{
127dee031f9SAnoob Joseph 		.type = RTE_CRYPTO_SYM_XFORM_AUTH,
1284c87756aSVidya Sagar Velumuri 		.alg.auth =  RTE_CRYPTO_AUTH_SHA1_HMAC,
1294c87756aSVidya Sagar Velumuri 		.key_length = 20,
1304c87756aSVidya Sagar Velumuri 		.digest_length = 20,
1314c87756aSVidya Sagar Velumuri 	},
1324c87756aSVidya Sagar Velumuri 	{
1334c87756aSVidya Sagar Velumuri 		.type = RTE_CRYPTO_SYM_XFORM_AUTH,
134f5e2f44cSVidya Sagar Velumuri 		.alg.auth =  RTE_CRYPTO_AUTH_SHA256_HMAC,
135f5e2f44cSVidya Sagar Velumuri 		.key_length = 32,
136f5e2f44cSVidya Sagar Velumuri 		.digest_length = 16,
137f5e2f44cSVidya Sagar Velumuri 	},
138f5e2f44cSVidya Sagar Velumuri 	{
139f5e2f44cSVidya Sagar Velumuri 		.type = RTE_CRYPTO_SYM_XFORM_AUTH,
1404c87756aSVidya Sagar Velumuri 		.alg.auth =  RTE_CRYPTO_AUTH_SHA256_HMAC,
1414c87756aSVidya Sagar Velumuri 		.key_length = 32,
1424c87756aSVidya Sagar Velumuri 		.digest_length = 32,
1434c87756aSVidya Sagar Velumuri 	},
1444c87756aSVidya Sagar Velumuri 	{
1454c87756aSVidya Sagar Velumuri 		.type = RTE_CRYPTO_SYM_XFORM_AUTH,
146f5e2f44cSVidya Sagar Velumuri 		.alg.auth =  RTE_CRYPTO_AUTH_SHA384_HMAC,
147f5e2f44cSVidya Sagar Velumuri 		.key_length = 48,
148f5e2f44cSVidya Sagar Velumuri 		.digest_length = 24,
149f5e2f44cSVidya Sagar Velumuri 	},
150f5e2f44cSVidya Sagar Velumuri 	{
151f5e2f44cSVidya Sagar Velumuri 		.type = RTE_CRYPTO_SYM_XFORM_AUTH,
152f5e2f44cSVidya Sagar Velumuri 		.alg.auth =  RTE_CRYPTO_AUTH_SHA512_HMAC,
153f5e2f44cSVidya Sagar Velumuri 		.key_length = 64,
154f5e2f44cSVidya Sagar Velumuri 		.digest_length = 32,
155f5e2f44cSVidya Sagar Velumuri 	},
156f5e2f44cSVidya Sagar Velumuri 	{
157f5e2f44cSVidya Sagar Velumuri 		.type = RTE_CRYPTO_SYM_XFORM_AUTH,
158f5e2f44cSVidya Sagar Velumuri 		.alg.auth =  RTE_CRYPTO_AUTH_AES_XCBC_MAC,
159f5e2f44cSVidya Sagar Velumuri 		.key_length = 16,
160f5e2f44cSVidya Sagar Velumuri 		.digest_length = 12,
161f5e2f44cSVidya Sagar Velumuri 	},
162f5e2f44cSVidya Sagar Velumuri 	{
163f5e2f44cSVidya Sagar Velumuri 		.type = RTE_CRYPTO_SYM_XFORM_AUTH,
164f5e2f44cSVidya Sagar Velumuri 		.alg.auth =  RTE_CRYPTO_AUTH_AES_GMAC,
165f5e2f44cSVidya Sagar Velumuri 		.key_length = 16,
166f5e2f44cSVidya Sagar Velumuri 		.digest_length = 16,
167f5e2f44cSVidya Sagar Velumuri 		.iv_length = 12,
168f5e2f44cSVidya Sagar Velumuri 	},
169f5e2f44cSVidya Sagar Velumuri };
170f5e2f44cSVidya Sagar Velumuri 
171838e8decSVidya Sagar Velumuri struct crypto_param_comb {
172838e8decSVidya Sagar Velumuri 	const struct crypto_param *param1;
173838e8decSVidya Sagar Velumuri 	const struct crypto_param *param2;
174838e8decSVidya Sagar Velumuri };
175838e8decSVidya Sagar Velumuri 
176838e8decSVidya Sagar Velumuri extern struct crypto_param_comb sec_alg_list[RTE_DIM(aead_list) +
177838e8decSVidya Sagar Velumuri 					     (RTE_DIM(cipher_list) * RTE_DIM(auth_list))];
178838e8decSVidya Sagar Velumuri 
179838e8decSVidya Sagar Velumuri extern struct crypto_param_comb sec_auth_only_alg_list[2 * (RTE_DIM(auth_list) - 1)];
180838e8decSVidya Sagar Velumuri 
181838e8decSVidya Sagar Velumuri void test_sec_alg_list_populate(void);
182838e8decSVidya Sagar Velumuri 
183838e8decSVidya Sagar Velumuri void test_sec_auth_only_alg_list_populate(void);
184838e8decSVidya Sagar Velumuri 
1851d3a3e18SAnoob Joseph int test_sec_crypto_caps_aead_verify(const struct rte_security_capability *sec_cap,
1861d3a3e18SAnoob Joseph 		struct rte_crypto_sym_xform *aead);
1871d3a3e18SAnoob Joseph 
1881d3a3e18SAnoob Joseph int test_sec_crypto_caps_cipher_verify(const struct rte_security_capability *sec_cap,
1891d3a3e18SAnoob Joseph 		struct rte_crypto_sym_xform *cipher);
1901d3a3e18SAnoob Joseph 
1911d3a3e18SAnoob Joseph int test_sec_crypto_caps_auth_verify(const struct rte_security_capability *sec_cap,
1921d3a3e18SAnoob Joseph 		struct rte_crypto_sym_xform *auth);
1931d3a3e18SAnoob Joseph 
1943cf0c56cSAnoob Joseph void test_sec_alg_display(const struct crypto_param *param1, const struct crypto_param *param2);
1953cf0c56cSAnoob Joseph 
196cf93f07bSAakash Sasidharan void test_sec_proto_pattern_generate(void);
197cf93f07bSAakash Sasidharan 
198cf93f07bSAakash Sasidharan void test_sec_proto_pattern_set(uint8_t *buf, int len);
199cf93f07bSAakash Sasidharan 
2001d3a3e18SAnoob Joseph #endif
201