n20-common-lib 2.3.23 → 2.4.0-1replenish

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n20-common-lib",
3
- "version": "2.3.23",
3
+ "version": "2.4.0-1replenish",
4
4
  "private": false,
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -245,7 +245,7 @@ export default {
245
245
  item.options = opts || []
246
246
  }
247
247
  },
248
- getRemote() {
248
+ getRemote(flag) {
249
249
  getColumns(this.pageId, this.userNo, this.filterLT).then((list) => {
250
250
  if (list) {
251
251
  this.remoteList = list
@@ -253,7 +253,7 @@ export default {
253
253
  let defaultList = this.filterLT.filter((col) => col.isDefault)
254
254
  this.remoteList = defaultList.length ? defaultList : this.filterLT.slice(0, this.defaultShow)
255
255
  }
256
- this.showPop = true
256
+ this.showPop = flag || true
257
257
  })
258
258
  },
259
259
  setRemoteChange(list) {
@@ -44,16 +44,16 @@
44
44
  }}</el-button>
45
45
  <!-- YSCW-end -->
46
46
  <el-dropdown class="m-l-lg" @command="setLang">
47
- <!-- <el-tooltip v-if="!hideLang" :content="'语言切换' | $lc"> -->
48
- <span
49
- class="set-user-btn iconfont header-color"
50
- :class="{
51
- 'icon-zhongwen': langVal === 'zh-cn',
52
- 'icon-fanti': langVal === 'zh-hk',
53
- 'icon-yuyanqiehuan': langVal === 'en'
54
- }"
55
- ></span>
56
- <!-- </el-tooltip> -->
47
+ <el-tooltip v-if="!hideLang" :content="'语言切换' | $lc">
48
+ <span
49
+ class="set-user-btn iconfont header-color"
50
+ :class="{
51
+ 'icon-zhongwen': langVal === 'zh-cn',
52
+ 'icon-fanti': langVal === 'zh-hk',
53
+ 'icon-yuyanqiehuan': langVal === 'en'
54
+ }"
55
+ ></span>
56
+ </el-tooltip>
57
57
  <el-dropdown-menu slot="dropdown">
58
58
  <el-dropdown-item command="zh-cn"
59
59
  ><i class="iconfont icon-zhongwen f-s-icon"></i>{{ '简体中文' | $lc }}</el-dropdown-item
@@ -1,520 +1,520 @@
1
- /* eslint-disable no-useless-escape */
2
- /* eslint-disable no-redeclare */
3
- /* eslint-disable eqeqeq */
4
- import {Message} from 'element-ui'
5
-
6
- const chrome = window.chrome
7
-
8
- nmCryptokit.chromeExtension = 'hdnlhmckkfofnfnjjpcbmnmfbcjjhpig'
9
- nmCryptokit.edgeExtension = 'afifobadnhlfflniehieipibalnafkkj'
10
- nmCryptokit.productID = 'com.cfca.cryptokit.hbjtcw'
11
-
12
- nmCryptokit.extensionName = nmCryptokit.productID + '.extension'
13
- nmCryptokit.reqEventName = nmCryptokit.productID + '.request'
14
- nmCryptokit.respEventName = nmCryptokit.productID + '.response'
15
-
16
- nmCryptokit.Browser = {
17
- IE: 'Internet Explorer',
18
- Edge: 'Edge',
19
- Edg: 'Edge(Chromium)',
20
- Chrome: 'Chrome',
21
- Safari: 'Safari',
22
- Firefox: 'Firefox'
23
- }
24
-
25
- function GenerateRandomId() {
26
- var charstring = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890'
27
- var maxPos = charstring.length
28
- var randomId = ''
29
- for (let i = 0; i < 10; i++) {
30
- randomId += charstring.charAt(Math.floor(Math.random() * maxPos))
31
- }
32
- return randomId
33
- }
34
-
35
- function nmCryptokit(browser) {
36
- this.browser = browser
37
- }
38
-
39
- // Encapsulate Chrome sendMessage callback to Promise
40
- nmCryptokit.SendMessageforChrome = function (request) {
41
- return new Promise(function (resolve, reject) {
42
- chrome.runtime.sendMessage(nmCryptokit.chromeExtension, request, function (response) {
43
- if (response) {
44
- if (response.errorcode == 0) {
45
- resolve(response)
46
- } else {
47
- reject(response)
48
- }
49
- } else {
50
- var result = {}
51
- result.errorcode = 1
52
- result.result = chrome.runtime.lastError.message
53
- reject(result)
54
- }
55
- })
56
- })
57
- }
58
-
59
- // Encapsulate Chrome sendMessage callback to Promise
60
- nmCryptokit.SendMessageforEdge = function (request) {
61
- return new Promise(function (resolve, reject) {
62
- chrome.runtime.sendMessage(nmCryptokit.edgeExtension, request, function (response) {
63
- if (response) {
64
- if (response.errorcode == 0) {
65
- resolve(response)
66
- } else {
67
- reject(response)
68
- }
69
- } else {
70
- var result = {}
71
- result.errorcode = 1
72
- result.result = chrome.runtime.lastError.message
73
- reject(result)
74
- }
75
- })
76
- })
77
- }
78
-
79
- // Encapsulate Edge&Firefox event to Promise
80
- nmCryptokit.SendMessagebyEvent = function (request) {
81
- var event = new CustomEvent(nmCryptokit.reqEventName, {detail: request})
82
- document.dispatchEvent(event)
83
-
84
- return new Promise(function (resolve, reject) {
85
- var responseEventName = nmCryptokit.respEventName
86
- if (request.funcInfo != undefined && request.funcInfo.randomId != undefined)
87
- responseEventName += '.' + request.funcInfo.randomId
88
-
89
- document.addEventListener(
90
- responseEventName,
91
- function CallBack(e) {
92
- document.removeEventListener(e.type, CallBack)
93
- var eJson = JSON.parse(e.detail)
94
- if (eJson != null && eJson.errorcode == 0) {
95
- resolve(eJson)
96
- } else {
97
- reject(eJson)
98
- }
99
- },
100
- false
101
- )
102
- })
103
- }
104
-
105
- nmCryptokit.SendMessage = function (browser, requestJSON) {
106
- if (nmCryptokit.Browser.Chrome == browser) {
107
- return nmCryptokit.SendMessageforChrome(requestJSON)
108
- } else if (nmCryptokit.Browser.Edg == browser) {
109
- return nmCryptokit.SendMessageforEdge(requestJSON)
110
- } else {
111
- return nmCryptokit.SendMessagebyEvent(requestJSON)
112
- }
113
- }
114
-
115
- nmCryptokit.checkExtension = function (browser) {
116
- return new Promise(function (resolve, reject) {
117
- var result = {}
118
- if (nmCryptokit.Browser.Chrome == browser || nmCryptokit.Browser.Edg == browser) {
119
- // chrome.runtime.sendMessage() could check extension existence.
120
- if (chrome.runtime) {
121
- resolve(browser)
122
- } else {
123
- result.errorcode = 2
124
- result.result = 'Extension does not exist!'
125
- reject(result)
126
- }
127
- } else if (nmCryptokit.Browser.Edge == browser || nmCryptokit.Browser.Firefox == browser) {
128
- if (document.getElementById(nmCryptokit.extensionName)) {
129
- resolve(browser)
130
- } else {
131
- result.errorcode = 2
132
- result.result = 'Extension does not exist!'
133
- reject(result)
134
- }
135
- } else {
136
- result.errorcode = 3
137
- result.result = 'Only support Chrome/Edge/Firefox'
138
- reject(result)
139
- }
140
- })
141
- }
142
-
143
- nmCryptokit.prototype.init = function () {
144
- var browser = this.browser
145
- var that = this
146
-
147
- return nmCryptokit
148
- .checkExtension(browser)
149
- .then(function (browser) {
150
- var request = {}
151
- request.action = 'connect'
152
- request.host = nmCryptokit.productID
153
- return nmCryptokit.SendMessage(browser, request)
154
- })
155
- .then(function () {
156
- var request = {}
157
- var funcInfo = {}
158
- var randomId = GenerateRandomId()
159
-
160
- funcInfo.function = 'GetLastErrorDesc'
161
- funcInfo.params = null
162
- funcInfo.randomId = randomId
163
-
164
- request.action = 'invoke'
165
- request.funcInfo = funcInfo
166
-
167
- return nmCryptokit.SendMessage(that.browser, request)
168
- })
169
- }
170
-
171
- nmCryptokit.prototype.uninit = function () {
172
- var request = {}
173
- request.action = 'disconnect'
174
- request.host = nmCryptokit.productID
175
-
176
- return nmCryptokit.SendMessage(this.browser, request)
177
- }
178
-
179
- nmCryptokit.prototype.getExtensionVersion = function () {
180
- var request = {}
181
- var funcInfo = {}
182
-
183
- funcInfo.function = 'getExtensionVersion'
184
- funcInfo.params = null
185
- request.action = 'getExtensionVersion'
186
- request.funcInfo = funcInfo
187
-
188
- return nmCryptokit.SendMessage(this.browser, request)
189
- }
190
-
191
- nmCryptokit.prototype.getHostVersion = function () {
192
- var request = {}
193
- var funcInfo = {}
194
- var randomId = GenerateRandomId()
195
-
196
- funcInfo.function = 'GetVersion'
197
- funcInfo.params = null
198
- funcInfo.randomId = randomId
199
-
200
- request.action = 'invoke'
201
- request.funcInfo = funcInfo
202
-
203
- return nmCryptokit.SendMessage(this.browser, request)
204
- }
205
-
206
- nmCryptokit.prototype.SelectCertificate = function (
207
- bstrSubjectDNFilter,
208
- bstrIssuerDNFilter,
209
- bstrSerialNumFilter,
210
- bstrCSPNameList
211
- ) {
212
- var request = {}
213
- var funcInfo = {}
214
- var paramArr = []
215
- var randomId = GenerateRandomId()
216
-
217
- paramArr.push(bstrSubjectDNFilter)
218
- paramArr.push(bstrIssuerDNFilter)
219
- paramArr.push(bstrSerialNumFilter)
220
- paramArr.push(bstrCSPNameList)
221
-
222
- funcInfo.function = 'SelectCertificate'
223
- funcInfo.params = paramArr
224
- funcInfo.randomId = randomId
225
-
226
- request.action = 'invoke'
227
- request.funcInfo = funcInfo
228
-
229
- return nmCryptokit.SendMessage(this.browser, request)
230
- }
231
-
232
- nmCryptokit.prototype.GetSignCertInfo = function (bstrInfoType) {
233
- var request = {}
234
- var funcInfo = {}
235
- var paramArr = []
236
- var randomId = GenerateRandomId()
237
-
238
- paramArr.push(bstrInfoType)
239
-
240
- funcInfo.function = 'getSignCertInfo'
241
- funcInfo.params = paramArr
242
- funcInfo.randomId = randomId
243
-
244
- request.action = 'invoke'
245
- request.funcInfo = funcInfo
246
-
247
- return nmCryptokit.SendMessage(this.browser, request)
248
- }
249
-
250
- nmCryptokit.prototype.SignMsgPKCS7 = function (bstrSourceData, bstrHashAlg, bWithSourceData) {
251
- var request = {}
252
- var funcInfo = {}
253
- var paramArr = []
254
- var randomId = GenerateRandomId()
255
-
256
- paramArr.push(bstrSourceData)
257
- paramArr.push(bstrHashAlg)
258
- paramArr.push(bWithSourceData)
259
-
260
- funcInfo.function = 'SignMsgPKCS7'
261
- funcInfo.params = paramArr
262
- funcInfo.randomId = randomId
263
-
264
- request.action = 'invoke'
265
- request.funcInfo = funcInfo
266
-
267
- return nmCryptokit.SendMessage(this.browser, request)
268
- }
269
-
270
- nmCryptokit.prototype.SignHashMsgPKCS7Detached = function (bstrSourceData, bstrHashAlg) {
271
- var request = {}
272
- var funcInfo = {}
273
- var paramArr = []
274
- var randomId = GenerateRandomId()
275
-
276
- paramArr.push(bstrSourceData)
277
- paramArr.push(bstrHashAlg)
278
-
279
- funcInfo.function = 'SignHashMsgPKCS7Detached'
280
- funcInfo.params = paramArr
281
- funcInfo.randomId = randomId
282
-
283
- request.action = 'invoke'
284
- request.funcInfo = funcInfo
285
-
286
- return nmCryptokit.SendMessage(this.browser, request)
287
- }
288
-
289
- nmCryptokit.prototype.SignMsgPKCS1 = function (bstrSourceData, bstrHashAlg) {
290
- var request = {}
291
- var funcInfo = {}
292
- var paramArr = []
293
- var randomId = GenerateRandomId()
294
-
295
- paramArr.push(bstrSourceData)
296
- paramArr.push(bstrHashAlg)
297
-
298
- funcInfo.function = 'SignMsgPKCS1'
299
- funcInfo.params = paramArr
300
- funcInfo.randomId = randomId
301
-
302
- request.action = 'invoke'
303
- request.funcInfo = funcInfo
304
-
305
- return nmCryptokit.SendMessage(this.browser, request)
306
- }
307
-
308
- nmCryptokit.prototype.GetVersion = function () {
309
- var request = {}
310
- var funcInfo = {}
311
- var randomId = GenerateRandomId()
312
-
313
- funcInfo.function = 'GetVersion'
314
- funcInfo.params = null
315
- funcInfo.randomId = randomId
316
-
317
- request.action = 'invoke'
318
- request.funcInfo = funcInfo
319
-
320
- return nmCryptokit.SendMessage(this.browser, request)
321
- }
322
-
323
- nmCryptokit.prototype.GetLastErrorDesc = function () {
324
- var request = {}
325
- var funcInfo = {}
326
- var randomId = GenerateRandomId()
327
-
328
- funcInfo.function = 'GetLastErrorDesc'
329
- funcInfo.params = null
330
- funcInfo.randomId = randomId
331
-
332
- request.action = 'invoke'
333
- request.funcInfo = funcInfo
334
-
335
- return nmCryptokit.SendMessage(this.browser, request)
336
- }
337
-
338
- var CryptoKit
339
-
340
- function BrowserInfo() {
341
- var res = {
342
- name: '',
343
- version: ''
344
- }
345
- var reg
346
- var userAgent = self.navigator.userAgent
347
-
348
- if ((reg = /edge\/([\d\.]+)/i.exec(userAgent))) {
349
- res.name = 'Edge'
350
- res.version = reg[1]
351
- } else if ((reg = /edg\/([\d\.]+)/i.exec(userAgent))) {
352
- res.name = 'Edge(Chromium)'
353
- res.version = reg[1]
354
- } else if (/msie/i.test(userAgent)) {
355
- res.name = 'Internet Explorer'
356
- res.version = /msie ([\d\.]+)/i.exec(userAgent)[1]
357
- } else if (/Trident/i.test(userAgent)) {
358
- res.name = 'Internet Explorer'
359
- res.version = /rv:([\d\.]+)/i.exec(userAgent)[1]
360
- } else if (/chrome/i.test(userAgent)) {
361
- res.name = 'Chrome'
362
- res.version = /chrome\/([\d\.]+)/i.exec(userAgent)[1]
363
- } else if (/safari/i.test(userAgent)) {
364
- res.name = 'Safari'
365
- res.version = /version\/([\d\.]+)/i.exec(userAgent)[1]
366
- } else if (/firefox/i.test(userAgent)) {
367
- res.name = 'Firefox'
368
- res.version = /firefox\/([\d\.]+)/i.exec(userAgent)[1]
369
- }
370
- return res
371
- }
372
-
373
- function compareVersion(version1, version2) {
374
- var v1Arr = version1.split('.')
375
- var v2Arr = version2.split('.')
376
- var len = Math.min(v1Arr.length, v2Arr.length)
377
- for (var i = 0; i < len; i++) {
378
- if (parseInt(v1Arr[i], 10) > parseInt(v2Arr[i], 10)) return 1
379
-
380
- if (parseInt(v1Arr[i], 10) < parseInt(v2Arr[i], 10)) return -1
381
- }
382
-
383
- if (len < v1Arr.length) {
384
- for (var j = len; j < v1Arr.length; j++) {
385
- if (parseInt(v1Arr[j], 10) != 0) return 1
386
- }
387
- }
388
-
389
- if (len < v2Arr.length) {
390
- for (var j = len; j < v2Arr.length; j++) {
391
- if (parseInt(v2Arr[j], 10) != 0) return -1
392
- }
393
- }
394
-
395
- return 0
396
- }
397
-
398
- function getDN() {
399
- let dn
400
- let userInfo = JSON.parse(sessionStorage.getItem('userInfo'))
401
- if (userInfo && userInfo.dn) {
402
- dn = userInfo.dn
403
- }
404
- return dn
405
- }
406
-
407
- /* 给对象或字符串签名 */
408
- export const getSign = async (plain, dn) => {
409
- let errMsg
410
- let plainText
411
-
412
- if (dn === undefined) {
413
- dn = getDN()
414
- }
415
- if (!dn) {
416
- errMsg = '签名参数DN错误!'
417
- Message.error(errMsg)
418
- return Promise.reject(errMsg)
419
- }
420
- if (!window.CryptoKit) {
421
- try {
422
- var browser = BrowserInfo()
423
-
424
- var hostVer
425
- var extensionVer
426
- var chromeExtensionVer = '3.2.0.1'
427
- var edgeExtensionVer = '3.4.0.1'
428
- var firefoxExtensionVer = '3.2.0.1'
429
-
430
- if (
431
- browser.name == 'Edge(Chromium)' ||
432
- (browser.name == 'Chrome' && parseInt(browser.version) > 41) ||
433
- (browser.name == 'Firefox' && parseInt(browser.version) > 52)
434
- ) {
435
- // eslint-disable-next-line new-cap
436
- window.CryptoKit = new nmCryptokit(browser.name)
437
- await window.CryptoKit.init()
438
- const vRes = await window.CryptoKit.getExtensionVersion()
439
- extensionVer = vRes.result
440
- const hostVerRes = await window.CryptoKit.getHostVersion()
441
- hostVer = hostVerRes.result
442
- if (
443
- (browser.name == 'Edge(Chromium)' && compareVersion(extensionVer, edgeExtensionVer) < 0) ||
444
- (browser.name == 'Chrome' && compareVersion(extensionVer, chromeExtensionVer) < 0) ||
445
- (browser.name == 'Firefox' && compareVersion(extensionVer, firefoxExtensionVer) < 0)
446
- ) {
447
- errMsg = '签名助手未正确安装!'
448
- Message.error(errMsg)
449
- return Promise.reject(errMsg)
450
- } else if (compareVersion(hostVer, '3.4.0.1') < 0) {
451
- errMsg = '签名助手未正确安装!'
452
- Message.error(errMsg)
453
- return Promise.reject(errMsg)
454
- }
455
- } else {
456
- errMsg = '不支持的浏览器!'
457
- Message.error(errMsg)
458
- return Promise.reject(errMsg)
459
- }
460
- } catch (ex) {
461
- console.log(ex)
462
- errMsg = '签名助手初始化失败!'
463
- Message.error(errMsg)
464
- return Promise.reject(errMsg)
465
- }
466
- }
467
- // var cspList = "CFCA CSP v3.0||CFCA Ulan CSP v4.0||Uyee CSP v6.0 (Enterprise)"
468
- // try {
469
- // await CryptoKit.setSM2CSPList(cspList)
470
- // } catch (ex) {
471
- // console.log(ex)
472
- // errMsg = '没有检测到Ukey!'
473
- // Message.error(errMsg)
474
- // return Promise.reject(errMsg)
475
- // }
476
-
477
- if (typeof plain === 'object') {
478
- plainText = JSON.stringify(plain)
479
- } else {
480
- plainText = plain
481
- }
482
-
483
- try {
484
- var subjectDNFilter = ''
485
- var issuerDNFilter = ''
486
- var serialNumFilter = ''
487
- var cspNameLists = 'CFCA CSP v3.0||CFCA Ulan CSP v4.0||Uyee CSP v6.0 (Enterprise)'
488
- const certRes = await window.CryptoKit.SelectCertificate(subjectDNFilter, issuerDNFilter, serialNumFilter, cspNameLists)
489
- if (!certRes.result) {
490
- errMsg = '没有检测到证书!'
491
- Message.error(errMsg)
492
- return Promise.reject(errMsg)
493
- }
494
- } catch (ex) {
495
- console.log(ex)
496
- errMsg = '检测证书出错!' + ex
497
- Message.error(errMsg)
498
- return Promise.reject(errMsg)
499
- }
500
- try {
501
- var certDNRes = await window.CryptoKit.GetSignCertInfo('SubjectDN')
502
- var certDN = certDNRes.result
503
- //比对DN
504
- if (certDN != dn) {
505
- errMsg = '证书不匹配!'
506
- Message.error(errMsg)
507
- return Promise.reject(errMsg)
508
- }
509
- //签名
510
- var selectedAlg = 'SHA-256' //SHA-256,SHA-1
511
- var IsWithSource = true //true是Attach,false是Detach
512
- const signRes = await window.CryptoKit.SignMsgPKCS7(plainText, selectedAlg, IsWithSource)
513
- return Promise.resolve(signRes.result)
514
- } catch (ex) {
515
- console.log(ex)
516
- errMsg = '证书签名出错!' + ex
517
- Message.error(errMsg)
518
- return Promise.reject(errMsg)
519
- }
520
- }
1
+ /* eslint-disable no-useless-escape */
2
+ /* eslint-disable no-redeclare */
3
+ /* eslint-disable eqeqeq */
4
+ import {Message} from 'element-ui'
5
+
6
+ const chrome = window.chrome
7
+
8
+ nmCryptokit.chromeExtension = 'hdnlhmckkfofnfnjjpcbmnmfbcjjhpig'
9
+ nmCryptokit.edgeExtension = 'afifobadnhlfflniehieipibalnafkkj'
10
+ nmCryptokit.productID = 'com.cfca.cryptokit.hbjtcw'
11
+
12
+ nmCryptokit.extensionName = nmCryptokit.productID + '.extension'
13
+ nmCryptokit.reqEventName = nmCryptokit.productID + '.request'
14
+ nmCryptokit.respEventName = nmCryptokit.productID + '.response'
15
+
16
+ nmCryptokit.Browser = {
17
+ IE: 'Internet Explorer',
18
+ Edge: 'Edge',
19
+ Edg: 'Edge(Chromium)',
20
+ Chrome: 'Chrome',
21
+ Safari: 'Safari',
22
+ Firefox: 'Firefox'
23
+ }
24
+
25
+ function GenerateRandomId() {
26
+ var charstring = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890'
27
+ var maxPos = charstring.length
28
+ var randomId = ''
29
+ for (let i = 0; i < 10; i++) {
30
+ randomId += charstring.charAt(Math.floor(Math.random() * maxPos))
31
+ }
32
+ return randomId
33
+ }
34
+
35
+ function nmCryptokit(browser) {
36
+ this.browser = browser
37
+ }
38
+
39
+ // Encapsulate Chrome sendMessage callback to Promise
40
+ nmCryptokit.SendMessageforChrome = function (request) {
41
+ return new Promise(function (resolve, reject) {
42
+ chrome.runtime.sendMessage(nmCryptokit.chromeExtension, request, function (response) {
43
+ if (response) {
44
+ if (response.errorcode == 0) {
45
+ resolve(response)
46
+ } else {
47
+ reject(response)
48
+ }
49
+ } else {
50
+ var result = {}
51
+ result.errorcode = 1
52
+ result.result = chrome.runtime.lastError.message
53
+ reject(result)
54
+ }
55
+ })
56
+ })
57
+ }
58
+
59
+ // Encapsulate Chrome sendMessage callback to Promise
60
+ nmCryptokit.SendMessageforEdge = function (request) {
61
+ return new Promise(function (resolve, reject) {
62
+ chrome.runtime.sendMessage(nmCryptokit.edgeExtension, request, function (response) {
63
+ if (response) {
64
+ if (response.errorcode == 0) {
65
+ resolve(response)
66
+ } else {
67
+ reject(response)
68
+ }
69
+ } else {
70
+ var result = {}
71
+ result.errorcode = 1
72
+ result.result = chrome.runtime.lastError.message
73
+ reject(result)
74
+ }
75
+ })
76
+ })
77
+ }
78
+
79
+ // Encapsulate Edge&Firefox event to Promise
80
+ nmCryptokit.SendMessagebyEvent = function (request) {
81
+ var event = new CustomEvent(nmCryptokit.reqEventName, {detail: request})
82
+ document.dispatchEvent(event)
83
+
84
+ return new Promise(function (resolve, reject) {
85
+ var responseEventName = nmCryptokit.respEventName
86
+ if (request.funcInfo != undefined && request.funcInfo.randomId != undefined)
87
+ responseEventName += '.' + request.funcInfo.randomId
88
+
89
+ document.addEventListener(
90
+ responseEventName,
91
+ function CallBack(e) {
92
+ document.removeEventListener(e.type, CallBack)
93
+ var eJson = JSON.parse(e.detail)
94
+ if (eJson != null && eJson.errorcode == 0) {
95
+ resolve(eJson)
96
+ } else {
97
+ reject(eJson)
98
+ }
99
+ },
100
+ false
101
+ )
102
+ })
103
+ }
104
+
105
+ nmCryptokit.SendMessage = function (browser, requestJSON) {
106
+ if (nmCryptokit.Browser.Chrome == browser) {
107
+ return nmCryptokit.SendMessageforChrome(requestJSON)
108
+ } else if (nmCryptokit.Browser.Edg == browser) {
109
+ return nmCryptokit.SendMessageforEdge(requestJSON)
110
+ } else {
111
+ return nmCryptokit.SendMessagebyEvent(requestJSON)
112
+ }
113
+ }
114
+
115
+ nmCryptokit.checkExtension = function (browser) {
116
+ return new Promise(function (resolve, reject) {
117
+ var result = {}
118
+ if (nmCryptokit.Browser.Chrome == browser || nmCryptokit.Browser.Edg == browser) {
119
+ // chrome.runtime.sendMessage() could check extension existence.
120
+ if (chrome.runtime) {
121
+ resolve(browser)
122
+ } else {
123
+ result.errorcode = 2
124
+ result.result = 'Extension does not exist!'
125
+ reject(result)
126
+ }
127
+ } else if (nmCryptokit.Browser.Edge == browser || nmCryptokit.Browser.Firefox == browser) {
128
+ if (document.getElementById(nmCryptokit.extensionName)) {
129
+ resolve(browser)
130
+ } else {
131
+ result.errorcode = 2
132
+ result.result = 'Extension does not exist!'
133
+ reject(result)
134
+ }
135
+ } else {
136
+ result.errorcode = 3
137
+ result.result = 'Only support Chrome/Edge/Firefox'
138
+ reject(result)
139
+ }
140
+ })
141
+ }
142
+
143
+ nmCryptokit.prototype.init = function () {
144
+ var browser = this.browser
145
+ var that = this
146
+
147
+ return nmCryptokit
148
+ .checkExtension(browser)
149
+ .then(function (browser) {
150
+ var request = {}
151
+ request.action = 'connect'
152
+ request.host = nmCryptokit.productID
153
+ return nmCryptokit.SendMessage(browser, request)
154
+ })
155
+ .then(function () {
156
+ var request = {}
157
+ var funcInfo = {}
158
+ var randomId = GenerateRandomId()
159
+
160
+ funcInfo.function = 'GetLastErrorDesc'
161
+ funcInfo.params = null
162
+ funcInfo.randomId = randomId
163
+
164
+ request.action = 'invoke'
165
+ request.funcInfo = funcInfo
166
+
167
+ return nmCryptokit.SendMessage(that.browser, request)
168
+ })
169
+ }
170
+
171
+ nmCryptokit.prototype.uninit = function () {
172
+ var request = {}
173
+ request.action = 'disconnect'
174
+ request.host = nmCryptokit.productID
175
+
176
+ return nmCryptokit.SendMessage(this.browser, request)
177
+ }
178
+
179
+ nmCryptokit.prototype.getExtensionVersion = function () {
180
+ var request = {}
181
+ var funcInfo = {}
182
+
183
+ funcInfo.function = 'getExtensionVersion'
184
+ funcInfo.params = null
185
+ request.action = 'getExtensionVersion'
186
+ request.funcInfo = funcInfo
187
+
188
+ return nmCryptokit.SendMessage(this.browser, request)
189
+ }
190
+
191
+ nmCryptokit.prototype.getHostVersion = function () {
192
+ var request = {}
193
+ var funcInfo = {}
194
+ var randomId = GenerateRandomId()
195
+
196
+ funcInfo.function = 'GetVersion'
197
+ funcInfo.params = null
198
+ funcInfo.randomId = randomId
199
+
200
+ request.action = 'invoke'
201
+ request.funcInfo = funcInfo
202
+
203
+ return nmCryptokit.SendMessage(this.browser, request)
204
+ }
205
+
206
+ nmCryptokit.prototype.SelectCertificate = function (
207
+ bstrSubjectDNFilter,
208
+ bstrIssuerDNFilter,
209
+ bstrSerialNumFilter,
210
+ bstrCSPNameList
211
+ ) {
212
+ var request = {}
213
+ var funcInfo = {}
214
+ var paramArr = []
215
+ var randomId = GenerateRandomId()
216
+
217
+ paramArr.push(bstrSubjectDNFilter)
218
+ paramArr.push(bstrIssuerDNFilter)
219
+ paramArr.push(bstrSerialNumFilter)
220
+ paramArr.push(bstrCSPNameList)
221
+
222
+ funcInfo.function = 'SelectCertificate'
223
+ funcInfo.params = paramArr
224
+ funcInfo.randomId = randomId
225
+
226
+ request.action = 'invoke'
227
+ request.funcInfo = funcInfo
228
+
229
+ return nmCryptokit.SendMessage(this.browser, request)
230
+ }
231
+
232
+ nmCryptokit.prototype.GetSignCertInfo = function (bstrInfoType) {
233
+ var request = {}
234
+ var funcInfo = {}
235
+ var paramArr = []
236
+ var randomId = GenerateRandomId()
237
+
238
+ paramArr.push(bstrInfoType)
239
+
240
+ funcInfo.function = 'getSignCertInfo'
241
+ funcInfo.params = paramArr
242
+ funcInfo.randomId = randomId
243
+
244
+ request.action = 'invoke'
245
+ request.funcInfo = funcInfo
246
+
247
+ return nmCryptokit.SendMessage(this.browser, request)
248
+ }
249
+
250
+ nmCryptokit.prototype.SignMsgPKCS7 = function (bstrSourceData, bstrHashAlg, bWithSourceData) {
251
+ var request = {}
252
+ var funcInfo = {}
253
+ var paramArr = []
254
+ var randomId = GenerateRandomId()
255
+
256
+ paramArr.push(bstrSourceData)
257
+ paramArr.push(bstrHashAlg)
258
+ paramArr.push(bWithSourceData)
259
+
260
+ funcInfo.function = 'SignMsgPKCS7'
261
+ funcInfo.params = paramArr
262
+ funcInfo.randomId = randomId
263
+
264
+ request.action = 'invoke'
265
+ request.funcInfo = funcInfo
266
+
267
+ return nmCryptokit.SendMessage(this.browser, request)
268
+ }
269
+
270
+ nmCryptokit.prototype.SignHashMsgPKCS7Detached = function (bstrSourceData, bstrHashAlg) {
271
+ var request = {}
272
+ var funcInfo = {}
273
+ var paramArr = []
274
+ var randomId = GenerateRandomId()
275
+
276
+ paramArr.push(bstrSourceData)
277
+ paramArr.push(bstrHashAlg)
278
+
279
+ funcInfo.function = 'SignHashMsgPKCS7Detached'
280
+ funcInfo.params = paramArr
281
+ funcInfo.randomId = randomId
282
+
283
+ request.action = 'invoke'
284
+ request.funcInfo = funcInfo
285
+
286
+ return nmCryptokit.SendMessage(this.browser, request)
287
+ }
288
+
289
+ nmCryptokit.prototype.SignMsgPKCS1 = function (bstrSourceData, bstrHashAlg) {
290
+ var request = {}
291
+ var funcInfo = {}
292
+ var paramArr = []
293
+ var randomId = GenerateRandomId()
294
+
295
+ paramArr.push(bstrSourceData)
296
+ paramArr.push(bstrHashAlg)
297
+
298
+ funcInfo.function = 'SignMsgPKCS1'
299
+ funcInfo.params = paramArr
300
+ funcInfo.randomId = randomId
301
+
302
+ request.action = 'invoke'
303
+ request.funcInfo = funcInfo
304
+
305
+ return nmCryptokit.SendMessage(this.browser, request)
306
+ }
307
+
308
+ nmCryptokit.prototype.GetVersion = function () {
309
+ var request = {}
310
+ var funcInfo = {}
311
+ var randomId = GenerateRandomId()
312
+
313
+ funcInfo.function = 'GetVersion'
314
+ funcInfo.params = null
315
+ funcInfo.randomId = randomId
316
+
317
+ request.action = 'invoke'
318
+ request.funcInfo = funcInfo
319
+
320
+ return nmCryptokit.SendMessage(this.browser, request)
321
+ }
322
+
323
+ nmCryptokit.prototype.GetLastErrorDesc = function () {
324
+ var request = {}
325
+ var funcInfo = {}
326
+ var randomId = GenerateRandomId()
327
+
328
+ funcInfo.function = 'GetLastErrorDesc'
329
+ funcInfo.params = null
330
+ funcInfo.randomId = randomId
331
+
332
+ request.action = 'invoke'
333
+ request.funcInfo = funcInfo
334
+
335
+ return nmCryptokit.SendMessage(this.browser, request)
336
+ }
337
+
338
+ var CryptoKit
339
+
340
+ function BrowserInfo() {
341
+ var res = {
342
+ name: '',
343
+ version: ''
344
+ }
345
+ var reg
346
+ var userAgent = self.navigator.userAgent
347
+
348
+ if ((reg = /edge\/([\d\.]+)/i.exec(userAgent))) {
349
+ res.name = 'Edge'
350
+ res.version = reg[1]
351
+ } else if ((reg = /edg\/([\d\.]+)/i.exec(userAgent))) {
352
+ res.name = 'Edge(Chromium)'
353
+ res.version = reg[1]
354
+ } else if (/msie/i.test(userAgent)) {
355
+ res.name = 'Internet Explorer'
356
+ res.version = /msie ([\d\.]+)/i.exec(userAgent)[1]
357
+ } else if (/Trident/i.test(userAgent)) {
358
+ res.name = 'Internet Explorer'
359
+ res.version = /rv:([\d\.]+)/i.exec(userAgent)[1]
360
+ } else if (/chrome/i.test(userAgent)) {
361
+ res.name = 'Chrome'
362
+ res.version = /chrome\/([\d\.]+)/i.exec(userAgent)[1]
363
+ } else if (/safari/i.test(userAgent)) {
364
+ res.name = 'Safari'
365
+ res.version = /version\/([\d\.]+)/i.exec(userAgent)[1]
366
+ } else if (/firefox/i.test(userAgent)) {
367
+ res.name = 'Firefox'
368
+ res.version = /firefox\/([\d\.]+)/i.exec(userAgent)[1]
369
+ }
370
+ return res
371
+ }
372
+
373
+ function compareVersion(version1, version2) {
374
+ var v1Arr = version1.split('.')
375
+ var v2Arr = version2.split('.')
376
+ var len = Math.min(v1Arr.length, v2Arr.length)
377
+ for (var i = 0; i < len; i++) {
378
+ if (parseInt(v1Arr[i], 10) > parseInt(v2Arr[i], 10)) return 1
379
+
380
+ if (parseInt(v1Arr[i], 10) < parseInt(v2Arr[i], 10)) return -1
381
+ }
382
+
383
+ if (len < v1Arr.length) {
384
+ for (var j = len; j < v1Arr.length; j++) {
385
+ if (parseInt(v1Arr[j], 10) != 0) return 1
386
+ }
387
+ }
388
+
389
+ if (len < v2Arr.length) {
390
+ for (var j = len; j < v2Arr.length; j++) {
391
+ if (parseInt(v2Arr[j], 10) != 0) return -1
392
+ }
393
+ }
394
+
395
+ return 0
396
+ }
397
+
398
+ function getDN() {
399
+ let dn
400
+ let userInfo = JSON.parse(sessionStorage.getItem('userInfo'))
401
+ if (userInfo && userInfo.dn) {
402
+ dn = userInfo.dn
403
+ }
404
+ return dn
405
+ }
406
+
407
+ /* 给对象或字符串签名 */
408
+ export const getSign = async (plain, dn) => {
409
+ let errMsg
410
+ let plainText
411
+
412
+ if (dn === undefined) {
413
+ dn = getDN()
414
+ }
415
+ if (!dn) {
416
+ errMsg = '签名参数DN错误!'
417
+ Message.error(errMsg)
418
+ return Promise.reject(errMsg)
419
+ }
420
+ if (!window.CryptoKit) {
421
+ try {
422
+ var browser = BrowserInfo()
423
+
424
+ var hostVer
425
+ var extensionVer
426
+ var chromeExtensionVer = '3.2.0.1'
427
+ var edgeExtensionVer = '3.4.0.1'
428
+ var firefoxExtensionVer = '3.2.0.1'
429
+
430
+ if (
431
+ browser.name == 'Edge(Chromium)' ||
432
+ (browser.name == 'Chrome' && parseInt(browser.version) > 41) ||
433
+ (browser.name == 'Firefox' && parseInt(browser.version) > 52)
434
+ ) {
435
+ // eslint-disable-next-line new-cap
436
+ window.CryptoKit = new nmCryptokit(browser.name)
437
+ await window.CryptoKit.init()
438
+ const vRes = await window.CryptoKit.getExtensionVersion()
439
+ extensionVer = vRes.result
440
+ const hostVerRes = await window.CryptoKit.getHostVersion()
441
+ hostVer = hostVerRes.result
442
+ if (
443
+ (browser.name == 'Edge(Chromium)' && compareVersion(extensionVer, edgeExtensionVer) < 0) ||
444
+ (browser.name == 'Chrome' && compareVersion(extensionVer, chromeExtensionVer) < 0) ||
445
+ (browser.name == 'Firefox' && compareVersion(extensionVer, firefoxExtensionVer) < 0)
446
+ ) {
447
+ errMsg = '签名助手未正确安装!'
448
+ Message.error(errMsg)
449
+ return Promise.reject(errMsg)
450
+ } else if (compareVersion(hostVer, '3.4.0.1') < 0) {
451
+ errMsg = '签名助手未正确安装!'
452
+ Message.error(errMsg)
453
+ return Promise.reject(errMsg)
454
+ }
455
+ } else {
456
+ errMsg = '不支持的浏览器!'
457
+ Message.error(errMsg)
458
+ return Promise.reject(errMsg)
459
+ }
460
+ } catch (ex) {
461
+ console.log(ex)
462
+ errMsg = '签名助手初始化失败!'
463
+ Message.error(errMsg)
464
+ return Promise.reject(errMsg)
465
+ }
466
+ }
467
+ // var cspList = "CFCA CSP v3.0||CFCA Ulan CSP v4.0||Uyee CSP v6.0 (Enterprise)"
468
+ // try {
469
+ // await CryptoKit.setSM2CSPList(cspList)
470
+ // } catch (ex) {
471
+ // console.log(ex)
472
+ // errMsg = '没有检测到Ukey!'
473
+ // Message.error(errMsg)
474
+ // return Promise.reject(errMsg)
475
+ // }
476
+
477
+ if (typeof plain === 'object') {
478
+ plainText = JSON.stringify(plain)
479
+ } else {
480
+ plainText = plain
481
+ }
482
+
483
+ try {
484
+ var subjectDNFilter = ''
485
+ var issuerDNFilter = ''
486
+ var serialNumFilter = ''
487
+ var cspNameLists = 'CFCA CSP v3.0||CFCA Ulan CSP v4.0||Uyee CSP v6.0 (Enterprise)'
488
+ const certRes = await window.CryptoKit.SelectCertificate(subjectDNFilter, issuerDNFilter, serialNumFilter, cspNameLists)
489
+ if (!certRes.result) {
490
+ errMsg = '没有检测到证书!'
491
+ Message.error(errMsg)
492
+ return Promise.reject(errMsg)
493
+ }
494
+ } catch (ex) {
495
+ console.log(ex)
496
+ errMsg = '检测证书出错!' + ex
497
+ Message.error(errMsg)
498
+ return Promise.reject(errMsg)
499
+ }
500
+ try {
501
+ var certDNRes = await window.CryptoKit.GetSignCertInfo('SubjectDN')
502
+ var certDN = certDNRes.result
503
+ //比对DN
504
+ if (certDN != dn) {
505
+ errMsg = '证书不匹配!'
506
+ Message.error(errMsg)
507
+ return Promise.reject(errMsg)
508
+ }
509
+ //签名
510
+ var selectedAlg = 'SHA-256' //SHA-256,SHA-1
511
+ var IsWithSource = true //true是Attach,false是Detach
512
+ const signRes = await window.CryptoKit.SignMsgPKCS7(plainText, selectedAlg, IsWithSource)
513
+ return Promise.resolve(signRes.result)
514
+ } catch (ex) {
515
+ console.log(ex)
516
+ errMsg = '证书签名出错!' + ex
517
+ Message.error(errMsg)
518
+ return Promise.reject(errMsg)
519
+ }
520
+ }