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