xref: /rk3399_rockchip-uboot/include/optee_include/OpteeClientInterface.h (revision c95f09d3e8643ebcae3e4e2b9beccfa10acd1c0c)
1ae8ec5e1SHisping Lin /*
2ae8ec5e1SHisping Lin  * Copyright 2017, Rockchip Electronics Co., Ltd
3ae8ec5e1SHisping Lin  * hisping lin, <hisping.lin@rock-chips.com>
4ae8ec5e1SHisping Lin  *
5ae8ec5e1SHisping Lin  * SPDX-License-Identifier:	GPL-2.0+
6ae8ec5e1SHisping Lin  */
7ae8ec5e1SHisping Lin #ifndef _OPTEECLIENTTEST_H_
8ae8ec5e1SHisping Lin #define _OPTEECLIENTTEST_H_
9ae8ec5e1SHisping Lin 
1078ef5fbdSqiujian #include <optee_include/tee_client_api.h>
1178ef5fbdSqiujian 
1290e849a0Sxb.wang enum RK_OEM_OTP_KEYID {
1390e849a0Sxb.wang 	RK_OEM_OTP_KEY0 = 0,
1490e849a0Sxb.wang 	RK_OEM_OTP_KEY1 = 1,
1590e849a0Sxb.wang 	RK_OEM_OTP_KEY2 = 2,
1690e849a0Sxb.wang 	RK_OEM_OTP_KEY3 = 3,
172f8c34bdSxb.wang 	RK_OEM_OTP_KEY_FW = 10,	//keyid of fw_encryption_key
1890e849a0Sxb.wang 	RK_OEM_OTP_KEYMAX
19bb1ba6acSHisping Lin };
20bb1ba6acSHisping Lin 
21a828eba9SHisping Lin enum RK_HDCP_KEYID {
22a828eba9SHisping Lin 	RK_HDCP_KEY0 = 0,
23a828eba9SHisping Lin 	RK_HDCP_KEY1 = 1,
24a828eba9SHisping Lin 	RK_HDCP_KEYMAX
25a828eba9SHisping Lin };
26a828eba9SHisping Lin 
27ac6d8253SHisping Lin enum RK_ESCK_KEYID {
28ac6d8253SHisping Lin 	RK_ESCK_KEY0 = 0,
29ac6d8253SHisping Lin 	RK_ESCK_KEYMAX
30ac6d8253SHisping Lin };
31ac6d8253SHisping Lin 
3211b25801SHisping Lin enum RK_FW_KEYID {
3311b25801SHisping Lin 	RK_FW_KEY0 = 0,
3411b25801SHisping Lin 	RK_FW_KEYMAX
3511b25801SHisping Lin };
3611b25801SHisping Lin 
37fc3694d6Sxb.wang /* Crypto mode */
38fc3694d6Sxb.wang enum RK_CIPIHER_MODE {
39fc3694d6Sxb.wang 	RK_CIPHER_MODE_ECB = 0,
40fc3694d6Sxb.wang 	RK_CIPHER_MODE_CBC = 1,
41fc3694d6Sxb.wang 	RK_CIPHER_MODE_CTS = 2,
42fc3694d6Sxb.wang 	RK_CIPHER_MODE_CTR = 3,
43fc3694d6Sxb.wang 	RK_CIPHER_MODE_CFB = 4,
44fc3694d6Sxb.wang 	RK_CIPHER_MODE_OFB = 5,
45fc3694d6Sxb.wang 	RK_CIPHER_MODE_XTS = 6,
46fc3694d6Sxb.wang 	RK_CIPHER_MODE_CCM = 7,
47fc3694d6Sxb.wang 	RK_CIPHER_MODE_GCM = 8,
48fc3694d6Sxb.wang 	RK_CIPHER_MODE_CMAC = 9,
49fc3694d6Sxb.wang 	RK_CIPHER_MODE_CBC_MAC = 10,
50fc3694d6Sxb.wang 	RK_CIPHER_MODE_MAX
51fc3694d6Sxb.wang };
52fc3694d6Sxb.wang 
53fc3694d6Sxb.wang /* Crypto algorithm */
54fc3694d6Sxb.wang enum RK_CRYPTO_ALGO {
55fc3694d6Sxb.wang 	RK_ALGO_AES = 1,
56fc3694d6Sxb.wang 	RK_ALGO_DES,
57fc3694d6Sxb.wang 	RK_ALGO_TDES,
58fc3694d6Sxb.wang 	RK_ALGO_SM4,
59fc3694d6Sxb.wang 	RK_ALGO_ALGO_MAX
60fc3694d6Sxb.wang };
61fc3694d6Sxb.wang 
62fc3694d6Sxb.wang typedef struct {
63fc3694d6Sxb.wang 	uint32_t	algo;
64fc3694d6Sxb.wang 	uint32_t	mode;
65fc3694d6Sxb.wang 	uint32_t	operation;
66fc3694d6Sxb.wang 	uint8_t		key[64];
67fc3694d6Sxb.wang 	uint32_t	key_len;
68fc3694d6Sxb.wang 	uint8_t		iv[16];
69fc3694d6Sxb.wang 	void		*reserved;
70fc3694d6Sxb.wang } rk_cipher_config;
71fc3694d6Sxb.wang 
72fc3694d6Sxb.wang /* Crypto operation */
73fc3694d6Sxb.wang #define RK_MODE_ENCRYPT			1
74fc3694d6Sxb.wang #define RK_MODE_DECRYPT			0
75fc3694d6Sxb.wang 
76fc3694d6Sxb.wang #define AES_BLOCK_SIZE			16
77fc3694d6Sxb.wang #define SM4_BLOCK_SIZE			16
78fc3694d6Sxb.wang #define RK_CRYPTO_MAX_DATA_LEN		(1 * 1024 * 1024)
79fc3694d6Sxb.wang 
802e40c2c1SJason Zhu #define ATAP_HEX_UUID_LEN 32
812e40c2c1SJason Zhu #define ATTEST_DH_SIZE     8
822e40c2c1SJason Zhu #define ATTEST_UUID_SIZE     (ATAP_HEX_UUID_LEN+1)
832e40c2c1SJason Zhu #define ATTEST_CA_OUT_SIZE     256
842e40c2c1SJason Zhu 
8551ac7005SHisping Lin void optee_client_init(void);
86ae8ec5e1SHisping Lin uint32_t trusty_read_rollback_index(uint32_t slot, uint64_t *value);
87ae8ec5e1SHisping Lin uint32_t trusty_write_rollback_index(uint32_t slot, uint64_t value);
88ae8ec5e1SHisping Lin uint32_t trusty_read_permanent_attributes(uint8_t *attributes, uint32_t size);
89ae8ec5e1SHisping Lin uint32_t trusty_write_permanent_attributes(uint8_t *attributes, uint32_t size);
90564654ebSJason Zhu uint32_t trusty_read_permanent_attributes_cer(uint8_t *attributes,
91564654ebSJason Zhu 					      uint32_t size);
92564654ebSJason Zhu uint32_t trusty_write_permanent_attributes_cer(uint8_t *attributes,
93564654ebSJason Zhu 					       uint32_t size);
94ae8ec5e1SHisping Lin uint32_t trusty_read_lock_state(uint8_t *lock_state);
95ae8ec5e1SHisping Lin uint32_t trusty_write_lock_state(uint8_t lock_state);
96ae8ec5e1SHisping Lin uint32_t trusty_read_flash_lock_state(uint8_t *flash_lock_state);
97ae8ec5e1SHisping Lin uint32_t trusty_write_flash_lock_state(uint8_t flash_lock_state);
9878ef5fbdSqiujian 
996ef445a4SHisping Lin uint32_t trusty_read_attribute_hash(uint32_t *buf, uint32_t length);
1006ef445a4SHisping Lin uint32_t trusty_write_attribute_hash(uint32_t *buf, uint32_t length);
10116539616SHisping Lin uint32_t trusty_notify_optee_uboot_end(void);
1022cd27853SHisping Lin uint32_t trusty_read_vbootkey_hash(uint32_t *buf, uint32_t length);
1032cd27853SHisping Lin uint32_t trusty_write_vbootkey_hash(uint32_t *buf, uint32_t length);
104468df3b2SHisping Lin uint32_t trusty_read_vbootkey_enable_flag(uint8_t *flag);
1051ef63c75SHisping Lin uint32_t trusty_write_ta_encryption_key(uint32_t *buf, uint32_t length);
10610f41197SHisping Lin uint32_t trusty_ta_encryption_key_is_written(uint8_t *value);
1071ac64e8aSHisping Lin uint32_t trusty_write_oem_encrypt_data(uint32_t *buf, uint32_t length);
108fc383442SHisping Lin uint32_t trusty_oem_encrypt_data_is_written(uint8_t *value);
109fbf29bfbSHisping Lin uint32_t trusty_check_security_level_flag(uint8_t flag);
110f39d4289SHisping Lin uint32_t trusty_write_oem_huk(uint32_t *buf, uint32_t length);
111095e2a82SHisping Lin uint32_t trusty_read_permanent_attributes_flag(uint8_t *attributes);
112095e2a82SHisping Lin uint32_t trusty_write_permanent_attributes_flag(uint8_t attributes);
113d5913350SHisping Lin uint32_t trusty_write_oem_ns_otp(uint32_t byte_off, uint8_t *byte_buf, uint32_t byte_len);
114d5913350SHisping Lin uint32_t trusty_read_oem_ns_otp(uint32_t byte_off, uint8_t *byte_buf, uint32_t byte_len);
11590e849a0Sxb.wang uint32_t trusty_write_oem_otp_key(enum RK_OEM_OTP_KEYID key_id,
116bb1ba6acSHisping Lin 				  uint8_t *byte_buf, uint32_t byte_len);
1179deb34f6SHisping Lin uint32_t trusty_oem_otp_key_is_written(enum RK_OEM_OTP_KEYID key_id, uint8_t *value);
11890e849a0Sxb.wang uint32_t trusty_set_oem_hr_otp_read_lock(enum RK_OEM_OTP_KEYID key_id);
1192f8c34bdSxb.wang uint32_t trusty_oem_otp_key_cipher(enum RK_OEM_OTP_KEYID key_id, rk_cipher_config *config,
1202f8c34bdSxb.wang 				   uint32_t src_phys_addr, uint32_t dst_phys_addr,
1212f8c34bdSxb.wang 				   uint32_t len);
1224d4c5043SHisping Lin uint32_t trusty_oem_user_ta_transfer(void);
1234d4c5043SHisping Lin uint32_t trusty_oem_user_ta_storage(void);
124a828eba9SHisping Lin uint32_t trusty_write_oem_hdcp_key(enum RK_HDCP_KEYID key_id,
125a828eba9SHisping Lin 				  uint8_t *byte_buf, uint32_t byte_len);
126e8bc2655SHisping Lin uint32_t trusty_oem_hdcp_key_is_written(enum RK_HDCP_KEYID key_id, uint8_t *value);
127bfd9cea4SHisping Lin uint32_t trusty_set_oem_hdcp_key_mask(enum RK_HDCP_KEYID key_id);
1284aa61755SAndy Ye uint32_t trusty_attest_dh(uint8_t *dh, uint32_t *dh_size);
1294aa61755SAndy Ye uint32_t trusty_attest_uuid(uint8_t *uuid, uint32_t *uuid_size);
1304aa61755SAndy Ye uint32_t trusty_attest_get_ca
1314aa61755SAndy Ye 	(uint8_t *operation_start, uint32_t *operation_size,
1324aa61755SAndy Ye 	 uint8_t *out, uint32_t *out_len);
1334aa61755SAndy Ye uint32_t trusty_attest_set_ca(uint8_t *ca_response, uint32_t *ca_response_size);
134600d0405SJoseph Chen uint32_t trusty_set_fw_encrypt_key_mask(enum RK_FW_KEYID key_id);
135600d0405SJoseph Chen uint32_t trusty_fw_encrypt_key_is_written(enum RK_FW_KEYID key_id, uint8_t *value);
136600d0405SJoseph Chen uint32_t trusty_write_fw_encrypt_key(enum RK_FW_KEYID key_id,
137600d0405SJoseph Chen 				     uint8_t *byte_buf, uint32_t byte_len);
138437ac8e2SLin Jinhan uint32_t trusty_fw_key_cipher(enum RK_FW_KEYID key_id, rk_cipher_config *config,
139437ac8e2SLin Jinhan 			      uint32_t src_phys_addr, uint32_t dst_phys_addr,
140437ac8e2SLin Jinhan 			      uint32_t len);
141*c95f09d3Sxb.wang uint32_t trusty_verify_config_ip(char *licence_str);
14278ef5fbdSqiujian 
143ae8ec5e1SHisping Lin #endif
144