var http=null,postTarget,timeoutId,winVer="1.3.4.103328",macVer="1.3.4.13",linuxVer="1.3.4.3";function getUserCertCallback(a){}function makeSignatureCallback(a){}function errorCallback(a){}function error(a,b){errorCallback({errorCode:a,description:b})}var tbsData={}; function versionCompare(a,b){var c=a.split("."),e=b.split(".");a="";for(var f=0;fb} function checkVersion(a,b){var c=JSON.parse(a);if(1979711537==c.ret_code)error("0",window.location.hostname+"\u975e\u4fe1\u4efb\u7db2\u7ad9\uff0c\u8acb\u5148\u52a0\u5165\u4fe1\u4efb\u7db2\u7ad9");else{var e=navigator.appVersion;c=c.serverVersion;0<=e.indexOf("Win")?versionCompare(winVer,c)?(error("0","\u8acb\u5c07\u300c\u8de8\u5e73\u53f0\u7db2\u9801\u5143\u4ef6\u300d\u5347\u7d1a\u81f3 "+winVer+" \u4ee5\u4e0a"),openInstallPage()):b():0<=e.indexOf("Mac")?versionCompare(macVer,c)?(error("0","\u8acb\u5c07\u300c\u8de8\u5e73\u53f0\u7db2\u9801\u5143\u4ef6\u300d\u5347\u7d1a\u81f3 "+ macVer+" \u4ee5\u4e0a"),openInstallPage()):b():0<=e.indexOf("Linux")?versionCompare(linuxVer,c)?(error("0","\u8acb\u5c07\u300c\u8de8\u5e73\u53f0\u7db2\u9801\u5143\u4ef6\u300d\u5347\u7d1a\u81f3 "+linuxVer+" \u4ee5\u4e0a"),openInstallPage()):b():error("0","\u300c\u8de8\u5e73\u53f0\u7db2\u9801\u5143\u4ef6\u300d\u53ea\u652f\u63f4Windows, Mac, Linux.")}} function getImageInfo(a){var b="";for(i=0;2E3>i;i++){var c=a.getImageData(i,0,1,1).data;if(0==c[2])break;b+=String.fromCharCode(c[2],c[1],c[0])}""==b&&(b='{"ret_code": 1979711501,"message": "\u57f7\u884c\u6a94\u932f\u8aa4\u6216\u903e\u6642"}');return b}function myLoad(){var a=window.navigator.userAgent;-1==a.indexOf("MSIE")&&-1==a.indexOf("Trident")&&doHicos(function(){})} function doHicos(a){var b=window.navigator.userAgent;null!=http||-1==b.indexOf("MSIE")&&-1==b.indexOf("Trident")||(http=document.createElement("object"),http.setAttribute("id","http"),http.setAttribute("type","application/x-httpcomponent"),http.setAttribute("VIEWASTEXT"));var c=document.createElement("img");c.crossOrigin="Anonymous";c.src="http://localhost:61161/p11Image.bmp";b=document.createElement("canvas");b.width=2E3;b.height=1;var e=b.getContext("2d");c.onload=function(){e.drawImage(c,0,0); checkVersion(getImageInfo(e),a)};c.onerror=function(){error("0","\u8acb\u5148\u5b89\u88dd\u6216\u555f\u52d5\u300c\u8de8\u5e73\u53f0\u7db2\u9801\u5143\u4ef6\u300d\u670d\u52d9");openInstallPage()}}function openInstallPage(){var a=window.open("https://moeacaweb.nat.gov.tw/MoeaeeWeb/other/checker.aspx","_blank");a&&a.focus()}function checkFinish(){postTarget&&(postTarget.close(),error(0,"\u5c1a\u672a\u5b89\u88dd\u5143\u4ef6"))} function getUserCert(){var a=window.navigator.userAgent;if(-1!=a.indexOf("MSIE")||-1!=a.indexOf("Trident"))if(a=getPGKISignCertInfo("tw"),0!=a.errorCode)error(a.errorCode,a.description);else{var b=new Date(a.startTime.substr(0,4)+"-"+a.startTime.substr(4,2)+"-"+a.startTime.substr(6,2)+"T"+a.startTime.substr(8,2)+":"+a.startTime.substr(10,2)+":"+a.startTime.substr(12,2)+"Z"),c=new Date(a.endTime.substr(0,4)+"-"+a.endTime.substr(4,2)+"-"+a.endTime.substr(6,2)+"T"+a.endTime.substr(8,2)+":"+a.endTime.substr(10, 2)+":"+a.endTime.substr(12,2)+"Z");a={cardSerialNumber:getGPKIObj().FSGPKI_GetSerialNumber(),certSerialNumber:a.serialNo,cardType:getCardType(a.issuerSubject,a.certSubject),holderRank:a.cardHolderRank,issuerDN:a.issuerSubject,subject:a.certSubject,validityNotBefore:b,validityNotAfter:c,certContent:a.certContent};getUserCertCallback(a)}else doHicos(function(){tbsData.func="GetUserCert";postTarget&&postTarget.close();postTarget=window.open("http://localhost:61161/popupForm","\u6191\u8b49\u8b80\u53d6\u4e2d", "height=200, width=200, left=100, top=20");timeoutId=setTimeout(checkFinish,5E3)})} function setUserCert(a){a=JSON.parse(a);if(0!=a.ret_code)error(0,MajorErrorReason(a.ret_code)),a.last_error&&error(0,MinorErrorReason(a.last_error));else{var b=a.slots;for(d in b)if(null!=b[d].token&&"unknown token"!==b[d].token){a=b[d].token.certs;for(var c in a)if("digitalSignature"==a[c].usage){var e=new Date(1E3*a[c].notAfterT),f=new Date(1E3*a[c].notBeforeT);var d={cardSerialNumber:b[d].token.serialNumber,certSerialNumber:a[c].sn,cardType:getCardType(a[c].issuerDN,a[c].subjectDN),issuerDN:a[c].issuerDN.replace(/,/g, "\n"),subject:a[c].subjectDN.replace(/,/g,"\n").replace("serialNumber","SERIALNUMBER"),validityNotBefore:f,validityNotAfter:e,certContent:a[c].certb64};null!=a[c].holderRank&&(d.holderRank=a[c].holderRank);getUserCertCallback(d);return}}error(0,"\u672a\u63d2\u5165IC\u5361")}} function getCardType(a,b){if(void 0!=a&&-1!==a.indexOf("\u5de5\u5546\u6191\u8b49\u7ba1\u7406\u4e2d\u5fc3"))return"MOEACA";if(void 0!=a&&-1!==a.indexOf("\u5167\u653f\u90e8\u6191\u8b49\u7ba1\u7406\u4e2d\u5fc3"))return"MOICA";if(void 0!=a&&-1!==a.indexOf("\u653f\u5e9c\u6191\u8b49\u7ba1\u7406\u4e2d\u5fc3"))return"GCA";if(void 0!=a&&-1!==a.indexOf("\u7d44\u7e54\u53ca\u5718\u9ad4\u6191\u8b49\u7ba1\u7406\u4e2d\u5fc3"))return"XCA";if(-1!==b.indexOf("\u6a5f\u95dc"))return"GCA";if(-1!==b.indexOf("\u516c\u53f8")|| -1!==b.indexOf("\u5546\u865f"))return"MOEACA";if(-1!==b.indexOf("\u81ea\u7136\u4eba"))return"MOICA";if(-1!==b.indexOf("\u5b78\u6821")||-1!==b.indexOf("\u6cd5\u4eba")||-1!==b.indexOf("\u4e8b\u52d9\u6240")||-1!==b.indexOf("\u5718\u9ad4"))return"XCA";alert("
\u56e0\u914d\u5408\u5167\u653f\u90e8\u767c\u884c\u65b0\u7248\u6191\u8b49\uff0c\u6539\u7528\u65b0\u7248\u6191\u8b49\u8b80\u53d6\u7a0b\u5f0f\u3002
\u53ef\u80fd\u6703\u51fa\u73fe\u6191\u8b49\u8b80\u53d6\u932f\u8aa4\uff0c\u82e5\u51fa\u73fe\u932f\u8aa4\u8acb\u53c3\u8003\u4ee5\u4e0b\u6aa2\u67e5\u65b9\u5f0f\uff0c\u4e26\u64f7\u53d6\u6b64\u756b\u9762\u3002

issuerDN:"+ a+"
subjectDN:"+b+'

\u71df\u696d\u4eba\u81ea\u884c\u6aa2\u67e5\u65b9\u5f0f\uff1a
1. \u8acb\u78ba\u8a8d\u76ee\u524dIE\u7248\u672c
2. \u8acb\u78ba\u8a8d\u4f7f\u7528\u7684\u6191\u8b49\u7a2e\u985e\u53ca\u5927\u6982\u7684\u7533\u8acb\u65e5\u671f
3. \u8acb\u71df\u696d\u4eba\u9023\u7dda\u5230\u4e0b\u5217\u7db2\u5740\uff0c\u78ba\u8a8d\u6b65\u9a5f1\u8207\u6b65\u9a5f2\u662f\u5426\u80fd\u6b63\u5e38\u57f7\u884c?
\u7db2\u5740\u9023\u7d50
3.1 \u80fd\u6b63\u78ba\u57f7\u884c\uff0c\u8868\u793aGPKIC ActiveX\u5df2\u5b89\u88dd\u4e14\u80fd\u6b63\u78ba\u57f7\u884c\uff0c\u8acb\u71df\u696d\u4eba\u518d\u57f7\u884c\u4e00\u6b21\uff0c\u82e5\u4ecd\u51fa\u73fe\u76f8\u540c\u554f\u984c\u53ef\u80fd\u662f\u8a72\u9801\u9762\u7db2\u9801\u76f8\u5bb9\u6027\u554f\u984c
3.2 \u7121\u6cd5\u57f7\u884c\uff0c\u8868\u793aGPKIC ActiveX\u672a\u6b63\u78ba\u5b89\u88dd\uff0c\u8acb\u7528\u6236\u7528\u5177administrator\u6b0a\u9650\u7684\u5e33\u865f\u91cd\u88dd\u4e00\u6b21ActiveX\uff0c\u6216\u63db\u53f0\u96fb\u8166\u8a66\u8a66

\u4e0a\u8ff0\u6b65\u9a5f\u5b8c\u6210\u5f8c\uff0c\u8acb\u9023\u7d61\u5ba2\u670d\u5c08\u7dda0800-521-988
'); throw new Exception("Error");} function makeSignature(a,b){var c=window.navigator.userAgent;-1!=c.indexOf("MSIE")||-1!=c.indexOf("Trident")?(c=signDataByGPKI(b,a,"","","tw","true"),0!=c.errorCode?(error(0,c.description),9039==c.errorCode&&error(0,"\u6676\u5361\u7247\u7684\u5bc6\u78bc(PinCode)\u932f\u8aa4\uff01\u6ce8\u610f\uff1a\u9023\u7e8c\u932f\u8aa4\u9054\u4e09\u6b21\uff0c\u6703\u88ab\u9396\u5361\uff01")):makeSignatureCallback({b64signature:c.signature,attributeCert:c.attributeCert})):doHicos(function(){tbsData={func:"MakeSignature", signatureType:"PKCS7",hashAlgorithm:"SHA256",withSigningTime:"false",withCardSN:"false",pin:a,withSCAP:"true",tbs:b};1>tbsData.pin.length?error(0,"\u8acb\u8f38\u5165PIN\u78bc"):(postTarget&&postTarget.close(),postTarget=window.open("http://localhost:61161/popupForm","\u6191\u8b49\u8b80\u53d6\u4e2d","height=200, width=200, left=100, top=20"),timeoutId=setTimeout(checkFinish,5E3))})} function setSignature(a){a=JSON.parse(a);if(0!=a.ret_code)error(a.ret_code,a.message),a.last_error&&error(0,MinorErrorReason(a.last_error));else{var b={b64signature:a.signature,attributeCert:a.attributeCert};null!=a.SCAP&&(b.attributeCert=a.SCAP);makeSignatureCallback(b)}} function receiveMessage(a){console&&console.debug(a);if("http://localhost:61161"==a.origin)try{var b=JSON.parse(a.data);b.func?"getTbs"==b.func?(clearTimeout(timeoutId),postTarget.postMessage(JSON.stringify(tbsData).replace(/%/g,"%25").replace(/\+/g,"%2B"),"*")):"pkcs11info"==b.func?setUserCert(a.data):"sign"==b.func?setSignature(a.data):error(0,"unknown func "+b.func):(console&&console.error("no func"),error(0,"no func "+b.func))}catch(c){console&&console.error(c)}} window.addEventListener&&window.addEventListener("message",receiveMessage,!1);var console=console||{log:function(){},debug:function(){},error:function(){}};