function Certificate(r){var t={};if(t.certInfo=null,t._parseCert=function(r){var t=TCACore.getInstance(),e={certStoreNameArr:["MY","Address"],b64Cert:r};e=tcu.json2Str(e);var n;try{n=t.call("Certificate/parseCert",e)}catch(r){return TCACErr.throwErr(r,ERRMAP.CERTIFICATE_PARSE_ERROR),null}return n.certInfo},this._keyStoreName="",this._keyStoreType="",this._keyStoreContainer="",this._keySpec=0,this._certStoreName="",tcu.isStr(r))t.certInfo=t._parseCert(r),t.certInfo.b64=r;else{if(!tcu.isObj(r))return void TCACErr.throwErr(ERRMAP.CERTIFICATE_INIT_WRONGTYPE);t.certInfo=r}this._keyStoreName=t.certInfo.keyStoreName,this._keyStoreType=t.certInfo.keyStoreType,this._keyStoreContainer=t.certInfo.certContainerName,this._keySpec=t.certInfo.certKeySpec,this._certStoreName=t.certInfo.certStoreName,this.serialNumber=function(){return t.certInfo.SN},this.subject=function(){return t.certInfo.subject.winDn},this.issuer=function(){return t.certInfo.issuer.winDn},this.notBefore=function(){return t.certInfo.notBefore},this.notAfter=function(){return t.certInfo.notAfter},this.crlUrl=function(){return t.certInfo.crlUrl},this.signAlg=function(){return tcu.convSignAlg2Str(t.certInfo.signAlg)},this.publicKeyAlg=function(){return tcu.convPubKeyAlg2Str(t.certInfo.pubKeyAlg)},this.publicKeySize=function(){return tcu.convPubKeyAlg2Size(t.certInfo.pubKeyAlg)},this.keyUsage=function(){return tcu.convKeyUsageNum2Arr(t.certInfo.keyUsage)},this.extededKeyUsage=function(){return tcu.convExtKeyUsageOID2Name(t.certInfo.extKeyUsage)},this.toBase64=function(){return t.certInfo.b64},this.signMessage=function(r,e,n,i){var c=tcu.convPubKeyAlg2Str(t.certInfo.pubKeyAlg);if(e=void 0===e||e,void 0===n)n="RSA"===c?TCA.SHA1:TCA.SM3;else if(!tcu.checkHashAlg(c,n))return null;i=void 0===i?TCA.IO.U8:i;var a=TCACore.getInstance(),o=TCA.IO.MSG|i,s=r,A=TCA.IO.MSG|TCA.IO.B64,u="noSet",C=tcu.tcaAlg2SDKAlg(n),l=a.getCfg("signPkcs7WithAttr"),T=["MY","Address"],E=[t.certInfo.certID],R=tcu.sign(T,E,C,!1,!0,l,e,!0,o,s,A,u);return null!=R?R.result:null},this.signMessageRaw=function(r,e,n){var i=tcu.convPubKeyAlg2Str(t.certInfo.pubKeyAlg);if(void 0===e)e="RSA"===i?TCA.SHA1:TCA.SM3;else if(!tcu.checkHashAlg(i,e))return null;n=void 0===n?TCA.IO.U8:n;var c=TCA.IO.MSG|n,a=r,o=TCA.IO.MSG|TCA.IO.B64,s="noSet",A=tcu.tcaAlg2SDKAlg(e),u=["MY","Address"],C=[t.certInfo.certID],l=tcu.sign(u,C,A,!1,!1,!1,!1,!1,c,a,o,s);return null!=l?l.result:null},this.signFile=function(r,e,n,i,c){if(n=void 0===n||n,i=void 0===i?TCA.IO.BIN:i,void 0===c)c="RSA"===this.publicKeyAlg()?TCA.SHA1:TCA.SM3;else if(!tcu.checkHashAlg(this.publicKeyAlg(),c))return null;var a=TCACore.getInstance(),o=TCA.IO.FILE|i,s=r,A=TCA.IO.FILE|i,u=e,C=tcu.tcaAlg2SDKAlg(c),l=a.getCfg("signPkcs7WithAttr"),T=["MY","Address"],E=[t.certInfo.certID],R=tcu.sign(T,E,C,!1,!0,l,n,!0,o,s,A,u);return null!=R},this.signFile2Msg=function(r,e,n,i){if(e=void 0===e||e,n=void 0===n?TCA.IO.BIN:n,void 0===i)i="RSA"===this.publicKeyAlg()?TCA.SHA1:TCA.SM3;else if(!tcu.checkHashAlg(this.publicKeyAlg(),i))return null;var c=TCACore.getInstance(),a=TCA.IO.FILE|n,o=r,s=TCA.IO.MSG|TCA.IO.B64,A="noset",u=tcu.tcaAlg2SDKAlg(i),C=c.getCfg("signPkcs7WithAttr"),l=["MY","Address"],T=[t.certInfo.certID],E=tcu.sign(l,T,u,!1,!0,C,e,!0,a,o,s,A);return null!=E?E.result:null},this.signFileRaw=function(r,e,n){if(e=void 0===e?TCA.IO.BIN:e,void 0===n)n="RSA"===this.publicKeyAlg()?TCA.SHA1:TCA.SM3;else if(!tcu.checkHashAlg(this.publicKeyAlg(),n))return null;var i=TCA.IO.FILE|e,c=r,a=TCA.IO.MSG|TCA.IO.B64,o="noSet",s=tcu.tcaAlg2SDKAlg(n),A=["MY","Address"],u=[t.certInfo.certID],C=tcu.sign(A,u,s,!1,!1,!1,!1,!1,i,c,a,o);return null!=C?C.result:null},this.encryptMessage=function(r,t){void 0===t&&(t="SM2"==this.publicKeyAlg()?TCA.SM4:TCA.DES3,t=tcu.tcaAlg2SDKAlg(t));var e=[this.toBase64()],n=TCA.IO.MSG|TCA.IO.U8,i=r,c=TCA.IO.MSG|TCA.IO.B64,a="noSet",o=tcu.enc(e,t,!0,n,i,c,a);return null!=o?o.result:null},this.encryptMessageRaw=function(r){var t=[this.toBase64()],e=TCA.IO.MSG|TCA.IO.U8,n=r,i=TCA.IO.MSG|TCA.IO.B64,c="noSet",a=tcu.tcaAlg2SDKAlg(TCA.SM4),o=tcu.enc(t,a,!1,e,n,i,c);return null!=o?o.result:null},this.encryptFile=function(r,t,e,n){e=void 0===e?TCA.IO.BIN:e,n=tcu.tcaAlg2SDKAlg(TCA.SM4);var i=[this.toBase64()],c=TCA.IO.FILE|e,a=r,o=TCA.IO.FILE|e,s=tcu.enc(i,n,!0,c,a,o,t);return null!=s||null},this.verifyMessageRaw=function(r,t,e,n){if(void 0===e)e="RSA"===this.publicKeyAlg()?TCA.SHA1:TCA.SHA256;else if(!tcu.checkHashAlg(this.publicKeyAlg(),e))return null;n=void 0===n?TCA.IO.U8:n;var i=this.toBase64(),c=TCA.VERIFYOPT.CONTEXT_IN_INPUT|TCA.VERIFYOPT.CERT_IN_INPUT,a=TCA.IO.MSG|TCA.IO.B64,o=r,s=TCA.IO.MSG|n,A=tcu.tcaAlg2SDKAlg(e),u=tcu.verify(i,!1,!1,A,c,a,o,s,t);return null!=u&&u.verifyResult},this.verifyFileRaw=function(r,t,e,n){if(void 0===n)n="RSA"===this.publicKeyAlg()?TCA.SHA1:TCA.SHA256;else if(!tcu.checkHashAlg(this.publicKeyAlg(),n))return null;var i=this.toBase64(),c=TCA.VERIFYOPT.CONTEXT_IN_INPUT|TCA.VERIFYOPT.CERT_IN_INPUT,a=TCA.IO.MSG|TCA.IO.B64,o=r,s=TCA.IO.FILE|TCA.IO.BIN,A=tcu.tcaAlg2SDKAlg(n),u=tcu.verify(i,!1,!1,A,c,a,o,s,t);return null!=u&&u.verifyResult},this.decryptMessageRaw=function(r){var e=["MY","Address"],n=[t.certInfo.certID],i=TCA.IO.MSG|TCA.IO.B64,c=r,a=TCA.IO.MSG|TCA.IO.U8,o="noSet",s=tcu.dec(e,n,!1,i,c,a,o);return null!=s?s.result:null},this.deleteCert=function(){var r,e=[t.certInfo.certID],n=TCACore.getInstance(),i='{"certStore" : ["MY", "Address"], "certIDArr" : ["'+e+'"]}';try{r=n.call("Certificate/deleteCert",i)}catch(r){return TCACErr.throwErr(r,ERRMAP.CERTIFICATE_DELETE_ERROR),!1}return null!=r},this.signLogonData=function(r){return this.signMessage("LOGONDATA:"+r)},this.signFile2File=this.signFile,this.signLogondata=this.signLogonData,this.encryptRaw=this.encryptMessageRaw,this.verifyFile=function(r,t,e){return r=null,t=null,e=null,TCACErr.throwErr(ERRMAP.UNIMPLEMENTED),null},this.verifyRaw=this.verifyMessageRaw,this.Delete=this.deleteCert,this.b64str=this.toBase64,this.exportPFX=function(r){return r=null,TCACErr.throwErr(ERRMAP.UNIMPLEMENTED),null},this.exportPFX2File=function(r,t){return r=null,t=null,TCACErr.throwErr(ERRMAP.UNIMPLEMENTED),null},this.show=function(){return TCACErr.throwErr(ERRMAP.UNIMPLEMENTED),null},this.clearPinCache=function(){var r={clid:"",method:"clearpin",params:[t.certInfo.keyStoreName]};r=tcu.json2Str(r);var e,n=TCACore.getInstance();try{e=n.call("KeyCom/call",r)}catch(r){return TCACErr.throwErr(r,ERRMAP.DECRYPT_ERROR),null}}}function CertSet(r){var t={};if(t.certArr=[],r instanceof Array){if(0!=r.length)if(r[0]instanceof Certificate)t.certArr=r;else{if(!tcu.isStr(r[0]))return void TCACErr.throwErr(ERRMAP.CERT_SET_INIT_ERROR_TYPE);for(var e=0;e=0&&e.push(t.certArr[n]);return 0==e.length?new CertSet:new CertSet(e)},this.byIssuer=function(r){for(var e=[],n=0;n=0&&e.push(t.certArr[n]);return 0==e.length?new CertSet:new CertSet(e)},this.byValidity=function(r){for(var e=0==arguments.length?new Date:new Date(date),n=[],i=0;i0?t:4294967296+t,this.description=e,this._errarr.push({code:this.number.toString(16).toUpperCase(),msg:e})},this.toStr=function(){for(var r="",t=0;t=0||S.indexOf("iTrus")>=0||"RSA"==S?1:c.getCfg("installMode")?2:1,i='{"certStoreName" : "MY", "mode" : '+R+', "b64SignCert" : "'+r+'", "b64UserSeal" : "'+C+'", "b64EncUserCert" : "'+t+'", "b64EncUserPrivateKey" : "'+l+'", "symmAlg" : '+u+', "b64IV" : "'+E+'"}'}var f;try{f=c.call(n,i)}catch(r){return TCACErr.throwErr(r,ERRMAP.INSTALL_CERT_ERR),null}return f.onlyCertChain?null:new Certificate(f.certInfo)},CertStore.listKeyStore=function(r){var t=TCACore.getInstance(),e='{"mode" : 1 }',n=null;try{n=t.call("KeyStore/listKeyStore",e)}catch(r){return TCACErr.throwErr(r,ERRMAP.LIST_STORE_ERROR),[]}var i=n.keyStoreArr;t.setKeyStoreListCache(i),r=!t.getCfg("disableWhiteList")&&r;for(var c=t.getCfg("whiteList"),a=t.getCfg("useAlias"),o=[],s=0;s0||r.toLocaleLowerCase().indexOf("trident")>-1}function loadCertKit(){return isIE()?loadCertKitActiveX():loadCertKitSrv()}function callSrv(r,t){var e=priData.config.certKitSrvUrl+r,n={},i=!1,c=function(r){i=!0,n=r},a=function(r,t,e){i=!1,n.request=r,n.status=t,n.err=e};if(priData.config.ajaxHdl({type:"POST",url:e,async:!1,contentType:"application/json; charset=utf-8",dataType:"json",data:t,success:c,error:a}),!i){var o="["+n.request.readyState+"]["+n.request.status+"]["+n.status+"]["+n.err.toString()+"]";throw new TCACErr(4278190081,o)}return n.retCode!=ERRMAP.SUPER_SUCCESS.code&&TCACErr.throwErr(TCACErr.newErr(ERRMAP.CALL_HTTP_CLIENT_ERR),{code:n.retCode,msg:n.retMsg}),n}function callSrvAsyn(r,t,e){var n=priData.config.certKitSrvUrl+r,i={},c=!1,a=function(r){c=!0,i=r,e(r)},o=function(r,t,e){TCACErr.throwErr(TCACErr.newErr(ERRMAP.CALL_HTTP_CLIENT_ERR),{code:i.retCode,msg:i.retMsg}),c=!1,i.request=r,i.status=t,i.err=e};priData.config.ajaxHdl({type:"POST",url:n,async:!0,contentType:"application/json; charset=utf-8",dataType:"json",data:t,success:a,error:o})}function callActiveX(r,t){var e=null;try{r="/"+r,e=priData.certKitSrvActiveX.reqHdl(r,t)}catch(r){var n=TCACErr.newErr({code:r.number,msg:r.description});return TCACErr.throwErr(n,ERRMAP.CALL_ACTIVEX_ERR),null}if(e=priData.config.str2JsonHdl(e),0!=e.retCode){var i=TCACErr.newErr(ERRMAP.CALL_ACTIVEX_ERR_METHOD);return TCACErr.throwErr(i,{code:e.retCode,msg:e.retMsg}),null}return e}function callActiveXAsyn(r,t,e){var n=null;try{r="/"+r,n=priData.certKitSrvActiveX.reqHdl(r,t)}catch(r){var i=TCACErr.newErr({code:r.number,msg:r.description});return TCACErr.throwErr(i,ERRMAP.CALL_ACTIVEX_ERR),null}if(n=priData.config.str2JsonHdl(n),0!=n.retCode){var c=TCACErr.newErr(ERRMAP.CALL_ACTIVEX_ERR_METHOD);return TCACErr.throwErr(c,{code:n.retCode,msg:n.retMsg}),null}e(n)}var priData={};priData.config=null,priData.cacheKeyStoreList=null,priData.certKitSrvActiveX=null,saveConfig({});var instanceClass=function(){this.getCfg=function(r){return priData.config[r]},this.setKeyStoreListCache=function(r){priData.cacheKeyStoreList=r},this.getLicInfo=function(r){return null==priData.config.licinfo,priData.config.licinfo[r]},this.full2Alias=function(r){for(var t in priData.config.cspAlias)if(priData.config.cspAlias.hasOwnProperty(t)&&priData.config.cspAlias[t]==r)return t;return r},this.alias2Full=function(r){var t=priData.config.cspAlias[r];return void 0===t?r:t},this.certInLic=function(r){var t=new RegExp(this.getLicInfo("Issuer"));return t.test(r.issuer())};var r={};r.query=isIE()?callActiveX:callSrv,r.queryAsyn=isIE()?callActiveXAsyn:callSrvAsyn,this.call=function(t,e){return r.query(t,e)},this.callAsyn=function(t,e,n){return r.queryAsyn(t,e,n)}},_instance=null,getInstance=function(r){if(void 0!==r&&null!==r&&saveConfig(r),null===_instance){if(_instance=new instanceClass,loadCertKit(),!checkCertKitVer())return void gotoExeUrl();priData.config.enableAutoAuth?verifyAutoAuth():verifyLicense()}return _instance};return{getInstance:getInstance}}();TCACErr.newErr=function(r,t){var e=null;return r instanceof TCACErr?(e=new TCACErr(r),e.addErr(t)):(e=new TCACErr,e.addErr(r)),e},TCACErr.throwErr=function(r,t){throw r instanceof TCACErr?TCACErr.newErr(r,t):TCACErr.newErr(r)};var ERRMAP_ZHCN={CERTSTORE_INIT_WRONGTYPE:{code:16777217,msg:"CertStore实例初始化失败,参数类型不匹配"},LIST_STORE_ERROR:{code:16777218,msg:"列举密钥库错误"},BY_CERT_ERR_TYPE:{code:16777219,msg:"根据证书获取CertStore实例时失败,参数类型不匹配"},LIST_CERT_ERROR:{code:16777220,msg:"列举证书错误"},GEN_CSR_ERROR_PARAMS:{code:16777221,msg:"产生CSR失败,输入参数错误"},GEN_CSR_ERR_PUBKEY_ALG:{code:16777222,msg:"产生CSR失败,未知的证书公钥算法"},GEN_CSR_ERROR:{code:16777223,msg:"产生CSR失败"},INSTALL_CERT_ERR_PARAMS:{code:16777224,msg:"安装证书失败,输入参数错误"},INSTALL_CERT_ERR_UNKNOWN_SYMMALG:{code:16777225,msg:"安装加密证书失败,未知的对称加密算法"},INSTALL_CERT_ERR:{code:16777226,msg:"安装证书失败"},CERTIFICATE_INIT_WRONGTYPE:{code:33554433,msg:"Certificate实例初始化失败,参数类型不匹配"},CERTIFICATE_PARSE_ERROR:{code:33554434,msg:"从Base64解析证书失败"},CERTIFICATE_DELETE_ERROR:{code:33554435,msg:"删除证书失败"},CERT_SET_INIT_ERROR_TYPE:{code:50331649,msg:"初始化CertSet实例失败,错误的输入类型"},CERT_SET_INIT_ERROR_TYPE_2:{code:50331650,msg:"初始化CertSet实例失败,错误的输入类型"},CERT_SET_INIT_ERROR_TYPE_3:{code:50331651,msg:"初始化CertSet实例失败,错误的输入类型"},CERT_SET_FILTER_KEYUSAGE_ERROR:{code:50331652,msg:"通过密钥用法过滤失败,错误的输入类型"},CSR_INIT_ERROR_TYPE:{code:67108865,msg:"初始化Csr实例失败,错误的输入类型"},PKCS7_INIT_ERROR_TYPE:{code:83886081,msg:"初始化Pkcs7实例失败,错误的输入类型"},PKCS7_INIT_PARSE_ERROR:{code:83886082,msg:"初始化Pkcs7实例失败,解析Pkcs7数据失败"},SIGN_ERROR:{code:2684354561,msg:"签名操作失败"},SIGN_ERROR_HASH_ALG:{code:100663297,msg:"哈希算法与签名算法不匹配"},VERIFY_ERROR:{code:2684354562,msg:"验证签名操作失败"},ENCRYPT_ERROR:{code:2684354563,msg:"加密操作失败"},DECRYPT_ERROR:{code:2684354564,msg:"解密操作失败"},ERROR_HASH_ALG:{code:2952790017,msg:"指定了错误的Hash算法算法"},ERROR_JSON_TYPE:{code:2952790018,msg:"错误的json类型"},ERROR_CALL_SRV_VER:{code:2952790019,msg:"查询服务版本失败"},CALL_HTTP_CLIENT_ERR:{code:4026531841,msg:"执行本地方法失败"},INVALID_LICENSE:{code:4026531842,msg:"使用了无效的License"},INVALID_CERTKIT_VER:{code:4026531843,msg:"不匹配的CertKit版本"},CALL_ACTIVEX_ERR:{code:4026531844,msg:"执行本地方法失败"},CALL_ACTIVEX_ERR_METHOD:{code:4026531845,msg:"执行操作失败"},INSTALL_ACTIVEX_ERR:{code:4026531846,msg:"无法加载ActiveX控件"},INVALID_LICENSE_2:{code:4026531847,msg:"使用了无效的License"},INVALID_CONFIG:{code:4026531848,msg:"无效的配置"},AUTOAUTH_ERROR:{code:4026531849,msg:"autoautherror"},AUTOAUTH_ERROR_2:{code:4026531850,msg:"autoautherror2"},ERROR_FILE_DIALOG:{code:218103810,msg:"打开对话框失败"},UNIMPLEMENTED:{code:1,msg:"未实现的方法"},BIG_ERROR:{code:4294967295,msg:"错误"},SUPER_SUCCESS:{code:0,msg:"成功"}},ERRMAP=ERRMAP_ZHCN;TCACErr.prototype=new Error,tcu.extKeyUsageMap={"1.3.6.1.5.5.7.3.1":"serverAuth","1.3.6.1.5.5.7.3.2":"clientAuth","1.3.6.1.5.5.7.3.3":"codeSigning","1.3.6.1.5.5.7.3.4":"emailProtection","1.3.6.1.5.5.7.3.5":"ipsecEndSystem","1.3.6.1.5.5.7.3.6":"ipsecTunnel","1.3.6.1.5.5.7.3.7":"ipsecUser","1.3.6.1.5.5.7.3.8":"timeStamping","1.3.6.1.5.5.7.3.9":"OCSPSigning","1.3.6.1.5.5.7.3.10":"dvcs","1.3.6.1.5.5.7.3.11":"sbgpCertAAServerAuth","1.3.6.1.5.5.7.3.12":"scvpResponder","1.3.6.1.5.5.7.3.13":"eapOverPPP","1.3.6.1.5.5.7.3.14":"eapOverLAN","1.3.6.1.5.5.7.3.15":"scvpServer","1.3.6.1.5.5.7.3.16":"scvpClient","1.3.6.1.5.5.7.3.17":"ipsecIKE", "1.3.6.1.5.5.7.3.18":"capwapAC","1.3.6.1.5.5.7.3.19":"capwapWTP","1.3.6.1.4.1.311.20.2.2":"smartcardlogon"},tcu.isStr=function(r){return"string"==typeof r},tcu.isNum=function(r){return"number"==typeof r},tcu.isBool=function(r){return"boolean"==typeof r},tcu.isUndef=function(r){return"undefined"==typeof r},tcu.isNull=function(r){return"null"==typeof r},tcu.isObj=function(r){return"object"==typeof r},tcu.isArr=function(r){return"[object Array]"===Object.prototype.toString.call(r)},tcu.urlDec=function(r){var t=decodeURIComponent(r);return t.replace(/[\r\n]/g,"")},tcu.convKeyUsageArr2Num=function(r){for(var t=0,e=0;e0&&(t=t.substr(0,t.length-2)),"["+t+"]"},tcu.json2Str=function(r){var t="{";for(var e in r){t+='"'+e+'":';var n=r[e];tcu.isStr(n)?(n=n.replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\"/g,'\\"').replace(/\\/g,"\\\\"),t+='"'+n+'",'):tcu.isNum(n)||tcu.isBool(n)?t+=n+",":tcu.isArr(n)?t+=tcu.arr2Str(n)+",":TCACErr.throwErr(ERRMAP.ERROR_JSON_TYPE)}return t+='"_jsonEnd":"_jsonEnd"}'},tcu.sign=function(r,t,e,n,i,c,a,o,s,A,u,C){var l={certStore:r,certIDArr:t,hash:e,bSignHash:n,bSignP7:i,bAttr:c,bIncCtx:a,bIncCert:o,inType:s,inParam:A,outType:u,outParam:C};l=tcu.json2Str(l);var T,E=TCACore.getInstance();try{T=E.call("Sign/sign",l)}catch(r){return TCACErr.throwErr(r,ERRMAP.SIGN_ERROR),null}return T},tcu.verify=function(r,t,e,n,i,c,a,o,s){var A={b64Cert:r,isHashSign:t,isPkcs7:e,hash:n,verifyOption:i,signInType:c,signInParam:a,plainInType:o,plainInParam:s};A=tcu.json2Str(A);var u,C=TCACore.getInstance();try{u=C.call("Verify/verify",A)}catch(r){return TCACErr.throwErr(r,ERRMAP.VERIFY_ERROR),null}return u},tcu.enc=function(r,t,e,n,i,c,a){var o={certArr:r,symmAlg:t,bEncP7:e,inType:n,inParam:i,outType:c,outParam:a};o=tcu.json2Str(o);var s,A=TCACore.getInstance();try{s=A.call("Enc/enc",o)}catch(r){return TCACErr.throwErr(r,ERRMAP.ENCRYPT_ERROR),null}return s},tcu.dec=function(r,t,e,n,i,c,a){var o={certStore:r,certIDArr:t,bIsP7:e,inType:n,inParam:i,outType:c,outParam:a};o=tcu.json2Str(o);var s,A=TCACore.getInstance();try{s=A.call("Dec/dec",o)}catch(r){return TCACErr.throwErr(r,ERRMAP.DECRYPT_ERROR),null}return s},tcu.checkHashAlg=function(r,t){return!("SM2"===r&&t!=TCA.SM3||"RSA"===r&&t===TCA.SM3)||(TCACErr.throwErr(ERRMAP.SIGN_ERROR_HASH_ALG),!1)},tcu.getSrvVersion=function(){var r,t=TCA.IO.MSG,e='{"outType" :'+t+"}",n=TCACore.getInstance();try{r=n.call("Server/version",e)}catch(r){return TCACErr.throwErr(r,ERRMAP.ERROR_CALL_SRV_VER),null}return r},tcu.ajax=function(jsonParam){var url=jsonParam.url,data=jsonParam.data,successCallback=jsonParam.success,errorCallback=jsonParam.error,request=new XMLHttpRequest;try{if(request.open("POST",url,!1),request.setRequestHeader("Content-Type","application/json; charset=UTF-8"),request.send(data),200==request.status)return void successCallback(eval("("+request.responseText+")"))}catch(r){return void errorCallback(request,request.statusText,"send error & no error thrown")}errorCallback(request,request.statusText,"no error thrown")},tcu.hash=function(r,t,e,n,i){var c={hash:r,inType:t,inParam:e,outType:n,outParam:i};c=tcu.json2Str(c);var a,o=TCACore.getInstance();try{a=o.call("Hash/hash",c)}catch(r){return TCACErr.throwErr(r,ERRMAP.DECRYPT_ERROR),null}return a},tcu.random=function(r){var t={byteLen:r};t=tcu.json2Str(t);var e,n=TCACore.getInstance();try{e=n.call("rand/rand",t)}catch(r){return TCACErr.throwErr(r,ERRMAP.DECRYPT_ERROR),null}return e},tcu.symm=function(r,t,e,n,i,c,a,o){var s={isEnc:n,b64Key:r,b64IV:t,symmAlg:e,inType:i,inParam:c,outType:a,outParam:o};s=tcu.json2Str(s);var A,u=TCACore.getInstance();try{A=u.call("symm/symm",s)}catch(r){return TCACErr.throwErr(r,ERRMAP.DECRYPT_ERROR),null}return A};