123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811 |
- // 전역 변수 선언부
- var _KMClientAX_ = null;
- var _SKCommAX_ = null;
- var viewerObj = null;
- var SKCommObject = null;
- var _CERT_YEAR_ = 1970;
- var _CERT_MONTH_ = 1;
- var _CERT_DATE_ = 1;
- var _CERT_UID_ = "";
- var _TEL_NO = "";
- /*
- 객체 생성작업
- */
- function zesfInitSign(){
- body.createChild("xforms:object", "id:KMClientAX; clsid:{d3c608b5-b664-4962-91b7-289da892953a}; visibility:hidden; left:0px; top:0px; width:0px; height:0px; ");
- viewerObj = getViewer("sysMessage");
- if (viewerObj != null) { // main 화면의 상태 메시지 뷰어가 있는 경우
- //alert("메인 화면입니다.");
- SKCommObject = viewerObj.window.javascript.fGetSKCommObject();
- } else { // main 화면이 없는 경우(TF 미리보기)
- //alert('미리보기화면입니다');
- viewerObj = viewer.item("TFViewer");
- try {
- if (document.all("CertManX") == null) { // 최초 한번만 createChild() 한다.
- body.createChild("xforms:object", "id:CertManX; clsid:{ec5d5118-9fde-4a3e-84f3-c2b711740e70}; visibility:hidden; left:0px; top:0px; width:0px; height:0px; ");
- }
- SKCommObject = CertManX;
- } catch(e) {
- SKCommObject = null;
- }
- }
- /*
- if(document.all("KMClientAX") == null){
- alert("fail");
- }else{
- alert("ok");
- }
- */
- // KMClientAX 객체 설치 여부 확인
- if( zesfChkKMClientAX() == null ) {
- messageBox( "KMI 모듈이 설치되지", "E007" );
- return false;
- }
- // 기관코드에 따라서 연락처 다르게 설정
- var instcd = getUserInfo("systeminstcd");
- if (instcd == "031")
- {
- _TEL_NO = "의무기록팀 5233";
- }
- else if (instcd == "032")
- {
- _TEL_NO = "의무기록팀 2401,2";
- }
-
- return (SKCommObject != null);
- }
- /***********************************************************************
- *
- * @ver : 0.2007.10.11
- * @by : 이상준
- * @type : function
- * @desc :
- * @param :
- * @return :
- *
- ************************************************************************
- */
- function zesfCheckModule() {
- if (zesfInitSign() == false) {
- messageBox("연계모듈이 초기화되지","E007");
- return false;
- } else {
- return true;
- }
- }
- /***********************************************************************
- *
- * @ver : 0.2007.01.02
- * @by : 김광영
- * @type : function
- * @desc :
- * @param :
- * @return :
- *
- ************************************************************************
- */
- function zesfChkSKCommAX() {
- var rvalue = false;
- try {
- _SKCommAX_ = new ActiveXObject("SKCOMMAX.SKCommAXCtrl.1");
- if( _SKCommAX_ != null ) {
- rvalue = true;
- }
- }
- catch( ex ) {
- }
- return rvalue;
- }
- /***********************************************************************
- *
- * @ver : 0.2007.01.02
- * @by : 김광영
- * @type : function
- * @desc :
- * @param :
- * @return :
- *
- ************************************************************************
- */
- function zesfChkKMClientAX() {
- var rvalue = false;
- try {
- _KMClientAX_ = new ActiveXObject("KMCLIENTAX.KMClientAXCtrl.1");
- if( _KMClientAX_ != null ) {
- rvalue = true;
- }
- }
- catch( ex ) {
- }
- return rvalue;
- }
- /***********************************************************************
- *
- * @ver : 0.2007.01.02
- * @by : 김광영
- * @type : function
- * @desc :
- * @param :
- * @return :
- *
- ************************************************************************
- */
- function zesfGetKMIIP() {
- return getUserInfo( "kmiip" );
- }
- /***********************************************************************
- *
- * @ver : 0.2007.01.02
- * @by : 김광영
- * @type : function
- * @desc :
- * @param :
- * @return :
- *
- ************************************************************************
- */
- function zesfGetKMIPort() {
- return parseInt(getUserInfo( "kmiport" ));
- }
- /***********************************************************************
- *
- * @ver : 0.2007.01.02
- * @by : 김광영
- * @type : function
- * @desc :
- * @param :
- * @return :
- *
- ************************************************************************
- */
- function zesfGetUID() {
- return getUserId();
- }
- /***********************************************************************
- *
- * @ver : 0.2007.01.02
- * @by : 김광영
- * @type : function
- * @desc :
- * @param :
- * @return :
- *
- ************************************************************************
- */
- function getCMErrMsg( ) {
- if (!zesfCheckModule()) {
- return;
- }
- return "[전자서명 에러]" + SKCommObject.GetLastErrorMsg();
- }
- /***********************************************************************
- *
- * @ver : 0.2007.01.02
- * @by : 김광영
- * @type : function
- * @desc :
- * @param :
- * @return :
- *
- ************************************************************************
- */
- function getKMIErrMsg( ) {
- return "[KMI 에러]" + KMClientAX.Error_MSG();
- }
- /***********************************************************************
- *
- * @ver : 0.2007.01.02
- * @by : 김광영
- * @type : function
- * @desc :
- * @param :
- * @return :
- *
- ************************************************************************
- */
- function zesfLoadKeyAndCert( pUid, pDbg ) {
-
- var dn = "";
- var msg = "";
- var pwd = "";
- var certloadyn = "N";
-
- certloadyn = viewerObj.window.model.getValue("/root/properties/orderbasicinfo/hardcdlist/hardcd[hardcdno = '5996']/hardcd");
-
- if (certloadyn == "Y") {
- //비밀번호 입력창 오픈
- var xpt = window.screenLeft + 400;
- var ypt = window.screenTop + 60;
-
- viewerObj.window.model.removeNodeset("/root/main/pwdhidden");
- modal("SPZMS00300",xpt,ypt);
- pwd = viewerObj.window.model.getValue("/root/main/pwdhidden/pwd");
-
- if (pwd == null || pwd == "") {
- return dn;
- }
- }
-
- var ip = zesfGetKMIIP();
- var port = zesfGetKMIPort();
- if( !KMClientAX.kmsConnect(ip, port) ) {
- msg = "KMI 서버( IP:" + ip + ",포트:" + port + ") 연결에";
- messageBox( msg, "E009", getKMIErrMsg() );
- return dn;
- }
- if( pDbg != null ) {
- alert( "KMI 서버가 연결되었습니다." );
- }
- var envelop = KMClientAX.kmsInit();
- if( envelop == "" ) {
- msg = "KMI 모듈의 초기화에";
- messageBox( msg, "E009", getKMIErrMsg() );
- KMClientAX.kmsDisconnect();
- return dn;
- }
- if( pDbg != null ) {
- alert( "KMI 모듈이 초기화되었습니다. \nENVELOP : " + envelop );
- }
- dn = KMClientAX.GetKeyAndCert( pUid );
- if( dn == "" ) {
- msg = "KMI 서버에서 인증서( " + pUid + " )를 가져오는 데.";
- messageBox( msg, "E009", getKMIErrMsg() +"\n전자인증서와 관련한 에러는 " + _TEL_NO + " 로 연락해주시기 바랍니다.");
- KMClientAX.kmsDisconnect();
- return dn;
- }
-
- if( pDbg != null ) {
- alert( "인증서를 다운로드하였습니다.\n다운로드 인증서 DN : " + dn );
- }
- switch( KMClientAX.IsCertNew( pUid, dn ) ) {
- case 0 : // 현재 인증서가 유효함
- if( pDbg != null ) {
- alert( "현재 인증서가 유효합니다." );
- }
- break;
- case 1 : // 인증서가 갱신되어 KMI에 재등록됨
- msg = "인증서의 갱신이";
- messageBox( msg, "I002");
- break;
- case 2 : // 인증서 갱신 실패 ( 에러코드와 메시지가 리턴됨 )
- msg = "인증서 갱신에";
- messageBox( msg, "E009", getKMIErrMsg());
- KMClientAX.LocalDelKeyAndCert(dn);
- KMClientAX.kmsDisconnect();
- return dn;
- case 3 : // 인증서 갱신은 성공 하였으나 KMI 서버 등록 실패 (인증서 백업 성공)
- case 4 : // 인증서 갱신은 성공 하였으나 KMI 서버 등록 실패 (인증서 백업 실패)
- msg = "갱신된 인증서의 KMI 등록에";
- messageBox( msg, "E009", "관리자에게 문의하시기 바랍니다.");
- KMClientAX.LocalDelKeyAndCert(dn);
- KMClientAX.kmsDisconnect();
- return dn;
- case 5 : // 이미 만료 되었거나 폐지된 인증서
- msg = "인증서가 만료되어 사용";
- messageBox( msg, "E001", "인증서를 재발급 받으시기 바랍니다.");
- KMClientAX.LocalDelKeyAndCert(dn);
- KMClientAX.kmsDisconnect();
- return dn;
- case 6 : // 인증서의 갱신을 사용자가 취소
- break;
- case 7 :
- msg = "인증서 화일에 문제가 있어 인증서 읽기에.";
- messageBox( msg, "E009", "관리자에게 문의하시기 바랍니다.");
- KMClientAX.LocalDelKeyAndCert(dn);
- KMClientAX.kmsDisconnect();
- return dn;
- }
- // 0 * 256 : SignKorea의 인증서만 선택
- // 0 * 16 : 비밀번호 입력 받음
- // 1 : 현재의 ActiveX 인스턴스가 유효할 동안 선택한 정보 유지
- // dn = SKCommObject.SetMatchedContextExt( dn, "", "", 0 * 256 + 0 * 16 + 1 );
- //var matched_dn = SKCommObject.SetMatchedContextExt( dn, "", "", 0 * 256 + 0 * 16 + 1 );
- //이윤주수정(20150415)
- var matched_dn = SKCommObject.SetMatchedContextExt(dn, "", pwd, 0 * 256 + 0 * 16 + 1 );
-
- if( matched_dn == "" ) {
- msg = "인증서의 메모리 로드에";
- messageBox( msg, "E009", getCMErrMsg());
- KMClientAX.LocalDelKeyAndCert(dn);
- KMClientAX.kmsDisconnect();
- return matched_dn;
- }
-
- var today = new Date();
- viewerObj.window.javascript._CERT_YEAR_ = today.getFullYear();
- viewerObj.window.javascript._CERT_MONTH_ = today.getMonth() + 1;
- viewerObj.window.javascript._CERT_DATE_ = today.getDate();
- viewerObj.window.javascript._CERT_UID_ = pUid;
-
- KMClientAX.LocalDelKeyAndCert(dn);
- KMClientAX.kmsDisconnect();
-
- return dn;
- }
- /***********************************************************************
- *
- * @ver : 0.2007.01.02
- * @by : 김광영
- * @type : function
- * @desc :
- * @param :
- * @return :
- *
- ************************************************************************
- */
- function zesfSaveKeyAndCert( pUid, pDn, pPwd, pDbg ) {
- var dn = "";
- var msg = "";
- if( pDbg != null ) {
- alert( "인증서 등록 정보 : [" + pUid + "," + pDn + "," + pPwd + "]" );
- }
- var ip = zesfGetKMIIP();
- var port = zesfGetKMIPort();
- if( !KMClientAX.kmsConnect(ip, port) ) {
- msg = "KMI 서버( IP:" + ip + ",포트:" + port + ") 연결에";
- messageBox( msg, "E009", getKMIErrMsg() );
- return dn;
- }
- if( pDbg != null ) {
- alert( "KMI 서버가 연결되었습니다." );
- }
- var envelop = KMClientAX.kmsInit();
- if( envelop == "" ) {
- msg = "KMI 모듈의 초기화에";
- messageBox( msg, "E009", getKMIErrMsg() );
- KMClientAX.kmsDisconnect();
- return dn;
- }
- if( pDbg != null ) {
- alert( "KMI 모듈이 초기화되었습니다. \nENVELOP : " + envelop );
- }
- dn = KMClientAX.SetKeyAndCert( pUid, pDn, "", pPwd );
- if( dn == "" ) {
- msg = "KMI 서버에 인증서(" + pUid + "," + pDn + "," + ") 등록에";
- messageBox( msg, "E009", getKMIErrMsg() );
- KMClientAX.kmsDisconnect();
- return dn;
- }
- if( pDbg != null ) {
- alert( "인증서를 등록하였습니다.\n등록된 인증서 DN : " + dn );
- }
- KMClientAX.kmsDisconnect();
- return dn;
- }
- /***********************************************************************
- *
- * @ver : 0.2007.01.02
- * @by : 김광영
- * @type : function
- * @desc :
- * @param :
- * @return :
- *
- ************************************************************************
- */
- function zesfSignData( pOrgData, pUid, pReload, pDbg ) {
- if (!zesfCheckModule()) {
- return;
- }
- if(pReload){
- viewerObj.window.javascript._CERT_UID_ = ""
- }
- var signedData = "";
- var reload = false;
- if( pUid == null || pUid == "" ) {
- pUid = zesfGetUID();
- }
- if( viewerObj.window.javascript._CERT_UID_ != pUid ) {
- reload = true;
- }
- var today = new Date();
- if( viewerObj.window.javascript._CERT_YEAR_ != today.getFullYear() ) {
- reload = true;
- }
- if( viewerObj.window.javascript._CERT_MONTH_ != ( today.getMonth() + 1 ) ) {
- reload = true;
- }
- if( viewerObj.window.javascript._CERT_DATE_ != today.getDate() ) {
- reload = true;
- }
- if( reload ) {
- // if( viewerObj.window.javascript._CERT_UID_ != "" ) {
- SKCommObject.UnsetMatchedContext();
- viewerObj.window.javascript._CERT_UID_ = "";
- viewerObj.window.javascript._CERT_YEAR_ = 1970;
- viewerObj.window.javascript._CERT_MONTH_ = 1;
- viewerObj.window.javascript._CERT_DATE_ = 1;
- // }
- if( zesfLoadKeyAndCert( pUid, pDbg ) == "" ) {
- return signedData;
- }
- }
- if( pDbg != null ) {
- alert( "SignDataB64" );
- }
- signedData = SKCommObject.SignDataB64( "", pOrgData, 0 );
- if( signedData == "" ) {
- msg = "전자서명 생성에"
- messageBox( msg, "E009", getCMErrMsg());
- }
- return signedData;
- }
- /***********************************************************************
- *
- * @ver : 0.2007.01.02
- * @by : 김광영
- * @type : function
- * @desc :
- * @param :
- * @return :
- *
- ************************************************************************
- */
- function zesfSignFile( pOrgFilePath, pUid, pReload, pDbg ) {
- if (!zesfCheckModule()) {
- return;
- }
- if(pReload){
- viewerObj.window.javascript._CERT_UID_ = ""
- }
- var signedFilePath = "";
- var reload = false;
- if( pUid == null || pUid == "" ) {
- pUid = zesfGetUID();
- }
- if( viewerObj.window.javascript._CERT_UID_ != pUid ) {
- reload = true;
- }
- var today = new Date();
- if( viewerObj.window.javascript._CERT_YEAR_ != today.getFullYear() ) {
- reload = true;
- }
- if( viewerObj.window.javascript._CERT_MONTH_ != ( today.getMonth() + 1 ) ) {
- reload = true;
- }
- if( viewerObj.window.javascript._CERT_DATE_ != today.getDate() ) {
- reload = true;
- }
- if( reload ) {
- // if( viewerObj.window.javascript._CERT_UID_ != "" ) {
- SKCommObject.UnsetMatchedContext();
- viewerObj.window.javascript._CERT_UID_ = "";
- viewerObj.window.javascript._CERT_YEAR_ = 1970;
- viewerObj.window.javascript._CERT_MONTH_ = 1;
- viewerObj.window.javascript._CERT_DATE_ = 1;
- // }
- if( zesfLoadKeyAndCert( pUid, pDbg ) == "" ) {
- return signedFilePath;
- }
- }
- if( pDbg != null ) {
- alert( "SignFileB64" );
- }
- signedFilePath = SKCommObject.SignFileB64( "", pOrgFilePath, true, 0 );
- if( signedFilePath == "" ) {
- msg = "전자서명 생성에"
- messageBox( msg, "E009", getCMErrMsg());
- }
- return signedFilePath;
- }
- /***********************************************************************
- *
- * @ver : 0.2007.01.02
- * @by : 김광영
- * @type : function
- * @desc :
- * @param :
- * @return :
- *
- ************************************************************************
- */
- function zesfVerifySign( pSignedData, pDbg ) {
- if (!zesfCheckModule()) {
- return;
- }
- var orgData = "";
- var msg = "";
- orgData = SKCommObject.VerifyDataB64( pSignedData, 0 );
- if( orgData == "" ) {
- msg = "전자서명 검증에";
- messageBox( msg, "E009", getCMErrMsg());
- }
- return orgData;
- }
- /***********************************************************************
- *
- * @ver : 0.2007.01.02
- * @by : 김광영
- * @type : function
- * @desc :
- * @param :
- * @return :
- *
- ************************************************************************
- */
- function zesfChangeKeyPwd(oldpasswd, newpasswd, pDbg) {
- var msg = "";
- var ip = zesfGetKMIIP();
- var port = zesfGetKMIPort();
- if( !KMClientAX.kmsConnect(ip, port) ) {
- msg = "KMI 서버( IP:" + ip + ",포트:" + port + ") 연결에";
- messageBox( msg, "E009", getKMIErrMsg() );
- return;
- }
- if( pDbg != null ) {
- alert( "KMI 서버가 연결되었습니다." );
- }
- var envelop = KMClientAX.kmsInit();
- if( envelop == "" ) {
- msg = "KMI 모듈의 초기화에";
- messageBox( msg, "E009", getKMIErrMsg() );
- KMClientAX.kmsDisconnect();
- return;
- }
- if( pDbg != null ) {
- alert( "KMI 모듈이 초기화되었습니다. \nENVELOP : " + envelop );
- }
- var uid = zesfGetUID();
- if( pDbg != null ) {
- alert( "사용자 ID : " + uid );
- }
- var dn = KMClientAX.ChangePasswordKey(uid, oldpasswd, newpasswd);
- if( dn == "" ) {
- msg = "개인키 비밀번호 변경에";
- messageBox( msg, "E009", getKMIErrMsg() );
- }
- KMClientAX.LocalDelKeyAndCert( dn );
- KMClientAX.kmsDisconnect();
- return;
- }
- /***********************************************************************
- *
- * @ver : 0.2007.01.02
- * @by : 김광영
- * @type : function
- * @desc :
- * @param :
- * @return :
- *
- ************************************************************************
- */
- function zesfRenewKeyAndCert( pDbg ) {
- var msg = "";
- var ip = zesfGetKMIIP();
- var port = zesfGetKMIPort();
- if( !KMClientAX.kmsConnect(ip, port) ) {
- msg = "KMI 서버( IP:" + ip + ",포트:" + port + ") 연결에";
- messageBox( msg, "E009", getKMIErrMsg() );
- return;
- }
- if( pDbg != null ) {
- alert( "KMI 서버가 연결되었습니다." );
- }
- var envelop = KMClientAX.kmsInit();
- if( envelop == "" ) {
- msg = "KMI 모듈의 초기화에";
- messageBox( msg, "E009", getKMIErrMsg() );
- KMClientAX.kmsDisconnect();
- return;
- }
- if( pDbg != null ) {
- alert( "KMI 모듈이 초기화되었습니다. \nENVELOP : " + envelop );
- }
- var uid = zesfGetUID();
- if( pDbg != null ) {
- alert( "사용자 ID : " + uid );
- }
- var dn = KMClientAX.GetKeyAndCert( uid );
- if( dn == "" ) {
- msg = "KMI 서버에서 인증서( " + uid + " )를 가져오는 데.";
- messageBox( msg, "E009", getKMIErrMsg()+"\n전자인증서와 관련한 에러는 "+ _TEL_NO +" 로 연락해주시기 바랍니다." );
- KMClientAX.kmsDisconnect();
- return;
- }
- if( pDbg != null ) {
- alert( "인증서를 다운로드하였습니다.\n다운로드 인증서 DN : " + dn );
- }
- switch( KMClientAX.IsCertNew( uid, dn ) ) {
- case 0 : // 현재 인증서가 유효함
- msg = "현재 인증서가 유효하여 갱신되지" ;
- messageBox( msg, "E007" );
- break;
- case 1 : // 인증서가 갱신되어 KMI에 재등록됨
- msg = "인증서 갱신이"
- messageBox( msg, "I002" );
- break;
- case 2 : // 인증서 갱신 실패 ( 에러코드와 메시지가 리턴됨 )
- msg = "인증서 갱신에";
- messageBox( msg, "E009", getKMIErrMsg());
- break;
- case 3 : // 인증서는 갱신되었으나 KMI 등록은 실패(인증서 백업 성공)
- msg = "갱신된 인증서의 KMI 등록에";
- messageBox( msg, "E009", "관리자에게 문의하시기 바랍니다.(백업성공)");
- break;
- case 4 : // 인증서는 갱신되었으나 KMI 등록은 실패(인증서 백업 실패)
- msg = "갱신된 인증서의 KMI 등록에";
- messageBox( msg, "E009", "관리자에게 문의하시기 바랍니다.(백업실패)");
- break;
- case 5 : // 인증서가 만료됨
- msg = "인증서가 만료되어 갱신";
- messageBox( msg, "E001", "인증서를 재발급 받으시기 바랍니다.");
- break;
- case 6 : // 인증서의 갱신을 사용자가 취소
- break;
- case 7 :
- msg = "인증서 파일에 문제가 있어 인증서 읽기에.";
- messageBox( msg, "E009", "관리자에게 문의하시기 바랍니다.");
- break;
- }
- KMClientAX.LocalDelKeyAndCert(dn);
- KMClientAX.kmsDisconnect();
- return;
- }
- function ImsifCheckSignPassword( pNewPassword ) {
-
- var pwdNew = pNewPassword;
-
- if(pwdNew.length<10){
- messageBox("비밀번호는 최소 10자리여야 합니다.","E999");
- return false;
- }
-
- var alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
- var number = "1234567890";
- var spec = "~!@#$%^&*<>?|\/[]{}";
-
- var flag1,flag2,flag3;
- for(var i=0; i<pwdNew.length; i++){
- if(alpha.match(pwdNew.charAt(i))){
- flag1=true;
- }
- if(number.match(pwdNew.charAt(i))){
- flag2=true;
- }
- if(spec.match(pwdNew.charAt(i))){
- flag3=true;
- }
- }
- if(!(flag1 && flag2 && flag3)){
- messageBox("비밀번호는 영문자,숫자,특수문자 조합이어야 합니다.","E999");
- return false;
- }
-
- return true;
- }
|