#ifndef __IFAA_TA_BIZ_H__
#define __IFAA_TA_BIZ_H__

#include "ifaa_tee_common.h"
#include "ifaa_ta_common.h"

#define __LEN_DEVICE_ID         48
#define __LEN_TA_VERSION        4
#define __LEN_INDEX             4
#define __LEN_RSA2048           256
#define __LEN_PUB_ALG_ENCODE    4
#define __LEN_KEY_TYPE          4
#define __LEN_SIGN_ALGORITHM    4
#define __MAX_COUNT_ID_LIST     10
#define __LEN_SHA256_DIGEST     32
#define __MAX_CERT_LEVEL        4
#define __LEN_SECURITY_LEVEL    4
#define __LEN_ECC256            32
#define __MAX_READ_LEN          1024
#define __LEN_EXTINFO           4

#define ECC_MAGIC 0x543F3F51

EXTERNC IFAA_Result ifaa_tz_get_device_id(vlb_t* res);

EXTERNC IFAA_Result ifaa_tz_get_version(vlb_t* res);

EXTERNC IFAA_Result ifaa_tz_get_optcertalg(vlb_t* res);

EXTERNC IFAA_Result ifaa_tz_register(vlb_t* req, vlb_t* res);

EXTERNC IFAA_Result ifaa_tz_authenticate(vlb_t* req, vlb_t* res);

EXTERNC IFAA_Result ifaa_tz_deregister(vlb_t* req);

EXTERNC IFAA_Result ifaa_tz_query_status(vlb_t* token, vlb_t* res);

typedef enum {
    SHA256_RSA2048_PER_MODLE = 0,
    SHA256_RSA2048_PER_DEVICE,
} SignType;

EXTERNC IFAA_Result ifaa_tz_get_sec_device_id(vlb_t* req, vlb_t* res);

EXTERNC IFAA_Result ifaa_tz_get_skpm_inject_state();

EXTERNC IFAA_Result ifaa_tz_skpm_provision_operation(uint32_t skpm_key_handle_length,uint8_t* skpm_key_handle);
EXTERNC IFAA_Result ifaa_tz_clear_sfs_files();
EXTERNC IFAA_Result ifaa_tz_update_fid(vlb_t *idlist);
#endif /* ifaa_ta_biz_h */
