
#ifndef	__RSKSW_ERROR_H__
#define	__RSKSW_ERROR_H__

#define	CERT_SIZE_MAX		2048
#define	MAX_PATH_LEN		64

#define RSKSW_SUCCESS                             0
#define RSKSW_ERR                               -8000


#define RSKSW_ERR_MALLOC_FAILED					(RSKSW_ERR-1)
#define	RSKSW_ERR_INVALID_INPUT					(RSKSW_ERR-2)
#define	RSKSW_ERR_CRYPTO_FILE_NOT_EXIST			(RSKSW_ERR-4)
#define	RSKSW_ERR_GETLIBPATH_FAILED				(RSKSW_ERR-5)
#define	RSKSW_ERR_LIBPATH_TOO_LONG				(RSKSW_ERR-6)
#define	RSKSW_ERR_SELFTEST_FAILED				(RSKSW_ERR-7)
#define	RSKSW_ERR_BUFFER_OVERFLOW				(RSKSW_ERR-8)
#define	RSKSW_ERR_IO                            (RSKSW_ERR-9)
#define RSKSW_ERR_LICENSE_CHECK_FAILED          (RSKSW_ERR-10)
#define RSKSW_ERR_LICENSE_DBLCHECK_FAILED       (RSKSW_ERR-11)
#define RSKSW_ERR_LICENSE_WRONG_OPTIONS         (RSKSW_ERR-12)
#define RSKSW_ERR_LICENSE_NOTALLOWED_FUNC       (RSKSW_ERR-13)

#define RSKSW_ERR_LOAD_CRYPTO_FAILED            (RSKSW_ERR-21)
#define RSKSW_ERR_LOAD_KSW_FAILED            (RSKSW_ERR-22)
#define RSKSW_ERR_SELFTEST_CRYPTO_FAILED        (RSKSW_ERR-23)
#define RSKSW_ERR_SELFTEST_KSW_FAILED        (RSKSW_ERR-24)
#define RSKSW_ERR_EXECUTE_CRYPTO_FAILED         (RSKSW_ERR-25)

#define RSKSW_ERR_SOCK_GETADDR_FAILED           (RSKSW_ERR-31)
#define RSKSW_ERR_SOCK_CREATE_FAILED            (RSKSW_ERR-32)
#define RSKSW_ERR_SOCK_CONNECT_FAILED           (RSKSW_ERR-33)
#define RSKSW_ERR_SOCK_TIMEOUT                  (RSKSW_ERR-34)
#define RSKSW_ERR_SOCK_GETSOCKOPT_FAILED        (RSKSW_ERR-35)
#define RSKSW_ERR_SOCK_SELECT_FAILED            (RSKSW_ERR-36)
#define RSKSW_ERR_SOCK_SETFD_FAILED             (RSKSW_ERR-37)
#define RSKSW_ERR_SOCK_RECV_FAILED              (RSKSW_ERR-38)
#define RSKSW_ERR_SOCK_SEND_FAILED              (RSKSW_ERR-39)
#define	RSKSW_ERR_SOCK_BUFFER_OVERFLOW          (RSKSW_ERR-40)

#define RSKSW_ERR_SAVE_CERT_FAILED              (RSKSW_ERR-51)
#define RSKSW_ERR_DELETE_CERT_FAILED            (RSKSW_ERR-52)
#define RSKSW_ERR_DELETE_KEY_FAILED             (RSKSW_ERR-53)
#define RSKSW_ERR_SAVE_KMCERT_FAILED              (RSKSW_ERR-51)
#define RSKSW_ERR_UPDATE_CERT_FAILED            (RSKSW_ERR-54)

#define RSKSW_ERR_BIO_E1_IS_NULL   (RSKSW_ERR-71)
#define RSKSW_ERR_BIO_FAIL_TO_SAVE_E1           (RSKSW_ERR-72)
#define RSKSW_ERR_BIO_GET_RAND_FAILED           (RSKSW_ERR-73)
#define RSKSW_ERR_BIO_INVALID_E1           (RSKSW_ERR-74)


#define RSKSW_ERR_PKCS1                     (RSKSW_ERR-100)
#define RSKSW_ERR_PKCS1_TOO_LARGE_INTEGER		(RSKSW_ERR_PKCS1-1)
#define RSKSW_ERR_PKCS1_WRONG_KEY_TYPE			(RSKSW_ERR_PKCS1-2)

#define RSKSW_ERR_PKCS5                     (RSKSW_ERR-120)
#define RSKSW_ERR_PKCS5_NOT_SUPPORTED_ALGID		(RSKSW_ERR_PKCS5-1)
#define RSKSW_ERR_PKCS5_INVALID_DERTYPE			(RSKSW_ERR_PKCS5-2)
#define RSKSW_ERR_PKCS5_INVALID_PADDING			(RSKSW_ERR_PKCS5-3)

#define RSKSW_ERR_PKCS7                     (RSKSW_ERR-140)
#define RSKSW_ERR_PKCS7_NOT_SUPPORTED_ALGID		(RSKSW_ERR_PKCS7-1)
#define RSKSW_ERR_PKCS7_INVALID_CERT			(RSKSW_ERR_PKCS7-2)

#define RSKSW_ERR_PKCS8                     (RSKSW_ERR-160)
#define RSKSW_ERR_PKCS8_NOT_SUPPORTED_OID		(RSKSW_ERR_PKCS8-1)

#define RSKSW_ERR_PKCS10                    (RSKSW_ERR-180)
#define RSKSW_ERR_PKCS10_INVALID_INPUT          (RSKSW_ERR_PKCS10-1)
#define RSKSW_ERR_PKCS10_INVALID_OPTVAL         (RSKSW_ERR_PKCS10-2)
#define RSKSW_ERR_PKCS10_WRONG_KEY_SIZE			(RSKSW_ERR_PKCS10-3)
#define RSKSW_ERR_PKCS10_OID_NOT_EXIST			(RSKSW_ERR_PKCS10-4)
#define RSKSW_ERR_PKCS10_NOT_SUPPORTED_OID		(RSKSW_ERR_PKCS10-5)

#define RSKSW_ERR_DER                       (RSKSW_ERR-200)
#define RSKSW_ERR_DER_INVALID_TAG               (RSKSW_ERR_DER-1)
#define RSKSW_ERR_DER_INVALID_LENGTH            (RSKSW_ERR_DER-2)

#define RSKSW_ERR_ASN1                      (RSKSW_ERR-210)
#define RSKSW_ERR_ASN1_BAD_LENGTH               (RSKSW_ERR_ASN1-1)
#define RSKSW_ERR_ASN1_BAD_DATA                 (RSKSW_ERR_ASN1-2)

#define RSKSW_ERR_X509                      (RSKSW_ERR-220)
#define	RSKSW_ERR_X509_INVALID_INPUT            (RSKSW_ERR_X509-3)
//#define	RSKSW_ERR_X509_RSAKEY_TOO_LARGE     (RSKSW_ERR_X509-4)
#define	RSKSW_ERR_X509_UNSUPPORTED_CERT         (RSKSW_ERR_X509-5)
#define	RSKSW_ERR_X509_DECODE_ERROR             (RSKSW_ERR_X509-6)
//#define	RSKSW_ERR_X509_BUFFER_OVERFLOW      (RSKSW_ERR_X509-7)


#define	RSKSW_ERR_SYM                       (RSKSW_ERR-300)
#define	RSKSW_ERR_SYM_DEC_FAILED                (RSKSW_ERR_SYM-1)

#define	RSKSW_ERR_ASYM                      (RSKSW_ERR-350)
#define RSKSW_ERR_SIGN_FAILED                   (RSKSW_ERR_ASYM-1)
#define RSKSW_ERR_ENVELOPE_FAILED               (RSKSW_ERR_ASYM-2)
#define RSKSW_ERR_KCDSA_INVALID_PARAM           (RSKSW_ERR_ASYM-11)
#define RSKSW_ERR_KCDSA_INVALID_INPUT           (RSKSW_ERR_ASYM-12)
#define RSKSW_ERR_KCDSA_INVALID_PUBKEY			(RSKSW_ERR_ASYM-13)
#define RSKSW_ERR_KCDSA_INVALID_KEYPAIR			(RSKSW_ERR_ASYM-14)
#define RSKSW_ERR_KCDSA_INVALID_SIGNATURE       (RSKSW_ERR_ASYM-15)

#define RSKSW_ERR_WRAP                      (RSKSW_ERR-500)
#define RSKSW_ERR_INVALID_PASSWORD              (RSKSW_ERR_WRAP-1)
#define RSKSW_ERR_CHANGE_PASSWORD_FAILED        (RSKSW_ERR_WRAP-2)
#define RSKSW_ERR_GET_VIDRANDOM_FAILED          (RSKSW_ERR_WRAP-3)
#define RSKSW_ERR_SELF_VERIFY_FAILED            (RSKSW_ERR_WRAP-4)
#define RSKSW_ERR_CRL_VERIFY_FAILED             (RSKSW_ERR_WRAP-5)
#define RSKSW_ERR_GET_RANDOM_FAILED         (RSKSW_ERR_WRAP-6)


#define RSKSW_ERR_CMP                       (RSKSW_ERR-700)
#define RSKSW_ERR_CMP_INVALID_TYPE				(RSKSW_ERR_CMP-1)
#define RSKSW_ERR_CMP_ERRBUF_OVERFLOW           (RSKSW_ERR_CMP-2)
#define RSKSW_ERR_CMP_INVALID_TAG               (RSKSW_ERR_CMP-3)
#define RSKSW_ERR_CMP_INVALID_LENGTH			(RSKSW_ERR_CMP-4)
#define RSKSW_ERR_CMP_SIGN_FAILED               (RSKSW_ERR_CMP-5)
#define RSKSW_ERR_CMP_CLNTNONCE_MISMATCH		(RSKSW_ERR_CMP-6)
#define RSKSW_ERR_CMP_SRVRNONCE_MISMATCH		(RSKSW_ERR_CMP-7)
#define RSKSW_ERR_CMP_INVALID_CONTEXT           (RSKSW_ERR_CMP-8)
#define RSKSW_ERR_CMP_INVALID_CERTMEM           (RSKSW_ERR_CMP-9)
#define RSKSW_ERR_CMP_INVALID_CERTREQID			(RSKSW_ERR_CMP-10)
#define RSKSW_ERR_CMP_MSG_NOT_SUPPORTED			(RSKSW_ERR_CMP-11)
#define RSKSW_ERR_CMP_INVALID_STATUS			(RSKSW_ERR_CMP-13)
#define RSKSW_ERR_CMP_CONNECT_FAIL				(RSKSW_ERR_CMP-14)
#define RSKSW_ERR_CMP_SEND_FAIL					(RSKSW_ERR_CMP-15)
#define RSKSW_ERR_CMP_RECV_FAIL					(RSKSW_ERR_CMP-16)
#define	RSKSW_ERR_CMP_KEYGENERATE_FAIL			(RSKSW_ERR_CMP-17)
#define	RSKSW_ERR_CMP_PUBKEYENCODE_FAIL			(RSKSW_ERR_CMP-18)
#define	RSKSW_ERR_CMP_PUBKEYDECODE_FAIL			(RSKSW_ERR_CMP-19)
#define	RSKSW_ERR_CMP_PRIKEYENCODE_FAIL			(RSKSW_ERR_CMP-20)
#define	RSKSW_ERR_CMP_EME_ENCRYPT_FAIL			(RSKSW_ERR_CMP-21)
#define	RSKSW_ERR_CMP_TBSCERTDECODE_FAIL		(RSKSW_ERR_CMP-22)
#define	RSKSW_ERR_CMP_USERCERTOPEN_FAIL			(RSKSW_ERR_CMP-23)
#define RSKSW_ERR_CMP_CACERTOPEN_FAIL           (RSKSW_ERR_CMP-24)
#define RSKSW_ERR_CMP_PRIKEYDECODE_FAIL			(RSKSW_ERR_CMP-25)
#define RSKSW_ERR_CMP_SIGN_FAIL					(RSKSW_ERR_CMP-26)
#define RSKSW_ERR_CMP_DESCBC_FAIL               (RSKSW_ERR_CMP-27)
#define RSKSW_ERR_CMP_INVALID_OPTMSG			(RSKSW_ERR_CMP-28)
#define RSKSW_ERR_CMP_INVALID_OPTVAL			(RSKSW_ERR_CMP-29)
#define RSKSW_ERR_CMP_BLOCKENCRYPT_FAIL			(RSKSW_ERR_CMP-30)
#define RSKSW_ERR_CMP_BLOCKDECRYPT_FAIL			(RSKSW_ERR_CMP-31)
#define RSKSW_ERR_CMP_CIPHERINIT_FAIL           (RSKSW_ERR_CMP-32)
#define RSKSW_ERR_CMP_CIPHERUPDATE_FAIL			(RSKSW_ERR_CMP-33)
#define RSKSW_ERR_CMP_CIPHERFINAL_FAIL			(RSKSW_ERR_CMP-34)
#define RSKSW_ERR_CMP_NONEXIST_USERCERT			(RSKSW_ERR_CMP-51)
#define RSKSW_ERR_CMP_NONEXIST_USERKEY			(RSKSW_ERR_CMP-52)
#define RSKSW_ERR_CMP_NONEXIST_KMCERT			(RSKSW_ERR_CMP-53)
#define RSKSW_ERR_CMP_NONEXIST_KMKEY            (RSKSW_ERR_CMP-54)
#define RSKSW_ERR_CMP_NONEXIST_KMCACERT         (RSKSW_ERR_CMP-55)
#define RSKSW_ERR_CMP_NONEXIST_ROOTCERT       (RSKSW_ERR_CMP-56)
#define	RSKSW_ERR_CMP_PKIERROR					(RSKSW_ERR_CMP-99)

#define IS_RSKSW_CMP_ERR(err)    (err<RSKSW_ERR_CMP && err>RSKSW_ERR_CHE)

#define RSKSW_ERR_CHE                       (RSKSW_ERR-800)
#define RSKSW_ERR_CHE_INVALID_SERVERCERT		(RSKSW_ERR_CHE-1)
#define RSKSW_ERR_CHE_SERVERCERT_EXPIRED        (RSKSW_ERR_CHE-2)
#define RSKSW_ERR_CHE_CACERT_EXPIRED            (RSKSW_ERR_CHE-3)
#define RSKSW_ERR_CHE_SERVERCERT_UPDATE         (RSKSW_ERR_CHE-4)
#define RSKSW_ERR_CHE_BAD_MAC                   (RSKSW_ERR_CHE-5)
#define RSKSW_ERR_CHE_CHAINVERIFY_FAIL          (RSKSW_ERR_CHE-6)

#define RSKSW_ERR_CHE_INVALID_SID               (RSKSW_ERR_CHE-11)
#define RSKSW_ERR_CHE_INVALID_KEY               (RSKSW_ERR_CHE-12)
#define RSKSW_ERR_CHE_INVALID_IV                (RSKSW_ERR_CHE-13)
#define RSKSW_ERR_CHE_INVALID_MAC               (RSKSW_ERR_CHE-14)
#define RSKSW_ERR_CHE_GETSID_FAILED             (RSKSW_ERR_CHE-15)


#define RSKSW_ERR_QRRELAY                   (RSKSW_ERR-820)
#define RSKSW_ERR_QRRELAY_CAMERA_NOTEXIST       (RSKSW_ERR_QRRELAY-2)
#define RSKSW_ERR_QRRELAY_WRONG_QRCODE          (RSKSW_ERR_QRRELAY-3)
#define RSKSW_ERR_QRRELAY_BACK_TO_PREV_STATE    (RSKSW_ERR_QRRELAY-4)
#define RSKSW_ERR_QRRELAY_FAILTOCOMM            (RSKSW_ERR_QRRELAY-5)
#define RSKSW_ERR_QRRELAY_WRONG_SVRCERT         (RSKSW_ERR_QRRELAY-6)
#define RSKSW_ERR_QRRELAY_WRONG_DOMAIN          (RSKSW_ERR_QRRELAY-7)
#define RSKSW_ERR_QRRELAY_TIMEOUT               (RSKSW_ERR_QRRELAY-8)
#define RSKSW_ERR_QRRELAY_NOT_TRUSTED_SVR       (RSKSW_ERR_QRRELAY-9)

#define RSKSW_ERR_ICRP                      (RSKSW_ERR-840)
#define RSKSW_ERR_ICRP_IMPORT_INVALID_CERT      (RSKSW_ERR_ICRP-1)
#define RSKSW_ERR_ICRP_IMPORT_INVALID_KEY       (RSKSW_ERR_ICRP-2)
#define RSKSW_ERR_ICRP_IMPORT_INVALID_KMCERT    (RSKSW_ERR_ICRP-3)
#define RSKSW_ERR_ICRP_IMPORT_INVALID_KMKEY     (RSKSW_ERR_ICRP-4)
#define RSKSW_ERR_ICRP_EXPORT_INVALID_CERT      (RSKSW_ERR_ICRP-5)
#define RSKSW_ERR_ICRP_EXPORT_INVALID_KEY       (RSKSW_ERR_ICRP-6)
#define RSKSW_ERR_ICRP_EXPORT_INVALID_KMCERT    (RSKSW_ERR_ICRP-7)
#define RSKSW_ERR_ICRP_EXPORT_INVALID_KMKEY     (RSKSW_ERR_ICRP-8)
#define RSKSW_ERR_ICRP_EXPORT_FAIL_TO_DECRYPT   (RSKSW_ERR_ICRP-9)

#define RSKSW_ERR_FM                        (RSKSW_ERR-860)
#define RSKSW_ERR_FM_FILE_READ_FAIL             (RSKSW_ERR_FM-1)
#define RSKSW_ERR_FM_FILE_NOTFOUND              (RSKSW_ERR_FM-2)
#define RSKSW_ERR_FM_WRONG_HEADER_LENGTH        (RSKSW_ERR_FM-3)
#define RSKSW_ERR_FM_WRONG_HEADER_TYPE          (RSKSW_ERR_FM-4)
#define RSKSW_ERR_FM_WRONG_HASH                 (RSKSW_ERR_FM-5)
#define RSKSW_ERR_FM_HASH_FAIL                  (RSKSW_ERR_FM-6)
#define RSKSW_ERR_FM_ENCRPYT_FAIL               (RSKSW_ERR_FM-7)
#define RSKSW_ERR_FM_DECRYPT_FAIL               (RSKSW_ERR_FM-8)
#define RSKSW_ERR_FM_EMPTY_FILE                 (RSKSW_ERR_FM-9)

#define RSKSW_ERR_UTIL                      (RSKSW_ERR-900)
#define RSKSW_ERR_UTIL_NOT_SUPPORTED_ENCODING   (RSKSW_ERR_UTIL-10)
#define RSKSW_ERR_BASE64_INVALID_FORMAT         (RSKSW_ERR_UTIL-11)
#define RSKSW_ERR_BASE64_ENCODE_FAIL			(RSKSW_ERR_UTIL-12)
#define RSKSW_ERR_BASE64_DECODE_FAIL			(RSKSW_ERR_UTIL-13)
#define RSKSW_ERR_HEX_INVALID_FORMAT            (RSKSW_ERR_UTIL-14)
#define RSKSW_ERR_HEX_ENCODE_FAIL               (RSKSW_ERR_UTIL-15)
#define RSKSW_ERR_HEX_DECODE_FAIL               (RSKSW_ERR_UTIL-16)

// KISA - Enhanced password check
#define RSKSW_ERR_PWD_SAME_OLD_N_NEW            (RSKSW_ERR_UTIL-10)
#define RSKSW_ERR_PWD_SHORT_LENGTH              (RSKSW_ERR_UTIL-11)
#define RSKSW_ERR_PWD_NO_ALPHABET               (RSKSW_ERR_UTIL-12)
#define RSKSW_ERR_PWD_NO_NUMERIC                (RSKSW_ERR_UTIL-13)
#define RSKSW_ERR_PWD_NO_SPECIAL_CHAR           (RSKSW_ERR_UTIL-14)
#define RSKSW_ERR_PWD_UNAVAILABLE_CHAR          (RSKSW_ERR_UTIL-15)

#define RSKSW_ERR_INVALID_RSSECDATA             (RSKSW_ERR_UTIL-21)
#define RSKSW_ERR_MTRANKEY_RANDOM_IS_NULL       (RSKSW_ERR_UTIL-22)
#define RSKSW_ERR_MTRANKEY_DECRYPT_FAILED       (RSKSW_ERR_UTIL-23)




//
//#define ERR_PKCS12_INVALID_KEYLEN				-830
//#define ERR_PKCS12_INVALID_PWDLEN				-831
//#define ERR_PKCS12_INVALID_SALTLEN				-832
//#define ERR_PKCS12_DECRYPT_FAIL					-833
//#define ERR_PKCS12_INVALID_INPUT				-834
//#define ERR_PKCS12_MALLOC_FAILED				-835
//#define ERR_PKCS12_CRYPTO_FAILED				-836
//#define ERR_PKCS12_INVALID_VERSION				-837
//#define ERR_PKCS12_NOT_SUPPORTED_OID			-838
//#define ERR_PKCS12_INVALID_SPEC					-839
//#define ERR_PKCS12_NOT_SUPPORTED_CONTENT_TYPE	-840
//#define ERR_PKCS12_NOT_SUPPORTED_BAG_ID			-841
//#define ERR_PKCS12_NOT_SUPPORTED_ALG_ID			-842
//#define ERR_PKCS12_NOT_SUPPORTED_CERT_TYPE		-843
//#define ERR_PKCS12_ENCRYPT_FAIL					-844
//#define ERR_PKCS12_BAD_MAC						-845



#endif



