brintos

brintos / linux-shallow public Read only

0
0
Text · 4.1 KiB · e64f7e3 Raw
207 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2 3#ifndef __NX_CSBCPB_H__4#define __NX_CSBCPB_H__5 6struct cop_symcpb_aes_ecb {7	u8 key[32];8	u8 __rsvd[80];9} __packed;10 11struct cop_symcpb_aes_cbc {12	u8 iv[16];13	u8 key[32];14	u8 cv[16];15	u32 spbc;16	u8 __rsvd[44];17} __packed;18 19struct cop_symcpb_aes_gca {20	u8 in_pat[16];21	u8 key[32];22	u8 out_pat[16];23	u32 spbc;24	u8 __rsvd[44];25} __packed;26 27struct cop_symcpb_aes_gcm {28	u8 in_pat_or_aad[16];29	u8 iv_or_cnt[16];30	u64 bit_length_aad;31	u64 bit_length_data;32	u8 in_s0[16];33	u8 key[32];34	u8 __rsvd1[16];35	u8 out_pat_or_mac[16];36	u8 out_s0[16];37	u8 out_cnt[16];38	u32 spbc;39	u8 __rsvd2[12];40} __packed;41 42struct cop_symcpb_aes_ctr {43	u8 iv[16];44	u8 key[32];45	u8 cv[16];46	u32 spbc;47	u8 __rsvd2[44];48} __packed;49 50struct cop_symcpb_aes_cca {51	u8 b0[16];52	u8 b1[16];53	u8 key[16];54	u8 out_pat_or_b0[16];55	u32 spbc;56	u8 __rsvd[44];57} __packed;58 59struct cop_symcpb_aes_ccm {60	u8 in_pat_or_b0[16];61	u8 iv_or_ctr[16];62	u8 in_s0[16];63	u8 key[16];64	u8 __rsvd1[48];65	u8 out_pat_or_mac[16];66	u8 out_s0[16];67	u8 out_ctr[16];68	u32 spbc;69	u8 __rsvd2[12];70} __packed;71 72struct cop_symcpb_aes_xcbc {73	u8 cv[16];74	u8 key[16];75	u8 __rsvd1[16];76	u8 out_cv_mac[16];77	u32 spbc;78	u8 __rsvd2[44];79} __packed;80 81struct cop_symcpb_sha256 {82	u64 message_bit_length;83	u64 __rsvd1;84	u8 input_partial_digest[32];85	u8 message_digest[32];86	u32 spbc;87	u8 __rsvd2[44];88} __packed;89 90struct cop_symcpb_sha512 {91	u64 message_bit_length_hi;92	u64 message_bit_length_lo;93	u8 input_partial_digest[64];94	u8 __rsvd1[32];95	u8 message_digest[64];96	u32 spbc;97	u8 __rsvd2[76];98} __packed;99 100#define NX_FDM_INTERMEDIATE		0x01101#define NX_FDM_CONTINUATION		0x02102#define NX_FDM_ENDE_ENCRYPT		0x80103 104#define NX_CPB_FDM(c)			((c)->cpb.hdr.fdm)105#define NX_CPB_KS_DS(c)			((c)->cpb.hdr.ks_ds)106 107#define NX_CPB_KEY_SIZE(c)		(NX_CPB_KS_DS(c) >> 4)108#define NX_CPB_SET_KEY_SIZE(c, x)	NX_CPB_KS_DS(c) |= ((x) << 4)109#define NX_CPB_SET_DIGEST_SIZE(c, x)	NX_CPB_KS_DS(c) |= (x)110 111struct cop_symcpb_header {112	u8 mode;113	u8 fdm;114	u8 ks_ds;115	u8 pad_byte;116	u8 __rsvd[12];117} __packed;118 119struct cop_parameter_block {120	struct cop_symcpb_header hdr;121	union {122		struct cop_symcpb_aes_ecb  aes_ecb;123		struct cop_symcpb_aes_cbc  aes_cbc;124		struct cop_symcpb_aes_gca  aes_gca;125		struct cop_symcpb_aes_gcm  aes_gcm;126		struct cop_symcpb_aes_cca  aes_cca;127		struct cop_symcpb_aes_ccm  aes_ccm;128		struct cop_symcpb_aes_ctr  aes_ctr;129		struct cop_symcpb_aes_xcbc aes_xcbc;130		struct cop_symcpb_sha256   sha256;131		struct cop_symcpb_sha512   sha512;132	};133} __packed;134 135#define NX_CSB_VALID_BIT	0x80136 137/* co-processor status block */138struct cop_status_block {139	u8 valid;140	u8 crb_seq_number;141	u8 completion_code;142	u8 completion_extension;143	__be32 processed_byte_count;144	__be64 address;145} __packed;146 147/* Nest accelerator workbook section 4.4 */148struct nx_csbcpb {149	unsigned char __rsvd[112];150	struct cop_status_block csb;151	struct cop_parameter_block cpb;152} __packed;153 154/* nx_csbcpb related definitions */155#define NX_MODE_AES_ECB			0156#define NX_MODE_AES_CBC			1157#define NX_MODE_AES_GMAC		2158#define NX_MODE_AES_GCA			3159#define NX_MODE_AES_GCM			4160#define NX_MODE_AES_CCA			5161#define NX_MODE_AES_CCM			6162#define NX_MODE_AES_CTR			7163#define NX_MODE_AES_XCBC_MAC		20164#define NX_MODE_SHA			0165#define NX_MODE_SHA_HMAC		1166#define NX_MODE_AES_CBC_HMAC_ETA	8167#define NX_MODE_AES_CBC_HMAC_ATE	9168#define NX_MODE_AES_CBC_HMAC_EAA	10169#define NX_MODE_AES_CTR_HMAC_ETA	12170#define NX_MODE_AES_CTR_HMAC_ATE	13171#define NX_MODE_AES_CTR_HMAC_EAA	14172 173#define NX_FDM_CI_FULL		0174#define NX_FDM_CI_FIRST		1175#define NX_FDM_CI_LAST		2176#define NX_FDM_CI_MIDDLE	3177 178#define NX_FDM_PR_NONE		0179#define NX_FDM_PR_PAD		1180 181#define NX_KS_AES_128		1182#define NX_KS_AES_192		2183#define NX_KS_AES_256		3184 185#define NX_DS_SHA256		2186#define NX_DS_SHA512		3187 188#define NX_FC_AES		0189#define NX_FC_SHA		2190#define NX_FC_AES_HMAC		6191 192#define NX_MAX_FC		(NX_FC_AES_HMAC + 1)193#define NX_MAX_MODE		(NX_MODE_AES_XCBC_MAC + 1)194 195#define HCOP_FC_AES          NX_FC_AES196#define HCOP_FC_SHA          NX_FC_SHA197#define HCOP_FC_AES_HMAC     NX_FC_AES_HMAC198 199/* indices into the array of algorithm properties */200#define NX_PROPS_AES_128		0201#define NX_PROPS_AES_192		1202#define NX_PROPS_AES_256		2203#define NX_PROPS_SHA256			1204#define NX_PROPS_SHA512			2205 206#endif207