1cde8df1bSPiotr Bronowski /* SPDX-License-Identifier: BSD-3-Clause 2cde8df1bSPiotr Bronowski * Copyright(c) 2016-2021 Intel Corporation 3cde8df1bSPiotr Bronowski */ 4cde8df1bSPiotr Bronowski 5cde8df1bSPiotr Bronowski #ifndef _PMD_ZUC_PRIV_H_ 6cde8df1bSPiotr Bronowski #define _PMD_ZUC_PRIV_H_ 7cde8df1bSPiotr Bronowski 8cde8df1bSPiotr Bronowski #include "ipsec_mb_private.h" 9cde8df1bSPiotr Bronowski 10cde8df1bSPiotr Bronowski #define ZUC_IV_KEY_LENGTH 16 11cde8df1bSPiotr Bronowski #define ZUC_DIGEST_LENGTH 4 12cde8df1bSPiotr Bronowski #define ZUC_MAX_BURST 16 13cde8df1bSPiotr Bronowski #define BYTE_LEN 8 14cde8df1bSPiotr Bronowski 15cde8df1bSPiotr Bronowski uint8_t pmd_driver_id_zuc; 16cde8df1bSPiotr Bronowski 17cde8df1bSPiotr Bronowski static const struct rte_cryptodev_capabilities zuc_capabilities[] = { 18cde8df1bSPiotr Bronowski { /* ZUC (EIA3) */ 19cde8df1bSPiotr Bronowski .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 20cde8df1bSPiotr Bronowski {.sym = { 21cde8df1bSPiotr Bronowski .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 22cde8df1bSPiotr Bronowski {.auth = { 23cde8df1bSPiotr Bronowski .algo = RTE_CRYPTO_AUTH_ZUC_EIA3, 24cde8df1bSPiotr Bronowski .block_size = 16, 25cde8df1bSPiotr Bronowski .key_size = { 26cde8df1bSPiotr Bronowski .min = 16, 27cde8df1bSPiotr Bronowski .max = 16, 28cde8df1bSPiotr Bronowski .increment = 0 29cde8df1bSPiotr Bronowski }, 30cde8df1bSPiotr Bronowski .digest_size = { 31cde8df1bSPiotr Bronowski .min = ZUC_DIGEST_LENGTH, 32cde8df1bSPiotr Bronowski .max = ZUC_DIGEST_LENGTH, 33cde8df1bSPiotr Bronowski .increment = 0 34cde8df1bSPiotr Bronowski }, 35cde8df1bSPiotr Bronowski .iv_size = { 36cde8df1bSPiotr Bronowski .min = ZUC_IV_KEY_LENGTH, 37cde8df1bSPiotr Bronowski .max = ZUC_IV_KEY_LENGTH, 38cde8df1bSPiotr Bronowski .increment = 0 39cde8df1bSPiotr Bronowski } 40cde8df1bSPiotr Bronowski }, } 41cde8df1bSPiotr Bronowski }, } 42cde8df1bSPiotr Bronowski }, 43cde8df1bSPiotr Bronowski { /* ZUC (EEA3) */ 44cde8df1bSPiotr Bronowski .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 45cde8df1bSPiotr Bronowski {.sym = { 46cde8df1bSPiotr Bronowski .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, 47cde8df1bSPiotr Bronowski {.cipher = { 48cde8df1bSPiotr Bronowski .algo = RTE_CRYPTO_CIPHER_ZUC_EEA3, 49cde8df1bSPiotr Bronowski .block_size = 16, 50cde8df1bSPiotr Bronowski .key_size = { 51cde8df1bSPiotr Bronowski .min = 16, 52cde8df1bSPiotr Bronowski .max = 16, 53cde8df1bSPiotr Bronowski .increment = 0 54cde8df1bSPiotr Bronowski }, 55cde8df1bSPiotr Bronowski .iv_size = { 56cde8df1bSPiotr Bronowski .min = ZUC_IV_KEY_LENGTH, 57cde8df1bSPiotr Bronowski .max = ZUC_IV_KEY_LENGTH, 58cde8df1bSPiotr Bronowski .increment = 0 59cde8df1bSPiotr Bronowski }, 60cde8df1bSPiotr Bronowski }, } 61cde8df1bSPiotr Bronowski }, } 62cde8df1bSPiotr Bronowski }, 63cde8df1bSPiotr Bronowski RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST() 64cde8df1bSPiotr Bronowski }; 65cde8df1bSPiotr Bronowski 66cde8df1bSPiotr Bronowski /** ZUC private session structure */ 67*27595cd8STyler Retzlaff struct __rte_cache_aligned zuc_session { 68cde8df1bSPiotr Bronowski enum ipsec_mb_operation op; 69cde8df1bSPiotr Bronowski enum rte_crypto_auth_operation auth_op; 70cde8df1bSPiotr Bronowski uint8_t pKey_cipher[ZUC_IV_KEY_LENGTH]; 71cde8df1bSPiotr Bronowski uint8_t pKey_hash[ZUC_IV_KEY_LENGTH]; 72cde8df1bSPiotr Bronowski uint16_t cipher_iv_offset; 73cde8df1bSPiotr Bronowski uint16_t auth_iv_offset; 74*27595cd8STyler Retzlaff }; 75cde8df1bSPiotr Bronowski 76cde8df1bSPiotr Bronowski struct zuc_qp_data { 77cde8df1bSPiotr Bronowski 78bd376973SPablo de Lara uint8_t temp_digest[ZUC_MAX_BURST][ZUC_DIGEST_LENGTH]; 79cde8df1bSPiotr Bronowski /* *< Buffers used to store the digest generated 80cde8df1bSPiotr Bronowski * by the driver when verifying a digest provided 81cde8df1bSPiotr Bronowski * by the user (using authentication verify operation) 82cde8df1bSPiotr Bronowski */ 83cde8df1bSPiotr Bronowski }; 84cde8df1bSPiotr Bronowski 85cde8df1bSPiotr Bronowski #endif /* _PMD_ZUC_PRIV_H_ */ 86