#ifndef _ESECOMM_CRYPTO_H
#define _ESECOMM_CRYPTO_H

#include "esecomm_tz_vendor.h"

int is_sem_so(uint8_t *so, uint32_t so_len);

int is_self_created_so(uint8_t *so, uint32_t so_len);

uint32_t get_esecomm_ksk(
	uint8_t * ksk,
	uint32_t ksk_len
);

uint32_t get_esecomm_dsk(
	uint8_t * sk,
	uint32_t sk_len
);

uint32_t esecomm_gen_rand_data(
	uint8_t *randomBuffer,
	uint32_t *randomLen
);

uint32_t esecomm_encrypt_skey(
	uint8_t *pin, uint32_t in_len,
	uint8_t *pout, uint32_t *pout_len
);

uint32_t esecomm_decrypt_skey(
	uint8_t *pin, uint32_t in_len,
	uint8_t *piv, uint8_t *ptag,
	uint8_t *pout, uint32_t *pout_len
);

uint32_t esecomm_wrap_skey_ciphertext(
    uint8_t *app_name, uint32_t app_name_len,
    uint8_t *in, uint8_t in_len,
    uint8_t *out, uint32_t *out_len
);

uint32_t esecomm_unwrap_skey_so(
	uint8_t *in, uint8_t in_len,
	uint8_t *out, uint32_t *out_len
);

uint32_t esecomm_unwrap_sem_so(
	uint8_t *in, uint8_t in_len,
	uint8_t *out, uint32_t *out_len
);

#endif
