#include "cache.h"
#include "TZ_Vendor_tl.h"
#include "tz_arcounter_errors.h"

uint8_t SCappName[10] = "SecCounter";

uint32_t wrap_time(uint8_t *in_buff, uint32_t in_size, uint8_t* out_buff, uint32_t* out_size)
{
  uint32_t ret = TZ_ARCOUNTER_INTERNAL_ERROR;
  //uint8_t wrap_buff[MAX_ARCOUNTER_WRAP_BUFFER] = {0, };
  //uint8_t digest[SHA256_LENGTH] = {0,};
  //uint32_t digest_size = SHA256_LENGTH;

/*  if ( TZ_ARCOUNTER_SUCCESS == TZ_digest_SHA256((uint8_t*)&time, sizeof(uint32_t), digest, &digest_size)) {
    TTY_LOG("TL_TZ_ARCOUNTER: wrap_time : digest_size %d", digest_size);
    memcpy(wrap_buff+time_size, digest, digest_size);
    time_size += digest_size;
  }
*/
  ret = TZ_wrap_data(SCappName, sizeof(SCappName),
        in_buff, in_size,
        out_buff, out_size);

  TTY_LOG("TL_TZ_ARCOUNTER: wrap_time : ret %d size %d", ret, *out_size);
  return ret;
}

uint32_t unwrap_time(uint8_t* in_buff, uint32_t in_len, uint8_t* out_buff, uint32_t* out_size)
{
  uint32_t ret = TZ_ARCOUNTER_INTERNAL_ERROR;
  //uint8_t digest[SHA256_LENGTH] = {0,};
  //uint32_t digest_size = SHA256_LENGTH;

  if (in_len > MAX_ARCOUNTER_WRAP_BUFFER) {
    TTY_LOG("TL_TZ_ARCOUNTER: buffer length is too long %d", in_len);
    return TZ_ARCOUNTER_WRONG_DATA;
  }

  ret = TZ_unwrap_data(SCappName, sizeof(SCappName),
        in_buff, in_len,
        out_buff, out_size);
/*
  TZ_digest_SHA256((uint8_t*)&time, time_size, digest, &digest_size);
  if (memcmp(digest, wrap_buff+time_size, digest_size)) {
    TTY_LOG("TL_TZ_ARCOUNTER: unwrap_time : digest is mismatched");
    *time = 0;
  }
*/
  TTY_LOG("TL_TZ_ARCOUNTER: unwrap_time : ret %d, time 0x%x", ret, out_size);

  return ret;
}
