ZES001.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811
  1. // 전역 변수 선언부
  2. var _KMClientAX_ = null;
  3. var _SKCommAX_ = null;
  4. var viewerObj = null;
  5. var SKCommObject = null;
  6. var _CERT_YEAR_ = 1970;
  7. var _CERT_MONTH_ = 1;
  8. var _CERT_DATE_ = 1;
  9. var _CERT_UID_ = "";
  10. var _TEL_NO = "";
  11. /*
  12. 객체 생성작업
  13. */
  14. function zesfInitSign(){
  15. body.createChild("xforms:object", "id:KMClientAX; clsid:{d3c608b5-b664-4962-91b7-289da892953a}; visibility:hidden; left:0px; top:0px; width:0px; height:0px; ");
  16. viewerObj = getViewer("sysMessage");
  17. if (viewerObj != null) { // main 화면의 상태 메시지 뷰어가 있는 경우
  18. //alert("메인 화면입니다.");
  19. SKCommObject = viewerObj.window.javascript.fGetSKCommObject();
  20. } else { // main 화면이 없는 경우(TF 미리보기)
  21. //alert('미리보기화면입니다');
  22. viewerObj = viewer.item("TFViewer");
  23. try {
  24. if (document.all("CertManX") == null) { // 최초 한번만 createChild() 한다.
  25. body.createChild("xforms:object", "id:CertManX; clsid:{ec5d5118-9fde-4a3e-84f3-c2b711740e70}; visibility:hidden; left:0px; top:0px; width:0px; height:0px; ");
  26. }
  27. SKCommObject = CertManX;
  28. } catch(e) {
  29. SKCommObject = null;
  30. }
  31. }
  32. /*
  33. if(document.all("KMClientAX") == null){
  34. alert("fail");
  35. }else{
  36. alert("ok");
  37. }
  38. */
  39. // KMClientAX 객체 설치 여부 확인
  40. if( zesfChkKMClientAX() == null ) {
  41. messageBox( "KMI 모듈이 설치되지", "E007" );
  42. return false;
  43. }
  44. // 기관코드에 따라서 연락처 다르게 설정
  45. var instcd = getUserInfo("systeminstcd");
  46. if (instcd == "031")
  47. {
  48. _TEL_NO = "의무기록팀 5233";
  49. }
  50. else if (instcd == "032")
  51. {
  52. _TEL_NO = "의무기록팀 2401,2";
  53. }
  54. return (SKCommObject != null);
  55. }
  56. /***********************************************************************
  57. *
  58. * @ver : 0.2007.10.11
  59. * @by : 이상준
  60. * @type : function
  61. * @desc :
  62. * @param :
  63. * @return :
  64. *
  65. ************************************************************************
  66. */
  67. function zesfCheckModule() {
  68. if (zesfInitSign() == false) {
  69. messageBox("연계모듈이 초기화되지","E007");
  70. return false;
  71. } else {
  72. return true;
  73. }
  74. }
  75. /***********************************************************************
  76. *
  77. * @ver : 0.2007.01.02
  78. * @by : 김광영
  79. * @type : function
  80. * @desc :
  81. * @param :
  82. * @return :
  83. *
  84. ************************************************************************
  85. */
  86. function zesfChkSKCommAX() {
  87. var rvalue = false;
  88. try {
  89. _SKCommAX_ = new ActiveXObject("SKCOMMAX.SKCommAXCtrl.1");
  90. if( _SKCommAX_ != null ) {
  91. rvalue = true;
  92. }
  93. }
  94. catch( ex ) {
  95. }
  96. return rvalue;
  97. }
  98. /***********************************************************************
  99. *
  100. * @ver : 0.2007.01.02
  101. * @by : 김광영
  102. * @type : function
  103. * @desc :
  104. * @param :
  105. * @return :
  106. *
  107. ************************************************************************
  108. */
  109. function zesfChkKMClientAX() {
  110. var rvalue = false;
  111. try {
  112. _KMClientAX_ = new ActiveXObject("KMCLIENTAX.KMClientAXCtrl.1");
  113. if( _KMClientAX_ != null ) {
  114. rvalue = true;
  115. }
  116. }
  117. catch( ex ) {
  118. }
  119. return rvalue;
  120. }
  121. /***********************************************************************
  122. *
  123. * @ver : 0.2007.01.02
  124. * @by : 김광영
  125. * @type : function
  126. * @desc :
  127. * @param :
  128. * @return :
  129. *
  130. ************************************************************************
  131. */
  132. function zesfGetKMIIP() {
  133. return getUserInfo( "kmiip" );
  134. }
  135. /***********************************************************************
  136. *
  137. * @ver : 0.2007.01.02
  138. * @by : 김광영
  139. * @type : function
  140. * @desc :
  141. * @param :
  142. * @return :
  143. *
  144. ************************************************************************
  145. */
  146. function zesfGetKMIPort() {
  147. return parseInt(getUserInfo( "kmiport" ));
  148. }
  149. /***********************************************************************
  150. *
  151. * @ver : 0.2007.01.02
  152. * @by : 김광영
  153. * @type : function
  154. * @desc :
  155. * @param :
  156. * @return :
  157. *
  158. ************************************************************************
  159. */
  160. function zesfGetUID() {
  161. return getUserId();
  162. }
  163. /***********************************************************************
  164. *
  165. * @ver : 0.2007.01.02
  166. * @by : 김광영
  167. * @type : function
  168. * @desc :
  169. * @param :
  170. * @return :
  171. *
  172. ************************************************************************
  173. */
  174. function getCMErrMsg( ) {
  175. if (!zesfCheckModule()) {
  176. return;
  177. }
  178. return "[전자서명 에러]" + SKCommObject.GetLastErrorMsg();
  179. }
  180. /***********************************************************************
  181. *
  182. * @ver : 0.2007.01.02
  183. * @by : 김광영
  184. * @type : function
  185. * @desc :
  186. * @param :
  187. * @return :
  188. *
  189. ************************************************************************
  190. */
  191. function getKMIErrMsg( ) {
  192. return "[KMI 에러]" + KMClientAX.Error_MSG();
  193. }
  194. /***********************************************************************
  195. *
  196. * @ver : 0.2007.01.02
  197. * @by : 김광영
  198. * @type : function
  199. * @desc :
  200. * @param :
  201. * @return :
  202. *
  203. ************************************************************************
  204. */
  205. function zesfLoadKeyAndCert( pUid, pDbg ) {
  206. var dn = "";
  207. var msg = "";
  208. var pwd = "";
  209. var certloadyn = "N";
  210. certloadyn = viewerObj.window.model.getValue("/root/properties/orderbasicinfo/hardcdlist/hardcd[hardcdno = '5996']/hardcd");
  211. if (certloadyn == "Y") {
  212. //비밀번호 입력창 오픈
  213. var xpt = window.screenLeft + 400;
  214. var ypt = window.screenTop + 60;
  215. viewerObj.window.model.removeNodeset("/root/main/pwdhidden");
  216. modal("SPZMS00300",xpt,ypt);
  217. pwd = viewerObj.window.model.getValue("/root/main/pwdhidden/pwd");
  218. if (pwd == null || pwd == "") {
  219. return dn;
  220. }
  221. }
  222. var ip = zesfGetKMIIP();
  223. var port = zesfGetKMIPort();
  224. if( !KMClientAX.kmsConnect(ip, port) ) {
  225. msg = "KMI 서버( IP:" + ip + ",포트:" + port + ") 연결에";
  226. messageBox( msg, "E009", getKMIErrMsg() );
  227. return dn;
  228. }
  229. if( pDbg != null ) {
  230. alert( "KMI 서버가 연결되었습니다." );
  231. }
  232. var envelop = KMClientAX.kmsInit();
  233. if( envelop == "" ) {
  234. msg = "KMI 모듈의 초기화에";
  235. messageBox( msg, "E009", getKMIErrMsg() );
  236. KMClientAX.kmsDisconnect();
  237. return dn;
  238. }
  239. if( pDbg != null ) {
  240. alert( "KMI 모듈이 초기화되었습니다. \nENVELOP : " + envelop );
  241. }
  242. dn = KMClientAX.GetKeyAndCert( pUid );
  243. if( dn == "" ) {
  244. msg = "KMI 서버에서 인증서( " + pUid + " )를 가져오는 데.";
  245. messageBox( msg, "E009", getKMIErrMsg() +"\n전자인증서와 관련한 에러는 " + _TEL_NO + " 로 연락해주시기 바랍니다.");
  246. KMClientAX.kmsDisconnect();
  247. return dn;
  248. }
  249. if( pDbg != null ) {
  250. alert( "인증서를 다운로드하였습니다.\n다운로드 인증서 DN : " + dn );
  251. }
  252. switch( KMClientAX.IsCertNew( pUid, dn ) ) {
  253. case 0 : // 현재 인증서가 유효함
  254. if( pDbg != null ) {
  255. alert( "현재 인증서가 유효합니다." );
  256. }
  257. break;
  258. case 1 : // 인증서가 갱신되어 KMI에 재등록됨
  259. msg = "인증서의 갱신이";
  260. messageBox( msg, "I002");
  261. break;
  262. case 2 : // 인증서 갱신 실패 ( 에러코드와 메시지가 리턴됨 )
  263. msg = "인증서 갱신에";
  264. messageBox( msg, "E009", getKMIErrMsg());
  265. KMClientAX.LocalDelKeyAndCert(dn);
  266. KMClientAX.kmsDisconnect();
  267. return dn;
  268. case 3 : // 인증서 갱신은 성공 하였으나 KMI 서버 등록 실패 (인증서 백업 성공)
  269. case 4 : // 인증서 갱신은 성공 하였으나 KMI 서버 등록 실패 (인증서 백업 실패)
  270. msg = "갱신된 인증서의 KMI 등록에";
  271. messageBox( msg, "E009", "관리자에게 문의하시기 바랍니다.");
  272. KMClientAX.LocalDelKeyAndCert(dn);
  273. KMClientAX.kmsDisconnect();
  274. return dn;
  275. case 5 : // 이미 만료 되었거나 폐지된 인증서
  276. msg = "인증서가 만료되어 사용";
  277. messageBox( msg, "E001", "인증서를 재발급 받으시기 바랍니다.");
  278. KMClientAX.LocalDelKeyAndCert(dn);
  279. KMClientAX.kmsDisconnect();
  280. return dn;
  281. case 6 : // 인증서의 갱신을 사용자가 취소
  282. break;
  283. case 7 :
  284. msg = "인증서 화일에 문제가 있어 인증서 읽기에.";
  285. messageBox( msg, "E009", "관리자에게 문의하시기 바랍니다.");
  286. KMClientAX.LocalDelKeyAndCert(dn);
  287. KMClientAX.kmsDisconnect();
  288. return dn;
  289. }
  290. // 0 * 256 : SignKorea의 인증서만 선택
  291. // 0 * 16 : 비밀번호 입력 받음
  292. // 1 : 현재의 ActiveX 인스턴스가 유효할 동안 선택한 정보 유지
  293. // dn = SKCommObject.SetMatchedContextExt( dn, "", "", 0 * 256 + 0 * 16 + 1 );
  294. //var matched_dn = SKCommObject.SetMatchedContextExt( dn, "", "", 0 * 256 + 0 * 16 + 1 );
  295. //이윤주수정(20150415)
  296. var matched_dn = SKCommObject.SetMatchedContextExt(dn, "", pwd, 0 * 256 + 0 * 16 + 1 );
  297. if( matched_dn == "" ) {
  298. msg = "인증서의 메모리 로드에";
  299. messageBox( msg, "E009", getCMErrMsg());
  300. KMClientAX.LocalDelKeyAndCert(dn);
  301. KMClientAX.kmsDisconnect();
  302. return matched_dn;
  303. }
  304. var today = new Date();
  305. viewerObj.window.javascript._CERT_YEAR_ = today.getFullYear();
  306. viewerObj.window.javascript._CERT_MONTH_ = today.getMonth() + 1;
  307. viewerObj.window.javascript._CERT_DATE_ = today.getDate();
  308. viewerObj.window.javascript._CERT_UID_ = pUid;
  309. KMClientAX.LocalDelKeyAndCert(dn);
  310. KMClientAX.kmsDisconnect();
  311. return dn;
  312. }
  313. /***********************************************************************
  314. *
  315. * @ver : 0.2007.01.02
  316. * @by : 김광영
  317. * @type : function
  318. * @desc :
  319. * @param :
  320. * @return :
  321. *
  322. ************************************************************************
  323. */
  324. function zesfSaveKeyAndCert( pUid, pDn, pPwd, pDbg ) {
  325. var dn = "";
  326. var msg = "";
  327. if( pDbg != null ) {
  328. alert( "인증서 등록 정보 : [" + pUid + "," + pDn + "," + pPwd + "]" );
  329. }
  330. var ip = zesfGetKMIIP();
  331. var port = zesfGetKMIPort();
  332. if( !KMClientAX.kmsConnect(ip, port) ) {
  333. msg = "KMI 서버( IP:" + ip + ",포트:" + port + ") 연결에";
  334. messageBox( msg, "E009", getKMIErrMsg() );
  335. return dn;
  336. }
  337. if( pDbg != null ) {
  338. alert( "KMI 서버가 연결되었습니다." );
  339. }
  340. var envelop = KMClientAX.kmsInit();
  341. if( envelop == "" ) {
  342. msg = "KMI 모듈의 초기화에";
  343. messageBox( msg, "E009", getKMIErrMsg() );
  344. KMClientAX.kmsDisconnect();
  345. return dn;
  346. }
  347. if( pDbg != null ) {
  348. alert( "KMI 모듈이 초기화되었습니다. \nENVELOP : " + envelop );
  349. }
  350. dn = KMClientAX.SetKeyAndCert( pUid, pDn, "", pPwd );
  351. if( dn == "" ) {
  352. msg = "KMI 서버에 인증서(" + pUid + "," + pDn + "," + ") 등록에";
  353. messageBox( msg, "E009", getKMIErrMsg() );
  354. KMClientAX.kmsDisconnect();
  355. return dn;
  356. }
  357. if( pDbg != null ) {
  358. alert( "인증서를 등록하였습니다.\n등록된 인증서 DN : " + dn );
  359. }
  360. KMClientAX.kmsDisconnect();
  361. return dn;
  362. }
  363. /***********************************************************************
  364. *
  365. * @ver : 0.2007.01.02
  366. * @by : 김광영
  367. * @type : function
  368. * @desc :
  369. * @param :
  370. * @return :
  371. *
  372. ************************************************************************
  373. */
  374. function zesfSignData( pOrgData, pUid, pReload, pDbg ) {
  375. if (!zesfCheckModule()) {
  376. return;
  377. }
  378. if(pReload){
  379. viewerObj.window.javascript._CERT_UID_ = ""
  380. }
  381. var signedData = "";
  382. var reload = false;
  383. if( pUid == null || pUid == "" ) {
  384. pUid = zesfGetUID();
  385. }
  386. if( viewerObj.window.javascript._CERT_UID_ != pUid ) {
  387. reload = true;
  388. }
  389. var today = new Date();
  390. if( viewerObj.window.javascript._CERT_YEAR_ != today.getFullYear() ) {
  391. reload = true;
  392. }
  393. if( viewerObj.window.javascript._CERT_MONTH_ != ( today.getMonth() + 1 ) ) {
  394. reload = true;
  395. }
  396. if( viewerObj.window.javascript._CERT_DATE_ != today.getDate() ) {
  397. reload = true;
  398. }
  399. if( reload ) {
  400. // if( viewerObj.window.javascript._CERT_UID_ != "" ) {
  401. SKCommObject.UnsetMatchedContext();
  402. viewerObj.window.javascript._CERT_UID_ = "";
  403. viewerObj.window.javascript._CERT_YEAR_ = 1970;
  404. viewerObj.window.javascript._CERT_MONTH_ = 1;
  405. viewerObj.window.javascript._CERT_DATE_ = 1;
  406. // }
  407. if( zesfLoadKeyAndCert( pUid, pDbg ) == "" ) {
  408. return signedData;
  409. }
  410. }
  411. if( pDbg != null ) {
  412. alert( "SignDataB64" );
  413. }
  414. signedData = SKCommObject.SignDataB64( "", pOrgData, 0 );
  415. if( signedData == "" ) {
  416. msg = "전자서명 생성에"
  417. messageBox( msg, "E009", getCMErrMsg());
  418. }
  419. return signedData;
  420. }
  421. /***********************************************************************
  422. *
  423. * @ver : 0.2007.01.02
  424. * @by : 김광영
  425. * @type : function
  426. * @desc :
  427. * @param :
  428. * @return :
  429. *
  430. ************************************************************************
  431. */
  432. function zesfSignFile( pOrgFilePath, pUid, pReload, pDbg ) {
  433. if (!zesfCheckModule()) {
  434. return;
  435. }
  436. if(pReload){
  437. viewerObj.window.javascript._CERT_UID_ = ""
  438. }
  439. var signedFilePath = "";
  440. var reload = false;
  441. if( pUid == null || pUid == "" ) {
  442. pUid = zesfGetUID();
  443. }
  444. if( viewerObj.window.javascript._CERT_UID_ != pUid ) {
  445. reload = true;
  446. }
  447. var today = new Date();
  448. if( viewerObj.window.javascript._CERT_YEAR_ != today.getFullYear() ) {
  449. reload = true;
  450. }
  451. if( viewerObj.window.javascript._CERT_MONTH_ != ( today.getMonth() + 1 ) ) {
  452. reload = true;
  453. }
  454. if( viewerObj.window.javascript._CERT_DATE_ != today.getDate() ) {
  455. reload = true;
  456. }
  457. if( reload ) {
  458. // if( viewerObj.window.javascript._CERT_UID_ != "" ) {
  459. SKCommObject.UnsetMatchedContext();
  460. viewerObj.window.javascript._CERT_UID_ = "";
  461. viewerObj.window.javascript._CERT_YEAR_ = 1970;
  462. viewerObj.window.javascript._CERT_MONTH_ = 1;
  463. viewerObj.window.javascript._CERT_DATE_ = 1;
  464. // }
  465. if( zesfLoadKeyAndCert( pUid, pDbg ) == "" ) {
  466. return signedFilePath;
  467. }
  468. }
  469. if( pDbg != null ) {
  470. alert( "SignFileB64" );
  471. }
  472. signedFilePath = SKCommObject.SignFileB64( "", pOrgFilePath, true, 0 );
  473. if( signedFilePath == "" ) {
  474. msg = "전자서명 생성에"
  475. messageBox( msg, "E009", getCMErrMsg());
  476. }
  477. return signedFilePath;
  478. }
  479. /***********************************************************************
  480. *
  481. * @ver : 0.2007.01.02
  482. * @by : 김광영
  483. * @type : function
  484. * @desc :
  485. * @param :
  486. * @return :
  487. *
  488. ************************************************************************
  489. */
  490. function zesfVerifySign( pSignedData, pDbg ) {
  491. if (!zesfCheckModule()) {
  492. return;
  493. }
  494. var orgData = "";
  495. var msg = "";
  496. orgData = SKCommObject.VerifyDataB64( pSignedData, 0 );
  497. if( orgData == "" ) {
  498. msg = "전자서명 검증에";
  499. messageBox( msg, "E009", getCMErrMsg());
  500. }
  501. return orgData;
  502. }
  503. /***********************************************************************
  504. *
  505. * @ver : 0.2007.01.02
  506. * @by : 김광영
  507. * @type : function
  508. * @desc :
  509. * @param :
  510. * @return :
  511. *
  512. ************************************************************************
  513. */
  514. function zesfChangeKeyPwd(oldpasswd, newpasswd, pDbg) {
  515. var msg = "";
  516. var ip = zesfGetKMIIP();
  517. var port = zesfGetKMIPort();
  518. if( !KMClientAX.kmsConnect(ip, port) ) {
  519. msg = "KMI 서버( IP:" + ip + ",포트:" + port + ") 연결에";
  520. messageBox( msg, "E009", getKMIErrMsg() );
  521. return;
  522. }
  523. if( pDbg != null ) {
  524. alert( "KMI 서버가 연결되었습니다." );
  525. }
  526. var envelop = KMClientAX.kmsInit();
  527. if( envelop == "" ) {
  528. msg = "KMI 모듈의 초기화에";
  529. messageBox( msg, "E009", getKMIErrMsg() );
  530. KMClientAX.kmsDisconnect();
  531. return;
  532. }
  533. if( pDbg != null ) {
  534. alert( "KMI 모듈이 초기화되었습니다. \nENVELOP : " + envelop );
  535. }
  536. var uid = zesfGetUID();
  537. if( pDbg != null ) {
  538. alert( "사용자 ID : " + uid );
  539. }
  540. var dn = KMClientAX.ChangePasswordKey(uid, oldpasswd, newpasswd);
  541. if( dn == "" ) {
  542. msg = "개인키 비밀번호 변경에";
  543. messageBox( msg, "E009", getKMIErrMsg() );
  544. }
  545. KMClientAX.LocalDelKeyAndCert( dn );
  546. KMClientAX.kmsDisconnect();
  547. return;
  548. }
  549. /***********************************************************************
  550. *
  551. * @ver : 0.2007.01.02
  552. * @by : 김광영
  553. * @type : function
  554. * @desc :
  555. * @param :
  556. * @return :
  557. *
  558. ************************************************************************
  559. */
  560. function zesfRenewKeyAndCert( pDbg ) {
  561. var msg = "";
  562. var ip = zesfGetKMIIP();
  563. var port = zesfGetKMIPort();
  564. if( !KMClientAX.kmsConnect(ip, port) ) {
  565. msg = "KMI 서버( IP:" + ip + ",포트:" + port + ") 연결에";
  566. messageBox( msg, "E009", getKMIErrMsg() );
  567. return;
  568. }
  569. if( pDbg != null ) {
  570. alert( "KMI 서버가 연결되었습니다." );
  571. }
  572. var envelop = KMClientAX.kmsInit();
  573. if( envelop == "" ) {
  574. msg = "KMI 모듈의 초기화에";
  575. messageBox( msg, "E009", getKMIErrMsg() );
  576. KMClientAX.kmsDisconnect();
  577. return;
  578. }
  579. if( pDbg != null ) {
  580. alert( "KMI 모듈이 초기화되었습니다. \nENVELOP : " + envelop );
  581. }
  582. var uid = zesfGetUID();
  583. if( pDbg != null ) {
  584. alert( "사용자 ID : " + uid );
  585. }
  586. var dn = KMClientAX.GetKeyAndCert( uid );
  587. if( dn == "" ) {
  588. msg = "KMI 서버에서 인증서( " + uid + " )를 가져오는 데.";
  589. messageBox( msg, "E009", getKMIErrMsg()+"\n전자인증서와 관련한 에러는 "+ _TEL_NO +" 로 연락해주시기 바랍니다." );
  590. KMClientAX.kmsDisconnect();
  591. return;
  592. }
  593. if( pDbg != null ) {
  594. alert( "인증서를 다운로드하였습니다.\n다운로드 인증서 DN : " + dn );
  595. }
  596. switch( KMClientAX.IsCertNew( uid, dn ) ) {
  597. case 0 : // 현재 인증서가 유효함
  598. msg = "현재 인증서가 유효하여 갱신되지" ;
  599. messageBox( msg, "E007" );
  600. break;
  601. case 1 : // 인증서가 갱신되어 KMI에 재등록됨
  602. msg = "인증서 갱신이"
  603. messageBox( msg, "I002" );
  604. break;
  605. case 2 : // 인증서 갱신 실패 ( 에러코드와 메시지가 리턴됨 )
  606. msg = "인증서 갱신에";
  607. messageBox( msg, "E009", getKMIErrMsg());
  608. break;
  609. case 3 : // 인증서는 갱신되었으나 KMI 등록은 실패(인증서 백업 성공)
  610. msg = "갱신된 인증서의 KMI 등록에";
  611. messageBox( msg, "E009", "관리자에게 문의하시기 바랍니다.(백업성공)");
  612. break;
  613. case 4 : // 인증서는 갱신되었으나 KMI 등록은 실패(인증서 백업 실패)
  614. msg = "갱신된 인증서의 KMI 등록에";
  615. messageBox( msg, "E009", "관리자에게 문의하시기 바랍니다.(백업실패)");
  616. break;
  617. case 5 : // 인증서가 만료됨
  618. msg = "인증서가 만료되어 갱신";
  619. messageBox( msg, "E001", "인증서를 재발급 받으시기 바랍니다.");
  620. break;
  621. case 6 : // 인증서의 갱신을 사용자가 취소
  622. break;
  623. case 7 :
  624. msg = "인증서 파일에 문제가 있어 인증서 읽기에.";
  625. messageBox( msg, "E009", "관리자에게 문의하시기 바랍니다.");
  626. break;
  627. }
  628. KMClientAX.LocalDelKeyAndCert(dn);
  629. KMClientAX.kmsDisconnect();
  630. return;
  631. }
  632. function ImsifCheckSignPassword( pNewPassword ) {
  633. var pwdNew = pNewPassword;
  634. if(pwdNew.length<10){
  635. messageBox("비밀번호는 최소 10자리여야 합니다.","E999");
  636. return false;
  637. }
  638. var alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  639. var number = "1234567890";
  640. var spec = "~!@#$%^&*<>?|\/[]{}";
  641. var flag1,flag2,flag3;
  642. for(var i=0; i<pwdNew.length; i++){
  643. if(alpha.match(pwdNew.charAt(i))){
  644. flag1=true;
  645. }
  646. if(number.match(pwdNew.charAt(i))){
  647. flag2=true;
  648. }
  649. if(spec.match(pwdNew.charAt(i))){
  650. flag3=true;
  651. }
  652. }
  653. if(!(flag1 && flag2 && flag3)){
  654. messageBox("비밀번호는 영문자,숫자,특수문자 조합이어야 합니다.","E999");
  655. return false;
  656. }
  657. return true;
  658. }