/*
 * app_drk.h
 */

#ifndef _TZ_ICCC_APP_DRK_H_
#define _TZ_ICCC_APP_DRK_H_

#include <stdio.h>

#include "icccOperations_v4.h"

iccc_error_code_t load_iccc_key(uint8_t *key_file_buffer, uint32_t len);
iccc_error_code_t unwrap(uint8_t *blob_ptr, uint32_t blob_len, uint32_t *dest_len);

#define ICCC_KEY_TYPE_RSA_CERT    0x01
#define ICCC_KEY_TYPE_RSA_PRIVATE 0x03
#define ICCC_KEY_TYPE_TL_NAME     0x04

#define CHECK_UINT_BEFORE_ADD(a, b) (((a + (b)) >= a) ? 1 : 0)
#define CHECK_UINT_BEFORE_SUB(a, b) (a > b ? 1 : 0)

#define TL_NAME_MAX_LEN 32

#define MAX_CERTS 3
#define MAX_CERT_LENGTH 2500

#define ICCC_MAX_KEY_BUF 4096
#define MAX_WRAPPED_KEY_LEN 8192

typedef struct tz_iccc_rsakey_s {
    uint8_t* modulus;
    uint32_t modulus_len;
    uint8_t* priv_expo;
    uint32_t priv_expo_len;
    uint8_t* pub_expo;
    uint32_t pub_expo_len;
} tz_iccc_rsakey_t;

#define TA_SKM_UUID                {0,0,0,{0,0,0,0,0,0x53,0x4b,0x4d}}
#define TA_SKM_TA_AUTH_CRYPTOSUITE "samsung_ta"

#endif // _TZ_ICCC_APP_DRK_H_
