// ERROR CODE MAP
//~! MODIFIED BY GOMSUGY. 2008-01-07 16:55

var DS_MLT_NOT_FOUND_MSGICSM                    = 999;
var DS_MLT_UNDEFINE_ERR                         = 0;
var DS_MLT_OK                                   = 1;
var DS_MLT_MMF_CREATE_ERR                       = 2;
var DS_MLT_MMF_READ_ERR                         = 3;
var DS_MLT_MMF_ALREADY_EXIST                    = 4;
var DS_MLT_CERT_CHECK_DOWNLOAD_ERR              = 5;

// MagicSM 관련 에러
var DS_MLT_INITAPI_ERR                          = 20;
var DS_MLT_HASH_ERR                             = 21;
var DS_MLT_HASH_VALUE_COMPARE_ERR               = 22;
var DS_MLT_SESSIONKEYIV_ERR                     = 23;
var DS_MLT_ENCRYPT_ERR                          = 24;
var DS_MLT_DECRYPT_ERR                          = 25;
var DS_MLT_ENCODEBASE64_ERR                     = 26;
var DS_MLT_DECODEBASE64_ERR                     = 27;
var DS_MLT_SETMYDN_ERR                          = 28;
var DS_MLT_CHANGECERTDIR_ERR                    = 29;
var DS_MLT_GETCERTDN_ERR                        = 30;
var DS_MLT_LOADCERT_ERR                         = 31;
var DS_MLT_GETCERTISSUERDN_ERR                  = 32;
var DS_MLT_GETCERTPOLICY_ERR                    = 33;
var DS_MLT_READPRIVATEKEYINFOFROMWINDOWS_ERR    = 34;
var DS_MLT_READCERTFROMWINDOWS_ERR              = 35
var DS_MLT_READCAPUBSFROMWINDOWS_ERR            = 36;
var DS_MLT_READPRIVATEKEYINFO_ERR               = 37;
var DS_MLT_READCERTIFICATE_ERR                  = 38;
var DS_MLT_MAKECAPUBS_ERR                       = 39;
var DS_MLT_READPRIVATEKEYFROMREGISTRY_ERR       = 40;
var DS_MLT_VERIFYCERTWITHDATA_ERR               = 41;
var DS_MLT_X509CERTVIEW_ERR                     = 42;
var DS_MLT_NOT_FOUND_SERVERCERT                 = 43;
var DS_MLT_ENCRYPTDATAWITHCERT_ERR              = 45;
var DS_MLT_DECRYPTDATAWITHCERT_ERR              = 46;
var DS_MLT_MAKESESSIONKEYIV_ERR                 = 47;
var DS_MLT_GETSESSIONKEYIV_ERR                  = 48;
var DS_MLT_NOT_FOUND_SESSIONSITE                = 49;
var DS_MLT_SESSIONID_DIFFERENT                  = 50;
var DS_MLT_SYMMETRICALGO_ERR                    = 51;
var DS_MLT_INPUT_DATA_WRONG                     = 52;
var DS_MLT_URL_PARSE_ERR                        = 53;
var DS_MLT_INET_FUNC_ERR                        = 54;
var DS_MLT_KEY_EXCHANGE_RESPONSE_DATA_ERR       = 55;
var DS_MLT_KEY_EXCHANGE_ERR                     = 56;
var DS_MLT_LOADCERTBYDATA_ERR                   = 57;
var DS_MLT_READCERTFROMICCARD_ERR               = 58;
var DS_MLT_READPRIVATEKEYINFOFROMICCARD_ERR     = 59;
var DS_MLT_GETRANDOMFROMPRIKEY_ERR              = 60;
var DS_MLT_NOT_FOUND_MAGICLINE_CONFIG           = 61;
var DS_MLT_GETCERTVALIDITY_ERR                  = 62;
var DS_MLT_MAKEPFX_ERR                          = 63;
var DS_MLT_PRIKEY_FILE_NOT_FOUNT                = 64;
var DS_MLT_PARSEPFX_ERR                         = 65;
var DS_MLT_FILE_NOT_FOUND                       = 66;

// 인증서 선택 관련
var DS_MLT_SELECT_CERT_CANCEL                   = 70;
var DS_MLT_SIGNDATA_ERR                         = 71;
var DS_MLT_NOT_SUPPORT_DEVICE                   = 72;
var DS_MLT_NOT_FOUND_CAPUBS                     = 73;
var DS_MLT_NOT_FOUND_ROOTCERT                   = 74;
var DS_MLT_NOT_FOUND_ISSUERCERT                 = 75;
var DS_MLT_NOT_FOUND_SITENAME                   = 76;
var DS_MLT_CERT_DOWNLOAD_ERR                    = 77;
var DS_MLT_NOT_FOUND_CERT                       = 78;
var DS_MLT_NOT_RANDOM                           = 79;
var DS_MLT_NO_CERT                              = 80;

// DLL 로딩관련
var DS_MLT_DSTOOLKIT_LOADING_ERR                = 100;
var DS_MLT_DSTOOLKIT_NOT_FOUND                  = 101;

// Msg Type 정의
var DS_MW_MSGTYPE_PLAIN                         = 300;  // 평문
var DS_MW_MSGTYPE_SIGN                          = 301;  // 서명문 (SignedData)
var DS_MW_MSGTYPE_ENCWITHCERT                   = 302;  // 공개키암호화 (EncryptedData)
var DS_MW_MSGTYPE_SIGN_ENCWITHCERT              = 303;  // 서명 및 공개키암호화 (SignedAndEncryptedData)
var DS_MW_MSGTYPE_SIGN_ENCWITHKEY               = 304;  // 서명 및 대칭키암호화 (SignedAndEncryptWithSessionData)
var DS_MW_MSGTYPE_ENCWITHKEY                    = 305;  // 대칭키암호화 (EncryptWithSessionData)


var E_MW_PROCESS                                = 10100;
var E_MW_INPUT_DATA_TOO_BIG                     = E_MW_PROCESS + 1;
var E_MW_INPUT_PARAM_TRANSLATION                = E_MW_PROCESS + 2;
var E_MW_INVALID_ENC_MSG_FORMAT                 = E_MW_PROCESS + 3;
var E_MW_NOT_SUPPORTED_FUNCTION                 = E_MW_PROCESS + 4;
var E_MW_DSTK_ERR                               = E_MW_PROCESS + 5;
var E_MW_WINVISTA_WRITE_FAILED                  = E_MW_PROCESS + 6;
var E_MW_DSSENC_ERR                             = E_MW_PROCESS + 7;
var E_MW_KS_DLL_NOT_LOADED                      = E_MW_PROCESS + 8;
var E_MW_KS_INIT                                = E_MW_PROCESS + 9;
var E_MW_KS_CTRL_SET                            = E_MW_PROCESS + 10;
var E_MW_KS_CTRL_GET_VALUE                      = E_MW_PROCESS + 11;
var E_MW_KS_CTRL_GET_VALUE_TOO_BIG              = E_MW_PROCESS + 12;
var E_MW_WINVISTA_CERTVIEW_FAILED               = E_MW_PROCESS + 13;
;
var E_MW_SESSION                                = 10200;
var E_MW_SESSION_NOT_FOUND                      = E_MW_SESSION + 1;
var E_MW_SESSION_EXCEED_MAX                     = E_MW_SESSION + 2;
var E_MW_SESSION_SITEID_TOO_LONG                = E_MW_SESSION + 3;
var E_MW_SESSION_NOT_ALIVE                      = E_MW_SESSION + 4;
var E_MW_SESSION_SVR_DN_TOO_LONG                = E_MW_SESSION + 5;
var E_MW_SESSION_USR_DN_TOO_LONG                = E_MW_SESSION + 6;
var E_MW_SESSION_USR_CN_TOO_LONG                = E_MW_SESSION + 7;
var E_MW_SESSION_USR_POLICY_TOO_LONG            = E_MW_SESSION + 8;
var E_MW_SESSION_USR_KM_CERT_PATH_TOO_LONG      = E_MW_SESSION + 9;
var E_MW_SESSION_USR_KM_CERT_B64_TOO_LONG       = E_MW_SESSION + 10;
var E_MW_SESSION_START_TIME_TOO_LONG            = E_MW_SESSION + 11;
var E_MW_SESSION_ID_TOO_LONG                    = E_MW_SESSION + 12;
var E_MW_SESSION_LOGOURL_TOO_LONG               = E_MW_SESSION + 13;
var E_MW_SESSION_INVALID_VALUE_ID               = E_MW_SESSION + 14;
var E_MW_SESSION_SERVER_CERT_TOO_BIG            = E_MW_SESSION + 15;
var E_MW_SESSION_USER_CERT_TOO_BIG              = E_MW_SESSION + 16;
var E_MW_SESSION_USER_PRIKEY_TOO_BIG            = E_MW_SESSION + 17;
var E_MW_SESSION_USER_RANDOM_FOR_VID_TOO_BIG    = E_MW_SESSION + 18;
var E_MW_SESSION_KEY_TOO_BIG                    = E_MW_SESSION + 19;
var E_MW_SESSION_IV_TOO_BIG                     = E_MW_SESSION + 20;
var E_MW_SESSION_INTERNAL_ERR                   = E_MW_SESSION + 21;
var E_MW_SESSION_NO_USER_CERT_INFO              = E_MW_SESSION + 22;
var E_MW_SESSION_ID_MISMATCH					= E_MW_SESSION + 23;

function Error_Process(ErrorNumber)
{
    var ReturnString;
    var internalError = "처리 중 오류가 발생했습니다. 다시 시도해도 문제가 계속되면 관리자에게 문의하시기 바랍니다.";

    switch (ErrorNumber)
    {
        case DS_MLT_NOT_FOUND_MSGICSM:                  ReturnString = "해당프로그램이 구동중이 아닙니다."; break;
        case DS_MLT_UNDEFINE_ERR:                       ReturnString = "정의되지 않은 에러입니다."; break;
        
        // 공유메모리 사용시 에러발생
        case DS_MLT_MMF_CREATE_ERR:                     ReturnString = "공유메모리 생성에러"; break;
        case DS_MLT_MMF_READ_ERR:                       ReturnString = "공유메모리 읽기 에러"; break;
        case DS_MLT_MMF_ALREADY_EXIST:                  ReturnString = "공유메모리가 이미 생성되어 있음"; break;
        
        // 내부 함수 호출시 에러발생
        case DS_MLT_INITAPI_ERR:                        ReturnString = "DS_MLT_INITAPI_ERR"; break;
        case DS_MLT_HASH_ERR:                           ReturnString = "DS_MLT_HASH_ERR"; break;
        case DS_MLT_SESSIONKEYIV_ERR:                   ReturnString = "DS_MLT_SESSIONKEYIV_ERR"; break;
        case DS_MLT_ENCRYPT_ERR:                        ReturnString = "DS_MLT_ENCRYPT_ERR"; break;
        case DS_MLT_DECRYPT_ERR:                        ReturnString = "DS_MLT_DECRYPT_ERR"; break;
        case DS_MLT_ENCODEBASE64_ERR:                   ReturnString = "DS_MLT_ENCODEBASE64_ERR"; break;
        case DS_MLT_DECODEBASE64_ERR:                   ReturnString = "DS_MLT_DECODEBASE64_ERR"; break;
        case DS_MLT_SETMYDN_ERR:                        ReturnString = "DS_MLT_SETMYDN_ERR"; break;
        case DS_MLT_CHANGECERTDIR_ERR:                  ReturnString = "DS_MLT_CHANGECERTDIR_ERR"; break;
        case DS_MLT_GETCERTDN_ERR:                      ReturnString = "DS_MLT_GETCERTDN_ERR"; break;
        case DS_MLT_LOADCERT_ERR:                       ReturnString = "DS_MLT_LOADCERT_ERR"; break;
        case DS_MLT_GETCERTISSUERDN_ERR:                ReturnString = "DS_MLT_GETCERTISSUERDN_ERR"; break;
        case DS_MLT_GETCERTPOLICY_ERR:                  ReturnString = "DS_MLT_GETCERTPOLICY_ERR"; break;
        case DS_MLT_READPRIVATEKEYINFOFROMWINDOWS_ERR:  ReturnString = "DS_MLT_READPRIVATEKEYINFOFROMWINDOWS_ERR"; break;
        case DS_MLT_READCERTFROMWINDOWS_ERR:            ReturnString = "DS_MLT_READCERTFROMWINDOWS_ERR"; break;
        case DS_MLT_READCAPUBSFROMWINDOWS_ERR:          ReturnString = "DS_MLT_READCAPUBSFROMWINDOWS_ERR"; break;
        case DS_MLT_READPRIVATEKEYINFO_ERR:             ReturnString = "DS_MLT_READPRIVATEKEYINFO_ERR"; break;
        case DS_MLT_READCERTIFICATE_ERR:                ReturnString = "DS_MLT_READCERTIFICATE_ERR"; break;
        case DS_MLT_MAKECAPUBS_ERR:                     ReturnString = "DS_MLT_MAKECAPUBS_ERR"; break;
        case DS_MLT_READPRIVATEKEYFROMREGISTRY_ERR:     ReturnString = "DS_MLT_READPRIVATEKEYFROMREGISTRY_ERR"; break;
        case DS_MLT_VERIFYCERTWITHDATA_ERR:             ReturnString = "DS_MLT_VERIFYCERTWITHDATA_ERR"; break;
        case DS_MLT_X509CERTVIEW_ERR:                   ReturnString = "DS_MLT_X509CERTVIEW_ERR"; break;
        case DS_MLT_NOT_FOUND_SERVERCERT:               ReturnString = "DS_MLT_NOT_FOUND_SERVERCERT"; break;
        case DS_MLT_ENCRYPTDATAWITHCERT_ERR:            ReturnString = "DS_MLT_ENCRYPTDATAWITHCERT_ERR"; break;
        case DS_MLT_DECRYPTDATAWITHCERT_ERR:            ReturnString = "DS_MLT_DECRYPTDATAWITHCERT_ERR"; break;
        case DS_MLT_MAKESESSIONKEYIV_ERR:               ReturnString = "DS_MLT_MAKESESSIONKEYIV_ERR"; break;
        case DS_MLT_GETSESSIONKEYIV_ERR:                ReturnString = "DS_MLT_GETSESSIONKEYIV_ERR"; break;
        case DS_MLT_LOADCERTBYDATA_ERR:                 ReturnString = "DS_MLT_LOADCERTBYDATA_ERR"; break;
        case DS_MLT_READCERTFROMICCARD_ERR:             ReturnString = "DS_MLT_READCERTFROMICCARD_ERR"; break;
        case DS_MLT_READPRIVATEKEYINFOFROMICCARD_ERR:   ReturnString = "DS_MLT_READPRIVATEKEYINFOFROMICCARD_ERR"; break;
        case DS_MLT_GETRANDOMFROMPRIKEY_ERR:            ReturnString = "DS_MLT_GETRANDOMFROMPRIKEY_ERR"; break;
        case DS_MLT_GETCERTVALIDITY_ERR:                ReturnString = "DS_MLT_GETCERTVALIDITY_ERR"; break;
        case DS_MLT_MAKEPFX_ERR:                        ReturnString = "DS_MLT_MAKEPFX_ERR"; break;
        case DS_MLT_PRIKEY_FILE_NOT_FOUNT:              ReturnString = "DS_MLT_PRIKEY_FILE_NOT_FOUNT"; break;
        case DS_MLT_PARSEPFX_ERR:                       ReturnString = "DS_MLT_PARSEPFX_ERR"; break;
        case DS_MLT_FILE_NOT_FOUND:                     ReturnString = "파일을 찾을 수 없습니다."; break;
        
        // 서비스 진행시 에러발생
        case DS_MLT_HASH_VALUE_COMPARE_ERR:             ReturnString = "암호화한 원본이 손상되었습니다."; break;
        case DS_MLT_NOT_FOUND_SESSIONSITE:              ReturnString = "해당사이트를 찾을수 없습니다."; break;
        case DS_MLT_SESSIONID_DIFFERENT:                ReturnString = "만료된 세션입니다. 다시 로그인 하시기 바랍니다."; break;
        case DS_MLT_SYMMETRICALGO_ERR:                  ReturnString = "암호화 알고리즘 설정 에러."; break;
        case DS_MLT_INPUT_DATA_WRONG:                   ReturnString = "입력데이터가 잘못되었습니다."; break;
        case DS_MLT_URL_PARSE_ERR:                      ReturnString = "잘못된 URL이 입력되었습니다."; break;
        case DS_MLT_INET_FUNC_ERR:                      ReturnString = ""; break;
        case DS_MLT_KEY_EXCHANGE_RESPONSE_DATA_ERR:     ReturnString = "암호화 키교환 에러."; break;
        case DS_MLT_KEY_EXCHANGE_ERR:                   ReturnString = "암호화 키교환 에러."; break;
        
        // 인증서 선택시 에러
        case DS_MLT_SELECT_CERT_CANCEL:                 ReturnString = "인증서 선택이 취소되었습니다."; break;
        case DS_MLT_SIGNDATA_ERR:                       ReturnString = "전자서명 에러"; break;
        case DS_MLT_NOT_SUPPORT_DEVICE:                 ReturnString = "지원하지 않는 장치입니다."; break;
        case DS_MLT_NOT_FOUND_CAPUBS:                   ReturnString = "CAPUBS 파일을 찾을수 없습니다."; break;
        case DS_MLT_NOT_FOUND_ROOTCERT:                 ReturnString = "ROOT 인증서를 찾을수 없습니다."; break;
        case DS_MLT_NOT_FOUND_ISSUERCERT:               ReturnString = "발급자 인증서를 찾을수 없습니다."; break;
        case DS_MLT_NOT_FOUND_SITENAME:                 ReturnString = "세션정보(SITENAME:          를 찾을수 없습니다."; break;
        case DS_MLT_CERT_DOWNLOAD_ERR:                  ReturnString = "인증서 다운로드 에러"; break;
        case DS_MLT_NOT_FOUND_CERT:                     ReturnString = "사용자 인증서를 찾을수 없습니다."; break;
        case DS_MLT_NOT_RANDOM:                         ReturnString = "식별번호가 존재하지 않습니다."; break;
        case DS_MLT_NO_CERT:                            ReturnString = "저장장치에 인증서가 없습니다."; break;
        
        // DSToolKit.dll 파일 로딩시 에러
        case DS_MLT_DSTOOLKIT_LOADING_ERR:              ReturnString = "DSTOOLKIT.dll 을 로딩하지 못했습니다."; break;
        case DS_MLT_DSTOOLKIT_NOT_FOUND:                ReturnString = "DSTOOLKIT.dll 을 찾을수 없습니다."; break;
        
        case E_MW_INPUT_DATA_TOO_BIG:                   ReturnString = internalError; break;
        case E_MW_INPUT_PARAM_TRANSLATION:              ReturnString = internalError; break;
        case E_MW_INVALID_ENC_MSG_FORMAT:               ReturnString = internalError; break;
        case E_MW_NOT_SUPPORTED_FUNCTION:               ReturnString = internalError; break;
        case E_MW_DSTK_ERR:                             ReturnString = internalError; break;
        case E_MW_WINVISTA_WRITE_FAILED:                ReturnString = "파일 쓰기 오류 (Windows Vista 권한 오류)"; break;
        case E_MW_DSSENC_ERR:                           ReturnString = internalError; break;
        case E_MW_KS_DLL_NOT_LOADED:                    ReturnString = internalError; break;
        case E_MW_KS_INIT:                              ReturnString = internalError; break;
        case E_MW_KS_CTRL_SET:                          ReturnString = internalError; break;
        case E_MW_KS_CTRL_GET_VALUE:                    ReturnString = internalError; break;
        case E_MW_KS_CTRL_GET_VALUE_TOO_BIG:            ReturnString = internalError; break;
        case E_MW_WINVISTA_CERTVIEW_FAILED:             ReturnString = "인증서 보기에 실패했습니다. (Windows Vista 권한 오류)"; break;
        case E_MW_SESSION_NOT_FOUND:                    ReturnString = "세션이 존재하지 않습니다. 로그인 후에 이용하십시오."; break;
        case E_MW_SESSION_EXCEED_MAX:                   ReturnString = internalError; break;
        case E_MW_SESSION_SITEID_TOO_LONG:              ReturnString = internalError; break;
        case E_MW_SESSION_NOT_ALIVE:                    ReturnString = "세션이 유효하지 않습니다. 로그인 후에 이용하십시오."; break;
        case E_MW_SESSION_SVR_DN_TOO_LONG:              ReturnString = internalError; break;
        case E_MW_SESSION_USR_DN_TOO_LONG:              ReturnString = internalError; break;
        case E_MW_SESSION_USR_CN_TOO_LONG:              ReturnString = internalError; break;
        case E_MW_SESSION_USR_POLICY_TOO_LONG:          ReturnString = internalError; break;
        case E_MW_SESSION_USR_KM_CERT_PATH_TOO_LONG:    ReturnString = internalError; break;
        case E_MW_SESSION_USR_KM_CERT_B64_TOO_LONG:     ReturnString = internalError; break;
        case E_MW_SESSION_START_TIME_TOO_LONG:          ReturnString = internalError; break;
        case E_MW_SESSION_ID_TOO_LONG:                  ReturnString = internalError; break;
        case E_MW_SESSION_LOGOURL_TOO_LONG:             ReturnString = internalError; break;
        case E_MW_SESSION_INVALID_VALUE_ID:             ReturnString = internalError; break;
        case E_MW_SESSION_SERVER_CERT_TOO_BIG:          ReturnString = internalError; break;
        case E_MW_SESSION_USER_CERT_TOO_BIG:            ReturnString = internalError; break;
        case E_MW_SESSION_USER_PRIKEY_TOO_BIG:          ReturnString = internalError; break;
        case E_MW_SESSION_USER_RANDOM_FOR_VID_TOO_BIG:  ReturnString = internalError; break;
        case E_MW_SESSION_KEY_TOO_BIG:                  ReturnString = internalError; break;
        case E_MW_SESSION_IV_TOO_BIG:                   ReturnString = internalError; break;
        case E_MW_SESSION_INTERNAL_ERR:                 ReturnString = internalError; break;
        case E_MW_SESSION_NO_USER_CERT_INFO:            ReturnString = internalError; break;
        case E_MW_SESSION_ID_MISMATCH:					ReturnString = "다른 세션에서 암호화 된 파일은 복호화 할 수 없습니다."; break;
        default:                                        ReturnString = internalError; break;
    }
    
    return ReturnString + " (code:" + ErrorNumber + ")";                                
}                                                       

