/* * Transkey * (C) 2013. RAONSECURE,Inc. All rights reserved. * Version 4.6.12.0 * 2019-02-11 */ //config var transkey_url='/TouchEn/transkey'; var transkey_surl ='/jsppage/transkeyServlet'; var tk_useButton=true; var tk_useTranskey=true; var transkey_isMultiCursor=true; var transkey_isDraggable=true; var tk_blankEvent="onmouseover"; var useCheckTranskey=true; var transkey_encDelimiter = ','; var keyboardLayouts = ["qwerty", "number"]; var transkey_delimiter='$'; var useCORS=false; var tk_origin=""; //show license config var showLicense = true; //ture : show | false : not show var licenseType =""; var licExpiredDate = ""; var TK_requestToken = "nps"; var onKeyboard_allocate=false; //config document.write(''); document.write(''); document.write(''); document.write(''); //document.write(''); document.write(''); var transkey=[]; var tk=null; var tk_btn_arr=[]; function initTranskey(){ try{ setMaxDigits(131); if(tk==null){ transkey.objs= new Array(); tk = new Transkey(); tk.getPublicKey(transkey_surl); if(useCheckTranskey){ if (document.addEventListener) { document.addEventListener("mousedown", checkTransKey, false); } else if (document.attachEvent) { document.attachEvent("onmousedown", checkTransKey); } } } var inputs = document.getElementsByTagName("input"); for(var i = 0; i < inputs.length; i++){ var input = inputs.item(i); if(input.getAttribute("data-tk-kbdType")!=null&&transkey[input.id]==null) tk.setKeyboard(inputs.item(i), transkey_isMultiCursor, tk_useButton, tk_useTranskey); } }catch(e){ console.error("transkey error : "+e.message); return false; } return true; } if (typeof XMLHttpRequest == "undefined") { XMLHttpRequest = function() { try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch(e) { }; try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch(e) { }; try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { }; try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { }; throw new Error("This browser does not support XMLHttpRequest or XMLHTTP."); }; }; function TranskeyObj(inputObj, div, keyType, keyboardType, isMultiC, useT){ this.isMultiCursor = isMultiC; this.isMultiMode=false; this.allocate=false; this.id=inputObj.id; this.keyboardType=keyboardType; this.width=0; this.div=div; this.mainDiv=div.children[this.id+"_mainDiv"]; this.lowerDiv=div.children[this.id+"_layoutLower"]; this.upperDiv=div.children[this.id+"_layoutUpper"]; this.singleDiv=div.children[this.id+"_layoutSingle"]; this.fakeMouseDiv=div.children[this.id+"_fakeMouseDiv"]; this.osMouseDiv=div.children[this.id+"_osMouseDiv"]; this.blankDiv=div.children[this.id+"_blankDiv"]; this.blankOverDiv=div.children[this.id+"_blankOverDiv"]; this.multiMouseTypeDiv=div.children[this.id+"_multiMouseTypeDiv"]; this.singleMouseTypeDiv=div.children[this.id+"_singleMouseTypeDiv"]; this.dragDiv=div.children[this.id+"_dragDiv"]; this.keyTypeIndex=""; // "l ","u ","" this.keyType=keyType; this.cap=false; this.useTranskey=useT; this.useButton=false; this.button=null; this.inputObj=inputObj; this.hidden=document.getElementById("transkey_"+inputObj.id); this.hmac=document.getElementById("transkey_HM_"+inputObj.id); this.ExE2E=document.getElementById("transkey_ExE2E_"+inputObj.id); this.exE2E=inputObj.getAttribute("data-tk-ExE2E")==null?"false":inputObj.getAttribute("data-tk-ExE2E"); this.checkValue=document.getElementById("Tk_"+inputObj.id+"_checkbox_value"); this.fieldType=inputObj.type; this.isCrt=false; this.btnType; this.keyboard = inputObj.getAttribute("data-tk-keyboard"); this.allocationIndex = new GenKey().tk_getrnd_int(); if(this.keyboard==null) this.keyboard = this.keyboardType; if(!useSession){ this.keyIndex = document.getElementById("keyIndex_"+inputObj.id).value; document.getElementById("keyboardType_"+inputObj.id).value = this.keyboardType; document.getElementById("fieldType_"+inputObj.id).value = this.fieldType; } var self = this; this.checkInitTime = function(){ var nowTime = new Date(); var year = nowTime.getFullYear() - decInitTime.substring(0,4); var month = nowTime.getMonth()+1 - decInitTime.substring(4,6); var day = nowTime.getDate() - decInitTime.substring(6,8); var hour = nowTime.getHours() - decInitTime.substring(8,10); var min = nowTime.getMinutes() - decInitTime.substring(10,12); year *= 525600; month *= 44640; day *= 1440; hour *= 60; var elapsedTime = year + month + day + hour + min; if(elapsedTime > limitTime) { decInitTime = nowTime; alert("시간이 만료되었습니다."); var request = new XMLHttpRequest(); request.open("GET", transkey_surl+"?op=getInitTime&"+new Date().getTime()+tk_origin, false); request.onreadystatechange = function(){ if (request.readyState == 4 && request.status == 200) { decInitTime = request.responseText.split(";")[0]; decInitTime = decInitTime.split("=")[1]; decInitTime = decInitTime.replace("'",""); decInitTime = decInitTime.replace("'",""); initTime = request.responseText.split(";")[1]; initTime = initTime.split("=")[1]; initTime = initTime.replace("'",""); initTime = initTime.replace("'",""); } }; try { request.send(); } catch(e) { alert("TransKey error: Cannot load TransKey. Network is not available."); return false; } document.getElementById("initTime").value = initTime; return; } } this.setUrl = function(){ if(this.keyboardType=="number"){ var numberImg = new Image(); numberImg.onload = function(){ self.allocate=true; }; numberImg.src = getUrl("getKey", this, "single", this.allocationIndex); this.singleDiv.style.backgroundImage="url('"+numberImg.src+"')"; //this.singleDiv.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader( src='"+url+"', sizingMethod='scale')"; }else{ var quertyImg = new Image(); quertyImg.onload = function(){ var url = getUrl("getKey", self, "upper", self.allocationIndex); tk.now.upperDiv.style.backgroundImage="url('"+url+"')"; }; quertyImg.src = getUrl("getKey", this, "lower", this.allocationIndex); this.lowerDiv.style.backgroundImage="url('"+quertyImg.src+"')"; } }; this.setCursorStyle = function(style){ if(style=="none"){ if(tk.isMSIE) style="url('" + transkey_url + "/images/invisible.cur'),auto"; else if(tk.isSafari) style="url('" + transkey_url + "/images/invisible.gif'),auto"; } this.div.style.cursor=style; this.mainDiv.style.cursor=style; this.fakeMouseDiv.style.cursor=style; this.osMouseDiv.style.cursor=style; this.blankDiv.style.cursor=style; this.blankOverDiv.style.cursor=style; }; this.setExE2E = function(ExE2E){ this.ExE2E.value=ExE2E; }; function getUrl(op, o, keyType, allocationIndex){ if(!useSession){ return transkey_surl+"?op="+op+"&name="+o.id+"&keyType="+keyType+"&keyboardType="+o.keyboard+"&fieldType=" +o.fieldType+"&inputName="+o.inputObj.name+"&transkeyUuid="+tk.transkeyUuid+"&exE2E="+o.exE2E +"&TK_requestToken="+TK_requestToken+"&isCrt="+o.isCrt+"&allocationIndex="+allocationIndex+"&keyIndex="+o.keyIndex+"&initTime="+initTime+tk_origin; } else { return transkey_surl+"?op="+op+"&name="+o.id+"&keyType="+keyType+"&keyboardType="+o.keyboard+"&fieldType=" +o.fieldType+"&inputName="+o.inputObj.name+"&transkeyUuid="+tk.transkeyUuid+"&exE2E="+o.exE2E +"&TK_requestToken="+TK_requestToken+"&isCrt="+o.isCrt+"&allocationIndex="+allocationIndex+tk_origin; } } function getUrlPost(op, o, keyType){ return "op="+op+"&name="+o.id+"&keyType="+keyType+"&keyboardType="+o.keyboard+"&fieldType=" +o.fieldType+"&inputName="+o.inputObj.name+"&transkeyUuid="+tk.transkeyUuid+"&TK_requestToken="+"&exE2E="+o.exE2E+ TK_requestToken+"&isCrt="+o.isCrt+"&allocationIndex="+allocationIndex+"&keyIndex="+o.keyIndex+"&initTime="+initTime+tk_origin; } this.setKeyType(keyType); } TranskeyObj.prototype.setButton = function(useB){ this.useButton=useB; if(useB){ if(document.getElementById(this.id+"_tk_btn")==null) return false; var btnType = document.getElementById(this.id+"_tk_btn").getAttribute("data-tk-btnType"); if(btnType==null) btnType="checkbox"; this.btnType = btnType; if(btnType=="checkbox"){ var html=''; document.getElementById(this.id+"_tk_btn").innerHTML=html; this.button = document.getElementById("Tk_"+this.id+"_checkbox"); tk_btn_arr[this.button.id]=this.id; if(tk_useTranskey){ this.button.checked=true; }else{ this.button.checked=false; } /// 20190716 추가 ////////////////////////// //console.log(TOUCHENEX_UTIL.isMac()); if(TOUCHENEX_UTIL.isMac()) { this.button.disabled=true; } /////////////////////////////////////////////// var obj = this.inputObj.form; if(obj==null) obj = inputObj.parentNode; if(obj==null) obj = document.body; var checkValue = document.createElement("input"); checkValue.setAttribute("type", "hidden"); checkValue.setAttribute("id", "Tk_"+this.id+"_checkbox_value"); checkValue.setAttribute("name", "Tk_"+this.id+"_checkbox_value"); checkValue.setAttribute("value", this.useTranskey?"transkey":"e2e"); obj.appendChild(checkValue); this.checkValue = checkValue; }else if(btnType=="img"){ var html='가상키보드실행버튼'; html+=document.getElementById(this.id+"_tk_btn").innerHTML; document.getElementById(this.id+"_tk_btn").innerHTML=html; this.button = document.getElementById("Tk_"+this.id+"_checkbox"); tk_btn_arr[this.button.id]=this.id; if(tk_useTranskey){ this.button.src = transkey_url+'/images/on.png'; }else{ this.button.src = transkey_url+'/images/off.png'; } var obj = this.inputObj.form; if(obj==null) obj = inputObj.parentNode; if(obj==null) obj = document.body; var checkValue = document.createElement("input"); checkValue.setAttribute("type", "hidden"); checkValue.setAttribute("id", "Tk_"+this.id+"_checkbox_value"); checkValue.setAttribute("name", "Tk_"+this.id+"_checkbox_value"); checkValue.setAttribute("value", this.useTranskey?"transkey":"e2e"); obj.appendChild(checkValue); this.checkValue = checkValue; } if(this.button.addEventListener ){ this.button.addEventListener("click", tk.buttonListener, false); }else{ this.button.attachEvent("onclick", tk.buttonListener); } } }; TranskeyObj.prototype.setKeyType = function(keyT){ this.keyType = keyT; if(keyT=="single"){ this.keyTypeIndex = ""; }else{ this.keyTypeIndex = keyT.charAt(0)+" "; if(keyT=="upper") this.cap=true; } }; TranskeyObj.prototype.setQwertyKey = function(key){ this.lowerDiv.style.display="block"; this.upperDiv.style.display="block"; if(key=="upper"){ this.lowerDiv.style.display="none"; }else{ this.lowerDiv.style.display="block"; } }; TranskeyObj.prototype.setDrag = function(boolean){ if(boolean){ this.dragDiv.style.display="inline"; }else{ this.dragDiv.style.display="none"; } }; TranskeyObj.prototype.clear = function(){ this.inputObj.value = ""; this.hidden.value = ""; this.hmac.value = ""; }; TranskeyObj.prototype.getCipherData = function(xecureRandomData, crtType){ var v = tk.inputFillEncData(this.inputObj); var aCipher = null; var aCipherArray = null; var aInputValue = null; var aInputHMValue = null; var encXecureRanData = null; var aRequest = null; aInputValue = v.hidden; if (aInputValue == null || aInputValue == "") { aCipher = ""; return aCipher; } aInputHMValue = v.hmac; var PKey = tk.getPKey(); encXecureRanData = tk.phpbb_encrypt2048(xecureRandomData, PKey.k, PKey.e, PKey.n); var rsaPubKey=""; var crtTypeParam = crtType; if(crtType=="pkc"){ rsaPubKey = tk.getCertPublicKey(); crtTypeParam = "yettie"; } var sPort = location.port; if(sPort.length<=0) sPort = '80'; aRequest = new XMLHttpRequest(); aRequest.open("POST", transkey_surl, false); aRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); aRequest.setRequestHeader("Cache-Control", "no-cache"); if (aRequest.readyState == 4 && aRequest.status == 200) { if(aRequest.responseText.indexOf("LimitTimeOver")>-1){ alert("시간이 만료되었습니다."); } } if(!useSession) { var seedKey = document.getElementById("seedKey").value; aRequest.send("op=getPlainText&name=" + this.id + "&value=" + aInputValue + "&hmac=" + aInputHMValue + "&crtType=" + crtTypeParam + "&encXecureRanData=" + encXecureRanData + "&sPort=" + sPort+"&pubKey=" + rsaPubKey+"&keyIndex=" + this.keyIndex+"&fieldType=" + this.fieldType+"&keyboardType=" + this.keyboardType + "&encSeedKey=" + seedKey +"&initTime="+initTime); } else { aRequest.send("op=getPlainText&name=" + this.id + "&value=" + aInputValue + "&hmac=" + aInputHMValue + "&crtType=" + crtTypeParam + "&encXecureRanData=" + encXecureRanData + "&transkeyUuid=" + tk.transkeyUuid + "&sPort=" + sPort + "&pubKey="+ rsaPubKey +"&TK_requestToken="+TK_requestToken); } if (aRequest.readyState != 4 || aRequest.status != 200) { aCipher = ""; return aCipher; } aCipher = aRequest.responseText.replace(/\n/gi, ''); if(crtType=="pkc"){ return aRequest.responseText; } aCipherArray = aCipher.split(','); aCipher = ""; for ( var i = 0; i < aCipherArray.length - 1; i++) { if (aCipherArray[i].length == 1) { aCipher += '0'; } aCipher += aCipherArray[i]; } return aCipher; }; TranskeyObj.prototype.done = function(){ }; function Transkey(){ this.offsetX=0; this.offsetY=0; this.startX=0; this.startY=0; this.scrollY=0; this.scrollX=0; this.dragStart=false; var sessionKey = [, , , , , , , , , , , , , , , ]; var genKey = new GenKey(); var useCert = "true"; //P lic // var cert_pub = "-----BEGIN CERTIFICATE-----MIIDQzCCAiugAwIBAgIJAOYjCX4wgWNoMA0GCSqGSIb3DQEBCwUAMGcxCzAJBgNVBAYTAktSMR0wGwYDVQQKExRSYW9uU2VjdXJlIENvLiwgTHRkLjEaMBgGA1UECxMRUXVhbGl0eSBBc3N1cmFuY2UxHTAbBgNVBAMTFFJhb25TZWN1cmUgQ28uLCBMdGQuMB4XDTE2MDcxOTA5MDYxNloXDTQ2MDcxMjA5MDYxNlowPzELMAkGA1UEBhMCS1IxDTALBgNVBAoTBFJORDMxITAfBgNVBAMUGFQ9UCZEPVsqLnJhb25zZWN1cmUuY29tXTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMtaq7IBKFodF527juYjDIduoTRozWiUQXFgv1jY5I9ZmPxKzVQor1vdezRf1QXHMfKTp1c4/Xv/OmVDPw2gtNcsks2+SbKGVpaF6WwWGqnEfaJW3niPd9mxqNIbAj49aAeQD3HHoz/nNsv1oxpkn4VbsqVrKug6hqykO5nz/wqcWbb8wsJ2K3ogbJ5lcjf54d+oBzskupEvGf11OY4+0MGNC8FaXn8xtLe/7i9ej0yqZ1B5lwDfzuTvecLIS9AQwQN7dlg3DRo/ceYdR7BkJM21SEwfRGUmA22zMDdAfYHFFCa9K/sSFnF+zPaMcySkXuMaIqZ6o2SJSSw0Alkc6Z8CAwEAAaMaMBgwCQYDVR0TBAIwADALBgNVHQ8EBAMCBeAwDQYJKoZIhvcNAQELBQADggEBAB8POkPF95mHq8mP+/xHf6V4m4njvpMEUXK/bKtCQOUxqwUI84Lf9BuvMtXCOTbR7T6g35y5lKHaKFu2S4pi9u3wiZfXck76YpImrLGllvvviXgs4XLwaaewvsRTFCRSD8DpeMU/jf1q6+VqMa+wThJGXQ0e8bSdBXru0h7yCTjgW/E1OCBjz2WT9JecjqpCoDBneglLMU/krm1cDWTXEIWJm0hZM6EDSuAh15sp4AikxIE/AoZO1TKQjlGIG+87qc35hOJEbJQdDIVUuD46cUjO41oI0pcdSLrigc8D4QDD8bBih4LZbkZpAc/uvimOvij/m0GglpCFQjm8jkyZxkc=-----END CERTIFICATE-----"; var cert_pub = ""; //T lic var cert_ca = "-----BEGIN CERTIFICATE-----MIIEHjCCAwagAwIBAgIJALcMNEp1tPYgMA0GCSqGSIb3DQEBCwUAMGcxCzAJBgNVBAYTAktSMR0wGwYDVQQKExRSYW9uU2VjdXJlIENvLiwgTHRkLjEaMBgGA1UECxMRUXVhbGl0eSBBc3N1cmFuY2UxHTAbBgNVBAMTFFJhb25TZWN1cmUgQ28uLCBMdGQuMB4XDTEzMDIwNzA5MDYyNVoXDTQzMDEzMTA5MDYyNVowZzELMAkGA1UEBhMCS1IxHTAbBgNVBAoTFFJhb25TZWN1cmUgQ28uLCBMdGQuMRowGAYDVQQLExFRdWFsaXR5IEFzc3VyYW5jZTEdMBsGA1UEAxMUUmFvblNlY3VyZSBDby4sIEx0ZC4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqB0MsUuAi7pWVmRWaCS7kAactycMghmOM7RiMbmXyHmatXJbrtOlNrGH8Xl4fdkCJjyUE2829zQy+lTJ2O3Uo3Nn7zK3+3Um9nDQXN2tapambthOXs0aHjnRCtuLMOSPlAx06o0yHP1nOGaV7hfY9PyJjIVh9Lk/oFp5A+wsi0wiQ+INMDrm/6xZrooEY7/TLMnE4v+nr+cpIf3hSrvI1gGTykFtGCy2Le1huqaTKkE9K0CF/Sd8Kvebj6R+MhlieDXiMZXZD++pRmd4cAmGAmnGn4YdJMyh16TCccPjT60KkMv84uNVjXBvnar8ZlzRQSgIhwp1KkRiMErMbVWCnAgMBAAGjgcwwgckwHQYDVR0OBBYEFPzIDKwqK4PCklaP6Mq4YXdq8McyMIGZBgNVHSMEgZEwgY6AFPzIDKwqK4PCklaP6Mq4YXdq8McyoWukaTBnMQswCQYDVQQGEwJLUjEdMBsGA1UEChMUUmFvblNlY3VyZSBDby4sIEx0ZC4xGjAYBgNVBAsTEVF1YWxpdHkgQXNzdXJhbmNlMR0wGwYDVQQDExRSYW9uU2VjdXJlIENvLiwgTHRkLoIJALcMNEp1tPYgMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAHBRlEB4nu/gHwVFRzqbFOloR7aB0xIaMDykMWtovXHUQcTmmGyYQn0bMWaGVCD7SgRh1FisfciJzLP7f8OI5f7rA2tiBZD1PBtLMU7MytGIYlV/gcfWPbnqBVsKDm15AEUqH7ZahOm7np4d5Fr87r1bj2baXQPKSNd9yjh89fl6LthWLEQRYKKwhPYAA/QkeB2RE9MftmuOXJ6MnYyyx5xEZK2ofqwrRBvDmV/PjwdCSxhloiJVFHrp8lKPCsZywJ3v9IPpudjgBQ7SWqhDcPNo2diGB2dQ252g36K1H7u3aT9Xha33MFQXTTEDzVDhaXzaGk7X6T9v25dsOyOaLAo=-----END CERTIFICATE-----"; rng = new SecureRandom(); var mKey = new Array(); for(var i=0; keyboardLayouts.length>i; i++){ mKey[keyboardLayouts[i]] = null; } this.now = null; this.isPause = false; this.transkeyUuid; this.isMobile=false; this.isMSIE=false; this.isOpera=false; this.isSafari=false; this.isMSIE6=false; this.crtPublicKey=""; var genSessionKey = ""; var userAgent = navigator.userAgent; if(!useSession) { var qwertySize = ""; var numberSize = ""; } if(userAgent.indexOf('Macintosh') > 0||userAgent.indexOf('Linux') > 0||userAgent.indexOf('Windows') > 0) this.isMobile = false; else this.isMobile = true; if (userAgent.indexOf("iPad") > 0 ||userAgent.indexOf("iPhone") > 0 || userAgent.indexOf("Android") > 0) this.isMobile = true; if (navigator.appName == 'Opera') this.isOpera = true; if (userAgent.indexOf("MSIE") > 0) this.isMSIE = true; if (userAgent.indexOf("Safari") > 0) this.isSafari=true; if(userAgent.indexOf("Chrome") > 0 ) this.isSafari=false; if(userAgent.indexOf("MSIE 6")>0) this.isMSIE6=true; this.getPKey = function(){ var pKey = _x509_getPublicKeyHexArrayFromCertPEM(cert_pub); var PKey = new Array(); PKey["n"] = pKey[0]; PKey["k"] = 256; // length of n in bytes PKey["e"] = pKey[1]; return PKey; }; this.getCertPublicKey = function(){ return encodeURIComponent(this.crtPublicKey); }; this.getPublicKey = function(url){ var operation = "getPublicKey"; var request = new XMLHttpRequest(); request.open("POST", url, false); if(useCORS) request.withCredentials = true; request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); request.onreadystatechange = function(){ if (request.readyState == 4 && request.status == 200) { if (request.responseText) { cert_pub = request.responseText; tk.generateSessionKey(transkey_surl); } } }; try { request.send("op=" + operation +"&TK_requestToken="+TK_requestToken+tk_origin); } catch(e) { alert("TransKey error: Cannot load TransKey. Network is not available."); return false; } }; this.generateSessionKey = function(url) { if(genSessionKey.length>0) return; if( verifyCA() == false ){ alert("CA 검증이 실패 하였습니다. 프로그램이 정상작동 하지 않을 수 있습니다."); return false; } var PKey = this.getPKey(); this.transkeyUuid = genKey.tk_sh1prng(); genSessionKey = genKey.GenerateKey(128); for(var i=0; i<16; i++) { sessionKey[i] = Number("0x0" + genSessionKey.charAt(i)); } var encSessionKey = this.phpbb_encrypt2048(genSessionKey, PKey.k, PKey.e, PKey.n); var licType = 0; if(!useSession) var operation = "getKeyInfo"; else var operation = "setSessionKey"; var request = new XMLHttpRequest(); request.open("POST", url, false); if(useCORS) request.withCredentials = true; request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); request.onreadystatechange = function(){ if (request.readyState == 4 && request.status == 200) { if(request.responseText.indexOf("LicenseError")>-1){ var errCodes = request.responseText.split("="); tk.alert(errCodes[1]); tk= null; return false; } if (request.responseXML) { var result = request.responseXML.firstChild; var res = null; var returns = "return ["; for(var i=0; keyboardLayouts.length>i; i++){ if(i==keyboardLayouts.length-1){ returns += keyboardLayouts[i]+","; }else{ returns += keyboardLayouts[i]+","; } } returns += "]"; for ( var i = 0; i < result.childNodes.length; i++) { var node = result.childNodes[i]; if (node.tagName == "script") { for ( var j = 0; j < node.childNodes.length; j++) { if(node.childNodes[j].nodeValue.length>10){ res = ( new Function( Key+node.childNodes[j].nodeValue.replace("//", "") +returns ) )(); licType = ( new Function( Key+node.childNodes[j].nodeValue.replace("//", "") +"return licType" ) )(); licExpiredDate = ( new Function( Key+node.childNodes[j].nodeValue.replace("//", "") +"return licExpiredDate" ) )(); if(!useSession) { qwertySize = ( new Function( Key+node.childNodes[j].nodeValue.replace("//", "") +"return qwertySize" ) )(); numberSize = ( new Function( Key+node.childNodes[j].nodeValue.replace("//", "") +"return numberSize" ) )(); } } } } } for(var i=0; keyboardLayouts.length>i; i++){ mKey[keyboardLayouts[i]] = res[i]; } var year = licExpiredDate.substr(0,4); var month = licExpiredDate.substr(5,2); var day = licExpiredDate.substr(8,2); licExpiredDate = "만료 날짜 : " + year + "년" + month + "월" + day + "일" if(licType == 1) { licenseType = "임시 라이선스"; } } } }; try { request.send("op=" + operation + "&key=" + encSessionKey + "&transkeyUuid=" + this.transkeyUuid+ "&useCert=" + useCert+ "&mode=common"+"&TK_requestToken="+TK_requestToken+tk_origin); } catch(e) { alert("TransKey error: Cannot load TransKey. Network is not available."); return false; } }; this.resetToken = function(url){ var request = new XMLHttpRequest(); if(useCORS) request.withCredentials = true; request.open("GET", url+"?op=getToken&"+new Date().getTime()+tk_origin, false); request.onreadystatechange = function(){ if (request.readyState == 4 && request.status == 200) { TK_requestToken = request.responseText.split("=")[1]; TK_requestToken = TK_requestToken.replace(";",""); tk.resetSessionKey(transkey_surl); } }; try { request.send(); } catch(e) { alert("TransKey error: Cannot load TransKey. Network is not available."); return false; } } this.resetSessionKey = function(url){ if( verifyCA() == false ){ alert("CA 검증이 실패 하였습니다. 프로그램이 정상작동 하지 않을 수 있습니다."); return false; } var PKey = this.getPKey(); var encSessionKey = this.phpbb_encrypt2048(genSessionKey, PKey.k, PKey.e, PKey.n); var operation = "setSessionKey"; var request = new XMLHttpRequest(); if(useCORS) request.withCredentials = true; request.open("POST", url, false); request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); request.onreadystatechange = function(){ if (request.readyState == 4 && request.status == 200) { if(request.responseText.indexOf("LicenseError")>-1){ var errCodes = request.responseText.split("="); tk.alert(errCodes[1]); tk= null; return false; } } }; try { request.send("op=" + operation + "&key=" + encSessionKey + "&transkeyUuid=" + this.transkeyUuid+ "&useCert=" + useCert+ "&mode=common"+"&TK_requestToken="+TK_requestToken+tk_origin); } catch(e) { alert("TransKey error: Cannot load TransKey. Network is not available."); return false; } }; this.inputFillEncData = function(input){ var tkObj = transkey[input.id]; var hidden = tkObj.hidden.value; var hmac = ""; var maxSize = input.value.length+genKey.tk_getrnd_int()%10; var geo = "d 0 0"; for(var j=input.value.length; j