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 12*90e849a0Sxb.wang enum RK_OEM_OTP_KEYID { 13*90e849a0Sxb.wang RK_OEM_OTP_KEY0 = 0, 14*90e849a0Sxb.wang RK_OEM_OTP_KEY1 = 1, 15*90e849a0Sxb.wang RK_OEM_OTP_KEY2 = 2, 16*90e849a0Sxb.wang RK_OEM_OTP_KEY3 = 3, 17*90e849a0Sxb.wang RK_OEM_OTP_KEYMAX 18bb1ba6acSHisping Lin }; 19bb1ba6acSHisping Lin 20fc3694d6Sxb.wang /* Crypto mode */ 21fc3694d6Sxb.wang enum RK_CIPIHER_MODE { 22fc3694d6Sxb.wang RK_CIPHER_MODE_ECB = 0, 23fc3694d6Sxb.wang RK_CIPHER_MODE_CBC = 1, 24fc3694d6Sxb.wang RK_CIPHER_MODE_CTS = 2, 25fc3694d6Sxb.wang RK_CIPHER_MODE_CTR = 3, 26fc3694d6Sxb.wang RK_CIPHER_MODE_CFB = 4, 27fc3694d6Sxb.wang RK_CIPHER_MODE_OFB = 5, 28fc3694d6Sxb.wang RK_CIPHER_MODE_XTS = 6, 29fc3694d6Sxb.wang RK_CIPHER_MODE_CCM = 7, 30fc3694d6Sxb.wang RK_CIPHER_MODE_GCM = 8, 31fc3694d6Sxb.wang RK_CIPHER_MODE_CMAC = 9, 32fc3694d6Sxb.wang RK_CIPHER_MODE_CBC_MAC = 10, 33fc3694d6Sxb.wang RK_CIPHER_MODE_MAX 34fc3694d6Sxb.wang }; 35fc3694d6Sxb.wang 36fc3694d6Sxb.wang /* Crypto algorithm */ 37fc3694d6Sxb.wang enum RK_CRYPTO_ALGO { 38fc3694d6Sxb.wang RK_ALGO_AES = 1, 39fc3694d6Sxb.wang RK_ALGO_DES, 40fc3694d6Sxb.wang RK_ALGO_TDES, 41fc3694d6Sxb.wang RK_ALGO_SM4, 42fc3694d6Sxb.wang RK_ALGO_ALGO_MAX 43fc3694d6Sxb.wang }; 44fc3694d6Sxb.wang 45fc3694d6Sxb.wang typedef struct { 46fc3694d6Sxb.wang uint32_t algo; 47fc3694d6Sxb.wang uint32_t mode; 48fc3694d6Sxb.wang uint32_t operation; 49fc3694d6Sxb.wang uint8_t key[64]; 50fc3694d6Sxb.wang uint32_t key_len; 51fc3694d6Sxb.wang uint8_t iv[16]; 52fc3694d6Sxb.wang void *reserved; 53fc3694d6Sxb.wang } rk_cipher_config; 54fc3694d6Sxb.wang 55fc3694d6Sxb.wang /* Crypto operation */ 56fc3694d6Sxb.wang #define RK_MODE_ENCRYPT 1 57fc3694d6Sxb.wang #define RK_MODE_DECRYPT 0 58fc3694d6Sxb.wang 59fc3694d6Sxb.wang #define AES_BLOCK_SIZE 16 60fc3694d6Sxb.wang #define SM4_BLOCK_SIZE 16 61fc3694d6Sxb.wang #define RK_CRYPTO_MAX_DATA_LEN (1 * 1024 * 1024) 62fc3694d6Sxb.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); 95*90e849a0Sxb.wang uint32_t trusty_write_oem_otp_key(enum RK_OEM_OTP_KEYID key_id, 96bb1ba6acSHisping Lin uint8_t *byte_buf, uint32_t byte_len); 97*90e849a0Sxb.wang uint32_t trusty_set_oem_hr_otp_read_lock(enum RK_OEM_OTP_KEYID key_id); 98*90e849a0Sxb.wang uint32_t trusty_oem_otp_key_cipher(enum RK_OEM_OTP_KEYID key_id, 99fc3694d6Sxb.wang rk_cipher_config *config, 100fc3694d6Sxb.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