1(function(jQuery) { 2if (typeof jQuery === "undefined") alert("jQuery is not available!!!"); 3 4if (typeof Delfino === "undefined") { 5var currentElement = null; 6function setFocusBack() { 7 if(currentElement) { 8 if(currentElement.focus) { 9 currentElement.focus(); 10 } 11 currentElement = null; 12 } 13} 14 15var _SignType = { 16 LOGIN: 'LOGIN', 17 AUTH: 'AUTH', 18 AUTH2: 'AUTH2', 19 SIMPLE: 'SIMPLE', 20 CONFIRM: 'CONFIRM' 21}; 22 23var _Delfino = { 24 jQuery : jQuery, 25 completes : {}, 26 completeHandle : ((new Date().getTime())%100000), 27 28 inited: false, 29 30 SignType: _SignType, 31 32 addComplete:function(complete) 33 { 34 complete = complete || {}; 35 if( typeof complete === "function" ){ 36 complete = {complete:complete}; 37 } 38 39 var handle = this.completeHandle++; 40 this.completes[handle] = complete; 41 return handle; 42 }, 43 getComplete:function(handle) 44 { 45 var complete = this.completes[handle]; 46 return complete; 47 }, 48 removeComplete:function(handle) 49 { 50 delete this.completes[handle]; 51 }, 52 emptyComplete:function(handle) 53 { 54 var size = 0, key; 55 for (key in this.completes) { 56 if (this.completes.hasOwnProperty(key)) size++; 57 } 58 return size === 0; 59 }, 60 61 isInstall:function (goInstall,completeCallback) { 62 var ret = this.init(goInstall); 63 if(completeCallback != undefined) 64 completeCallback(ret); 65 }, 66 67 isNativeAppMode: function() { 68 var _VPCGClient = window.VPCGClientApp || (top && top.VPCGClientApp); 69 var _DelfinoG10Sign = window.DelfinoG10Sign; 70 71 if(_VPCGClient && _DelfinoG10Sign && typeof _DelfinoG10Sign === 'function') { 72 return true; 73 } 74 return false; 75 }, 76 77 /** 78 * WizIn Delfino ÃʱâÈÇϱâ À§ÇÑ ÇÔ¼öÀÌ´Ù. 79 */ 80 init:function(installCheck) 81 { 82 currentElement = document.activeElement; 83 if(this.inited) return true; 84 85 if(DCrypto == null) { 86 if(DCrypto == null) { 87 if (typeof installCheck != "undefined" && installCheck == false) return false; 88 if (DelfinoConfig.installMessage.NO != "") { 89 alert(DelfinoConfig.installMessage.NO); 90 } 91 return false; 92 } 93 } 94 if(DCrypto.init(installCheck)==false) return false; 95 96 97 var config=""; 98 config += "IssuerCertFilter="; 99 config += encodeURIComponent(DelfinoConfig.issuerCertFilter); 100 config += "&PolicyOidCertFilter="; 101 config += encodeURIComponent(DelfinoConfig.policyOidCertFilter); 102 103 if(DelfinoConfig.hsmUsingDrivers!=null){ 104 config += "&hsm.usingDrivers="; 105 config += encodeURIComponent(DelfinoConfig.hsmUsingDrivers); 106 } 107 108 if(DelfinoConfig.slmNPKIAuthLogging!=null){ 109 config += "&slmLoggingFunctionName="; 110 config += encodeURIComponent(DelfinoConfig.slmNPKIAuthLogging); 111 } 112 if(DelfinoConfig.forceScreenKeyboard!=null){ 113 config += "&forceScreenKeyboard="; 114 config += encodeURIComponent(DelfinoConfig.forceScreenKeyboard); 115 } 116 117 DCrypto.setConfig(config); 118 this.inited = true; 119 120 try{ 121 var properties = {}; 122 123 properties["cacheCertStore"] ="" + DelfinoConfig.cacheCertStore; 124 properties["certStoreFilter"] = DelfinoConfig.certStoreFilter; 125 if( DelfinoConfig.prepareCertStore!=null ) properties["prepareCertStore"] = DelfinoConfig.prepareCertStore; //v1.2.3.0 over 126 if( DelfinoConfig.disableCertStore!=null ) properties["disableCertStore"] = DelfinoConfig.disableCertStore; 127 128 //alert(ubikeyConfig.enable+"\n"+ubikeyConfig.download+"\n"+ubikeyConfig.version); 129 if(navigator.userAgent.match(/Mac OS X/i)) { 130 properties["ubikey.enable"] = ubikeyConfigMac.enable; 131 properties["ubikey.download"] = ubikeyConfigMac.download; 132 properties["ubikey.version"] = ubikeyConfigMac.version; 133 properties["ubikey.update"] = ubikeyConfigMac.update; 134 properties["ubikey.securekeyboard"] = ubikeyConfigMac.securekeyboard; 135 } 136 else if(navigator.userAgent.match(/Linux/i)) { 137 properties["ubikey.enable"] = ubikeyConfigLinux.enable; 138 properties["ubikey.download"] = ubikeyConfigLinux.download; 139 properties["ubikey.version"] = ubikeyConfigLinux.version; 140 properties["ubikey.update"] = ubikeyConfigLinux.update; 141 properties["ubikey.securekeyboard"] = ubikeyConfigLinux.securekeyboard; 142 } 143 else { 144 properties["ubikey.enable"] = ubikeyConfig.enable; 145 if(navigator.platform == "Win64") { 146 properties["ubikey.download"] = ubikeyConfig.download_x64; 147 properties["ubikey.version"] = ubikeyConfig.version_x64; 148 } 149 else { 150 properties["ubikey.download"] = ubikeyConfig.download; 151 properties["ubikey.version"] = ubikeyConfig.version; 152 } 153 properties["ubikey.update"] = ubikeyConfig.update; 154 properties["ubikey.securekeyboard"] = ubikeyConfig.securekeyboard; 155 } 156 157 //alert(mobisignConfig.enable+"\n"+mobisignConfig.download+"\n"+mobisignConfig.version); 158 properties["mobisign.enable"] = mobisignConfig.enable; 159 properties["mobisign.download"] =mobisignConfig.download; 160 properties["mobisign.version"] = mobisignConfig.version; 161 properties["mobisign.sitecode"] = mobisignConfig.sitecode; 162 properties["mobisign.aclist"] = mobisignConfig.aclist; 163 164 if(DelfinoConfig.smartone!=null){ 165 properties["smartone.enable"] = "" + DelfinoConfig.smartone.enable; 166 if(DelfinoConfig.smartone.version!=null) properties["smartone.version"] = DelfinoConfig.smartone.version; 167 properties["smartone.download"] = DelfinoConfig.smartone.download; 168 properties["smartone.host"] = DelfinoConfig.smartone.host; 169 properties["smartone.port"] = "" + DelfinoConfig.smartone.port; 170 properties["smartone.siteCode"] = DelfinoConfig.smartone.siteCode; 171 } 172 173 if( DelfinoConfig.usim!=null ) { 174 properties["usim.usingDrivers"] = DelfinoConfig.usim.usingDrivers; 175 properties["usim.certSelector"] = DelfinoConfig.usim.certSelector; 176 properties["usim.displayDataAtMobile"] = "" + DelfinoConfig.usim.displayDataAtMobile; 177 properties["usim.siteDomain"] = DelfinoConfig.usim.siteDomain; 178 properties["usim.disableInHSM"] = "" + DelfinoConfig.usim.disableInHSM; 179 180 if(DelfinoConfig.usim.raon!=null){ 181 properties["usim.raon.siteCode"] = DelfinoConfig.usim.raon.siteCode; 182 properties["usim.raon.displayDataAtMobile"] = "" + DelfinoConfig.usim.raon.displayDataAtMobile; 183 properties["usim.raon.download"] = DelfinoConfig.usim.raon.download; 184 } 185 186 if(DelfinoConfig.usim.dream!=null){ 187 properties["usim.dream.download"] = DelfinoConfig.usim.dream.download; 188 properties["usim.dream.displayDataAtMobile"] = "" + DelfinoConfig.usim.dream.displayDataAtMobile; 189 properties["usim.dream.host"] = DelfinoConfig.usim.dream.host; 190 properties["usim.dream.port"] = DelfinoConfig.usim.dream.port; 191 } 192 193 if(DelfinoConfig.usim.sumion!=null){ 194 properties["usim.sumion.download"] = DelfinoConfig.usim.sumion.download; 195 properties["usim.sumion.displayDataAtMobile"] = "" + DelfinoConfig.usim.sumion.displayDataAtMobile; 196 properties["usim.sumion.host"] = DelfinoConfig.usim.sumion.host; 197 properties["usim.sumion.port"] = DelfinoConfig.usim.sumion.port; 198 } 199 } 200 201 if( DelfinoConfig.safehard!=null ) { 202 properties["safehard.order"] = "" + DelfinoConfig.safehard.order; 203 properties["safehard.version"] = DelfinoConfig.safehard.version; 204 properties["safehard.download"] = DelfinoConfig.safehard.download; 205 properties["safehard.downloadNormal"] = DelfinoConfig.safehard.downloadNormal; 206 properties["safehard.cloudUrl"] = DelfinoConfig.safehard.cloudUrl; 207 properties["safehard.secureKeyboardConfig"] = JSON.stringify(DelfinoConfig.safehard.secureKeyboardConfig); 208 } 209 210 if(DelfinoConfig.secureDisk!=null){ 211 properties["secureDisk.order"] = "" + DelfinoConfig.secureDisk.order; 212 properties["secureDisk.enable"] = "" + DelfinoConfig.secureDisk.enable; 213 properties["secureDisk.version"] = DelfinoConfig.secureDisk.version; 214 properties["secureDisk.download"] = DelfinoConfig.secureDisk.download; 215 } 216 217 if(DelfinoConfig.EA!=null){ 218 if (!Delfino.isSupportedEA()) DelfinoConfig.EA.enable = false; 219 properties["EA.enable"] = "" + DelfinoConfig.EA.enable; 220 } 221 222 if(DelfinoConfig.myPassword!=null){ 223 properties["myPassword.enable"] = "" + DelfinoConfig.myPassword.enable; 224 } 225 226 if(DelfinoConfig.connected!=null){ 227 properties["connected.servers"] = JSON.stringify(DelfinoConfig.connected); 228 } 229 230 if(DelfinoConfig.oneSign!=null){ 231 properties["oneSign.enable"] = "" + DelfinoConfig.oneSign.enable; 232 } 233 234 if( DelfinoConfig.KTB!=null && DelfinoConfig.KTB.DGBank!=null) { 235 properties["KTB.DGBank.version"] = DelfinoConfig.KTB.DGBank.version; 236 properties["KTB.DGBank.ip"] = DelfinoConfig.KTB.DGBank.ip; 237 properties["KTB.DGBank.port"] = DelfinoConfig.KTB.DGBank.port; 238 properties["KTB.DGBank.publickey"] = DelfinoConfig.KTB.DGBank.publickey; 239 } 240 241 242 if(DelfinoConfig.style!=null){ 243 properties["style.button"] = JSON.stringify(DelfinoConfig.style.button); 244 properties["style.tab"] = JSON.stringify(DelfinoConfig.style.tab); 245 246 if(DelfinoConfig.style.keyboard) { 247 if(DelfinoConfig.style.keyboard.logoUrl) 248 DelfinoConfig.style.keyboard.logo = DC_get(DelfinoConfig.style.keyboard.logoUrl, Delfino.getModule()); 249 properties["style.keyboard"] = JSON.stringify(DelfinoConfig.style.keyboard); 250 } 251 } 252 253 254 properties["securekeyboard.enable"] = "" + secureKeyboardConfig.enable; 255 properties["securekeyboard.products"] = secureKeyboardConfig.product; 256 257 var productArray = secureKeyboardConfig.product.split(','); 258 //properties["securekeyboard.product"] = productArray[0]; //v3140 below 259 properties["securekeyboard.product"] = productArray[productArray.length-1]; //v3140 below 260 261 properties["securekeyboard.toggle"] = "" + secureKeyboardConfig.toggle; 262 properties["securekeyboard.showMessage"] = "" + secureKeyboardConfig.showMessage; 263 properties["uiType"] =DelfinoConfig.uiType; 264 properties["enableCheckVid"] ="" + DelfinoConfig.enableCheckVid; 265 properties["passwordCounter"] = DelfinoConfig.passwordCounter; 266 properties["installError"] = "" + DelfinoConfig.installError; 267 268 if(secureKeyboardConfig.option != null) properties["securekeyboard.option"] = JSON.stringify(secureKeyboardConfig.option); 269 270 if(DelfinoConfig.enableHsmGuide != null) properties["enableHsmGuide"] = "" + DelfinoConfig.enableHsmGuide; 271 272 if(DelfinoConfig.license!=null) properties["license"] = DelfinoConfig.license; 273 274 if(DelfinoConfig.sitename!=null) properties["sitename"] = DelfinoConfig.sitename; 275 276 if(DelfinoConfig.multiDomain!=null) properties["domain"] = DelfinoConfig.multiDomain; 277 278 if(DelfinoConfig.changePasswordPolicy!=null) properties["changePasswordPolicy"]
278= DelfinoConfig.changePasswordPolicy; 279 280 if(DelfinoConfig.lastUsedCertFirst!=null) properties["lastUsedCertFirst"] = DelfinoConfig.lastUsedCertFirst; 281 282 if(DelfinoConfig.cloudcert!=null) { 283 284 properties["cloudcert.enable"] = "" + DelfinoConfig.cloudcert.enable; 285 286 if(DelfinoConfig.cloudcert.encryptedParams!=null) properties["cloudcert.encryptedParams"] = DelfinoConfig.cloudcert.encryptedParams; 287 288 if(DelfinoConfig.cloudcert.encryptedParams_test!=null) properties["cloudcert.encryptedParams_test"] = DelfinoConfig.cloudcert.encryptedParams_test; 289 290 if(DelfinoConfig.cloudcert.cloudMode!=null) properties["cloudcert.cloudMode"] = DelfinoConfig.cloudcert.cloudMode; 291 292 if(DelfinoConfig.cloudcert.mode!=null) properties["cloudcert.mode"] = DelfinoConfig.cloudcert.mode; 293 } 294 295 if(DelfinoConfig.closeOnWrongPassword!=null) properties["closeOnWrongPassword"] = DelfinoConfig.closeOnWrongPassword; 296 297 this.setProperties(properties); 298 299 }catch(e){ alert("Delfino.init()\n" + e); } 300 301 if(DelfinoConfig.lang != null){ 302 this.setLang(DelfinoConfig.lang); 303 } 304 //else{ 305 // this.setLang(_Delfino_SystemLang); 306 //} 307 308 309 return true; 310 }, 311 setProperties:function(properties) { 312 for(var key in properties) { 313 if(typeof properties[key] !== "function"){ 314 DCrypto.setProperty(key, properties[key]); 315 } 316 } 317 }, 318 319 /** 320 * °øÀÎÀÎÁõ¼ ·Î±×ÀÎÀ» À§ÇÑ ÀüÀÚ¼¸íµ¥ÀÌÅ͸¦ »ý¼ºÇÏ¿© ¼¹ö·Î Àü¼ÛÇÑ´Ù. 321 * @param {HTMLFormElement} form ¼¸íÇÒ ³»¿ëÀ» °¡Áö°í ÀÖ´Â HTMLFormElement 322 * @param {function} successCB ÀüÀÚ¼¸í ¼º°ø½Ã ÀüÀÚ¼¸í µ¥ÀÌÅ͸¦ Á÷Á¢¹Þ¾Æ¼ ó¸®ÇÒ ¶§ »ç¿ëÇÏ´Â Äݹé ÇÔ¼öÀÌ´Ù. 323 * ÇÔ¼ö Çü½ÄÀº successCB(pkcs7, vid_random)ÀÌ´Ù. 324 * ÀÌ ÀÎÀÚ¸¦ ¼³Á¤ÇßÀ» °æ¿ì¿¡´Â ¼¸íµ¥ÀÌÅ͸¦ ¼¹ö·Î Àü¼ÛÇÏÁö ¾Ê´Â´Ù. 325 */ 326 327 generatePKCS7SignedDataSuccessCallback:null, 328 generatePKCS7SignedDataErrorCallback:null, 329 330 loginForm:function(form, successCB, errorCB) 331 { 332 this.inited = false; //·Î±×Àνà ¹«Á¶°Ç ÃʱâÈ Ã³¸® 333 334 if(this.init() == false) return; 335 336 this.generatePKCS7SignedDataSuccessCallback = successCB; 337 this.generatePKCS7SignedDataErrorCallback = errorCB; 338 if(this.generatePKCS7SignedDataSuccessCallback==null){ 339 if(jQuery("#Delfino_PKCS7_form").length==0){ 340 jQuery('body').append('<form id="Delfino_PKCS7_form"><input type="hidden" name="PKCS7"><input type="hidden" name="VID_RANDOM"></form>'); 341 } 342 var pkcs7Form = jQuery("#Delfino_PKCS7_form")[0]; 343 344 pkcs7Form.method = form.method; 345 pkcs7Form.action = form.action; 346 pkcs7Form.target = form.target; 347 } 348 349 var data = jQuery(form).serialize(); 350 351 //alert(data); 352 353 DCrypto.resetCertificate(); 354 355 this.loadLogoImage(DelfinoConfig.logoImageUrl); 356 357 if(this.getModule() == "G2"){ 358 DCrypto.generatePKCS7SignedData(data, "Delfino_generatePKCS7SignedData_success_callback", "Delfino_error_callback", options); 359 return; 360 } 361 362 //G3, G4 363 var options = {}; 364 options.signedAttribute = "certStoreType"; 365 options.attributeAsData = true; 366 options.resetCertificate = true; 367 options.cacheCert = true; 368 369 this.sign(data, options, function(result){ 370 if(result.status == 1){ 371 Delfino_generatePKCS7SignedData_success_callback(result.signData, result.vidRandom); 372 } 373 else{ 374 Delfino_error_callback(result.status, result.message); 375 } 376 }); 377 }, 378 379 /** 380 * PKCS#7 ÀüÀÚ¼¸íµ¥ÀÌÅ͸¦ »ý¼ºÇÏ¿© ¼¹ö·Î Àü¼ÛÇÑ´Ù. 381 * @param {HTMLFormElement} form ¼¸íÇÒ ³»¿ëÀ» °¡Áö°í ÀÖ´Â HTMLFormElement 382 * @param {function}
382 successCB ÀüÀÚ¼¸í ¼º°ø½Ã ÀüÀÚ¼¸í µ¥ÀÌÅ͸¦ Á÷Á¢¹Þ¾Æ¼ ó¸®ÇÒ ¶§ »ç¿ëÇÏ´Â Äݹé ÇÔ¼öÀÌ´Ù. 383 * ÇÔ¼ö Çü½ÄÀº successCB(pkcs7, vid_random)ÀÌ´Ù. 384 * ÀÌ ÀÎÀÚ¸¦ ¼³Á¤ÇßÀ» °æ¿ì¿¡´Â ¼¸íµ¥ÀÌÅ͸¦ ¼¹ö·Î Àü¼ÛÇÏÁö ¾Ê´Â´Ù. 385 * 386 */ 387 388 signForm : function(form, successCB, errorCB) 389 { 390 if(this.init() == false) return; 391 392 try{ 393 this.generatePKCS7SignedDataSuccessCallback = successCB; 394 this.generatePKCS7SignedDataErrorCallback = errorCB; 395 if(this.generatePKCS7SignedDataSuccessCallback==null){ 396 if(jQuery("#Delfino_PKCS7_form").length==0){ 397 //alert("delfino_form not found"); 398 jQuery('body').append('<form id="Delfino_PKCS7_form"><input type="hidden" name="PKCS7"><input type="hidden" name="VID_RANDOM"></form>'); 399 } 400 var pkcs7Form = jQuery("#Delfino_PKCS7_form")[0]; 401 402 pkcs7Form.method = form.method; 403 pkcs7Form.action = form.action; 404 pkcs7Form.target = form.target; 405 } 406 407 var data = jQuery(form).serialize(); 408 var rselectTextarea = /^(?:select|textarea)/i; 409 var rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i; 410 411 var formats = jQuery(form).map(function(){ 412 return this.elements ? jQuery.makeArray(this.elements) : this; 413 }).filter(function(){ 414 return this.name && !this.disabled && 415 (this.checked || rselectTextarea.test(this.nodeName) || 416 rinput.test(this.type)); 417 }).map(function(i, elem){ 418 var val = jQuery(this).attr('format'); 419 420 return val == null ? null : { 421 name: elem.name, 422 value: val 423 }; 424 }).get(); 425 426 var formatsParam = jQuery.param(formats); 427 428 this.loadLogoImage(DelfinoConfig.logoImageUrl); 429 430 if(this.getModule() == "G2"){ 431 if(formatsParam.length>0){ 432 data = data + "&" + "__USER_CONFIRM_FORMAT=" + encodeURIComponent(formatsParam) ; 433 } 434 DCrypto.generatePKCS7SignedData(data, "Delfino_generatePKCS7SignedData_success_callback", "Delfino_error_callback"); 435 return; 436 } 437 438 //G3, G4 439 var options = {}; 440 options.signedAttribute = "certStoreType"; 441 options.attributeAsData = true; 442 if(formatsParam.length>0){ 443 options.format = formatsParam; 444 } 445 options.dataType = "form-urlencoded"; 446 447 this.sign(data, options, function(result){ 448 if(result.status == 1){ 449 Delfino_generatePKCS7SignedData_success_callback(result.signData, result.vidRandom); 450 } 451 else{ 452 Delfino_error_callback(result.status, result.message); 453 } 454 }); 455 }catch(e){ 456 alert("signForm:"+e); 457 } 458 }, 459 460 signKeyValue:function(keys, values, formats, delimeter, successCB, errorCB) 461 { 462 if(this.init() == false) return; 463 464 if(successCB==null){ 465 alert("successCB can NOT be null"); 466 return; 467 } 468 if( keys == null ){ 469 alert("keys can NOT be null"); 470 return; 471 } 472 if( delimeter == null ){ 473 alert("delimeter can NOT be null"); 474 return; 475 } 476 477 var keyArray = keys.split(delimeter); 478 var valueArray = values.split(delimeter); 479 480 var formatArray = null; 481 if(formats!=null && formats.length>0){ 482 formatArray = formats.split(delimeter); 483 } 484 485 if(keyArray.length != valueArray.length || (formatArray!=null && valueArray.length!= formatArray.length)){ 486 alert("signKeyValue invalid argument"); 487 return; 488 } 489 490 var data = ""; 491 var format = ""; 492 for(var i=0; i<keyArray.length; i++){ 493 if(data.length>0){ 494 data += "&"; 495 } 496 data += encodeURIComponent(keyArray[i]); 497 data += "="; 498 data += encodeURIComponent(valueArray[i]); 499 500 if(format.length>0){ 501 format += "&"; 502 } 503 if (formatArray!=null) { 504 505 format += encodeURIComponent(keyArray[i]); 506 format += "="; 507 format += encodeURIComponent(formatArray[i]); 508 } 509 } 510 511 this.generatePKCS7SignedDataSuccessCallback = successCB;
512 this.generatePKCS7SignedDataErrorCallback = errorCB; 513 514 this.loadLogoImage(DelfinoConfig.logoImageUrl); 515 if(this.getModule() == "G2"){ 516 if(format.length>0){ 517 data = data + "&" + "__USER_CONFIRM_FORMAT=" + encodeURIComponent(format) ; 518 } 519 DCrypto.generatePKCS7SignedData(data, "Delfino_generatePKCS7SignedData_success_callback", "Delfino_error_callback"); 520 return; 521 } 522 523 //G3, G4 524 var options = {}; 525 options.signedAttribute = "certStoreType"; 526 options.attributeAsData = true; 527 if(format.length>0){ 528 options.format = format; 529 options.signedAttribute += ",format"; 530 } 531 options.dataType = "form-urlencoded"; 532 533 this.sign(data, options, function(result){ 534 if(result.status == 1){ 535 Delfino_generatePKCS7SignedData_success_callback(result.signData, result.vidRandom); 536 } 537 else{ 538 Delfino_error_callback(result.status, result.message); 539 } 540 }); 541 }, 542 543 multiSignString : function(datas, delimeter, successCB, errorCB) 544 { 545 if(this.init() == false) return; 546 547 this.generatePKCS7SignedDataSuccessCallback = successCB; 548 this.generatePKCS7SignedDataErrorCallback = errorCB; 549 550 this.loadLogoImage(DelfinoConfig.logoImageUrl); 551 552 if(this.getModule() == "G2"){ 553 DCrypto.generateMultiPKCS7SignedData(datas, delimeter, "Delfino_generatePKCS7SignedData_success_callback", "Delfino_error_callback"); 554 return; 555 } 556 557 //G3, G4 558 var options = {}; 559 options.multiSign = true; 560 options.multiSignDelimiter = delimeter; 561 options.signedAttribute = "signingTime"; 562 563 this.sign(data, options, function(result){ 564 if(result.status == 1){ 565 Delfino_generatePKCS7SignedData_success_callback(result.signData, result.vidRandom); 566 } 567 else{ 568 Delfino_error_callback(result.status, result.message); 569 } 570 }); 571 572 }, 573 574 575 /** 576 * document.write¸¦ ÀÌ¿ëÇØ¼ object ű׷ΠWizIn Delfino PluginÀ» »ý¼ºÇÑ´Ù. 577 */ 578 createObject:function() 579 { 580 document.write(DCrypto.getObjectTag()); 581 }, 582 583 /** 584 * WizIn Delfino PluginÀ» »ý¼ºÇϱâ À§ÇÑ object tag ½ºÆ®¸µÀ» ¸®ÅÏÇÑ´Ù. 585 * @return {String} object tag ½ºÆ®¸µ 586 */ 587 getObjectTag:function() 588 { 589 return DCrypto.getObjectTag(); 590 }, 591 592 /** 593 * °øÀÎÀÎÁõ¼ °ü¸®Ã¢À» ¶ç¿î´Ù. 594 */ 595 manageCertificate:function(options, complete) 596 { 597 var optionsComplete = this._fixOptionsComplete(options, complete); 598 options = optionsComplete.options; 599 complete = optionsComplete.complete; 600 601 if(this.init() == false) return; 602 if (typeof complete == "undefined") { 603 DCrypto.manageCertificate(); 604 } else { 605 options = options || {}; 606 var handle = this.addComplete(complete); 607 DCrypto.manageCertificate(handle, JSON.stringify(options)); 608 } 609 }, 610 611 loadLogoImage:function(url) 612 { 613 var logoImage = null; 614 615 if(DCrypto.getVersion != null && typeof DelfinoConfig.logoImageUrl_428x81 != "undefined"){ 616 var version = DCrypto.getVersion(); 617 if(version!=null && version!=""){ 618 if(DC_compareVersion(version, "1.2.2.0") >= 0) { 619 var newImageUrl = DelfinoConfig.logoImageUrl_428x81; 620 logoImage = DC_get(newImageUrl, Delfino.getModule()); 621 } 622 } 623 } 624 if(logoImage==null){ 625 logoImage = DC_get(url, Delfino.getModule()); 626 } 627 if(logoImage!=null){ 628 DCrypto.setProperty("delfino.logoimage", logoImage); 629 } 630 }, 631 632 requestCertificate_complete_callback:null, 633 requestCertificate:function(ca, referenceValue, secretValue, complete) 634 { 635 if(this.init() == false) return; 636 637 //this.loadLogoImage(DelfinoConfig.logoImageUrl); 638 639 this.requestCertificate_complete_callback = complete; 640 var host; 641 var port; 642 if(ca == "yessign"){ 643 host = DelfinoConfig.yessignCaHost; 644 port = DelfinoConfig.yessignCaPort; 645 } 646 else if(ca == "crosscert"){ 647 host = DelfinoConfig.crosscertCaHost; 648 port = DelfinoConfig.crosscertCaPort; 649 } 650 else if(ca == "signkorea"){ 651 host = DelfinoConfig.signkoreaCaHost; 652 port = DelfinoConfig.signkoreaCaPort; 653 } 654 else if(ca == "yessignWebCmp"){ 655 if(this.getModule() != "G4" && this.getModule() != "G5" && this.getModule() != "G10"){
656 alert("Only G4, G5, G10 support WebCMP"); 657 return; 658 } 659 host = DelfinoConfig.yessignWebCmpUrl; 660 port = 0; 661 } 662 else if(ca === 'fincert') { 663 664 } 665 else{ 666 alert("not supported ca:" + ca); 667 return; 668 } 669 if(this.getModule() == "G2"){ 670 DCrypto.requestCertificate(ca, host, port, referenceValue, secretValue, "Delfino_requestCertificate_complete_callback"); 671 return; 672 } 673 674 var handle = this.addComplete(function(result){ 675 complete(result.status, result.message); 676 }); 677 var options = {}; 678 DCrypto.requestCertificate2(handle, ca, host, port, referenceValue, secretValue, JSON.stringify(options)); 679 }, 680 updateCertificate_complete_callback:null, 681 updateCertificate:function(ca, complete) 682 { 683 if(this.init() == false) return; 684 685 this.updateCertificate_complete_callback = complete; 686 var host; 687 var port; 688 if(ca == "yessign"){ 689 host = DelfinoConfig.yessignCaHost; 690 port = DelfinoConfig.yessignCaPort; 691 } 692 else if(ca == "crosscert"){ 693 host = DelfinoConfig.crosscertCaHost; 694 port = DelfinoConfig.crosscertCaPort; 695 } 696 else if(ca == "signkorea"){ 697 host = DelfinoConfig.signkoreaCaHost; 698 port = DelfinoConfig.signkoreaCaPort; 699 } 700 else if(ca == "yessignWebCmp"){ 701 if(this.getModule() != "G4" && this.getModule() != "G5" && this.getModule() != "G10"){
702 alert("Only G4, G5, G10 support WebCMP"); 703 return; 704 } 705 host = DelfinoConfig.yessignWebCmpUrl; 706 port = 0; 707 } 708 else if(ca === 'fincert') { 709 710 } 711 else{ 712 alert("not supported ca:" + ca); 713 return; 714 } 715 if(this.getModule() == "G2"){ 716 DCrypto.updateCertificate(ca, host, port, "Delfino_updateCertificate_complete_callback"); 717 return; 718 } 719 720 var handle = this.addComplete(function(result){ 721 complete(result.status, result.message); 722 }); 723 var options = {}; 724 725 DCrypto.updateCertificate2(handle, ca, host, port, JSON.stringify(options)); 726 }, 727 728 requestCertificate2:function(ca, referenceValue, secretValue, options, complete) 729 { 730 var optionsComplete = this._fixOptionsComplete(options, complete); 731 options = optionsComplete.options; 732 complete = optionsComplete.complete; 733 734 if(this.init() == false) return; 735 736 var host; 737 var port; 738 if(ca == "yessign"){ 739 host = DelfinoConfig.yessignCaHost; 740 port = DelfinoConfig.yessignCaPort; 741 } 742 else if(ca == "crosscert"){ 743 host = DelfinoConfig.crosscertCaHost; 744 port = DelfinoConfig.crosscertCaPort; 745 } 746 else if(ca == "signkorea"){ 747 host = DelfinoConfig.signkoreaCaHost; 748 port = DelfinoConfig.signkoreaCaPort; 749 } 750 else if(ca == "kica"){ 751 host = DelfinoConfig.kicaCaHost; 752 port = DelfinoConfig.kicaCaPort; 753 } 754 else if(ca == "yessignWebCmp"){ 755 if(this.getModule() != "G4" && this.getModule() != "G5" && this.getModule() != "G10"){
756 alert("Only G4, G5, G10 support WebCMP"); 757 return; 758 } 759 host = DelfinoConfig.yessignWebCmpUrl; 760 port = 0; 761 } 762 else if(ca === 'fincert') { 763 764 } 765 else{ 766 alert("not supported ca:" + ca); 767 return; 768 } 769 770 if(options == null) options = {}; 771 if(options.enableKmCert==null && DelfinoConfig.enableKmCert!=null) options.enableKmCert = DelfinoConfig.enableKmCert; 772 773 var handle = this.addComplete(complete); 774 DCrypto.requestCertificate2(handle, ca, host, port, referenceValue, secretValue, JSON.stringify(options)); 775 }, 776 777 updateCertificate2:function(ca, options, complete) 778 { 779 var optionsComplete = this._fixOptionsComplete(options, complete); 780 options = optionsComplete.options; 781 complete = optionsComplete.complete; 782 783 if(this.init() == false) return; 784 785 this.loadLogoImage(DelfinoConfig.logoImageUrl); 786 787 var host; 788 var port; 789 if(ca == "yessign"){ 790 host = DelfinoConfig.yessignCaHost; 791 port = DelfinoConfig.yessignCaPort; 792 } 793 else if(ca == "crosscert"){ 794 host = DelfinoConfig.crosscertCaHost; 795 port = DelfinoConfig.crosscertCaPort; 796 } 797 else if(ca == "signkorea"){ 798 host = DelfinoConfig.signkoreaCaHost; 799 port = DelfinoConfig.signkoreaCaPort; 800 } 801 else if(ca == "kica"){ 802 host = DelfinoConfig.kicaCaHost; 803 port = DelfinoConfig.kicaCaPort; 804 } 805 else if(ca == "yessignWebCmp"){ 806 if(this.getModule() != "G4" && this.getModule() != "G5" && this.getModule() != "G10"){
807 alert("Only G4, G5, G10 support WebCMP"); 808 return; 809 } 810 host = DelfinoConfig.yessignWebCmpUrl; 811 port = 0; 812 } 813 else if(ca === 'fincert') { 814 815 } 816 else{ 817 alert("not supported ca:" + ca); 818 return; 819 } 820 821 if(options == null) options = {}; 822 if(options.enableKmCert==null && DelfinoConfig.enableKmCert!=null) options.enableKmCert = DelfinoConfig.enableKmCert; 823 824 var handle = this.addComplete(complete); 825 DCrypto.updateCertificate2(handle, ca, host, port, JSON.stringify(options)); 826 }, 827 setSecureKeyboard:function(product) 828 { 829 try { 830 secureKeyboardConfig.product = product; 831 } catch(e){ } 832 833 if(this.inited) DCrypto.setProperty("securekeyboard.product", product); 834 }, 835 setVersion:function(version_g2, version_g3) 836 { 837 try { 838 if (version_g2 == null) version_g2 = DelfinoConfig.version_update; 839 if (version_g3 == null) version_g3 = DelfinoConfig.version_update_g3; 840 DelfinoConfig.version_g2 = version_g2; 841 DelfinoConfig.version_g3 = version_g3; 842 843 //handler¹öÀü º¯°æ 844 var handler_version = ""; 845 if (DC_platformInfo.Windows) { 846 handler_version = DelfinoConfig.version_g3.WinIE; 847 if (!DC_browserInfo.MSIE) handler_version = DelfinoConfig.version_g3.WinMoz; 848 } else if (DC_platformInfo.Mac) { 849 handler_version = DelfinoConfig.version_g3.Mac; 850 } else if (DC_platformInfo.Linux) { 851 handler_version = DelfinoConfig.version_g3.Linux; 852 } 853 delfino.conf.handler.version = handler_version; 854 855 //ÇöÀç µ¿ÀÛ¸ðµâ g3,g2¿¡ µû¸¥ ¹öÀü º¯°æ 856 if (this.getModule() == "G3") { 857 DelfinoConfig.version = DelfinoConfig.version_g3; 858 } else { 859 DelfinoConfig.version = DelfinoConfig.version_g2; 860 } 861 window.DC_version = DelfinoConfig.version; 862 this.inited = false; //¹öÀüº¯°æ½Ã ¹«Á¶°Ç ÃʱâÈ Ã³¸® 863 864 //plug-in object Á¦°Å 865 if (document.getElementById("delfinoDiv") != null) jQuery("#delfinoDiv").remove(); 866 867 } catch (e) { } 868 }, 869 setIssuerCertFilter:function(issuers) 870 { 871 try { 872 DelfinoConfig.issuerCertFilter = issuers; 873 } catch(e){ } 874 875 //if(this.init() == false) return; 876 //DCrypto.setProperty("IssuerCertFilter", issuers); 877 if(this.inited) DCrypto.setProperty("IssuerCertFilter", issuers); 878 }, 879 setPolicyOidCertFilter:function(policyOids) 880 { 881 try { 882 DelfinoConfig.policyOidCertFilter = policyOids; 883 } catch(e){ } 884 885 //if(this.init() == false) return; 886 //DCrypto.setProperty("PolicyOidCertFilter", policyOids); 887 if(this.inited) DCrypto.setProperty("PolicyOidCertFilter", policyOids); 888 }, 889 resetCertificate : function() 890 { 891 if(this.init() == false) return; 892 893 DCrypto.resetCertificate(); 894 }, 895 _resetAll: function(options) { 896 if(this.init() == false) return; 897 898 DCrypto._resetAll(options); 899 }, 900 signData : function(data, successCB, errorCB) 901 { 902 if(this.init() == false) return; 903 904 this.generatePKCS7SignedDataSuccessCallback = successCB; 905 this.generatePKCS7SignedDataErrorCallback = errorCB; 906 data = "__DATA=" + encodeURIComponent(data); 907 this.loadLogoImage(DelfinoConfig.logoImageUrl); 908 if(this.getModule() == "G2"){ 909 DCrypto.generatePKCS7SignedData(data, "Delfino_generatePKCS7SignedData_success_callback", "Delfino_error_callback"); 910 return; 911 } 912 913 //G3, G4 914 var options = {}; 915 options.signedAttribute = "certStoreType"; 916 options.attributeAsData = true; 917 918 this.sign(data, options, function(result){ 919 if(result.status == 1){ 920 Delfino_generatePKCS7SignedData_success_callback(result.signData, result.vidRandom); 921 } 922 else{ 923 Delfino_error_callback(result.status, result.message); 924 } 925 }); 926 927 }, 928 importCertificate:function(options, complete) 929 { 930 var optionsComplete = this._fixOptionsComplete(options, complete); 931 options = optionsComplete.options; 932 complete = optionsComplete.complete; 933 934 if(this.init() == false) return; 935 936 options = options || {}; 937 938 if(Delfino.getModule() == "G2" || Delfino.getModule() == "G3") options.lang = Delfino._getLang(DelfinoConfig.lang); 939 940 if(options.place=="DelfinoG4") options.provider = 'wizveraV1'; 941 else { 942 if(options.provider==null) options.provider = DelfinoConfig.certRelay.provider; 943 if(options.providerUrl==null) options.providerUrl = DelfinoConfig.certRelay.providerUrl; 944 } 945 946 if(Delfino.getModule() !== "G4" && Delfino.getModule() !== "G5" && Delfino.getModule() !== "EA") options.moveImage = DC_get(DelfinoConfig.importImageUrl, Delfino.getModule()); 947 948 var handle = this.addComplete(complete); 949 DCrypto.importCertificate(handle, JSON.stringify(options)); 950 }, 951 exportCertificate:function(options, complete) 952 { 953 var optionsComplete = this._fixOptionsComplete(options, complete); 954 options = optionsComplete.options; 955 complete = optionsComplete.complete; 956 957 if(this.init() == false) return; 958 959 options = options || {}; 960 961 if(Delfino.getModule() == "G2" || Delfino.getModule() == "G3") options.lang = Delfino._getLang(DelfinoConfig.lang); 962 963 if(options.place=="DelfinoG4") options.provider = 'wizveraV1'; 964 else { 965 if(options.provider==null) options.provider = DelfinoConfig.certRelay.provider; 966 if(options.providerUrl==null) options.providerUrl = DelfinoConfig.certRelay.providerUrl; 967 } 968 969 if(Delfino.getModule() !== "G4" && Delfino.getModule() !== "G5" && Delfino.getModule() !== "EA") options.moveImage = DC_get(DelfinoConfig.exportImageUrl, Delfino.getModule()); 970 971 var handle = this.addComplete(complete); 972 DCrypto.exportCertificate(handle, param = JSON.stringify(options)); 973 }, 974 importCertificateFromPC:function(complete) 975 { 976 if(this.init() == false) return; 977 978 var handle = this.addComplete(complete); 979 var transferInfo = DelfinoConfig.transferInfo; 980 transferInfo = JSON.stringify(transferInfo); 981 982 DCrypto.importCertificateFromPC(handle, transferInfo); 983 }, 984 exportCertificateToPC:function(complete) 985 { 986 if(this.init() == false) return; 987 988 var handle = this.addComplete(complete); 989 var transferInfo = DelfinoConfig.transferInfo; 990 transferInfo = JSON.stringify(transferInfo); 991 992 DCrypto.exportCertificateToPC(handle, transferInfo); 993 }, 994 995 _getLang:function(lang){ 996 var langUrl=null; 997 if(lang == "KOR" || lang == "korean"){ 998 langUrl = DelfinoConfig.langUrl.koreanUrl; 999 lang = "korean"; 1000 } 1001 else if(lang == "ENG" || lang == "english"){ 1002 langUrl = DelfinoConfig.langUrl.englishUrl; 1003 lang = "english"; 1004 } 1005 else if(lang == "CHN" || lang == "chinese"){
1006 langUrl = DelfinoConfig.langUrl.chaneseUrl; 1007 lang = "chinese"; 1008 } 1009 else if(lang == "JPN" || lang == "japanese"){ 1010 langUrl = DelfinoConfig.langUrl.japaneseUrl; 1011 lang = "japanese"; 1012 } 1013 else if(lang == "VNM" || lang == "vietnamese"){ 1014 langUrl = DelfinoConfig.langUrl.vietnameseUrl; 1015 lang = "vietnamese"; 1016 } 1017 1018 var data = DC_get(langUrl); 1019 if(!data) return null; 1020 1021 return {name:lang, value:data}; 1022 }, 1023 1024 setLang:function(lang){ 1025 DelfinoConfig.lang = lang; 1026 if(this.init() == false) return; 1027 1028 var langObj = this._getLang(lang); 1029 if(langObj!=null){ 1030 DCrypto.setLang(langObj.name, langObj.value); 1031 } 1032 }, 1033 signForUpdateCertificate:function(data, complete){ 1034 if(this.init() == false) return; 1035 this.sign(data, { 1036 cacheCertFilter:false, 1037 cacheCert:true, 1038 certStoreFilter:"CertUpdatable" 1039 }, 1040 complete); 1041 }, 1042 getMACAddress:function(complete){ 1043 if(this.init(false) == false) return ""; 1044 var macAddr = ""; 1045 try{ 1046 macAddr = DCrypto.getProperty("MACAddress"); 1047 }catch(e){ } 1048 1049 if (typeof(complete) == "function") { 1050 complete(macAddr); //handler¿Í µ¿ÀÏÇÏ°Ô Äݹéó¸® 1051 } else { 1052 return macAddr; 1053 } 1054 }, 1055 getVersion:function(complete) 1056 { 1057 if(this.init() == false) return ""; 1058 var version = DCrypto.getVersion(); 1059 if(complete!=null){ 1060 complete(version); 1061 } 1062 return version; 1063 }, 1064 sign:function(data, options, complete){ 1065 var optionsComplete = this._fixOptionsComplete(options, complete); 1066 options = optionsComplete.options; 1067 complete = optionsComplete.complete; 1068 1069 if(this.init() == false) return; 1070 this.loadLogoImage(DelfinoConfig.logoImageUrl); 1071 1072 options = options || {}; 1073 1074 if(options.withPkcs1 === undefined) { options.withPkcs1 = false; } 1075 if(options.signType === undefined) { options.signType = ""; } 1076 if(options.dataType === undefined) { options.dataType = ""; } 1077 1078 if(options.dataType === "ucpid"){ 1079 if(!data.userAgreement){ 1080 alert("missing 'userAgreement' data" ); 1081 return; 1082 } 1083 if(!data.userAgreeInfos){ 1084 alert("missing 'userAgreeInfos' data" ); 1085 return; 1086 } 1087 for(var i=0; i<data.userAgreeInfos.length; i++){ 1088 var userAgreeInfo = data.userAgreeInfos[i]; 1089 if("realName"!==userAgreeInfo && "gender"!==userAgreeInfo && "nationalInfo"!==userAgreeInfo && "birthDate"!==userAgreeInfo){ 1090 alert("bad 'userAgreeInfos' data:" + userAgreeInfo); 1091 return; 1092 } 1093 } 1094 data = JSON.stringify(data); 1095 options.addNonce = false; 1096 options.signedAttribute = "signingTime"; 1097 } else if(options.dataType === "ucpidv2") { 1098 data = JSON.stringify(data); 1099 options.addNonce = false; 1100 options.signedAttribute = "signingTime"; 1101 } else if(options.dataType === "mydata") { 1102 data = JSON.stringify(data); 1103 options.addNonce = false; 1104 options.signedAttribute = "signingTime"; 1105 } 1106 else{ 1107 if( typeof data === "object"){ 1108 if( data.nodeName!=null && data.nodeName.toLowerCase() === "form" ){ 1109 data = jQuery(data).serialize(); 1110 } 1111 else{ 1112 data = data.data || ""; 1113 } 1114 } 1115 } 1116 1117 1118 if(DelfinoConfig.confirmSignTitleImageUrl != null && options.attributeAsData && options.signedAttribute.indexOf("format") != -1){ 1119 options.confirmSignTitleImage = DC_get(DelfinoConfig.confirmSignTitleImageUrl, Delfino.getModule()); 1120 } 1121 1122 if(options.delimiter) options.delimeter = options.delimiter; 1123 if(options.delimeter) options.delimiter = options.delimeter; 1124 if(options.multiSignDelimiter) options.multiSignDelimeter = options.multiSignDelimiter; 1125 if(options.multiSignDelimeter) options.multiSignDelimiter = options.multiSignDelimeter; 1126 if(options.closeOnError == null && DelfinoConfig.closeOnError!=null ) options.closeOnError = DelfinoConfig.closeOnError; 1127 if(this.getModule()=="G3" && window.location.protocol.toLowerCase()!="https:"){ 1128 if (_Delfino_SystemMode == "real") options.vidRandom = false; 1129 } 1130 data = this._addNonce(data, options); 1131 if(data==null) return; 1132 1133 if (typeof options.disableExpireFilter === "undefined") options.disableExpireFilter = DelfinoConfig.disableExpireFilter; 1134 if (typeof options.disableExpireWarn === "undefined") options.disableExpireWarn = DelfinoConfig.disableExpireWarn; 1135 if (typeof options.lastUsedCertFirst === "undefined") options.lastUsedCertFirst = DelfinoConfig.lastUsedCertFirst; 1136 1137 if(options.addCertStoreType == null && DelfinoConfig.addCertStoreType!=null ) options.addCertStoreType = DelfinoConfig.addCertStoreType; 1138 if(options.addCertStoreType){ 1139 options.attributeAsData = true; 1140 if(options.signedAttribute == null){ 1141 options.signedAttribute = "certStoreType"; 1142 } 1143 else if(options.signedAttribute.indexOf("certStoreType")==-1){ 1144 options.signedAttribute += ",certStoreType"; 1145 } 1146 } 1147 if(DelfinoConfig.serverTimeUrl && options.withPkcs1 === false) { 1148 if(options.signedAttribute == null){ 1149 options.signedAttribute = "signingTime"; 1150 } 1151 else if(options.signedAttribute && options.signedAttribute.indexOf("signingTime")==-1){ 1152 options.signedAttribute += ",signingTime"; 1153 } 1154 options.signingTime = DC_get(DelfinoConfig.serverTimeUrl); 1155 } 1156 if(options.certStoreFilter && Delfino.getModule() != 'G2' && Delfino.getModule() != 'G3' && DelfinoConfig.cg && DelfinoConfig.cg.VPCGClientConfig && DelfinoConfig.cg.VPCGClientConfig.certStoreFilterToProviderList) { 1157 var certStoreFilter = options.certStoreFilter.split('|'); 1158 1159 for(var key in DelfinoConfig.cg.VPCGClientConfig.certStoreFilterToProviderList) { 1160 var index = -1; 1161 if( (index = (typeof certStoreFilter.indexOf === 'function' ? certStoreFilter.indexOf(key) : -1)) > -1) { 1162 certStoreFilter.splice(index, 1); 1163 options.provider = DelfinoConfig.cg.VPCGClientConfig.certStoreFilterToProviderList[key]; 1164 } 1165 } 1166 1167 options.certStoreFilter = certStoreFilter.join('|'); 1168 } 1169 1170 1171 if( true && options.withPkcs1 === true && options.signedAttribute){ 1172 1173 alert("signedAttribute and options.withPkcs1 cannot be used together"); 1174 return; 1175 } 1176 1177 var handle = this._addCompleteIfNeedToHex(options, complete); 1178 1179 DCrypto.sign(handle, data, JSON.stringify(options)); 1180 }, 1181 _addCompleteIfNeedToHex:function(options, complete){ 1182 var outputEncoding = options.outputEncoding || DelfinoConfig.outputEncoding; 1183 if(outputEncoding == null || outputEncoding != "hex"){ 1184 return this.addComplete(complete); 1185 } 1186 1187 delete options.outputEncoding; 1188 1189 return this.addComplete(function(param) { 1190 if(param.status == 1 && param.signData != null){ 1191 if (typeof param.signData === 'string' || param.signData instanceof String){ 1192 if(options.multiSign && options.multiSignDelimiter){ 1193 var multiSignDataArray = param.signData.split(options.multiSignDelimiter); 1194 for(var i=0; i<multiSignDataArray.length; i++){ 1195 multiSignDataArray[i] = DC_base64ToHex(multiSignDataArray[i]); 1196 } 1197 param.signData = multiSignDataArray.join(options.multiSignDelimiter); 1198 } 1199 else{ 1200 param.signData = DC_base64ToHex(param.signData); 1201 } 1202 } 1203 else if (param.signData.constructor == Array){ 1204 for(var i=0; i<param.signData.length; i++){ 1205 param.signData[i] = DC_base64ToHex(param.signData[i]); 1206 } 1207 } 1208 } 1209 1210 if(param.status == 1 && param.vidRandom != null){ 1211 param.vidRandom = DC_base64ToHex(param.vidRandom); 1212 } 1213 1214 complete(param); 1215 }); 1216 }, 1217 _addNonce:function(data, options){ 1218 if(options.addNonce){
1219 var nonce = DelfinoConfig.nonce || DC_get(DelfinoConfig.nonceUrl); 1220 if(nonce.length<20 || nonce.length>40){ 1221 alert("ÀüÀÚ¼¸í ½ÇÆÐ[nonce ¿À·ù]:" + nonce.length); 1222 return null; 1223 } 1224 if(DelfinoConfig.useNonceOption){ 1225 options.attributeAsData = true; 1226 if(options.signedAttribute == null){ 1227 options.signedAttribute = "nonce"; 1228 } 1229 else if(options.signedAttribute.indexOf("nonce")==-1){ 1230 options.signedAttribute += ",nonce"; 1231 } 1232 options.nonce = encodeURIComponent(nonce); 1233 }else{ 1234 if(data.length>0) data +="&"; 1235 var nonceKeyName = DelfinoConfig.nonceKeyName || "delfinoNonce"; 1236 data += nonceKeyName + "=" + encodeURIComponent(nonce); 1237 } 1238 } 1239 return data; 1240 }, 1241 importCertificateFromPKCS12:function(p12){ 1242 DCrypto.importCertificateFromPKCS12(p12); 1243 }, 1244 setCacheCertStore:function(cache){ 1245 1246 try { 1247 DelfinoConfig.cacheCertStore = cache?"true":"false"; 1248 } catch(e){ } 1249 1250 if(this.init() == false) return; 1251 1252 DCrypto.setProperty("cacheCertStore", cache?"true":"false"); 1253 }, 1254 addSigner:function(data, options, complete) 1255 { 1256 var optionsComplete = this._fixOptionsComplete(options, complete); 1257 options = optionsComplete.options; 1258 complete = optionsComplete.complete; 1259 1260 options = options || {}; 1261 options.dataType = "PKCS7"; 1262 options.signedAttribute = "signingTime"; 1263 this.sign(data, options, complete); 1264 }, 1265 addMdSigner:function(data, options, complete) 1266 { 1267 var optionsComplete = this._fixOptionsComplete(options, complete); 1268 options = optionsComplete.options; 1269 complete = optionsComplete.complete; 1270 1271 options = options || {}; 1272 options.dataType = "PKCS7-sha256-md"; 1273 options.signedAttribute = "signingTime"; 1274 this.sign(data, options, complete); 1275 }, 1276 confirmSign:function(data, format, options, complete){ 1277 if(arguments.length==2){ 1278 options = format; 1279 format = undefined; 1280 } 1281 else if(arguments.length==3 && typeof format !== "string"){ 1282 complete = options; 1283 options = format; 1284 format = undefined; 1285 } 1286 var optionsComplete = this._fixOptionsComplete(options, complete); 1287 options = optionsComplete.options; 1288 complete = optionsComplete.complete; 1289 1290 options = options || {}; 1291 options.format = options.format || format; 1292 if(options.dataType != "fixedLengthData"){ 1293 options.dataType = data.dataType || "form-urlencoded"; 1294 if(options.dataType == "form-urlencoded" && format === undefined){ 1295 options.format = ""; 1296 } 1297 } 1298 1299 if(DelfinoConfig.confirmSignTitleImageUrl != null && Delfino.getModule() !== "G4" && Delfino.getModule() !== "G5" && Delfino.getModule() !== "EA"){ 1300 options.confirmSignTitleImage = DC_get(DelfinoConfig.confirmSignTitleImageUrl, Delfino.getModule()); 1301 } 1302 1303 if(!options.format && options.dataType != "formattedText" && options.dataType != "form-urlencoded"){ 1304 alert("missing 'format' parameter"); 1305 return; 1306 } 1307 1308 if(options.dataType == "strings"){ 1309 options.delimiter = options.delimiter || DelfinoConfig.stringsDelimiter; 1310 if(!options.delimiter){ 1311 alert("missing 'delimiter' option or 'DelfinoConfig.stringsDelimiter' config" ); 1312 return; 1313 } 1314 if(options.addNonce){ 1315 alert("not supported addNonce option"); 1316 return; 1317 } 1318 } 1319 options.attributeAsData = true; 1320 options.signedAttribute = "format"; 1321 1322 this.sign(data, options, complete); 1323 }, 1324 confirmMultiSign:function(data, format, options, complete){ 1325 1326 var optionsComplete = this._fixOptionsComplete(options, complete); 1327 options = optionsComplete.options; 1328 complete = optionsComplete.complete; 1329 1330 options = options || {}; 1331 options.multiSign = true; 1332 options.multiSignDelimiter = options.multiSignDelimiter || DelfinoConfig.multiSignDelimiter; 1333 1334 if(!options.multiSignDelimiter){ 1335 alert("missing 'multiSignDelimiter' option or 'DelfinoConfig.multiSignDelimiter' config" ); 1336 return; 1337 } 1338 if(options.addNonce){
1339 alert("not supported addNonce option"); 1340 return; 1341 } 1342 if( data.nodeName!=null && data.nodeName.toLowerCase() === "form" ){ 1343 alert("not supported data type"); 1344 return; 1345 } 1346 1347 options.format = format; 1348 if(!options.format){ 1349 alert("missing 'format' parameter"); 1350 return; 1351 } 1352 1353 if(options.dataType != "fixedLengthData"){ 1354 options.dataType = data.dataType || "form-urlencoded"; 1355 } 1356 if(options.dataType == "strings"){ 1357 options.delimiter = options.delimiter || DelfinoConfig.stringsDelimiter; 1358 if(!options.delimiter){ 1359 alert("missing 'delimiter' option or 'DelfinoConfig.stringsDelimiter' config" ); 1360 return; 1361 } 1362 } 1363 options.attributeAsData = true; 1364 options.signedAttribute = "format,certStoreType"; 1365 1366 this.sign(data, options, complete); 1367 }, 1368 mdSign:function(data, complete, options){ 1369 options = options || {}; 1370 options.dataType = "sha256-md"; 1371 this.sign(data, options, complete); 1372 }, 1373 mdMultiSign:function(data, complete, options){ 1374 options = options || {}; 1375 options.dataType = "sha256-md"; 1376 options.multiSign = true; 1377 1378 if(jQuery.isArray(data)){ 1379 options.multiSignDelimiter = ","; 1380 data = data.join(options.multiSignDelimiter); 1381 } 1382 1383 this.sign(data, options, complete); 1384 }, 1385 1386 complexSign:function(data, complete, options){ 1387 var optionsComplete = this._fixOptionsComplete(options, complete); 1388 options = optionsComplete.options; 1389 complete = optionsComplete.complete; 1390 1391 options.dataType = "complex"; 1392 1393 if(jQuery.isArray(data)){ 1394 options.multiSignDelimiter = ","; 1395 data = data.join(options.multiSignDelimiter); 1396 } 1397 1398 this.sign(data, options, complete); 1399 }, 1400 scrapingSign:function(data, options, complete){ 1401 var optionsComplete = this._fixOptionsComplete(options, complete); 1402 options = optionsComplete.options; 1403 complete = optionsComplete.complete; 1404 1405 options.signType = "scraping"; 1406 1407 if(!jQuery.isArray(data)){ 1408 data = [data]; 1409 } 1410 1411 this.sign(JSON.stringify(data), options, complete); 1412 }, 1413 1414 login:function(data, options, complete) 1415 { 1416 var optionsComplete = this._fixOptionsComplete(options, complete); 1417 options = optionsComplete.options; 1418 complete = optionsComplete.complete; 1419 1420 if(this.init() == false) return; 1421 this.resetCertificate(); 1422 options = options || {}; 1423 if(options.addNonce==null) options.addNonce = true; 1424 options.signedAttribute = "certStoreType"; 1425 options.attributeAsData = true; 1426 1427 options.resetCertificate = true; 1428 Delfino_eraseCookie('EAUSE'); 1429 options.cacheCert = true; 1430 1431 options.login = true; 1432 options.cgSignType = _SignType.LOGIN; 1433 1434 this.sign(data, options, complete); 1435 }, 1436 auth:function(data, options, complete) 1437 { 1438 var optionsComplete = this._fixOptionsComplete(options, complete); 1439 options = optionsComplete.options; 1440 complete = optionsComplete.complete; 1441 1442 if(this.init() == false) return; 1443 this.resetCertificate(); 1444 options = options || {}; 1445 if(options.addNonce==null) options.addNonce = true; 1446 options.signedAttribute = "certStoreType"; 1447 options.attributeAsData = true; 1448 1449 options.resetCertificate = true; 1450 Delfino_eraseCookie('EAUSE'); 1451 options.cacheCert = true; 1452 1453 options.login = true; 1454 options.cgSignType = _SignType.AUTH; 1455 1456 this.sign(data, options, complete); 1457 }, 1458 auth2:function(data, options, complete) 1459 { 1460 var optionsComplete = this._fixOptionsComplete(options, complete); 1461 options = optionsComplete.options; 1462 complete = optionsComplete.complete; 1463 1464 if(this.init() == false) return; 1465 this.resetCertificate(); 1466 options = options || {}; 1467 if(options.addNonce==null) options.addNonce = true; 1468 options.signedAttribute = "certStoreType"; 1469 options.attributeAsData = true; 1470 1471 options.resetCertificate = true;
1472 Delfino_eraseCookie('EAUSE'); 1473 options.cacheCert = true; 1474 1475 options.login = true; 1476 options.cgSignType = _SignType.AUTH2; 1477 1478 this.sign(data, options, complete); 1479 }, 1480 multiSign:function(data, options, complete) 1481 { 1482 var optionsComplete = this._fixOptionsComplete(options, complete); 1483 options = optionsComplete.options; 1484 complete = optionsComplete.complete; 1485 1486 options = options || {}; 1487 options.multiSign = true; 1488 options.multiSignDelimiter = options.multiSignDelimiter || DelfinoConfig.multiSignDelimiter; 1489 1490 // if(options.signedAttribute==null) 1491 // options.signedAttribute = "signingTime"; 1492 1493 if(!options.multiSignDelimiter){ 1494 alert("missing 'multiSignDelimiter' option or 'DelfinoConfig.multiSignDelimiter' config" ); 1495 return; 1496 } 1497 if(options.addNonce){ 1498 alert("not supported addNonce option"); 1499 return; 1500 } 1501 if( data.nodeName!=null && data.nodeName.toLowerCase() === "form" ){ 1502 alert("not supported data type"); 1503 return; 1504 } 1505 1506 this.sign(data, options, complete); 1507 }, 1508 endSign:function(ssid, complete) 1509 { 1510 var handle = this.addComplete(complete); 1511 DCrypto.endSign(handle, ssid); 1512 }, 1513 signAndEnvelope:function(data, recipientCert, options, complete) 1514 { 1515 var optionsComplete = this._fixOptionsComplete(options, complete); 1516 options = optionsComplete.options; 1517 complete = optionsComplete.complete; 1518 1519 if(!recipientCert){ 1520 alert("invalid recipientCert"); 1521 return; 1522 } 1523 1524 options = options || {}; 1525 options.signType = "signedAndEnvelopedData"; 1526 options.recipientCert = recipientCert; 1527 1528 this.sign(data, options, complete); 1529 }, 1530 isPasswordError:function(status){ 1531 return status == -4008 || status == -1004 || status == -1403; 1532 }, 1533 setModule:function(module){ 1534 if(module==null){ 1535 module = Delfino_readCookie("delfino.recentModule"); 1536 if(module==null || module == ""){ 1537 module = DelfinoConfig.module; 1538 } 1539 } 1540 var modules = module.split(","); 1541 for(var i=0; i<modules.length; i++){ 1542 module = modules[i]; 1543 module = module.replace(/^\s+|\s+$/gm,''); 1544 if(DC_isSupported(module)){ 1545 break; 1546 } 1547 } 1548 1549 if(module == "G2"){ 1550 window.Delfino = DelfinoG2G4; 1551 } 1552 else if(module == "G3"){ 1553 window.Delfino = DelfinoHandler; 1554 } 1555 else if(module == "G4"){ 1556 window.Delfino = DelfinoG2G4; 1557 } 1558 else if(module == "G5") { 1559 window.Delfino = DelfinoG2G4; 1560 } 1561 else if(module == "G10" || module == "CG") { 1562 window.Delfino = DelfinoG2G4; 1563 } 1564 else if(module == "EA"){ 1565 window.Delfino = DelfinoG2G4; 1566 } 1567 1568 if(module == "G2" || module == "G3" || module == "G4" || module == "EA" || module == "G5" || module == "G10" || module == "CG"){ 1569 DC_setModule(module); 1570 Delfino.inited = false; 1571 if( DelfinoConfig.useRecentModule ){ 1572 Delfino_createCookie("delfino.recentModule", module); 1573 } 1574 } 1575 }, 1576 getModule:function(){ 1577 return window.DC_module; 1578 }, 1579 resetRecentModule:function(){ 1580 Delfino_eraseCookie("delfino.recentModule"); 1581 }, 1582 isSupportedG4:function(){ 1583 return DC_isSupported("G4"); 1584 }, 1585 isSupportedG5:function(){ 1586 return DC_isSupported("G5"); 1587 }, 1588 isSupportedG10:function(){ 1589 return DC_isSupported("G10"); 1590 }, 1591 isSupportedCG:function(){ 1592 return DC_isSupported("CG"); 1593 }, 1594 isSupportedEA:function(){ 1595 return DC_isSupported("EA"); 1596 }, 1597 deleteCertificate:function(subjectOrSerialNumber, options, complete){ 1598 options = options || {}; 1599 var handle = this.addComplete(complete); 1600 DCrypto.deleteCertificate(handle, subjectOrSerialNumber, JSON.stringify(options)); 1601 }, 1602 signFileUrl:function(downloadurl, uploadurl, options, complete) 1603 { 1604 var optionsComplete = this._fixOptionsComplete(options, complete); 1605 options = optionsComplete.options; 1606 complete = optionsComplete.complete; 1607 1608 if(this.init() == false) return; 1609 1610 if(downloadurl==null || downloadurl==""){ 1611 alert("downloadurl error"); 1612 return; 1613 } 1614 if(uploadurl==null || uploadurl==""){ 1615 alert("uploadurl error"); 1616 return; 1617 } 1618 1619 this.loadLogoImage(DelfinoConfig.logoImageUrl); 1620 1621 options = options || {}; 1622 if(options.delimiter) options.delimeter = options.delimiter; 1623 if(options.delimeter) options.delimiter = options.delimeter; 1624 if(options.multiSignDelimiter) options.multiSignDelimeter = options.multiSignDelimiter; 1625 if(options.multiSignDelimeter) options.multiSignDelimiter = options.multiSignDelimeter; 1626 if(options.closeOnError == null && DelfinoConfig.closeOnError!=null ) options.closeOnError = DelfinoConfig.closeOnError; 1627 if(this.getModule()=="G3" && window.location.protocol.toLowerCase()!="https:"){ 1628 if (_Delfino_SystemMode == "real") options.vidRandom = false; 1629 } 1630 1631 if (typeof options.disableExpireFilter === "undefined") options.disableExpireFilter = DelfinoConfig.disableExpireFilter; 1632 if (typeof options.disableExpireWarn === "undefined") options.disableExpireWarn = DelfinoConfig.disableExpireWarn; 1633 1634 if(options.addCertStoreType == null && DelfinoConfig.addCertStoreType!=null ) options.addCertStoreType = DelfinoConfig.addCertStoreType; 1635 if(options.addCertStoreType){ 1636 options.attributeAsData = true; 1637 if(options.signedAttribute == null){ 1638 options.signedAttribute = "certStoreType"; 1639 } 1640 else if(options.signedAttribute.indexOf("certStoreType")==-1){ 1641 options.signedAttribute += ",certStoreType"; 1642 } 1643 } 1644 1645 if (typeof options.signType === "undefined") options.signType = "sig"; 1646 1647 var handle = this._addCompleteIfNeedToHex(options, complete); 1648 1649 DCrypto.signFileUrl(handle, downloadurl, uploadurl, JSON.stringify(options)); 1650 }, 1651 signFileUrlDown:function(downloadurl, options, complete) 1652 { 1653 var optionsComplete = this._fixOptionsComplete(options, complete); 1654 options = optionsComplete.options; 1655 complete = optionsComplete.complete; 1656 1657 if(this.init() == false) return; 1658 1659 if(downloadurl==null || downloadurl==""){ 1660 alert("downloadurl error"); 1661 return; 1662 } 1663 1664 options = options || {}; 1665 if(options.delimiter) options.delimeter = options.delimiter; 1666 if(options.delimeter) options.delimiter = options.delimeter; 1667 if(options.multiSignDelimiter) options.multiSignDelimeter = options.multiSignDelimiter; 1668 if(options.multiSignDelimeter) options.multiSignDelimiter = options.multiSignDelimeter; 1669 1670 if (typeof options.signType === "undefined") options.signType = "sig"; 1671 1672 var handle = this._addCompleteIfNeedToHex(options, complete); 1673 1674 DCrypto.signFileUrlDown(handle, downloadurl, JSON.stringify(options)); 1675 1676 }, 1677 signFileUrlSign:function(filepath, options, complete) 1678 { 1679 var optionsComplete = this._fixOptionsComplete(options, complete); 1680 options = optionsComplete.options; 1681 complete = optionsComplete.complete; 1682 1683 if(this.init() == false) return; 1684 1685 this.loadLogoImage(DelfinoConfig.logoImageUrl); 1686 1687 options = options || {}; 1688 if(options.delimiter) options.delimeter = options.delimiter; 1689 if(options.delimeter) options.delimiter = options.delimeter; 1690 if(options.multiSignDelimiter) options.multiSignDelimeter = options.multiSignDelimiter; 1691 if(options.multiSignDelimeter) options.multiSignDelimiter = options.multiSignDelimeter; 1692 if(options.closeOnError == null && DelfinoConfig.closeOnError!=null ) options.closeOnError = DelfinoConfig.closeOnError; 1693 if(this.getModule()=="G3" && window.location.protocol.toLowerCase()!="https:"){ 1694 if (_Delfino_SystemMode == "real") options.vidRandom = false; 1695 } 1696 1697 if (typeof options.disableExpireFilter === "undefined") options.disableExpireFilter = DelfinoConfig.disableExpireFilter; 1698 if (typeof options.disableExpireWarn === "undefined") options.disableExpireWarn = DelfinoConfig.disableExpireWarn; 1699 1700 if(options.addCertStoreType == null && DelfinoConfig.addCertStoreType!=null ) options.addCertStoreType = DelfinoConfig.addCertStoreType; 1701 if(options.addCertStoreType){ 1702 options.attributeAsData = true; 1703 if(options.signedAttribute == null){ 1704 options.signedAttribute = "certStoreType"; 1705 } 1706 else if(options.signedAttribute.indexOf("certStoreType")==-1){ 1707 options.signedAttribute += ",certStoreType"; 1708 } 1709 } 1710 1711 if (typeof options.signType === "undefined") options.signType = "sig"; 1712 1713 var handle = this._addCompleteIfNeedToHex(options, complete); 1714 1715 DCrypto.signFileUrlSign(handle, JSON.stringify(filepath), JSON.stringify(options)); 1716 //DCrypto.signFileUrlSign(handle, filepath, JSON.stringify(options)); 1717 }, 1718 signFileUrlUp:function(filepath, uploadurl, options, complete) 1719 { 1720 var optionsComplete = this._fixOptionsComplete(options, complete); 1721 options = optionsComplete.options; 1722 complete = optionsComplete.complete; 1723 1724 if(this.init() == false) return; 1725 1726 if(uploadurl==null || uploadurl==""){ 1727 alert("uploadurl error"); 1728 return; 1729 } 1730 1731 options = options || {}; 1732 if(options.delimiter) options.delimeter = options.delimiter; 1733 if(options.delimeter) options.delimiter = options.delimeter; 1734 if(options.multiSignDelimiter) options.multiSignDelimeter = options.multiSignDelimiter; 1735 if(options.multiSignDelimeter) options.multiSignDelimiter = options.multiSignDelimeter; 1736 1737 if (typeof options.signType === "undefined") options.signType = "sig"; 1738 1739 var handle = this._addCompleteIfNeedToHex(options, complete); 1740 1741 DCrypto.signFileUrlUp(handle, filepath, uploadurl, JSON.stringify(options)); 1742 1743 }, 1744 signFile:function(path, options, complete) 1745 { 1746 var optionsComplete = this._fixOptionsComplete(options, complete); 1747 options = optionsComplete.options; 1748 complete = optionsComplete.complete; 1749 1750 if(this.init() == false) return; 1751 this.loadLogoImage(DelfinoConfig.logoImageUrl); 1752 1753 options = options || {}; 1754 if(options.delimiter) options.delimeter = options.delimiter; 1755 if(options.delimeter) options.delimiter = options.delimeter; 1756 if(options.multiSignDelimiter) options.multiSignDelimeter = options.multiSignDelimiter; 1757 if(options.multiSignDelimeter) options.multiSignDelimiter = options.multiSignDelimeter; 1758 if(options.closeOnError == null && DelfinoConfig.closeOnError!=null ) options.closeOnError = DelfinoConfig.closeOnError; 1759 if(this.getModule()=="G3" && window.location.protocol.toLowerCase()!="https:"){ 1760 if (_Delfino_SystemMode == "real") options.vidRandom = false; 1761 } 1762 1763 if (typeof options.disableExpireFilter === "undefined") options.disableExpireFilter = DelfinoConfig.disableExpireFilter; 1764 if (typeof options.disableExpireWarn === "undefined") options.disableExpireWarn = DelfinoConfig.disableExpireWarn; 1765 1766 if(options.addCertStoreType == null && DelfinoConfig.addCertStoreType!=null ) options.addCertStoreType = DelfinoConfig.addCertStoreType; 1767 if(options.addCertStoreType){ 1768 options.attributeAsData = true; 1769 if(options.signedAttribute == null){ 1770 options.signedAttribute = "certStoreType"; 1771 } 1772 else if(options.signedAttribute.indexOf("certStoreType")==-1){ 1773 options.signedAttribute += ",certStoreType"; 1774 } 1775 } 1776 1777 if (typeof options.signType === "undefined") options.signType = "signature"; 1778 var handle = this._addCompleteIfNeedToHex(options, complete); 1779 DCrypto.signFile(handle, path, JSON.stringify(options)); 1780 }, 1781 verifySignFile:function(path, signature, cert, options, complete) 1782 { 1783 var optionsComplete = this._fixOptionsComplete(options, complete); 1784 options = optionsComplete.options; 1785 complete = optionsComplete.complete; 1786 1787 if(this.init(false) == false) return ""; 1788 1789 options = options || {}; 1790 if (typeof options.signType === "undefined") options.signType = "signature"; 1791 1792 var handle = this.addComplete(complete); 1793 DCrypto.verifySignFile(handle, path, signature, cert, JSON.stringify(options)); 1794 }, 1795 getKTBScanResult:function(complete) 1796 { 1797 if(this.init(false) == false) return ""; 1798 1799 var handle = this.addComplete(complete); 1800 DCrypto.getKTBScanResult(handle); 1801 }, 1802 _fixOptionsComplete:function(options, complete){ 1803 var args = {}; 1804 1805 if(typeof options === "function" || (options && typeof options.complete === "function")){ 1806 args.complete = options; 1807 } 1808 if(typeof complete === "function" || (complete && typeof complete.complete === "function")){ 1809 args.complete = complete; 1810 } 1811 if(complete != null && typeof complete === "object" && typeof complete.complete !== "function"){ 1812 args.options = complete; 1813 } 1814 if(options != null && typeof options === "object" && typeof options.complete !== "function"){ 1815 args.options = options; 1816 } 1817 1818 if(typeof args.complete === 'function') { 1819 var tmp = args.complete; 1820 args.complete = function(result, context) { 1821 tmp(result, context); 1822 setFocusBack(); 1823 } 1824 } else if(typeof args.complete === 'object' && typeof args.complete.complete === 'function') { 1825 var tmp = args.complete.complete; 1826 args.complete.complete = function(result, context) { 1827 tmp(result, context); 1828 setFocusBack(); 1829 } 1830 } else { 1831 args.complete = function() { 1832 setFocusBack(); 1833 } 1834 } 1835 1836 return args; 1837 }, 1838 preloadOff:function(){ 1839 return Delfino4Html.preloadOff(); 1840 }, 1841 getDeviceID:function(done) { 1842 DelfinoDeviceID.getDeviceID(done); 1843 }, 1844 ucpidSign:function(userAgreement, userAgreeInfos, options, complete){ 1845 var optionsComplete = this._fixOptionsComplete(options, complete); 1846 options = optionsComplete.options; 1847 complete = optionsComplete.complete; 1848 1849 if(this.init() == false) return; 1850 options = options || {}; 1851 options.dataType = "ucpid"; 1852 options.addNonce = false; 1853 options.signedAttribute = "signingTime"; 1854 options.attributeAsData = false; 1855 1856 options.resetCertificate = true;
1857 Delfino_eraseCookie('EAUSE'); 1858 options.cacheCert = true; 1859 1860 var data = {userAgreement : userAgreement, userAgreeInfos: userAgreeInfos}; 1861 1862 this.sign(data, options, complete); 1863 }, 1864 multiSignForMyData:function(inputData, options, complete) { 1865 var optionsComplete = this._fixOptionsComplete(options, complete); 1866 options = optionsComplete.options; 1867 complete = optionsComplete.complete; 1868 1869 if(this.init() == false) return; 1870 options = options || {}; 1871 options.dataType = "mydata"; 1872 options.signType = "mydata"; 1873 options.addNonce = false; 1874 options.signedAttribute = "signingTime"; 1875 options.attributeAsData = false; 1876 1877 options.resetCertificate = true; 1878 Delfino_eraseCookie('EAUSE'); 1879 options.cacheCert = true; 1880 1881 var data = []; 1882 for(var i=0;i<inputData.length;i++) { 1883 data.push({ 1884 orgCode: inputData[i].orgCode, 1885 ucpidRequestInfo: { 1886 userAgreement : inputData[i].ucpidRequestInfo.userAgreement, 1887 userAgreeInfo: inputData[i].ucpidRequestInfo.userAgreeInfo, 1888 ispUrlInfo: inputData[i].ucpidRequestInfo.ispUrlInfo, 1889 ucpidNonce: inputData[i].ucpidRequestInfo.ucpidNonce 1890 }, 1891 consentInfo: { 1892 consent: inputData[i].consentInfo.consent, 1893 consentNonce: inputData[i].consentInfo.consentNonce 1894 } 1895 }); 1896 } 1897 1898 this.sign(data, options, complete); 1899 } 1900 1901}; 1902var DelfinoG2G4 = _Delfino; 1903 1904window.Delfino = DelfinoG2G4; 1905} 1906 1907function Delfino_complete(handle, param){ 1908 setTimeout(function(){ 1909 var complete = Delfino.getComplete(handle); 1910 Delfino.removeComplete(handle); 1911 if(Delfino.emptyComplete() && DCrypto.stopGetResultTimer){ 1912 DC_enableBrowser(); 1913 DCrypto.stopGetResultTimer(); 1914 } 1915 1916 if(complete !=null && complete.complete!=null ){ 1917 DC_enableBrowser(); 1918 if(typeof param === "string") param = jQuery.parseJSON(param); 1919 1920 if(param.status==1 && param.message=="°¡Á®¿À±â ³»º¸³»±â ¼º°ø."){ 1921 complete.complete(param, complete.context); 1922 return; 1923 } 1924 1925 if(param.cmd == "requestCertificate2" || param.cmd == "updateCertificate2"){
1926 if(DelfinoConfig.alertCmpComplete || DelfinoConfig.alertCmpComplete === undefined){ 1927 if(param.status!=0){ 1928 if (param.status == 1 && param.message == "") param.message = "ÀÎÁõ¼°¡ Á¤»óÀûÀ¸·Î ¹ß±Þ/°»½Å µÇ¾ú½À´Ï´Ù."; 1929 alert(param.message); 1930 } 1931 } 1932 complete.complete(param, complete.context); 1933 return; 1934 } 1935 1936 //2014.03.17 password err check 1937 if ((param.cmd == null || param.cmd == "sign") && param.status == 1 && !param.signData && !param.signedAndEnvelopedData && !param.signedDataList) { 1938 param.status = 0; 1939 param.message = "Password error."; 1940 } else if (Delfino.isPasswordError(param.status) && DelfinoConfig.passwordError != true) { 1941 param.status = 0; 1942 } 1943 1944 if (param.status == -15000) { 1945 param.status = 0; 1946 1947 if(window.EA && ('object' === typeof window.EA)) { 1948 var data = param.sign_data; 1949 var options = JSON.parse(param.sign_options); 1950 var tmpRand = wizvera.kryptos.random.getBytesSync(32); 1951 var randomBSID = wizvera.kryptos.util.bytesToHex(tmpRand); 1952 if(options.resetCertificate) { 1953 EA.resetSessionData(); 1954 } 1955 data = EA.normalizeSignData(data, options); 1956 1957 EA.init(randomBSID); 1958 // options.alreadyHasAttribute = true; 1959 EA.setTbsData({data:data, options:options}); 1960 if (window.EA.tbsData.options.resetCertificate) { 1961 EA.resetSessionData(); 1962 } 1963 1964 EA.open_user_interface(function(result) { 1965 if (result.status == 1) { 1966 Delfino_createCookie('EAUSE', 'true'); 1967 } 1968 complete.complete(result); 1969 }); 1970 return; 1971 } 1972 } 1973 1974 if(param.status == -10301 && param.url){ 1975 if(navigator.userAgent.match(/Linux/i)) { 1976 window.open(param.url); 1977 } 1978 } 1979 1980 complete.complete(param, complete.context); 1981 } 1982 }, 1); 1983} 1984 1985function Delfino_generatePKCS7SignedData_success_callback(pkcs7, vid_random){ 1986 //2014.03.17 password err check 1987 if (pkcs7 == null || pkcs7 == "") { 1988 Delfino_error_callback(0, "Password error."); 1989 return; 1990 } 1991 1992 if(Delfino.generatePKCS7SignedDataSuccessCallback==null){ 1993 var pkcs7Form = jQuery("#Delfino_PKCS7_form")[0]; 1994 pkcs7Form.PKCS7.value = pkcs7; 1995 pkcs7Form.VID_RANDOM.value = vid_random; 1996 pkcs7Form.submit(); 1997 } 1998 else{ 1999 Delfino.generatePKCS7SignedDataSuccessCallback(pkcs7, vid_random); 2000 } 2001} 2002 2003function Delfino_error_callback(code, message) { 2004 if(Delfino.generatePKCS7SignedDataErrorCallback==null){ 2005 if (code != 0){ 2006 alert("error:"+code + ":" + message); 2007 } 2008 } 2009 else{ 2010 Delfino.generatePKCS7SignedDataErrorCallback(code, message); 2011 } 2012} 2013 2014function Delfino_requestCertificate_complete_callback(code , msg){ 2015 setTimeout(function() { 2016 if(code!=0){ 2017 if (code == 1 && (msg == "" || msg == "success")) msg = "ÀÎÁõ¼°¡ Á¤»óÀûÀ¸·Î ¹ß±ÞµÇ¾ú½À´Ï´Ù."; 2018 alert(msg); 2019 } 2020 if(Delfino.requestCertificate_complete_callback!=null){ 2021 Delfino.requestCertificate_complete_callback(code, msg); 2022 } 2023 }, 1); 2024} 2025 2026function Delfino_updateCertificate_complete_callback(code , msg){ 2027 setTimeout(function() { 2028 if(code!=0){ 2029 if (code == 1 && (msg == "" || msg == "success")) msg = "ÀÎÁõ¼ °»½Å¿¡ ¼º°øÇß½À´Ï´Ù."; 2030 alert(msg); 2031 } 2032 if(Delfino.updateCertificate_complete_callback!=null){ 2033 Delfino.updateCertificate_complete_callback(code, msg); 2034 } 2035 }, 1); 2036} 2037 2038function Delfino_createCookie(name,value,days) { 2039 var cookie = encodeURIComponent(name) + "=" + encodeURIComponent(value) + "; path=/; secure"; 2040 2041 if (typeof days === 'number') { 2042 var date = new Date(); 2043 date.setTime(date.getTime()+(days*24*60*60*1000)); 2044 cookie += "; expires=" + date.toGMTString(); 2045 } 2046 2047 if ( typeof DelfinoConfig !== "undefined" && DelfinoConfig.multiDomain && document.location.hostname.indexOf(DelfinoConfig.multiDomain) >= 0) { 2048 cookie += "; domain=" + DelfinoConfig.multiDomain; 2049 } 2050 2051 document.cookie = cookie; 2052} 2053 2054function Delfino_readCookie(key) { 2055 var cookies = document.cookie ? document.cookie.split('; ') : []; 2056 for (var i=0; i < cookies.length; i++) { 2057 var parts = cookies[i].split('='); 2058 var name; 2059 try { 2060 name = decodeURIComponent(parts[0]); 2061 } catch(e) { 2062 name = parts[0]; 2063 } 2064 if (key === name) { 2065 try { 2066 return parts.length>1 ? decodeURIComponent(parts[1]) : ''; 2067 } catch(e) { 2068 return ''; 2069 } 2070 } 2071 } 2072 return ''; 2073} 2074
2075function Delfino_eraseCookie(name) { 2076 Delfino_createCookie(name,"",-1); 2077} 2078 2079window.Delfino_complete = Delfino_complete; 2080window.Delfino_generatePKCS7SignedData_success_callback = Delfino_generatePKCS7SignedData_success_callback; 2081window.Delfino_error_callback = Delfino_error_callback; 2082window.Delfino_requestCertificate_complete_callback = Delfino_requestCertificate_complete_callback; 2083window.Delfino_updateCertificate_complete_callback = Delfino_updateCertificate_complete_callback; 2084window.Delfino_createCookie = Delfino_createCookie; 2085window.Delfino_readCookie = Delfino_readCookie; 2086window.Delfino_eraseCookie = Delfino_eraseCookie; 2087 2088var DelfinoHandler = DelfinoHandler || (function(jQuery){ 2089 if(Delfino.initHandler != undefined) { 2090 Delfino._handlerInitUrl = ''; 2091 return Delfino; 2092 } 2093 2094 var _delfino = {}; 2095 var _parent = Delfino; 2096 var _parentFuncs = ["scrapingSign","complexSign","ucpidSign", "multiSignForMyData", "getKTBScanResult", "exportCertificate", "importCertificate", "signFileUrlDown", "signFileUrlSign", "signFileUrlUp", "verifySignFile", "signFile", "signFileUrl", "deleteCertificate", "setProperty", "resetCertificate", "loginForm", "sign","signData","addSigner","init","login","signForm","requestCertificate","requestCertificate2","updateCertificate","updateCertificate2","signKeyValue","multiSign","multiSignString","manageCertificate"]; 2097 2098 function backupParentFunctions() { 2099 for(var index in _parentFuncs) { 2100 var func = _parentFuncs[index]; 2101 _parent["par_"+func] = _parent[func]; 2102 } 2103 } 2104 2105 backupParentFunctions(); 2106 jQuery.extend(true,_delfino,_parent); 2107 2108 function createProxyFunctions() { 2109 for(var index in _parentFuncs) { 2110 var func = _parentFuncs[index]; 2111 (function(func){ 2112 _delfino[func] = function() { 2113 DelfinoHandler.callWithInitHandler(func,arguments); 2114 }; 2115 })(func); 2116 } 2117 } 2118 createProxyFunctions(); 2119 2120 2121 2122 /* createProxyFunctions°¡ Àß ¾ÈµÇ¸é ÀÏÀÏÀÌ ´ÙÇÒ°Í 2123 _delfino.sign = function() { 2124 this.callWithInitHandler("sign",arguments); 2125 } 2126*/ 2127 _delfino._handlerInit = false; 2128 _delfino._handlerInitUrl = ""; 2129 _delfino.isHandlerInit = function() { 2130 if(this._handlerInitUrl != window.location.href){ 2131 delfino.handler.secure.reset(); 2132 this._handlerInit = false; 2133 } 2134 2135 return this._handlerInit; 2136 }; 2137 2138 _delfino.setHandlerInit = function(init) { 2139 this._handlerInit = init; 2140 if(init === true) { 2141 this._handlerInitUrl = window.location.href; 2142 return; 2143 } 2144 delfino.handler.secure.reset(); 2145 }; 2146 _delfino.isInProcessHandlerInit = function() { return this._handlerInitProcess; }; 2147 _delfino.setInProcessHandlerInit = function(process) { this._handlerInitProcess = process; }; 2148 2149 _delfino.callWithInitHandler = function(fnName,args) { 2150 2151 //----------------------------------------------------------------------- 2152 this._lastCallTime = this._lastCallTime || {}; 2153 if(this._lastCallTime[fnName] != undefined && (fnName == "login" || fnName == "sign" )) { 2154 var elapsed = new Date() - this._lastCallTime[fnName]; 2155 elapsed = Math.round(elapsed / 600); 2156 if(elapsed <=3) { 2157 if(args[1].ssid == ""){ 2158 //alert(fnName + ": õõÈ÷ Çսô٠" +elapsed + " sec"); 2159 return; 2160 } 2161 } 2162 } 2163 this._lastCallTime[fnName] = new Date(); 2164 //----------------------------------------------------------------------- 2165 2166 var parentFnName = "par_"+fnName; 2167 2168 if(_delfino.isInProcessHandlerInit()) { 2169 setTimeout(function() { 2170 _delfino.callWithInitHandler(fnName, args); 2171 }, 50); 2172 return; 2173 } 2174 _delfino.setInProcessHandlerInit(true); 2175 this.initHandler({retryCount:0,execTimeout:1000,nnnn:fnName,success:function(){ 2176 //this.initHandler({retryCount:(DC_browserInfo.MSIE)?0:1,execTimeout:1000,success:function(){ 2177 _delfino.setInProcessHandlerInit(false); 2178 var fn = Delfino[parentFnName]; 2179 fn.apply(Delfino,args); 2180 }}); 2181 }; 2182 2183 _delfino.isInstall = function(goInstall,completeCallback) { 2184 function tempError(param) { 2185 if(goInstall == true) 2186 DCrypto.goInstallPage(); 2187 else 2188 completeCallback(false); 2189 } 2190 function tempSuccess() { 2191 completeCallback(true); 2192 } 2193 delfino.handler.helper.isInstall({"ctx":{},"error":tempError,"success":tempSuccess}); 2194 }; 2195 2196 _delfino.initHandler = function(ctx) { 2197 2198 /* //WIZVERA_TEST_START 2199 var check_allTIME = new Date(); 2200 var check_TIME = new Date(); 2201 var check_MSG = ""; 2202 //WIZVERA_TEST_END */ 2203 2204 if(this.isHandlerInit() == true) { 2205 if(ctx.success != undefined) 2206 ctx.success(); 2207 return true; 2208 } 2209 2210 if(ctx == undefined) ctx = {retryCount:3,execTimeout:2000}; 2211 this._ctx = ctx; 2212 2213 if(this._ctx.retryCount < 0) { 2214 delfino.handler.state.clear(); 2215 if(ctx.goInstall != undefined && ctx.goInstall == false) return _delfino.setInProcessHandlerInit(false); 2216 DCrypto.goInstallPage(); 2217 _delfino.setInProcessHandlerInit(false); 2218 return; 2219 } 2220 this._ctx.retryCount--; 2221 2222 delfino.handler.state.setState("init",true); 2223 function installCheckOk(ver) { 2224 2225 /* //WIZVERA_TEST_START 2226 check_MSG += "initHandler[ installOK] " + Math.floor( (new Date()).getTime() - check_TIME.getTime() ) / 1000 + "\n"; 2227 check_TIME = new Date(); 2228 //WIZVERA_TEST_END */ 2229 2230 DcryptoHandlerData.version = ver; 2231 delfino.handler.state.setState("init",false); 2232 delfino.handler.state.setState("secure",true); 2233 2234 Delfino.loadLogoImage(DelfinoConfig.logoImageUrl); 2235 Delfino.init(false); 2236 2237 /* //WIZVERA_TEST_START 2238 check_MSG += "initHandler[ initOK] " + Math.floor( (new Date()).getTime() - check_TIME.getTime() ) / 1000 + "\n"; 2239 check_TIME = new Date(); 2240 //WIZVERA_TEST_END */ 2241 2242 (function(ctx){ 2243 delfino.handler.secure.init({success:function(){ 2244 2245 Delfino.setHandlerInit(true); 2246 delfino.handler.state.clear(); 2247 if(ctx.success != undefined) { 2248 2249 /* //WIZVERA_TEST_START 2250 check_MSG += "initHandler[secureOK] " + Math.floor( (new Date()).getTime() - check_TIME.getTime() ) / 1000 + "\n"; 2251 check_TIME = new Date(); 2252 //WIZVERA_TEST_END */ 2253 ctx.success(); 2254 2255 /* //WIZVERA_TEST_START 2256 check_MSG += "initHandler[ success] " + Math.floor( (new Date()).getTime() - check_TIME.getTime() ) / 1000 + "\n\n"; 2257 check_MSG += "initHandler[ALL_TIME] " + Math.floor( (new Date()).getTime() - check_allTIME.getTime() ) / 1000 + "\n"; 2258 if (document.location.href.indexOf("debug=on")>=0 && document.location.hostname.indexOf("wizvera.com")>
2258=0) alert(check_MSG); 2259 //WIZVERA_TEST_END */ 2260 2261 } 2262 },error:function(){ 2263 delfino.handler.state.clear(); 2264 _delfino.setInProcessHandlerInit(false); 2265 }}); 2266 })(this.ctx); 2267 } 2268 function installCheckError(param) { 2269 2270 /* //WIZVERA_TEST_START 2271 check_MSG += "initHandler[notInstall] " + Math.floor( (new Date()).getTime() - check_TIME.getTime() ) / 1000 + "\n"; 2272 if (document.location.href.indexOf("debug=on")>=0) alert(check_MSG); 2273 //WIZVERA_TEST_END */ 2274 2275 if(param.objver == "") { //timeout , error 2276 if(ctx.retryCount < 0) { 2277 delfino.handler.state.clear(); 2278 if(ctx.goInstall != undefined && ctx.goInstall == false) return _delfino.setInProcessHandlerInit(false); 2279 DCrypto.goInstallPage(); 2280 _delfino.setInProcessHandlerInit(false); 2281 return; 2282 } 2283 2284 (function(ctx){ 2285 setTimeout(function(){Delfino.initHandler(ctx);},ctx.execTimeout); 2286 })(this.ctx); 2287 return; 2288 } 2289 else if (param.objver < param.confver) { //old version 2290 delfino.handler.state.clear(); 2291 if(ctx.goInstall != undefined && ctx.goInstall == false) return _delfino.setInProcessHandlerInit(false); 2292 DCrypto.goInstallPage(); 2293 _delfino.setInProcessHandlerInit(false); 2294 return; 2295 } 2296 delfino.handler.state.setState("init", false); 2297 _delfino.setInProcessHandlerInit(false); 2298 } 2299 2300 (function(ctx){ 2301 setTimeout(function() { 2302 delfino.handler.helper.isInstall({"ctx":ctx,"error":installCheckError,"success":installCheckOk}); 2303 },1); 2304 })(this._ctx); 2305 }; 2306 2307 _delfino.init = function(installCheck) { 2308 if(installCheck == undefined) 2309 installCheck = true; 2310 2311 if(this.inited) { 2312 return true; 2313 } 2314 2315 2316 return this.par_init(installCheck); 2317 2318 }; 2319 _delfino.getMACAddress = function(cb) { 2320 //var completeCallback = function(mac){ alert(mac); }; 2321 //if (typeof(cb) != "function") cb = completeCallback; 2322 if (typeof(cb) != "function") return ""; 2323 2324 delfino.handler.getProperty("MACAddress",{}).onsuccess(function(res){ 2325 if(res.res == 0) { 2326 cb(res.data); 2327 } else { 2328 cb(""); 2329 } 2330 }).onerror(function(){ 2331 cb(""); 2332 }).invoke(); 2333 }; 2334 _delfino.getVersion = function(cb) 2335 { 2336 if (typeof(cb) != "function") return ""; 2337 delfino.handler.getVersion({}).onsuccess(function(res){ 2338 if(res.res == 0) { 2339 cb(res.data); 2340 } else { 2341 cb(""); 2342 } 2343 }).onerror(function(){ 2344 cb(""); 2345 }).invoke(); 2346 }; 2347 _delfino.setProperties = function(properties) { 2348 DCrypto.setPropertyJson(properties); 2349 }; 2350 2351 _delfino.setLang = function(lang){ 2352 DelfinoConfig.lang = lang; 2353 2354 var langUrl=""; 2355 if(lang == "KOR" || lang == "korean"){ 2356 langUrl = DelfinoConfig.langUrl.koreanUrl; 2357 lang = "korean"; 2358 } 2359 else if(lang == "ENG" || lang == "english"){ 2360 langUrl = DelfinoConfig.langUrl.englishUrl; 2361 lang = "english"; 2362 } 2363 else if(lang == "CHN" || lang == "chinese"){ 2364 langUrl = DelfinoConfig.langUrl.chaneseUrl; 2365 lang = "chinese"; 2366 } 2367 else if(lang == "JPN" || lang == "japanese"){ 2368 langUrl = DelfinoConfig.langUrl.japaneseUrl; 2369 lang = "japanese"; 2370 } 2371 else if(lang == "VNM" || lang == "vietnamese"){ 2372 langUrl = DelfinoConfig.langUrl.vietnameseUrl;
2373 lang = "vietnamese"; 2374 } 2375 2376 jQuery.ajax({ 2377 url: langUrl, 2378 async: false, 2379 dataType: 'text', 2380 success: function(data){ 2381 DCrypto.setLang(lang, data); 2382 } 2383 }); 2384 }; 2385 2386 return _delfino; 2387})(jQuery); 2388 2389jQuery(document).ready(function setup() { 2390 if(typeof window.DelfinoConfig === 'undefined' || typeof window.DC_setModule === 'undefined') { 2391 setTimeout(setup, 100); 2392 return; 2393 } 2394 2395 try { 2396 if(Delfino.initHandler != undefined) { 2397 //Delfino.initHandler({retryCount:0,execTimeout:2000,goInstall:false}); 2398 } else { 2399 Delfino.init(false); //Preloaded 2400 } 2401 } catch(e) {} 2402}); 2403 2404if( DelfinoConfig.useRecentModule ){ 2405 Delfino.setModule(); 2406} 2407else{ 2408 Delfino.setModule(DelfinoConfig.module); 2409} 2410 2411})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.