/*
 * =====================================================================================
 *
 *  Filename:  kg_err.h
 *
 *  Description:  KG error code definition
 *
 *  Version:  1.0
 *  Created:  03/24/2020 10:44:00 AM
 *  Revision:  none
 *  Compiler:  gcc
 *
 *  Company:  Samsung Electronics
 *  Copyright (c) 2020 by Samsung Electronics, All rights reserved.
 *
 * =====================================================================================
 */
#ifndef __KG_ERR_H__
#define __KG_ERR_H__

#define KG_SUCCESS                  0x0

#define KG_COMM_ERR                 0x10
#define KG_ERR_PERMISSION_DENIED    (KG_COMM_ERR + 0x1) 
#define KG_ERR_INVALID_BUFFER       (KG_COMM_ERR + 0x2) 
#define KG_ERR_INVALID_CMD          (KG_COMM_ERR + 0x3) 


#define KG_ERROR_BASE               0x100
#define KG_GET_STATUS_FAIL          (KG_ERROR_BASE + 0x1)
#define KG_ALLOC_BUFFER_FAIL        (KG_ERROR_BASE + 0x2)
#define KG_BUFFER_SIZE_FAIL         (KG_ERROR_BASE + 0x3)
#define KG_TZ_API_FAIL              (KG_ERROR_BASE + 0x4)
#define KG_CMD_FAIL                 (KG_ERROR_BASE + 0x5)
#define KG_STATE_FAIL               (KG_ERROR_BASE + 0x6)
#define KG_BASE64_ENCODE_FAIL       (KG_ERROR_BASE + 0x7)
#define KG_BASE64_DECODE_FAIL       (KG_ERROR_BASE + 0x8)
#define KG_INIT_FAIL                (KG_ERROR_BASE + 0x9)

#define KG_RPMB_BASE                0x200
#define KG_RPMB_UNAVAILABLE         (KG_RPMB_BASE + 0x1)
#define KG_RPMB_READ_FAIL           (KG_RPMB_BASE + 0x2)
#define KG_RPMB_WRITE_FAIL          (KG_RPMB_BASE + 0x3)
#define KG_RPMB_MAGIC_FAIL          (KG_RPMB_BASE + 0x4)
#define KG_RPMB_WRAP_FAIL           (KG_RPMB_BASE + 0x5)
#define KG_RPMB_UNWRAP_FAIL         (KG_RPMB_BASE + 0x6)

#define KG_HOTP_BASE                0x300
#define KG_HOTP_SECRET_GEN_FAIL     (KG_HOTP_BASE + 0x1)
#define KG_HOTP_CHALL_GEN_FAIL      (KG_HOTP_BASE + 0x2)
#define KG_HOTP_SECRET_CHECK_FAIL   (KG_HOTP_BASE + 0x3)
#define KG_HOTP_CHALL_CHECK_FAIL    (KG_HOTP_BASE + 0x4)
#define KG_HOTP_MAX_RETRY_REACHED   (KG_HOTP_BASE + 0x5)

#define KG_DH_BASE                  0x400
#define KG_DH_GEN_DH_FAIL           (KG_DH_BASE + 0x1)
#define KG_DH_GEN_KEYPAIR_FAIL      (KG_DH_BASE + 0x2)
#define KG_DH_STORE_PKEY_FAIL       (KG_DH_BASE + 0x3)
#define KG_DH_LOAD_PKEY_FAIL        (KG_DH_BASE + 0x4)
#define KG_DH_RELOAD_DH_FAIL        (KG_DH_BASE + 0x5)
#define KG_DH_GEN_SECRET_FAIL       (KG_DH_BASE + 0x6)
#define KG_DH_VERIFY_CHALL_FAIL     (KG_DH_BASE + 0x7)
#define KG_DH_BUFFER_SIZE_ERR       (KG_DH_BASE + 0x8)
#define KG_DH_GEN_AES_FAIL          (KG_DH_BASE + 0x9)
#define KG_DH_GEN_IV_FAIL           (KG_DH_BASE + 0x10)
#define KG_DH_GEN_HOTP_FAIL         (KG_DH_BASE + 0x11)
#define KG_DH_VERIFY_SIG_FAIL       (KG_DH_BASE + 0x12)
#define KG_DH_STATE_CHECK_FAIL      (KG_DH_BASE + 0x13)

#define KG_POLICY                   0x500
#define KG_POLICY_LOAD_FAIL         (KG_POLICY + 0x1)
#define KG_POLICY_PARSE_FAIL        (KG_POLICY + 0x2)
#define KG_POLICY_VERIFY_FAIL       (KG_POLICY + 0x3)
#define KG_POLICY_HASH_CHECK_FAIL   (KG_POLICY + 0x4)
#define KG_POLICY_SIG_CHECK_FAIL    (KG_POLICY + 0x5)
#define KG_POLICY_VER_CHECK_FAIL    (KG_POLICY + 0x6)
#define KG_POLICY_TIME_CHECK_FAIL   (KG_POLICY + 0x7)
#define KG_POLICY_TOKEN_FAIL        (KG_POLICY + 0x8)
#define KG_POLICY_FORMAT_FAIL       (KG_POLICY + 0x9)
#define KG_POLICY_CTR_CHECK_FAIL    (KG_POLICY + 0x10)
#define KG_POLICY_KGID_CHECK_FAIL   (KG_POLICY + 0x11)

#define KG_CRYPTO_BASE              0x600
#define KG_CRYPTO_INVALID_PARAM     (KG_CRYPTO_BASE + 0x1)
#define KG_X509_VERIFY_FAIL         (KG_CRYPTO_BASE + 0x2)
#define KG_CRYPTO_HMAC_FAIL         (KG_CRYPTO_BASE + 0x3)
#define KG_UTIL_FAIL                (KG_CRYPTO_BASE + 0x4)
#define KG_CRYPTO_AES_GCM_FAIL      (KG_CRYPTO_BASE + 0x5)
#define KG_CRYPTO_RSA_ENC_FAIL      (KG_CRYPTO_BASE + 0x6)
#define KG_CRYPTO_RSA_DEC_FAIL      (KG_CRYPTO_BASE + 0x7)
#define KG_CRYPTO_PKEY_PARSE_FAIL   (KG_CRYPTO_BASE + 0x8)
#define KG_GEN_NONCE_FAIL           (KG_CRYPTO_BASE + 0x9)
#define KG_COMPUTE_HASH_FAIL        (KG_CRYPTO_BASE + 0xA)

#define KG_USECASE_BASE             0x700
#define KG_REGINFO_VERIFY_FAIL      (KG_USECASE_BASE + 0x1)
#define KG_COMPLETE_MAGIC_FAIL      (KG_USECASE_BASE + 0x2)
#define KG_COMPLETE_VERIFY_FAIL     (KG_USECASE_BASE + 0x3)

#define KG_HDM_BASE                 0x800
#define KG_HDM_STATUS_FAIL          (KG_HDM_BASE + 0x1)
#define KG_HDM_RELEASE_FAIL         (KG_HDM_BASE + 0x2)

#define KG_REGION_BASE              0x900
#define KG_REGION_NOT_CONFIG        (KG_REGION_BASE + 0x1)
#define KG_REGION_MISMATCH          (KG_REGION_BASE + 0x2)
#define KG_RPMB_CHECK_FAIL      (KG_HDM_BASE + 0x5)
#endif /* __KG_ERR_H__ */
