xref: /rk3399_rockchip-uboot/include/optee_include/OpteeClientInterface.h (revision fc3694d6f37c82d0a9bf334fbcb18a079566631a)
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 
12bb1ba6acSHisping Lin enum RK_OEM_HR_OTP_KEYID {
13bb1ba6acSHisping Lin 	RK_OEM_HR_OTP_KEY0 = 0,		/* keyladder key0 */
14bb1ba6acSHisping Lin 	RK_OEM_HR_OTP_KEY1 = 1,		/* keyladder key1 */
15bb1ba6acSHisping Lin 	RK_OEM_HR_OTP_KEY2 = 2,		/* keyladder key2 */
16bb1ba6acSHisping Lin 	RK_OEM_HR_OTP_KEY3 = 3,		/* keyladder key3 */
17bb1ba6acSHisping Lin 	RK_OEM_HR_OTP_KEYMAX
18bb1ba6acSHisping Lin };
19bb1ba6acSHisping Lin 
20*fc3694d6Sxb.wang /* Crypto mode */
21*fc3694d6Sxb.wang enum RK_CIPIHER_MODE {
22*fc3694d6Sxb.wang 	RK_CIPHER_MODE_ECB = 0,
23*fc3694d6Sxb.wang 	RK_CIPHER_MODE_CBC = 1,
24*fc3694d6Sxb.wang 	RK_CIPHER_MODE_CTS = 2,
25*fc3694d6Sxb.wang 	RK_CIPHER_MODE_CTR = 3,
26*fc3694d6Sxb.wang 	RK_CIPHER_MODE_CFB = 4,
27*fc3694d6Sxb.wang 	RK_CIPHER_MODE_OFB = 5,
28*fc3694d6Sxb.wang 	RK_CIPHER_MODE_XTS = 6,
29*fc3694d6Sxb.wang 	RK_CIPHER_MODE_CCM = 7,
30*fc3694d6Sxb.wang 	RK_CIPHER_MODE_GCM = 8,
31*fc3694d6Sxb.wang 	RK_CIPHER_MODE_CMAC = 9,
32*fc3694d6Sxb.wang 	RK_CIPHER_MODE_CBC_MAC = 10,
33*fc3694d6Sxb.wang 	RK_CIPHER_MODE_MAX
34*fc3694d6Sxb.wang };
35*fc3694d6Sxb.wang 
36*fc3694d6Sxb.wang /* Crypto algorithm */
37*fc3694d6Sxb.wang enum RK_CRYPTO_ALGO {
38*fc3694d6Sxb.wang 	RK_ALGO_AES = 1,
39*fc3694d6Sxb.wang 	RK_ALGO_DES,
40*fc3694d6Sxb.wang 	RK_ALGO_TDES,
41*fc3694d6Sxb.wang 	RK_ALGO_SM4,
42*fc3694d6Sxb.wang 	RK_ALGO_ALGO_MAX
43*fc3694d6Sxb.wang };
44*fc3694d6Sxb.wang 
45*fc3694d6Sxb.wang typedef struct {
46*fc3694d6Sxb.wang 	uint32_t	algo;
47*fc3694d6Sxb.wang 	uint32_t	mode;
48*fc3694d6Sxb.wang 	uint32_t	operation;
49*fc3694d6Sxb.wang 	uint8_t		key[64];
50*fc3694d6Sxb.wang 	uint32_t	key_len;
51*fc3694d6Sxb.wang 	uint8_t		iv[16];
52*fc3694d6Sxb.wang 	void		*reserved;
53*fc3694d6Sxb.wang } rk_cipher_config;
54*fc3694d6Sxb.wang 
55*fc3694d6Sxb.wang /* Crypto operation */
56*fc3694d6Sxb.wang #define RK_MODE_ENCRYPT			1
57*fc3694d6Sxb.wang #define RK_MODE_DECRYPT			0
58*fc3694d6Sxb.wang 
59*fc3694d6Sxb.wang #define AES_BLOCK_SIZE			16
60*fc3694d6Sxb.wang #define SM4_BLOCK_SIZE			16
61*fc3694d6Sxb.wang #define RK_CRYPTO_MAX_DATA_LEN		(1 * 1024 * 1024)
62*fc3694d6Sxb.wang 
632e40c2c1SJason Zhu #define ATAP_HEX_UUID_LEN 32
642e40c2c1SJason Zhu #define ATTEST_DH_SIZE     8
652e40c2c1SJason Zhu #define ATTEST_UUID_SIZE     (ATAP_HEX_UUID_LEN+1)
662e40c2c1SJason Zhu #define ATTEST_CA_OUT_SIZE     256
672e40c2c1SJason Zhu 
68ae8ec5e1SHisping Lin uint32_t trusty_read_rollback_index(uint32_t slot, uint64_t *value);
69ae8ec5e1SHisping Lin uint32_t trusty_write_rollback_index(uint32_t slot, uint64_t value);
70ae8ec5e1SHisping Lin uint32_t trusty_read_permanent_attributes(uint8_t *attributes, uint32_t size);
71ae8ec5e1SHisping Lin uint32_t trusty_write_permanent_attributes(uint8_t *attributes, uint32_t size);
72564654ebSJason Zhu uint32_t trusty_read_permanent_attributes_cer(uint8_t *attributes,
73564654ebSJason Zhu 					      uint32_t size);
74564654ebSJason Zhu uint32_t trusty_write_permanent_attributes_cer(uint8_t *attributes,
75564654ebSJason Zhu 					       uint32_t size);
76ae8ec5e1SHisping Lin uint32_t trusty_read_lock_state(uint8_t *lock_state);
77ae8ec5e1SHisping Lin uint32_t trusty_write_lock_state(uint8_t lock_state);
78ae8ec5e1SHisping Lin uint32_t trusty_read_flash_lock_state(uint8_t *flash_lock_state);
79ae8ec5e1SHisping Lin uint32_t trusty_write_flash_lock_state(uint8_t flash_lock_state);
8078ef5fbdSqiujian 
816ef445a4SHisping Lin uint32_t trusty_read_attribute_hash(uint32_t *buf, uint32_t length);
826ef445a4SHisping Lin uint32_t trusty_write_attribute_hash(uint32_t *buf, uint32_t length);
8316539616SHisping Lin uint32_t trusty_notify_optee_uboot_end(void);
842cd27853SHisping Lin uint32_t trusty_read_vbootkey_hash(uint32_t *buf, uint32_t length);
852cd27853SHisping Lin uint32_t trusty_write_vbootkey_hash(uint32_t *buf, uint32_t length);
86468df3b2SHisping Lin uint32_t trusty_read_vbootkey_enable_flag(uint8_t *flag);
871ef63c75SHisping Lin uint32_t trusty_write_ta_encryption_key(uint32_t *buf, uint32_t length);
88fbf29bfbSHisping Lin uint32_t trusty_check_security_level_flag(uint8_t flag);
89f39d4289SHisping Lin uint32_t trusty_write_oem_huk(uint32_t *buf, uint32_t length);
907504da74SHisping Lin void trusty_select_security_level(void);
91095e2a82SHisping Lin uint32_t trusty_read_permanent_attributes_flag(uint8_t *attributes);
92095e2a82SHisping Lin uint32_t trusty_write_permanent_attributes_flag(uint8_t attributes);
93d5913350SHisping Lin uint32_t trusty_write_oem_ns_otp(uint32_t byte_off, uint8_t *byte_buf, uint32_t byte_len);
94d5913350SHisping Lin uint32_t trusty_read_oem_ns_otp(uint32_t byte_off, uint8_t *byte_buf, uint32_t byte_len);
95bb1ba6acSHisping Lin uint32_t trusty_write_oem_hr_otp(enum RK_OEM_HR_OTP_KEYID key_id,
96bb1ba6acSHisping Lin 				 uint8_t *byte_buf, uint32_t byte_len);
97a405238aSHisping Lin uint32_t trusty_set_oem_hr_otp_read_lock(enum RK_OEM_HR_OTP_KEYID key_id);
98*fc3694d6Sxb.wang uint32_t trusty_keylad_cipher(enum RK_OEM_HR_OTP_KEYID key_id,
99*fc3694d6Sxb.wang 			      rk_cipher_config *config,
100*fc3694d6Sxb.wang 			      uint8_t *src, uint8_t *dest, uint32_t len);
1014aa61755SAndy Ye uint32_t trusty_attest_dh(uint8_t *dh, uint32_t *dh_size);
1024aa61755SAndy Ye uint32_t trusty_attest_uuid(uint8_t *uuid, uint32_t *uuid_size);
1034aa61755SAndy Ye uint32_t trusty_attest_get_ca
1044aa61755SAndy Ye 	(uint8_t *operation_start, uint32_t *operation_size,
1054aa61755SAndy Ye 	 uint8_t *out, uint32_t *out_len);
1064aa61755SAndy Ye uint32_t trusty_attest_set_ca(uint8_t *ca_response, uint32_t *ca_response_size);
10778ef5fbdSqiujian 
108ae8ec5e1SHisping Lin #endif
109