netcawebsocket.js 74 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185
  1. /*
  2. NetcaWebsocket 模块(V1.3.0)
  3. 该模块主要提供核心实现和基础的PKI接口,对外入口为NetcaPKI。通过NetcaPKI.xx调用接口
  4. netca_系列函数为旧的封装函数。
  5. 版本 V1.0.0
  6. 封装了Webscoket连接过程, 模拟 Promise 来处理异步调用过程
  7. 支持 signeddata签名, 数字信封 ,签章,非对称加解密接口
  8. 版本 V1.2.0 2018-09-18
  9. 增加PKCS#1签名验证接口 Sign 和 VerifySignature
  10. 版本 V1.3.0 2019-05-07
  11. 优化判断连接判断接口时间
  12. 版本 V1.4.0 2019-11-01
  13. 增加显示证书信息UI的接口
  14. 版本 V1.5.0 2020-03-03
  15. 增加获取SignedData属性信息的接口
  16. 2021-04-30 修改显示调用中间件捕获的异常
  17. */
  18. var NetcaPKI = (function () {
  19. "use strict";
  20. var PKIObject = {};
  21. var _PkiMgr = null;
  22. function easyPromise() {
  23. this.succesCallBack = function (res) {};
  24. this.failCallBack = function (res) {};
  25. };
  26. easyPromise.prototype.Then = function (fun) {
  27. this.successCallBack = fun;
  28. return this;
  29. }
  30. easyPromise.prototype.Catch = function (fun) {
  31. this.failCallBack = fun;
  32. return this;
  33. }
  34. function easySynPromise() {
  35. this.succesCallBackMessage = null;
  36. this.failCallBackMessage = null;
  37. };
  38. easySynPromise.prototype.Then = function (fun) {
  39. if (fun != null && this.failCallBackMessage == null)
  40. fun(this.succesCallBackMessage);
  41. return this;
  42. }
  43. easySynPromise.prototype.Catch = function (fun) {
  44. if (fun != null && this.failCallBackMessage != null)
  45. fun(this.failCallBackMessage);
  46. return this;
  47. }
  48. easySynPromise.prototype.FireEvent = function (successmsg, errormsg) {
  49. this.succesCallBackMessage = successmsg;
  50. this.failCallBackMessage = errormsg;
  51. }
  52. function WebSocketManager() {
  53. //原生的wsObj对象
  54. this._wsObj = null;
  55. this._tryConnectIndex = 0;
  56. this._registerFunctionPromiseMap = {};
  57. this._tryConnectList = new Array();;
  58. this._requestIdIndex = 0;
  59. this._isWsConnecting=false;
  60. }
  61. WebSocketManager.prototype.RegisterPromise = function (promiseObj, params) {
  62. var messageItem = {};
  63. var curRequest = ++this._requestIdIndex;
  64. messageItem.requestId = curRequest;
  65. messageItem.promiseCallBack = promiseObj;
  66. messageItem.params = params;
  67. this._registerFunctionPromiseMap[curRequest] = messageItem;
  68. //生成请求的数据
  69. var sendData = JSON.stringify({
  70. "requestVersion": 1,
  71. "requestOrigin": "45B45638-A006-4cf1-A298-816B376D867E",
  72. "requestId": curRequest,
  73. "requestQuery": params
  74. });
  75. return sendData;
  76. }
  77. WebSocketManager.prototype.GetValidConnectURL = function () {
  78. for (var i in this._tryConnectList) {
  79. var connectInfoItem = this._tryConnectList[i];
  80. //表示能够连接成功
  81. if (connectInfoItem.canConnect == 1) {
  82. return connectInfoItem;
  83. }
  84. }
  85. //没有可成功的连接,继续下个索引处理
  86. if (this._tryConnectIndex >= this._tryConnectList.length) {
  87. return null;
  88. } else {
  89. return this._tryConnectList[this._tryConnectIndex++];
  90. }
  91. }
  92. WebSocketManager.prototype.AddConnectObject = function (obj) {
  93. this._tryConnectList.push(obj);
  94. }
  95. WebSocketManager.prototype.ProcessSuccessMessageCallBack = function (message) {
  96. //判断是否正常数据
  97. try {
  98. var obj = JSON.parse(message);
  99. if (obj.requestId != null) {
  100. var messageItem = this._registerFunctionPromiseMap[obj.requestId];
  101. if (messageItem == null) {
  102. //没有办法定位是哪个实例,只是默认不处理该信息
  103. alert("调用证书服务发生异常" + e.message);
  104. console.log(e + "_registerFunctionPromiseMap Fail ");
  105. } else {
  106. if (obj.responseResult.status == 0) {
  107. if (messageItem.promiseCallBack.successCallBack != null) {
  108. try
  109. {
  110. messageItem.promiseCallBack.successCallBack(obj.responseEntity);
  111. }
  112. catch (e)
  113. {
  114. if(e.fileName){
  115. // firefox
  116. alert("错误文件:"+e.fileName+"; 行数:"+e.lineNumber+"; 错误类型:"+e.name+"; 错误信息:"+e.message);
  117. } else {
  118. // chrome
  119. alert(e.message);
  120. }
  121. // 打印 成功回调捕获到的异常
  122. console.log(e.stack);
  123. }
  124. }
  125. } else {
  126. if (messageItem.promiseCallBack.failCallBack != null) {
  127. try
  128. {
  129. messageItem.promiseCallBack.failCallBack(obj.responseResult);
  130. }
  131. catch (e)
  132. {
  133. if(e.fileName){
  134. // firefox
  135. alert("错误文件:"+e.fileName+"; 行数:"+e.lineNumber+"; 错误类型:"+e.name+"; 错误信息:"+e.message);
  136. } else {
  137. // chrome
  138. alert(e.message);
  139. }
  140. // 打印 失败回调捕获到的异常
  141. console.log(e.stack);
  142. }
  143. }
  144. }
  145. }
  146. }
  147. } catch (e) {
  148. //没有办法定位是哪个实例,只是默认不处理该信息
  149. alert("调用中间件服务发生异常" + e.message);
  150. // 打印调用中间件服务发生的异常
  151. console.log(e.stack);
  152. }
  153. }
  154. WebSocketManager.prototype.ProcessServiceConnectFailCallBack = function (jsonMessage, addMsg)
  155. {
  156. if (addMsg==null||addMsg=="")
  157. {
  158. addMsg="数字证书服务连接失败,请确认已安装最新的数字证书驱动!";
  159. }
  160. try {
  161. var obj = JSON.parse(jsonMessage);
  162. var NETCA_ERROR_WEBSOCKETCONNECTFAIL=-11000;
  163. var responseResult={};
  164. responseResult.status=NETCA_ERROR_WEBSOCKETCONNECTFAIL;
  165. responseResult.msg=addMsg;
  166. var retData = JSON.stringify({
  167. "requestVersion": obj.requestVersion,
  168. "requestOrigin": obj.requestOrigin,
  169. "requestId": obj.requestId,
  170. "responseResult": responseResult
  171. });
  172. this.ProcessSuccessMessageCallBack(retData);
  173. } catch (e) {
  174. alert(addMsg);
  175. }
  176. }
  177. //调用一次获取处理数据发送一次
  178. WebSocketManager.prototype.WebSocketDoSend = function (jsonMessage) {
  179. var selfObject = this;
  180. //使用了单进程处理方式
  181. //这里不能够使用多个连接对象
  182. //由于异步的处理,存在连接服务未完成,重复进入这个流程,导致WS报连接中的错误
  183. //这里应用设置了判断是否连接状态处理
  184. if(selfObject._wsObj != null&&selfObject._isWsConnecting)
  185. {
  186. selfObject.ProcessServiceConnectFailCallBack(jsonMessage,"数字证书服务连接中,请稍后重试!");
  187. //alert("数字证书服务连接中,请稍后重试!");
  188. return;
  189. }
  190. if (selfObject._wsObj != null && selfObject._wsObj.readyState == 1) {
  191. selfObject._wsObj.send(jsonMessage);
  192. } else {
  193. var connectInfoItem = this.GetValidConnectURL();
  194. if (connectInfoItem == null) {
  195. selfObject._tryConnectIndex = 0;
  196. selfObject.ProcessServiceConnectFailCallBack(jsonMessage,"数字证书服务连接失败,请确认已安装最新的数字证书驱动!");
  197. // alert("数字证书服务连接失败,请确认已安装最新的数字证书驱动!");
  198. return;
  199. }
  200. //初始化连接服务的数据
  201. var connectConfig = {};
  202. connectConfig.url = connectInfoItem.url;
  203. connectConfig.subprotocol = "crypto-jsonrpc-protocol";
  204. try {
  205. selfObject._wsObj = null;
  206. selfObject._isWsConnecting=true;
  207. //开始连接
  208. selfObject._wsObj = new WebSocket(connectConfig.url, connectConfig.subprotocol);
  209. selfObject._wsObj.onopen = function () {
  210. selfObject._isWsConnecting=false;
  211. //获取队列数据 发送数据
  212. connectInfoItem.canConnect = 1;
  213. if (selfObject._wsObj != null) {
  214. selfObject._wsObj.send(jsonMessage);
  215. }
  216. };
  217. selfObject._wsObj.onmessage = function (evt) {
  218. selfObject.ProcessSuccessMessageCallBack(evt.data);
  219. };
  220. selfObject._wsObj.onclose = function () {
  221. selfObject._isWsConnecting=false;
  222. };
  223. selfObject._wsObj.onerror = function () {
  224. //断开这个连接,重新连接、
  225. selfObject._isWsConnecting=false;
  226. if (selfObject._wsObj != null && selfObject._wsObj.readyState == 1) {
  227. selfObject._wsObj.close();
  228. selfObject._wsObj = null;
  229. } else {
  230. selfObject._wsObj = null;
  231. //连接不上 会进入这里 或者其他错误
  232. if (connectInfoItem.canConnect == 1) {
  233. selfObject._tryConnectIndex = 0;
  234. //todo 经发现有时候长连接会断开 这里弹框影响用户体验
  235. //alert("连接数字证书服务失败,请刷新页面重试!");
  236. selfObject.ProcessServiceConnectFailCallBack(jsonMessage,"数字证书服务连接中,请稍后重试!");
  237. } else { //其他地址连接试试
  238. selfObject.WebSocketDoSend(jsonMessage);
  239. }
  240. }
  241. };
  242. } catch (e) {
  243. selfObject._isWsConnecting=false;
  244. //这里连接失败一般就是服务访问不了或者安全拒绝
  245. console.log(e + "try to connect" + connectConfig._url);
  246. if (connectInfoItem.canConnect == 1) {
  247. selfObject._tryConnectIndex = 0;
  248. //todo 经发现有时候长连接会断开 这里弹框影响用户体验
  249. selfObject.ProcessServiceConnectFailCallBack(jsonMessage,"数字证书服务连接中,请稍后重试!");
  250. //alert("连接数字证书服务失败,请刷新页面重试!");
  251. } else { //其他地址连接试试
  252. selfObject.WebSocketDoSend(jsonMessage);
  253. }
  254. }
  255. }
  256. };
  257. WebSocketManager.prototype.ProcessSynMessageCallBack = function (message, synpromise) {
  258. //判断是否正常数据
  259. try {
  260. var obj = JSON.parse(message);
  261. if (obj.responseResult.status == 0) {
  262. synpromise.FireEvent(obj.responseEntity, null);
  263. } else {
  264. synpromise.FireEvent(null, obj.responseResult);
  265. }
  266. } catch (e) {
  267. //没有办法定位是哪个实例,只是默认不处理该信息
  268. obj = JSON.parse("{\"responseResult\": {\"status\":-1,\"msg\": \"响应的数据不是有效的JSON数据\"}}");
  269. // 打印调用中间件服务发生的异常
  270. console.log(e.stack);
  271. synpromise.FireEvent(null, obj.responseResult);
  272. }
  273. }
  274. WebSocketManager.prototype.SendRPCMessage = function (params) {
  275. var retPromise = new easyPromise();
  276. var sendMsg = this.RegisterPromise(retPromise, params);
  277. //如果不支持websocket 使用Com方式,只能IE使用,这里不判断是否IE
  278. if (IsUseWebsocket()) {
  279. this.WebSocketDoSend(sendMsg);
  280. return retPromise;
  281. } else {
  282. var comObj = null;
  283. var retSynPromise = new easySynPromise();
  284. try {
  285. comObj = new ActiveXObject("NetcaPki.Utilities");
  286. } catch (e) {
  287. var NETCA_ERROR_WEBSOCKETCONNECTFAIL=-11000;
  288. this.ProcessSynMessageCallBack(createSynCallBackJsonString("创建NetcaPki对象失败", NETCA_ERROR_WEBSOCKETCONNECTFAIL),retSynPromise);
  289. return retSynPromise;
  290. }
  291. var retString = "";
  292. //加载成功 调用接口
  293. try {
  294. retString = comObj.CryptoJsonRpcCallBack(sendMsg);
  295. } catch (e) {
  296. var exceptionStr="";
  297. if (-2146827850 == e.number) {
  298. //对象不支持此属性或方法
  299. exceptionStr="当前NETCA_Crypto版本可能过低,请确保版本正常";
  300. }
  301. else
  302. {
  303. exceptionStr="调用NetcaPki.Utilities接口异常";
  304. }
  305. var NETCA_ERROR_WEBSOCKETCONNECTFAIL=-11000;
  306. this.ProcessSynMessageCallBack(createSynCallBackJsonString(exceptionStr, NETCA_ERROR_WEBSOCKETCONNECTFAIL),retSynPromise);
  307. return retSynPromise;
  308. }
  309. this.ProcessSynMessageCallBack(retString, retSynPromise);
  310. return retSynPromise;
  311. }
  312. }
  313. function initializeObject(obj) {
  314. _PkiMgr = new WebSocketManager()
  315. //尝试列表
  316. var TryList = [
  317. "wss://127.0.0.1:10443",
  318. "wss://127.0.0.1:20443",
  319. ];
  320. for (var i in TryList) {
  321. var connectInfoItem = {};
  322. connectInfoItem.url = TryList[i];
  323. connectInfoItem.canConnect = 0;
  324. _PkiMgr.AddConnectObject(connectInfoItem);
  325. }
  326. }
  327. function SendNetcaCryptoJsonRpcMessage(params) {
  328. return _PkiMgr.SendRPCMessage(params);
  329. }
  330. function createSynCallBackJsonString(errorMsg,status)
  331. {
  332. var responseResult={};
  333. responseResult.status=status;
  334. responseResult.msg=errorMsg;
  335. var retData = JSON.stringify({
  336. "requestVersion": 1,
  337. "requestOrigin": "45B45638-A006-4cf1-A298-816B376D867E",
  338. "requestId": -1,
  339. "responseResult": responseResult
  340. });
  341. return retData;
  342. }
  343. //检测服务是否正常
  344. PKIObject.CheckLocalServerOk = function (params)
  345. {
  346. //使用GetVersion 来处理 如果使用IE低版本 调用COM组件了
  347. var requestQueryParams = {};
  348. requestQueryParams["function"] ="GetVersionInfo";
  349. requestQueryParams["param"] = params;
  350. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  351. }
  352. //这个方法 兼容所有浏览器,但是IE版本可以精确判断是否安装了中间件
  353. //
  354. PKIObject.checkPKIInstall = function (params)
  355. {
  356. //如果是IE 使用COM方式类处理
  357. if (IsUseWebsocket())
  358. {
  359. //使用GetVersion 来处理 如果使用IE低版本 调用COM组件了
  360. var requestQueryParams = {};
  361. requestQueryParams["function"] ="GetVersionInfo";
  362. requestQueryParams["param"] = params;
  363. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  364. }
  365. else
  366. {
  367. var retSynPromise = new easySynPromise();
  368. var requestQueryParams = {};
  369. requestQueryParams["function"] ="GetVersionInfo";
  370. requestQueryParams["param"] = params;
  371. var sendMsg = _PkiMgr.RegisterPromise(retSynPromise, requestQueryParams);
  372. var comObj = null;
  373. try {
  374. comObj = new ActiveXObject("NetcaPki.Utilities");
  375. } catch (e) {
  376. var NETCA_ERROR_WEBSOCKETCONNECTFAIL=-11000;
  377. _PkiMgr.ProcessSynMessageCallBack(createSynCallBackJsonString("数字证书服务连接失败(1),请确认已安装最新的数字证书驱动", NETCA_ERROR_WEBSOCKETCONNECTFAIL),retSynPromise);
  378. return retSynPromise;
  379. }
  380. //加载成功 调用接口
  381. try {
  382. var retString = comObj.CryptoJsonRpcCallBack(sendMsg);
  383. _PkiMgr.ProcessSynMessageCallBack(retString,retSynPromise);
  384. return retSynPromise;
  385. } catch (e) {
  386. var NETCA_ERROR_WEBSOCKETCONNECTFAIL=-11000;
  387. _PkiMgr.ProcessSynMessageCallBack(createSynCallBackJsonString("数字证书服务连接失败(2),请确认已安装最新的数字证书驱动", NETCA_ERROR_WEBSOCKETCONNECTFAIL),retSynPromise);
  388. return retSynPromise;
  389. }
  390. }
  391. }
  392. //判断当前浏览器是否为IE浏览器
  393. function IsIE() {
  394. var comObj = null;
  395. try{
  396. comObj = new ActiveXObject("NetcaPki.Utilities");
  397. return comObj != null;
  398. }catch(e){
  399. return false;
  400. }
  401. }
  402. //是否使用Websocket
  403. function IsUseWebsocket() {
  404. //是否支持Websocket而使用Websocket
  405. // if (typeof WebSocket != "undefined") {
  406. // return true;
  407. // } else {
  408. // return false;
  409. // }
  410. //非IE使用Websocket
  411. if(!IsIE()) {
  412. return true;
  413. } else {
  414. return false;
  415. }
  416. }
  417. //RSA 加解密模块
  418. PKIObject.publicKeyEncrypt = function (params) {
  419. var requestQueryParams = {};
  420. requestQueryParams["function"] = "PublicKeyEncrypt";
  421. requestQueryParams["param"] = params;
  422. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);;
  423. }
  424. PKIObject.privateKeyDecrypt = function (params) {
  425. var requestQueryParams = {};
  426. requestQueryParams["function"] = "PrivateKeyDecrypt";
  427. requestQueryParams["param"] = params;
  428. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);;
  429. }
  430. //SignedData 模块
  431. PKIObject.signedDataSign = function (params) {
  432. var requestQueryParams = {};
  433. requestQueryParams["function"] = "SignedDataSign";
  434. requestQueryParams["param"] = params;
  435. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);;
  436. }
  437. PKIObject.signedDataVerify = function (params) {
  438. var requestQueryParams = {};
  439. requestQueryParams["function"] = "SignedDataVerify";
  440. requestQueryParams["param"] = params;
  441. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);;
  442. }
  443. //数字信封 模块
  444. PKIObject.envelopedDataEncrypt = function (params) {
  445. var requestQueryParams = {};
  446. requestQueryParams["function"] = "EnvelopedDataEncrypt";
  447. requestQueryParams["param"] = params;
  448. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);;
  449. }
  450. PKIObject.envelopedDataDecrypt = function (params) {
  451. var requestQueryParams = {};
  452. requestQueryParams["function"] = "EnvelopedDataDecrypt";
  453. requestQueryParams["param"] = params;
  454. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);;
  455. }
  456. //PDFSign 模块
  457. PKIObject.pdfAutoSign = function (params) {
  458. var requestQueryParams = {};
  459. requestQueryParams["function"] = "PdfAutoSign";
  460. requestQueryParams["param"] = params;
  461. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);;
  462. }
  463. PKIObject.getCertStringAttribute = function(params){
  464. var requestQueryParams = {};
  465. requestQueryParams["function"] = "GetCertStringAttribute";
  466. requestQueryParams["param"] = params;
  467. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  468. }
  469. PKIObject.isInsertKey = function(params){
  470. var requestQueryParams = {};
  471. requestQueryParams["function"] = "IsInsertKey";
  472. requestQueryParams["param"] = params;
  473. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  474. }
  475. PKIObject.verifyKeyPwd = function(params){
  476. var requestQueryParams = {};
  477. requestQueryParams["function"] = "VerifyKeyPwd";
  478. requestQueryParams["param"] = params;
  479. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  480. }
  481. PKIObject.getVersionInfo = function(params){
  482. var requestQueryParams = {};
  483. requestQueryParams["function"] ="GetVersionInfo";
  484. requestQueryParams["param"] = params;
  485. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  486. }
  487. PKIObject.monitorDevice=function(params){
  488. var requestQueryParams = {};
  489. requestQueryParams["function"] ="MonitorDevice";
  490. requestQueryParams["param"] = params;
  491. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  492. }
  493. PKIObject.getCertList=function(params){
  494. var requestQueryParams = {};
  495. requestQueryParams["function"] ="GetCertList";
  496. requestQueryParams["param"] = params;
  497. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  498. }
  499. PKIObject.GetCertList = function (params) {
  500. return this.getCertList(params);
  501. }
  502. PKIObject.hashData=function(params){
  503. var requestQueryParams = {};
  504. requestQueryParams["function"] ="HashData";
  505. requestQueryParams["param"] = params;
  506. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  507. }
  508. PKIObject.HashData = function (params) {
  509. return this.hashData(params);
  510. }
  511. PKIObject.getCertStringExtensionValue=function(params){
  512. var requestQueryParams = {};
  513. requestQueryParams["function"] ="GetCertStringExtensionValue";
  514. requestQueryParams["param"] = params;
  515. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  516. }
  517. PKIObject.GetCertStringExtensionValue = function (params) {
  518. return this.getCertStringExtensionValue(params);
  519. }
  520. PKIObject.getClientVersionInfo = function(params){
  521. var requestQueryParams = {};
  522. requestQueryParams["function"] ="GetClientVersionInfo";
  523. requestQueryParams["param"] = params;
  524. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  525. }
  526. //>=1.4.1版本
  527. PKIObject.sign = function (params) {
  528. var requestQueryParams = {};
  529. requestQueryParams["function"] = "Sign";
  530. requestQueryParams["param"] = params;
  531. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  532. }
  533. //>=1.4.1版本
  534. PKIObject.verifySignature = function (params) {
  535. var requestQueryParams = {};
  536. requestQueryParams["function"] = "VerifySignature";
  537. requestQueryParams["param"] = params;
  538. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  539. }
  540. PKIObject.GetVersion = function(params)
  541. {
  542. var requestQueryParams = {};
  543. requestQueryParams["appName"] = "SignatureCreator";
  544. requestQueryParams["function"] = "GetSealClientVersion";
  545. requestQueryParams["param"] = params;
  546. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  547. }
  548. //>=1.4.1版本
  549. PKIObject.verifySignature = function (params) {
  550. var requestQueryParams = {};
  551. requestQueryParams["function"] = "VerifySignature";
  552. requestQueryParams["param"] = params;
  553. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  554. }
  555. PKIObject.clearPwdCache = function (params) {
  556. var requestQueryParams = {};
  557. requestQueryParams["function"] = "ClearPwdCache";
  558. requestQueryParams["param"] = params;
  559. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  560. }
  561. PKIObject.cipher = function (params) {
  562. var requestQueryParams = {};
  563. requestQueryParams["function"] = "Cipher";
  564. requestQueryParams["param"] = params;
  565. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  566. }
  567. PKIObject.verifyCertificate = function (params) {
  568. var requestQueryParams = {};
  569. requestQueryParams["function"] = "VerifyCertificate";
  570. requestQueryParams["param"] = params;
  571. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  572. }
  573. PKIObject.netcaAA_VerifyUserCert = function (params) {
  574. var requestQueryParams = {};
  575. requestQueryParams["function"] = "NetcaAAVerifyUserCert";
  576. requestQueryParams["param"] = params;
  577. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  578. }
  579. PKIObject.netcaAA_ChkOneCert = function (params) {
  580. var requestQueryParams = {};
  581. requestQueryParams["function"] = "NetcaAAChkOneCert";
  582. requestQueryParams["param"] = params;
  583. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  584. }
  585. PKIObject.modifyKeyPwd = function(params){
  586. var requestQueryParams = {};
  587. requestQueryParams["function"] = "ModifyKeyPwd";
  588. requestQueryParams["param"] = params;
  589. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  590. }
  591. PKIObject.unlockKeyPwd = function(params){
  592. var requestQueryParams = {};
  593. requestQueryParams["function"] = "UnlockKeyPwd";
  594. requestQueryParams["param"] = params;
  595. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  596. }
  597. PKIObject.generateP10 = function(params){
  598. var requestQueryParams = {};
  599. requestQueryParams["function"] = "GenerateP10";
  600. requestQueryParams["param"] = params;
  601. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  602. }
  603. PKIObject.installCertificate = function(params){
  604. var requestQueryParams = {};
  605. requestQueryParams["function"] = "InstallCertificate";
  606. requestQueryParams["param"] = params;
  607. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  608. }
  609. PKIObject.keyXClientPluginShell = function (params) {
  610. var requestQueryParams = {};
  611. requestQueryParams["function"] = "KeyXClientPluginShell";
  612. requestQueryParams["param"] = params;
  613. requestQueryParams["appName"] = "KeyXClientApp";
  614. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  615. }
  616. PKIObject.displayCert = function (params) {
  617. var requestQueryParams = {};
  618. requestQueryParams["function"] = "DisplayCert";
  619. requestQueryParams["param"] = params;
  620. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  621. }
  622. PKIObject.createData = function (params) {
  623. var requestQueryParams = {};
  624. requestQueryParams["function"] = "CreateData";
  625. requestQueryParams["param"] = params;
  626. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  627. }
  628. PKIObject.readData = function (params) {
  629. var requestQueryParams = {};
  630. requestQueryParams["function"] = "ReadData";
  631. requestQueryParams["param"] = params;
  632. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  633. }
  634. PKIObject.writeData = function (params) {
  635. var requestQueryParams = {};
  636. requestQueryParams["function"] = "WriteData";
  637. requestQueryParams["param"] = params;
  638. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  639. }
  640. PKIObject.deleteData = function (params) {
  641. var requestQueryParams = {};
  642. requestQueryParams["function"] = "DeleteData";
  643. requestQueryParams["param"] = params;
  644. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  645. }
  646. PKIObject.macData = function (params) {
  647. var requestQueryParams = {};
  648. requestQueryParams["function"] = "MacData";
  649. requestQueryParams["param"] = params;
  650. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  651. }
  652. PKIObject.generateRandom = function (params) {
  653. var requestQueryParams = {};
  654. requestQueryParams["function"] = "GenerateRandom";
  655. requestQueryParams["param"] = params;
  656. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  657. }
  658. PKIObject.signedDataGetInfo = function (params) {
  659. var requestQueryParams = {};
  660. requestQueryParams["function"] = "SignedDataGetInfo";
  661. requestQueryParams["param"] = params;
  662. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  663. }
  664. PKIObject.kdf=function(params){
  665. var requestQueryParams = {};
  666. requestQueryParams["function"] ="Kdf";
  667. requestQueryParams["param"] = params;
  668. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  669. }
  670. PKIObject.getDeviceSupportedSignAlgorithm = function (params) {
  671. var requestQueryParams = {};
  672. requestQueryParams["function"] = "GetDeviceSupportedSignAlgorithm";
  673. requestQueryParams["param"] = params;
  674. return SendNetcaCryptoJsonRpcMessage(requestQueryParams);
  675. }
  676. PKIObject.SendNetcaCryptoJsonRpcMessage = function(params){
  677. return SendNetcaCryptoJsonRpcMessage(params);
  678. }
  679. initializeObject();
  680. return PKIObject;
  681. }());
  682. function utf8_to_b64(str) {
  683. return window.btoa(unescape(encodeURIComponent(str)));
  684. }
  685. function b64_to_utf8(str) {
  686. return decodeURIComponent(escape(window.atob(str)));
  687. }
  688. //检测版本是否正常信息
  689. function netca_checkServiceOK(SuccessCallBack, FailedCallBack) {
  690. var NETCA_ERROR_WEBSOCKETCONNECTFAIL = -11000;
  691. var params = {};
  692. NetcaPKI.CheckLocalServerOk(params)
  693. .Then(function (res) {
  694. SuccessCallBack(res);
  695. })
  696. .Catch(function (res) {
  697. if (res.status == NETCA_ERROR_WEBSOCKETCONNECTFAIL) {
  698. //连接失败 返回错误 其他错误认为是成功
  699. FailedCallBack(res);
  700. }
  701. else {
  702. SuccessCallBack(res);
  703. }
  704. });
  705. }
  706. //检测版本是否正常信息
  707. function netca_checkPKIInstall(SuccessCallBack, FailedCallBack) {
  708. var NETCA_ERROR_WEBSOCKETCONNECTFAIL = -11000;
  709. var params = {};
  710. NetcaPKI.checkPKIInstall(params)
  711. .Then(function (res) {
  712. SuccessCallBack(res);
  713. })
  714. .Catch(function (res) {
  715. if (res.status == NETCA_ERROR_WEBSOCKETCONNECTFAIL) {
  716. //连接失败 返回错误 其他错误认为是成功
  717. FailedCallBack(res);
  718. }
  719. else {
  720. SuccessCallBack(res);
  721. }
  722. });
  723. }
  724. /* 非对称加密,加密文件内容
  725. selectType,选择证书的来源
  726. selectCondition,选择证书的条件,
  727. publicKeyEncFilePath,要加密的文件路径
  728. */
  729. function netca_publicKeyEncryptFile(selectType, selectCondition, publicKeyEncFilePath, SuccessPublicKeyEncryptFileCallBack, FailedPublicKeyEncryptFileCallBack) {
  730. var params = {
  731. cert: { //证书(CertificateParams)
  732. type: selectType,
  733. condition: selectCondition
  734. },
  735. data: { //数据(DataParams)
  736. fileName: publicKeyEncFilePath
  737. }
  738. }
  739. NetcaPKI.publicKeyEncrypt(params)
  740. .Then(function (res) {
  741. publicKeyEncResult.value = res.encryptValue;
  742. lastPublicKeyEncResult.value = res.encryptValue;
  743. })
  744. .Catch(function (res) {
  745. alert(res.msg);
  746. })
  747. }
  748. /* 非对称加密,加密文本
  749. selectType,选择证书的来源
  750. selectCondition,选择证书的条件,
  751. tbs,要加密的文本
  752. */
  753. function netca_publicKeyEncryptText(selectType, selectCondition, tbs, SuccessPublicKeyEncryptFileCallBack, FailedPublicKeyEncryptFileCallBack) {
  754. var params = {
  755. cert: { //证书(CertificateParams)
  756. type: selectType,
  757. condition: selectCondition
  758. },
  759. data: { //数据(DataParams)
  760. text: tbs
  761. }
  762. };
  763. NetcaPKI.publicKeyEncrypt(params)
  764. .Then(function (res) {
  765. SuccessPublicKeyEncryptFileCallBack(res);
  766. })
  767. .Catch(function (res) {
  768. FailedPublicKeyEncryptFileCallBack(res);
  769. })
  770. }
  771. /* 非对称解密
  772. selectType,选择证书的来源
  773. selectCondition,选择证书的条件,
  774. cipherData,要解密的密文
  775. savefile,解密后如果需要使用文件保存,传入的文件路径,如果为null,则不使用文件保存
  776. */
  777. function netca_privateKeyDecrypt(selectType, selectCondition, cipherData, savefile, SuccessPrivateKeyDecryptCallBack, FailedPrivateKeyDecryptCallBack) {
  778. var params = {
  779. cert: {
  780. type: selectType,
  781. condition: selectCondition
  782. },
  783. // algo: 0, //非对称加密算法
  784. encData: cipherData,
  785. savefileName: savefile
  786. };
  787. NetcaPKI.privateKeyDecrypt(params)
  788. .Then(function (res) {
  789. SuccessPrivateKeyDecryptCallBack(res);
  790. })
  791. .Catch(function (res) {
  792. FailedPrivateKeyDecryptCallBack(res);
  793. })
  794. }
  795. /* signedData签名
  796. certEncode, 证书编码,如果为空字符串,则使用selectType,和selectCondition构造的条件选择证书
  797. selectType,certEncode为空时,使用该项选择证书
  798. selectCondition,certEncode为空时,使用该项选择证书,
  799. tbs,要签名的明文
  800. _useSubjectKeyId:是否使用密钥标识符
  801. _useQ7:是否使用主体密钥标识符来标识证书,默认为true
  802. _detached:整数 是否不带原文,默认为0
  803. _tsaURL:时间戳url
  804. _includeCertOption//整数 包含证书的标识
  805. */
  806. function netca_signedDataSign(certEncode, selectType, selectCondition, tbs, _useSubjectKeyId, _useQ7, _tsaURL, _detached, _includeCertOption, _certPwd, SuccessSignedDataSignCallBack, FailedSignedDataSignCallBack) {
  807. var params = {};
  808. if (_certPwd == "") {
  809. params = {
  810. cert: { //证书(CertificateParams)
  811. encode: certEncode, //可选字段但不能为空
  812. type: selectType,
  813. condition: selectCondition
  814. },
  815. data: { //数据(DataParams)
  816. text: tbs
  817. },
  818. useSubjectKeyId: _useSubjectKeyId, //是否使用主体密钥标识符来标识证书,默认为true
  819. useQ7: _useQ7, //布尔值 是否使用国密Q7的方式,默认为false
  820. detached: parseInt(_detached), //整数 是否不带原文,默认为0
  821. tsaURL: _tsaURL,
  822. includeCertOption: _includeCertOption//整数 包含证书的标识
  823. };
  824. } else {
  825. params = {
  826. cert: { //证书(CertificateParams)
  827. encode: certEncode, //可选字段但不能为空
  828. type: selectType,
  829. condition: selectCondition
  830. },
  831. data: { //数据(DataParams)
  832. text: tbs
  833. },
  834. useSubjectKeyId: _useSubjectKeyId, //是否使用主体密钥标识符来标识证书,默认为true
  835. useQ7: _useQ7, //布尔值 是否使用国密Q7的方式,默认为false
  836. detached: parseInt(_detached), //整数 是否不带原文,默认为0
  837. tsaURL: _tsaURL,
  838. includeCertOption: _includeCertOption,//整数 包含证书的标识
  839. certPwd: _certPwd
  840. };
  841. }
  842. NetcaPKI.signedDataSign(params)
  843. .Then(function (res) {
  844. if (res.result == -5) {
  845. FailedSignedDataSignCallBack(res);
  846. }
  847. else {
  848. SuccessSignedDataSignCallBack(res);
  849. }
  850. })
  851. .Catch(function (res) {
  852. FailedSignedDataSignCallBack(res);
  853. })
  854. }
  855. /* signedData验证
  856. verifyLevel, 验证级别
  857. signValue:base64编码的签名值
  858. tbs:base64编码后的明文
  859. */
  860. function netca_signedDataVerify(verifyLevel, signValue, tbs, SuccessSignedDataVerifyCallBack, FailedSignedDataVerifyCallBack) {
  861. var params = {
  862. verifyLevel: verifyLevel, //验证级别,默认为验证签名本身,不验证证书,默认为1
  863. signedData: signValue //signedData的编码值
  864. };
  865. if (tbs != null) {
  866. params.originData = {
  867. text: tbs
  868. };
  869. }
  870. NetcaPKI.signedDataVerify(params)
  871. .Then(function (res) {
  872. SuccessSignedDataVerifyCallBack(res);
  873. })
  874. .Catch(function (res) {
  875. FailedSignedDataVerifyCallBack(res);
  876. })
  877. }
  878. /* 数字信封加密---加密文件内容
  879. certEncode, 证书编码,如果为空字符串,则使用selectType,和selectCondition构造的条件选择证书
  880. selectType,certEncode为空时,使用该项选择证书
  881. selectCondition,certEncode为空时,使用该项选择证书,
  882. _fieldName,明文文件路径
  883. _algo,使用的对称加密算法,默认为AES 128 CBC模式
  884. */
  885. function netca_envelopedDataEncryptFile(certCode, selectType, selectCondition, _fieldName, _algo, SuccessEnvelopedDataEncryptCallBack, FailedEnvelopedDataEncryptCallBack) {
  886. var params = {
  887. cert: { //证书(CertificateParams)
  888. encode: certCode,
  889. type: selectType,
  890. condition: selectCondition
  891. },
  892. algo: _algo, //对称加密算法,默认为128位的AES CBC模式
  893. data: {
  894. fileName: _fieldName
  895. }
  896. };
  897. NetcaPKI.envelopedDataEncrypt(params)
  898. .Then(function (res) {
  899. SuccessEnvelopedDataEncryptCallBack(res);
  900. })
  901. .Catch(function (res) {
  902. FailedEnvelopedDataEncryptCallBack(res);
  903. })
  904. }
  905. /* 数字信封加密---加密文本
  906. certEncode, 证书编码,如果为空字符串,则使用selectType,和selectCondition构造的条件选择证书
  907. selectType,certEncode为空时,使用该项选择证书
  908. selectCondition,certEncode为空时,使用该项选择证书,
  909. clearText,明文字符串
  910. _algo,使用的对称加密算法,默认为AES 128 CBC模式
  911. SuccessEnvelopedDataEncryptCallBack,加密成功时回调接口
  912. FailedEnvelopedDataEncryptCallBack,加密失败时回调接口
  913. */
  914. function netca_envelopedDataEncryptText(certCode, selectType, selectCondition, clearText, _algo, SuccessEnvelopedDataEncryptCallBack, FailedEnvelopedDataEncryptCallBack) {
  915. var params = {
  916. cert: { //证书(CertificateParams)
  917. encode: certCode,
  918. type: selectType,
  919. condition: selectCondition
  920. },
  921. algo: _algo, //对称加密算法,默认为128位的AES CBC模式
  922. data: {
  923. text: clearText
  924. }
  925. };
  926. NetcaPKI.envelopedDataEncrypt(params)
  927. .Then(function (res) {
  928. SuccessEnvelopedDataEncryptCallBack(res);
  929. })
  930. .Catch(function (res) {
  931. FailedEnvelopedDataEncryptCallBack(res);
  932. })
  933. }
  934. /* 解密数字信封
  935. encData,数字信封编码
  936. saveFile,解密后如果需要使用文件保存,传入的文件路径,如果为null,则不使用文件保存
  937. SuccessEnvDecryptCallBack,解密成功时执行的回调函数
  938. FailedEnvDecryptCallBack,解密失败时执行的回调函数
  939. */
  940. function netca_envelopedDataDecrypt(encData, saveFile, SuccessEnvDecryptCallBack, FailedEnvDecryptCallBack) {
  941. var params = {
  942. encData: encData, //要解密的数据
  943. savefileName: saveFile
  944. };
  945. NetcaPKI.envelopedDataDecrypt(params)
  946. .Then(function (res) {
  947. SuccessEnvDecryptCallBack(res);
  948. })
  949. .Catch(function (res) {
  950. FailedEnvDecryptCallBack(res);
  951. })
  952. }
  953. function netca_AutoSignField(_hashAlgo, src_File, dest_File, revInfoInclude, _tsaURL, _tsaUsr, _tsaPwd, _tsaHashAlgo, _allowCertType, _selMode,
  954. _fieldName, SignSuccessCallBack, SignFailedCallBack) {
  955. var params = {
  956. hashAlgo: _hashAlgo, //例如:“sha-1”,“sha-256”
  957. srcFile: src_File, //源pdf文件
  958. destFile: dest_File, //源pdf文件
  959. revInfoIncludeFlag: revInfoInclude, //签名时是否包含签名证书状态信息,true包含
  960. selMode: _selMode, //选择模式,有两种:按证书选择(0)和按印章选择(1)
  961. tsaURL: _tsaURL, //时间戳地址
  962. tsaUsr: _tsaUsr, //时间戳服务对应用户名
  963. tsaPwd: _tsaPwd, //时间戳服务对应用户的密码
  964. tsaHashAlgo: _tsaHashAlgo, //时间戳使用的hash算法,例如”sha-1”,”sha-256”等
  965. allowCertType: _allowCertType,
  966. /**
  967. * allowCertType为NULL或者ANY表示不进行限制。
  968. * RSA为RSA类型,SM2为SM2类型,ECC为ECC类型包括SM2,ECC!SM2为不包括SM2的ECC类型。
  969. * RSA:SM2为既包括RSA也包括SM2。
  970. * 默认支持RSA,SM2类型的证书。
  971. * 中间件 5.2版本新增的
  972. */
  973. signField: {
  974. fieldName: _fieldName //要进行签名的签名域名称
  975. }
  976. };
  977. NetcaPKI.pdfAutoSign(params)
  978. .Then(function (res) {
  979. SignSuccessCallBack();
  980. })
  981. .Catch(function (res) {
  982. SignFailedCallBack(res);
  983. });;
  984. }
  985. function netca_AutoSignPosition(_hashAlgo, src_File, dest_File, revInfoInclude, _tsaURL, _tsaUsr, _tsaPwd, _tsaHashAlgo, _allowCertType, _selMode,
  986. _pdfSign_pageNumber, _pdfSign_xpos, _pdfSign_ypos, _pdfSign_seal_width, _pdfSign_seal_height,
  987. SignSuccessCallBack, SignFailedCallBack) {
  988. var params = {
  989. hashAlgo: _hashAlgo, //例如:“sha-1”,“sha-256”
  990. srcFile: src_File, //源pdf文件
  991. destFile: dest_File, //源pdf文件
  992. revInfoIncludeFlag: revInfoInclude, //签名时是否包含签名证书状态信息,true包含
  993. selMode: _selMode, //选择模式,有两种:按证书选择(0)和按印章选择(1)
  994. tsaURL: _tsaURL, //时间戳地址
  995. tsaUsr: _tsaUsr, //时间戳服务对应用户名
  996. tsaPwd: _tsaPwd, //时间戳服务对应用户的密码
  997. tsaHashAlgo: _tsaHashAlgo, //时间戳使用的hash算法,例如”sha-1”,”sha-256”等
  998. allowCertType: _allowCertType,
  999. /**
  1000. * allowCertType为NULL或者ANY表示不进行限制。
  1001. * RSA为RSA类型,SM2为SM2类型,ECC为ECC类型包括SM2,ECC!SM2为不包括SM2的ECC类型。
  1002. * RSA:SM2为既包括RSA也包括SM2。
  1003. * 默认支持RSA,SM2类型的证书。
  1004. * 中间件 5.2版本新增的
  1005. */
  1006. signPosition: {
  1007. pageNum: parseInt(_pdfSign_pageNumber), //输入参数,整型,PDF文档的页码,页码从1开始计算。
  1008. xPos: parseInt(_pdfSign_xpos), //输入参数,整型,签章左下角的水平向右方向坐标。
  1009. yPos: parseInt(_pdfSign_ypos), //输入参数,整型,签章左下角的垂直向上方向坐标。
  1010. width: parseInt(_pdfSign_seal_width), //输入参数,整型,签章的宽度。
  1011. height: parseInt(_pdfSign_seal_height) //输入参数,整型,签章的高度。
  1012. }
  1013. };
  1014. NetcaPKI.pdfAutoSign(params)
  1015. .Then(function (res) {
  1016. SignSuccessCallBack();
  1017. })
  1018. .Catch(function (res) {
  1019. SignFailedCallBack(res);
  1020. });
  1021. }
  1022. /*
  1023. 获取证书或证书属性
  1024. certEncode, 证书编码,如果为空字符串,则使用selectType,和selectCondition构造的条件选择证书
  1025. selectType,certEncode为空时,使用该项选择证书
  1026. selectCondition,certEncode为空时,使用该项选择证书,
  1027. attId,证书属性
  1028. successCallBack,成功时执行的回调函数
  1029. failedCallBack,失败时执行的回调函数
  1030. */
  1031. /* 从USBKey中选择NETCA 颁发的签名证书
  1032. var selectType = "{\"UIFlag\":\"default\", \"InValidity\":true,\"Type\":\"signature\", \"Method\":\"device\",\"Value\":\"any\"}";
  1033. var selectCondition = "IssuerCN~'NETCA' && InValidity='True' && CertType='Signature'";
  1034. */
  1035. /* 从微软证书库中选择NETCA 颁发的加密证书
  1036. var selectType = "{\"UIFlag\":\"default\",\"Type\":\"encrypt\",\"Method\":\"store\", \"Value\":{\"Type\":\"current user\",\"Value\":\"my\"}}";
  1037. var selectCondition = "IssuerCN~'NETCA' && CertType='Encrypt'";
  1038. */
  1039. function netca_getCertStringAttribute(certEncode, selectType, selectCondition, attId, successCallBack, failedCallBack) {
  1040. var params = {
  1041. cert: {
  1042. "encode": certEncode,
  1043. "type": selectType,
  1044. "condition": selectCondition
  1045. },
  1046. id: parseInt(attId)
  1047. };
  1048. NetcaPKI.getCertStringAttribute(params)
  1049. .Then(function (res) {
  1050. successCallBack(res);
  1051. })
  1052. .Catch(function (res) {
  1053. failedCallBack(res);
  1054. });;
  1055. }
  1056. /*
  1057. *判断指定设备的是否插入
  1058. certEncode,证书编码,可为空字符串,表示判断证书所在的设备是否插入
  1059. keySN,设备序列号,可为空,表示判断设备序列号为KeySN的设备是否插入
  1060. keyType,设备类型,可为-1,表示判断设备类型为keyType的设备是否插入
  1061. certEncode,keySN,keyType 都设置时,三者之间的关系为交集,即判断设备设备序列号为
  1062. keySN,设备类型为keyType,且包含证书certEncode的设备是否插入。
  1063. 都不设置时,判断任何一个Key是否插入。
  1064. InsertCallBack,有插入设备时执行的回调函数
  1065. UnInsertCallBack,无插入的设备时执行的回调函数
  1066. */
  1067. function netca_isInsertKey(certEncode, keySN, keyType, InsertCallBack, UnInsertCallBack) {
  1068. var params = {
  1069. cert: {
  1070. "encode": certEncode
  1071. },//可选,指定证书所在的Key是否插入
  1072. sn: keySN, //可选
  1073. type: parseInt(keyType) //可选
  1074. };
  1075. NetcaPKI.isInsertKey(params)
  1076. .Then(function (res) {
  1077. if (res.insertCount > 0) {
  1078. InsertCallBack(res);
  1079. }
  1080. else {
  1081. UnInsertCallBack(res);
  1082. }
  1083. })
  1084. .Catch(function (res) {
  1085. UnInsertCallBack(res);
  1086. });;
  1087. }
  1088. function netca_Custom_PdfSignAndUpload(certEncode, pageNum, x, y, signPdfBase64Str, UploadPdfUrl, successCallBack, failedCallBack) {
  1089. var params = {
  1090. "certEncode": certEncode,
  1091. "pageNum": pageNum,
  1092. "x": x,
  1093. "y": y,
  1094. "signPdfBytes": signPdfBase64Str,
  1095. "uploadPdfUrl": UploadPdfUrl
  1096. };
  1097. NetcaPKI.Custom_PdfSignAndUpload(params)
  1098. .Then(function (res) {
  1099. successCallBack(res);
  1100. })
  1101. .Catch(function (res) {
  1102. failedCallBack(res);
  1103. });;
  1104. }
  1105. function netca_Custom_PdfSignAndUploadURL(certEncode, pageNum, x, y, width, height, signUrl, UploadPdfUrl, successCallBack, failedCallBack) {
  1106. //signPdfUrl
  1107. var params = {
  1108. "certEncode": certEncode,
  1109. "pageNum": pageNum,
  1110. "x": x,
  1111. "y": y,
  1112. "width": width,
  1113. "height": height,
  1114. "signPdfUrl": signUrl,
  1115. "uploadPdfUrl": UploadPdfUrl
  1116. };
  1117. NetcaPKI.Custom_PdfSignAndUploadByURL(params)
  1118. .Then(function (res) {
  1119. successCallBack(res);
  1120. })
  1121. .Catch(function (res) {
  1122. failedCallBack(res);
  1123. });;
  1124. }
  1125. //获取签章
  1126. //参数是证书编码
  1127. function netca_getSealImage(certEncode, SuccessGetSealImageCallBack, FailedGetSealImageCallBack) {
  1128. var params = {
  1129. cert: {
  1130. "encode": certEncode
  1131. }
  1132. };
  1133. NetcaPKI.GetNetcaSealImage(params)
  1134. .Then(function (res) {
  1135. SuccessGetSealImageCallBack(res);
  1136. })
  1137. .Catch(function (res) {
  1138. FailedGetSealImageCallBack(res);
  1139. });
  1140. }
  1141. /*
  1142. *验证指定设备的密码
  1143. password,介质密码,可为空字符串,则由底层弹出密码输入框
  1144. certEncode,证书编码,可为空字符串,表示验证证书所在的Key的密码
  1145. keySN,设备序列号,可为空,表示验证设备序列号为KeySN的设备的密码
  1146. keyType,设备类型,可为-1,表示验证设备类型为keyType的设备的密码,
  1147. certEncode,keySN,keyType 都设置时,三者之间的关系为交集,即验证的设备是设备序列号为
  1148. keySN,设备类型为keyType,且包含证书certEncode.
  1149. 都不设置时, 默认验证第一个设备的PIN码
  1150. SuccessCallBack,成功时执行的回调函数
  1151. FailedCallBack,失败时执行的回调函数
  1152. */
  1153. function netca_verifyKeyPwd(password, certEncode, keySN, keyType, SuccessCallBack, FailedCallBack) {
  1154. var params = {
  1155. pwd: password,
  1156. cert: {
  1157. "encode": certEncode
  1158. },//可选,指定证书所在的Key是否插入
  1159. sn: keySN, //可选
  1160. type: parseInt(keyType) //可选
  1161. };
  1162. NetcaPKI.verifyKeyPwd(params)
  1163. .Then(function (res) {
  1164. if (res.result == 1) {
  1165. var tip = "密码验证成功,验证的设备类型为 " + res.type +
  1166. "; 验证的设备序列号为 " + res.sn
  1167. + "; 密码剩余重试次数为 " + res.retrynum;
  1168. SuccessCallBack(res);
  1169. }
  1170. else {
  1171. var tip = "密码验证失败,错误码为" + res.result +
  1172. "; 验证的设备类型为 " + res.type +
  1173. "; 验证的设备序列号为 " + res.sn
  1174. + "; 密码剩余重试次数为 " + res.retrynum;
  1175. FailedCallBack(res);
  1176. }
  1177. })
  1178. .Catch(function (res) {
  1179. alert(res.msg);
  1180. });;
  1181. }
  1182. function netca_getCertStringExtensionValue(certEncode, selectType, selectCondition, oidString, oidType, SuccessCallBack, FailedCallBack) {
  1183. var params = {
  1184. cert: {
  1185. "encode": certEncode,
  1186. "type": selectType,
  1187. "condition": selectCondition
  1188. },
  1189. oidstr: oidString,
  1190. type: oidType
  1191. };
  1192. NetcaPKI.GetCertStringExtensionValue(params)
  1193. .Then(function (res) {
  1194. SuccessCallBack(res);
  1195. })
  1196. .Catch(function (res) {
  1197. FailedCallBack(res);
  1198. });
  1199. }
  1200. //获取版本号相关信息
  1201. function netca_getVersionInfo(SuccessGetVersionInfoCallBack, FailedGetVersionInfoCallBack) {
  1202. var params = {};
  1203. NetcaPKI.getVersionInfo(params)
  1204. .Then(function (res) {
  1205. SuccessGetVersionInfoCallBack(res);
  1206. })
  1207. .Catch(function (res) {
  1208. FailedGetVersionInfoCallBack(res);
  1209. });
  1210. }
  1211. //获取版本号相关信息
  1212. function netca_clearPwdCache(SuccessCallBack, FailedCallBack) {
  1213. var params = {};
  1214. NetcaPKI.clearPwdCache(params)
  1215. .Then(function (res) {
  1216. SuccessCallBack(res);
  1217. })
  1218. .Catch(function (res) {
  1219. FailedCallBack(res);
  1220. });
  1221. }
  1222. //获取客户端KeyX版本号相关信息
  1223. function netca_getClientVersionInfo(SuccessGetVersionInfoCallBack, FailedGetVersionInfoCallBack) {
  1224. var params = {};
  1225. NetcaPKI.getClientVersionInfo(params)
  1226. .Then(function (res) {
  1227. SuccessGetVersionInfoCallBack(res);
  1228. })
  1229. .Catch(function (res) {
  1230. FailedGetVersionInfoCallBack(res);
  1231. });
  1232. }
  1233. //监控设备插拔
  1234. function netca_monitorDevice(_delayTime, SuccessMonitorDeviceCallBack, FailedMonitorDeviceCallBack) {
  1235. var params = {
  1236. delayTime: _delayTime //延迟时间,默认为0毫秒
  1237. };
  1238. NetcaPKI.monitorDevice(params)
  1239. .Then(function (res) {
  1240. SuccessMonitorDeviceCallBack(res);
  1241. })
  1242. .Catch(function (res) {
  1243. FailedMonitorDeviceCallBack(res);
  1244. });
  1245. }
  1246. //PKCS#1签名
  1247. //version >=1.4.1
  1248. /*
  1249. 参数说明:
  1250. certEncode, 证书编码,如果为空字符串,则使用selectType,和selectCondition构造的条件选择证书
  1251. selectType,certEncode为空时,使用该项选择证书
  1252. selectCondition,certEncode为空时,使用该项选择证书
  1253. signAlgo, 签名算法 整数 SHA256WthRSA签名算法为4,SM3WithSM2签名算法为25 参考NETCA Crypto API 文档
  1254. origindata base64编码字符串 ,待签名的数据
  1255. SuccessSignCallBack,成功时执行的回调函数
  1256. FailedSignCallBack,失败时执行的回调函数
  1257. */
  1258. function netca_sign(certEncode, selectType, selectCondition, signAlgo, origindata, SuccessSignCallBack, FailedSignCallBack) {
  1259. var params = {
  1260. cert: {
  1261. "encode": certEncode,
  1262. "type": selectType,
  1263. "condition": selectCondition
  1264. },
  1265. data: {
  1266. text: origindata
  1267. },
  1268. algo: signAlgo
  1269. };
  1270. NetcaPKI.sign(params)
  1271. .Then(function (res) {
  1272. SuccessSignCallBack(res);
  1273. })
  1274. .Catch(function (res) {
  1275. FailedSignCallBack(res);
  1276. });
  1277. }
  1278. //PKCS#1签名
  1279. //version >=1.4.1
  1280. /*
  1281. certEncode,字符串, 证书编码,如果为空字符串,则使用selectType,和selectCondition构造的条件选择证书
  1282. selectType,certEncode为空时,使用该项选择证书
  1283. selectCondition,certEncode为空时,使用该项选择证书,
  1284. origindata ,字符串 base64编码,原签名数据
  1285. signAlgo,签名算法 SHA256WthRSA签名算法为4,SM3WithSM2签名算法为25 参考NETCA Crypto API 文档
  1286. SuccessSignVerifyCallBack,成功时执行的回调函数
  1287. FailedSignVerifyCallBack,失败时执行的回调函数
  1288. */
  1289. function netca_verifySignature(certEncode, selectType, selectCondition, signAlgo, origindata, signValue, SuccessSignVerifyCallBack, FailedSignVerifyCallBack) {
  1290. var params = {
  1291. cert: {
  1292. "encode": certEncode,
  1293. "type": selectType,
  1294. "condition": selectCondition
  1295. },
  1296. data: {
  1297. text: origindata
  1298. },
  1299. signature: signValue,
  1300. algo: signAlgo
  1301. };
  1302. NetcaPKI.verifySignature(params)
  1303. .Then(function (res) {
  1304. SuccessSignVerifyCallBack(res);
  1305. })
  1306. .Catch(function (res) {
  1307. FailedSignVerifyCallBack(res);
  1308. });
  1309. }
  1310. //标准签名/签章接口
  1311. /*通过查找符合条件的证书,
  1312. 解析源文件和PDF字节流,
  1313. 可在指定页面指定位置,定位签名或签章,
  1314. 可在已有域进行签名或签章,
  1315. 并将结果保存到目标文件中。
  1316. */
  1317. function netca_SignatureCreator_PdfSignSealField(_srcFile, _srcBytes, _destFile, _certEncode, _selMode,
  1318. _signFieldText, _sealImageEncode, _revInfoIncludeFlag, _fieldName,
  1319. _tsaUrl, _tsaUsr, _tsaPwd, _tsaHashAlgo,
  1320. _SignatureCreatorSuccessCallBack, _SignatureCreatorFailedCallBack) {
  1321. var params = {
  1322. srcFile: _srcFile, //源pdf文件
  1323. srcBytes: _srcBytes, //源Pdf文件的Base64编码
  1324. destFile: _destFile, //目标pdf文件
  1325. certEncode: _certEncode, //签名证书Base64编码
  1326. selMode: _selMode, //操作模式
  1327. signFieldText: _signFieldText, //签名域显示的文字
  1328. sealImageEncode: _sealImageEncode, //签章图片Base64编码
  1329. revInfoIncludeFlag: _revInfoIncludeFlag,//是否包含吊销信息
  1330. SignField: //签名域对象
  1331. {
  1332. fieldName: _fieldName //签名域名称
  1333. },
  1334. Tsa: //时间戳对象
  1335. {
  1336. tsaUrl: _tsaUrl, //时间戳地址
  1337. tsaUsr: _tsaUsr, //时间戳服务对应用户名
  1338. tsaPwd: _tsaPwd, //时间戳服务对应用户的密码
  1339. tsaHashAlgo: _tsaHashAlgo //时间戳使用的hash算法,例如”sha-1”,”sha-256”等
  1340. }
  1341. };
  1342. NetcaPKI.SignatureCreatorPdfSignSealFieldOrPosition(params)
  1343. .Then(function (res) {
  1344. _SignatureCreatorSuccessCallBack(res);
  1345. })
  1346. .Catch(function (res) {
  1347. _SignatureCreatorFailedCallBack(res);
  1348. });
  1349. }
  1350. function netca_SignatureCreator_PdfSignSealPosition(_srcFile, _srcBytes, _destFile, _certEncode, _selMode,
  1351. _signFieldText, _sealImageEncode, _revInfoIncludeFlag, _pageNum, _xPos, _yPos, _width, _height,
  1352. _tsaUrl, _tsaUsr, _tsaPwd, _tsaHashAlgo,
  1353. _SignatureCreatorSuccessCallBack, _SignatureCreatorFailedCallBack) {
  1354. var params = {
  1355. srcFile: _srcFile, //源pdf文件
  1356. srcBytes: _srcBytes, //源Pdf文件的Base64编码
  1357. destFile: _destFile, //目标pdf文件
  1358. certEncode: _certEncode, //签名证书Base64编码
  1359. selMode: _selMode, //操作模式
  1360. signFieldText: _signFieldText, //签名域显示的文字
  1361. sealImageEncode: _sealImageEncode, //签章图片Base64编码
  1362. revInfoIncludeFlag: _revInfoIncludeFlag,//是否包含吊销信息
  1363. SignPosition: //签名位置对象
  1364. {
  1365. pageNum: _pageNum, //PDF文档的页码
  1366. xPos: _xPos, //签名域/签章左下角的水平向右方向坐标
  1367. yPos: _yPos, //签名域/签章左下角的垂直向上方向坐标
  1368. width: _width, //签名域/签章的宽度
  1369. height: _height //签名域/签章的高度
  1370. },
  1371. Tsa: //时间戳对象
  1372. {
  1373. tsaUrl: _tsaUrl, //时间戳地址
  1374. tsaUsr: _tsaUsr, //时间戳服务对应用户名
  1375. tsaPwd: _tsaPwd, //时间戳服务对应用户的密码
  1376. tsaHashAlgo: _tsaHashAlgo //时间戳使用的hash算法,例如”sha-1”,”sha-256”等
  1377. }
  1378. };
  1379. NetcaPKI.SignatureCreatorPdfSignSealFieldOrPosition(params)
  1380. .Then(function (res) {
  1381. _SignatureCreatorSuccessCallBack(res);
  1382. })
  1383. .Catch(function (res) {
  1384. _SignatureCreatorFailedCallBack(res);
  1385. });
  1386. }
  1387. function netca_SignatureCreator_PdfSignSealFieldEx(_srcFile, _srcBytes, _destFile, _certEncode, _selMode,
  1388. _signFieldText, _sealImageEncode, _revInfoIncludeFlag, _fieldName,
  1389. _tsaUrl, _tsaUsr, _tsaPwd, _tsaHashAlgo,
  1390. _text, _timeFormat, _widthPercentage, _heightPercentage, _fontName, _fontSize, _A, _R, _G, _B, _align,
  1391. _SignatureCreatorSuccessCallBack, _SignatureCreatorFailedCallBack) {
  1392. var params = {
  1393. srcFile: _srcFile, //源pdf文件
  1394. srcBytes: _srcBytes, //源Pdf文件的Base64编码
  1395. destFile: _destFile, //目标pdf文件
  1396. certEncode: _certEncode, //签名证书Base64编码
  1397. selMode: _selMode, //操作模式
  1398. signFieldText: _signFieldText, //签名域显示的文字
  1399. sealImageEncode: _sealImageEncode, //签章图片Base64编码
  1400. revInfoIncludeFlag: _revInfoIncludeFlag,//是否包含吊销信息
  1401. SignField: //签名域对象
  1402. {
  1403. fieldName: _fieldName //签名域名称
  1404. },
  1405. Tsa: //时间戳对象
  1406. {
  1407. tsaUrl: _tsaUrl, //时间戳地址
  1408. tsaUsr: _tsaUsr, //时间戳服务对应用户名
  1409. tsaPwd: _tsaPwd, //时间戳服务对应用户的密码
  1410. tsaHashAlgo: _tsaHashAlgo //时间戳使用的hash算法,例如”sha-1”,”sha-256”等
  1411. },
  1412. TimeObj:
  1413. {
  1414. text: _text, //自定义文本信息
  1415. timeFormat: _timeFormat, //日期格式
  1416. widthPercentage: _widthPercentage, //宽偏移百分比
  1417. heightPercentage: _heightPercentage,//高偏移百分比
  1418. fontName: _fontName, //字体
  1419. fontSize: _fontSize, //字体大小
  1420. FontColor:
  1421. {
  1422. A: _A,
  1423. R: _R,
  1424. G: _G,
  1425. B: _B
  1426. },
  1427. align: _align //对齐方式
  1428. }
  1429. };
  1430. NetcaPKI.SignatureCreatorPdfSignSealFieldOrPositionEx(params)
  1431. .Then(function (res) {
  1432. _SignatureCreatorSuccessCallBack(res);
  1433. })
  1434. .Catch(function (res) {
  1435. _SignatureCreatorFailedCallBack(res);
  1436. });
  1437. }
  1438. function netca_SignatureCreator_PdfSignSealPositionEx(_srcFile, _srcBytes, _destFile, _certEncode, _selMode,
  1439. _signFieldText, _sealImageEncode, _revInfoIncludeFlag, _positionStartPage, _positionEndPage, _xPos, _yPos, _positioinWidth, _positionHeight,
  1440. _tsaUrl, _tsaUsr, _tsaPwd, _tsaHashAlgo,
  1441. _text, _timeFormat, _widthPercentage, _heightPercentage, _fontName, _fontSize, _A, _R, _G, _B, _align,
  1442. _SignatureCreatorSuccessCallBack, _SignatureCreatorFailedCallBack) {
  1443. var params = {
  1444. srcFile: _srcFile, //源pdf文件
  1445. srcBytes: _srcBytes, //源Pdf文件的Base64编码
  1446. destFile: _destFile, //目标pdf文件
  1447. certEncode: _certEncode, //签名证书Base64编码
  1448. selMode: _selMode, //操作模式
  1449. signFieldText: _signFieldText, //签名域显示的文字
  1450. sealImageEncode: _sealImageEncode, //签章图片Base64编码
  1451. revInfoIncludeFlag: _revInfoIncludeFlag,//是否包含吊销信息
  1452. SignPosition: //签名位置对象
  1453. {
  1454. startPage: _positionStartPage, //PDF文档的开始页码
  1455. endPage: _positionEndPage, //PDF文档的结束页码
  1456. xPos: _xPos, //签名域/签章左下角的水平向右方向坐标
  1457. yPos: _yPos, //签名域/签章左下角的垂直向上方向坐标
  1458. width: _positioinWidth, //签名域/签章的宽度
  1459. height: _positionHeight //签名域/签章的高度
  1460. },
  1461. Tsa: //时间戳对象
  1462. {
  1463. tsaUrl: _tsaUrl, //时间戳地址
  1464. tsaUsr: _tsaUsr, //时间戳服务对应用户名
  1465. tsaPwd: _tsaPwd, //时间戳服务对应用户的密码
  1466. tsaHashAlgo: _tsaHashAlgo //时间戳使用的hash算法,例如”sha-1”,”sha-256”等
  1467. },
  1468. TimeObj:
  1469. {
  1470. text: _text, //自定义文本信息
  1471. timeFormat: _timeFormat, //日期格式
  1472. widthPercentage: _widthPercentage, //宽偏移百分比
  1473. heightPercentage: _heightPercentage,//高偏移百分比
  1474. fontName: _fontName, //字体
  1475. fontSize: _fontSize, //字体大小
  1476. FontColor:
  1477. {
  1478. A: _A,
  1479. R: _R,
  1480. G: _G,
  1481. B: _B
  1482. },
  1483. align: _align //对齐方式
  1484. }
  1485. };
  1486. NetcaPKI.SignatureCreatorPdfSignSealFieldOrPositionEx(params)
  1487. .Then(function (res) {
  1488. _SignatureCreatorSuccessCallBack(res);
  1489. })
  1490. .Catch(function (res) {
  1491. _SignatureCreatorFailedCallBack(res);
  1492. });
  1493. }
  1494. function netca_SignatureCreator_SealKeyWord(_srcFile, _srcBytes, _destFile, _certEncode, _selMode,
  1495. _signFieldText, _sealImageEncode, _revInfoIncludeFlag,
  1496. _tsaUrl, _tsaUsr, _tsaPwd, _tsaHashAlgo,
  1497. _text, _timeFormat, _widthPercentage, _heightPercentage, _fontName, _fontSize, _A, _R, _G, _B, _align,
  1498. _keyWord, _keyWordStartPage, _keyWordEndPage, _keyWordIndex, _keyWordWidth, _keyWordHeight, _offsetX, _offsetY,
  1499. _SignatureCreatorSuccessCallBack, _SignatureCreatorFailedCallBack) {
  1500. var params = {
  1501. srcFile: _srcFile, //源pdf文件
  1502. srcBytes: _srcBytes, //源Pdf文件的Base64编码
  1503. destFile: _destFile, //目标pdf文件
  1504. certEncode: _certEncode, //签名证书Base64编码
  1505. selMode: _selMode, //操作模式
  1506. signFieldText: _signFieldText, //签名域显示的文字
  1507. sealImageEncode: _sealImageEncode, //签章图片Base64编码
  1508. revInfoIncludeFlag: _revInfoIncludeFlag,//是否包含吊销信息
  1509. SealKeyWord: //关键字对象
  1510. {
  1511. keyWord: _keyWord, //关键字
  1512. startPage: _keyWordStartPage, //PDF文档的开始页码
  1513. endPage: _keyWordEndPage, //PDF文档的结束页码
  1514. keyWordIndex: _keyWordIndex, //关键字索引
  1515. width: _keyWordWidth, //签名域矩形的宽度
  1516. height: _keyWordHeight, //签名域矩形的高度
  1517. offsetX: _offsetX, //水平偏移量
  1518. offsetY: _offsetY //垂直偏移量
  1519. },
  1520. Tsa: //时间戳对象
  1521. {
  1522. tsaUrl: _tsaUrl, //时间戳地址
  1523. tsaUsr: _tsaUsr, //时间戳服务对应用户名
  1524. tsaPwd: _tsaPwd, //时间戳服务对应用户的密码
  1525. tsaHashAlgo: _tsaHashAlgo //时间戳使用的hash算法,例如”sha-1”,”sha-256”等
  1526. },
  1527. TimeObj:
  1528. {
  1529. text: _text, //自定义信息
  1530. timeFormat: _timeFormat, //日期格式
  1531. widthPercentage: _widthPercentage, //宽偏移百分比
  1532. heightPercentage: _heightPercentage,//高偏移百分比
  1533. fontName: _fontName, //字体
  1534. fontSize: _fontSize, //字体大小
  1535. FontColor:
  1536. {
  1537. A: _A,
  1538. R: _R,
  1539. G: _G,
  1540. B: _B
  1541. },
  1542. align: _align //对齐方式
  1543. }
  1544. };
  1545. NetcaPKI.SignatureCreatorPdfSignSealFieldOrPositionEx(params)
  1546. .Then(function (res) {
  1547. _SignatureCreatorSuccessCallBack(res);
  1548. })
  1549. .Catch(function (res) {
  1550. _SignatureCreatorFailedCallBack(res);
  1551. });
  1552. }
  1553. function netca_GetNetcaSealImage(certEncode, successCallBack, failedCallBack) {
  1554. var params = {
  1555. "cert": {
  1556. "encode": certEncode
  1557. }
  1558. };
  1559. NetcaPKI.GetNetcaSealImage(params)
  1560. .Then(function (res) {
  1561. successCallBack(res);
  1562. })
  1563. .Catch(function (res) {
  1564. failedCallBack(res);
  1565. });;
  1566. }
  1567. function netca_HashData(hashData, algo, cp, successCallBack, failedCallBack) {
  1568. params = {
  1569. hashAlgo: algo,
  1570. data: { //数据(DataParams)
  1571. text: hashData
  1572. },
  1573. flag: cp
  1574. };
  1575. NetcaPKI.HashData(params)
  1576. .Then(function (res) {
  1577. successCallBack(res);
  1578. })
  1579. .Catch(function (res) {
  1580. failedCallBack(res);
  1581. });;
  1582. }
  1583. function netca_cipher(useCipherEnc, cipherData, cipherAlgo, cipherKey, successCallBack, failedCallBack) {
  1584. params = {
  1585. algo: cipherAlgo,
  1586. data: { //数据(DataParams)
  1587. text: cipherData
  1588. },
  1589. key: { //数据(DataParams)
  1590. hexText: cipherKey
  1591. },
  1592. useEnc: useCipherEnc
  1593. };
  1594. NetcaPKI.cipher(params)
  1595. .Then(function (res) {
  1596. successCallBack(res);
  1597. })
  1598. .Catch(function (res) {
  1599. failedCallBack(res);
  1600. });;
  1601. }
  1602. function netca_GetCertList(successCallBack, failedCallBack) {
  1603. var params = {};
  1604. NetcaPKI.GetCertList(params)
  1605. .Then(function (res) {
  1606. successCallBack(res);
  1607. })
  1608. .Catch(function (res) {
  1609. failedCallBack(res);
  1610. });;
  1611. }
  1612. function netca_getSealClientVersion(successCallBack, failedCallBack) {
  1613. var params = {};
  1614. NetcaPKI.getSealClientVersion(params)
  1615. .Then(function (res) {
  1616. successCallBack(res);
  1617. })
  1618. .Catch(function (res) {
  1619. failedCallBack(res);
  1620. });;
  1621. }
  1622. function netca_verifyCertificate(_certEncode, _bUseCrl, _bUseOcsp, _crlEncode, _ocspUrl, _time, successCallBack, failedCallBack) {
  1623. var params = {
  1624. cert: {
  1625. "encode": _certEncode
  1626. },
  1627. bUseCrl: _bUseCrl,
  1628. bUseOcsp: _bUseOcsp,
  1629. crlEncode: _crlEncode,
  1630. ocspUrl: _ocspUrl,
  1631. time: _time
  1632. };
  1633. NetcaPKI.verifyCertificate(params)
  1634. .Then(function (res) {
  1635. successCallBack(res);
  1636. })
  1637. .Catch(function (res) {
  1638. failedCallBack(res);
  1639. });;
  1640. }
  1641. function netca_signatureVerifierVerifyPDF(_srcFile, _srcBytes, _level, successCallBack, failedCallBack) {
  1642. var params = {
  1643. srcFile: _srcFile,
  1644. srcBytes: _srcBytes,
  1645. level: _level
  1646. };
  1647. NetcaPKI.signatureVerifierVerifyPDF(params)
  1648. .Then(function (res) {
  1649. successCallBack(res);
  1650. })
  1651. .Catch(function (res) {
  1652. failedCallBack(res);
  1653. });;
  1654. }
  1655. function netca_signatureVerifierUndoPDF(_signFile, _signBytes, _index, successCallBack, failedCallBack) {
  1656. var params = {
  1657. signFile: _signFile,
  1658. signBytes: _signBytes,
  1659. index: _index
  1660. };
  1661. NetcaPKI.signatureVerifierUndoPDF(params)
  1662. .Then(function (res) {
  1663. successCallBack(res);
  1664. })
  1665. .Catch(function (res) {
  1666. failedCallBack(res);
  1667. });;
  1668. }
  1669. function netca_certauth_verifyCert(serverUrl, certEncode, selectType, selectCondition, checkVerifytime, successCallBack, failedCallBack) {
  1670. var params = {
  1671. url: serverUrl,
  1672. verifytime: checkVerifytime,
  1673. cert: { //证书(CertificateParams)
  1674. encode: certEncode,
  1675. type: selectType,
  1676. condition: selectCondition
  1677. }
  1678. };
  1679. NetcaPKI.netcaAA_VerifyUserCert(params)
  1680. .Then(function (res) {
  1681. successCallBack(res);
  1682. })
  1683. .Catch(function (res) {
  1684. failedCallBack(res);
  1685. });;
  1686. }
  1687. function netca_certauth_chkonecert(serverUrl, certEncode, selectType, selectCondition, successCallBack, failedCallBack) {
  1688. var params = {
  1689. url: serverUrl,
  1690. cert: { //证书(CertificateParams)
  1691. encode: certEncode,
  1692. type: selectType,
  1693. condition: selectCondition
  1694. }
  1695. };
  1696. NetcaPKI.netcaAA_ChkOneCert(params)
  1697. .Then(function (res) {
  1698. successCallBack(res);
  1699. })
  1700. .Catch(function (res) {
  1701. failedCallBack(res);
  1702. });;
  1703. }
  1704. function netca_modifyKeyPwd(_sn, _type, _oldPwd, _newPwd, SuccessCallBack, FailedCallBack) {
  1705. var params = {
  1706. sn: _sn,
  1707. type: parseInt(_type),
  1708. oldPwd: _oldPwd,
  1709. newPwd: _newPwd
  1710. };
  1711. NetcaPKI.modifyKeyPwd(params)
  1712. .Then(function (res) {
  1713. if (res.result == 1) {
  1714. SuccessCallBack(res);
  1715. }
  1716. else {
  1717. FailedCallBack(res);
  1718. }
  1719. })
  1720. .Catch(function (res) {
  1721. alert(res.msg);
  1722. });;
  1723. }
  1724. function netca_unlockKeyPwd(_sn, _type, _unlockPwd, _newPwd, SuccessCallBack, FailedCallBack) {
  1725. var params = {
  1726. sn: _sn,
  1727. type: parseInt(_type),
  1728. unlockPwd: _unlockPwd,
  1729. newPwd: _newPwd
  1730. };
  1731. NetcaPKI.unlockKeyPwd(params)
  1732. .Then(function (res) {
  1733. if (res.result == 1) {
  1734. SuccessCallBack(res);
  1735. }
  1736. else {
  1737. FailedCallBack(res);
  1738. }
  1739. })
  1740. .Catch(function (res) {
  1741. alert(res.msg);
  1742. });;
  1743. }
  1744. function netca_getSealConfigInfo(successCallBack, failCallBack) {
  1745. var params = {};
  1746. NetcaPKI.getSealConfigInfo(params)
  1747. .Then(function(res) {
  1748. successCallBack(res);
  1749. })
  1750. .Catch(function(res) {
  1751. failCallBack(res)
  1752. });
  1753. }
  1754. function netca_getSignatureFieldInfo(_srcFile, _srcBytes, successCallBack, failedCallBack) {
  1755. var params = {
  1756. srcFile: _srcFile,
  1757. srcBytes: _srcBytes
  1758. };
  1759. NetcaPKI.getSignatureFieldInfo(params)
  1760. .Then(function (res) {
  1761. successCallBack(res);
  1762. })
  1763. .Catch(function (res) {
  1764. failedCallBack(res);
  1765. });
  1766. }
  1767. function netca_generateP10(_sn, _type, _keypairAlgo, _keypairLabel, _keypairBits, _signAlgo,
  1768. _c, _st, _l, _o, _email, _ou, _cn, successCallBack, failedCallBack) {
  1769. var params = {
  1770. sn: _sn,
  1771. type: parseInt(_type),
  1772. keypairAlgo: parseInt(_keypairAlgo),
  1773. keypairLabel: _keypairLabel,
  1774. keypairBits: parseInt(_keypairBits),
  1775. signAlgo: parseInt(_signAlgo),
  1776. SubjectObj: {
  1777. c: _c,
  1778. st: _st,
  1779. l: _l,
  1780. o: _o,
  1781. email: _email,
  1782. ou: _ou,
  1783. cn: _cn
  1784. }
  1785. };
  1786. NetcaPKI.generateP10(params)
  1787. .Then(function (res) {
  1788. successCallBack(res);
  1789. })
  1790. .Catch(function (res) {
  1791. failedCallBack(res);
  1792. });;
  1793. }
  1794. function netca_installCertificate(_sn, _type, _encKeypair, _encCert, _signCert, successCallBack, failedCallBack) {
  1795. var params = {
  1796. sn: _sn,
  1797. type: parseInt(_type),
  1798. encKeypair: _encKeypair,
  1799. encCert: _encCert,
  1800. signCert: _signCert
  1801. };
  1802. NetcaPKI.installCertificate(params)
  1803. .Then(function (res) {
  1804. successCallBack(res);
  1805. })
  1806. .Catch(function (res) {
  1807. failedCallBack(res);
  1808. });;
  1809. }
  1810. function KeyXClient_PluginShell(inuid,SuccessCallBack,FailedCallBack)
  1811. {
  1812. var params = {
  1813. uid:inuid
  1814. };
  1815. NetcaPKI.keyXClientPluginShell(params)
  1816. .Then(function (res) {
  1817. })
  1818. .Catch(function (res) {
  1819. alert(res.msg);
  1820. })
  1821. }