xref: /dpdk/drivers/crypto/ipsec_mb/pmd_zuc_priv.h (revision 27595cd83053b2d39634a159d6709b3ce3cdf3b0)
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