n20-common-lib 2.4.0 → 2.4.1

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.4.0",
3
+ "version": "2.4.1",
4
4
  "private": false,
5
5
  "main": "src/index.js",
6
6
  "scripts": {
Binary file
@@ -1,141 +1,128 @@
1
- // Attached方式签名
2
- import { IWSAgent } from './InfosecNetSignCNGAgent.min.js'
3
- import { Message, Notification } from 'element-ui'
4
- const {
5
- IWSASetTimeOut,
6
- IWSAAttachedSign,
7
- IWSAAttachedVerify,
8
- IWSASendAvailable,
9
- IWSAGetAvailable,
10
- IWSAGetAllCertsListInfoByCertDN
11
- } = new IWSAgent()
12
- IWSASetTimeOut(6000)
13
-
14
- function getDN() {
15
- let dn
16
- let userInfo = JSON.parse(sessionStorage.getItem('userInfo'))
17
- if (userInfo && userInfo.dn) {
18
- dn = userInfo.dn
19
- }
20
- return dn
21
- }
22
-
23
- /* 检测本地签名端口是否可用 */
24
- export function availableSign(fn, url) {
25
- url || (url = '/portal/NetSignCNG-v2.1.152.2.exe')
26
- // 查找已经打开的签名端口
27
- let available = IWSAGetAvailable()
28
- if (available) {
29
- fn && fn(available)
30
- } else {
31
- // 如果没有,再刺探一遍 (异步请求,需等待)
32
- IWSASendAvailable()
33
- setTimeout(() => {
34
- available = IWSAGetAvailable()
35
- fn && fn(available)
36
-
37
- if (!available) {
38
- Notification({
39
- title: '提示',
40
- dangerouslyUseHTMLString: true,
41
- message: `<div>检测到您的电脑中没有安装签名助手,为了不影响使用请使用管理员权限<a class="color-primary" href="${url}" download>下载安装</a>NetSignCNG签名助手</div>`,
42
- duration: 5000
43
- })
44
- }
45
- }, 300)
46
- }
47
- }
48
-
49
- /* 签名解签 */
50
- export function verifySign(signedMsg) {
51
- let plainText
52
- IWSAAttachedVerify('1', signedMsg, (errorCode, PlainText, SigncertDN) => {
53
- if (errorCode === 0 || errorCode === '0') {
54
- plainText = PlainText
55
- } else {
56
- Message.error('签名解签失败!')
57
- }
58
- })
59
- return plainText
60
- }
61
-
62
- /* 给对象或字符串签名 */
63
- export function getSign(plain, dn) {
64
- if (dn === undefined) {
65
- dn = getDN()
66
- }
67
- if (!dn) {
68
- Message.error('签名参数DN错误!')
69
- return false
70
- }
71
- let plainText = ''
72
- if (typeof plain === 'object') {
73
- plainText = JSON.stringify(plain)
74
- } else {
75
- plainText = plain
76
- }
77
-
78
- let checkRes
79
- IWSAGetAllCertsListInfoByCertDN('', 'Sign', parseCA(dn), 0, (dnList) => {
80
- checkRes = verifyDn(dnList, dn)
81
- })
82
- if (checkRes) {
83
- switch (checkRes) {
84
- case 'dnListEmpty':
85
- Message.warning('没有匹配到证书!')
86
- break
87
- case 'dnIsEmpty':
88
- Message.warning('DN参数为空!')
89
- break
90
- case 'Empty':
91
- Message.warning('当前Ukey不匹配!')
92
- break
93
- default:
94
- Message.warning('没有匹配到证书!')
95
- }
96
- return ''
97
- }
98
-
99
- let answer = undefined
100
- IWSAAttachedSign('1', plainText, '0', 'SHA1', (errorCode, signedData) => {
101
- if (errorCode === 0 || errorCode === '0') {
102
- answer = signedData
103
- } else {
104
- Message.error('签名失败!')
105
- }
106
- })
107
- return answer
108
- }
109
-
110
- function parseCA(dn) {
111
- const mark = /^CN=/
112
- let cn = ''
113
- if (dn == null) return cn
114
-
115
- let booked = dn.split(',')
116
- let dnC = booked.find((b) => mark.test(b))
117
- dnC && (cn = dnC.replace(mark, ''))
118
- return cn
119
- }
120
-
121
- function verifyDn(dnList, dn) {
122
- if (dnList.length === 0) return 'dnListEmpty'
123
- if (!dnList) return 'Empty'
124
- if (!dn) return 'dnIsEmpty'
125
-
126
- let checkRes = ''
127
- let userDnAttrsArr = dn.split(',').map((c) => c.trim())
128
-
129
- let isIn = false
130
- dnList.find((C) => {
131
- let dnAttrsArr = C.certDN.split(',').map((c) => c.trim())
132
- if (dnAttrsArr.every((dnAttr) => userDnAttrsArr.includes(dnAttr))) {
133
- return (isIn = true)
134
- }
135
- })
136
- if (!isIn) {
137
- checkRes = 'checkRes'
138
- }
139
-
140
- return checkRes
141
- }
1
+ // Attached方式签名
2
+ import { IWSAgent } from './InfosecNetSignCNGAgent.min.js'
3
+ import { Message, Notification } from 'element-ui'
4
+ const {
5
+ IWSASetTimeOut,
6
+ IWSAAttachedSign,
7
+ IWSAAttachedVerify,
8
+ IWSASendAvailable,
9
+ IWSAGetAvailable,
10
+ IWSAGetAllCertsListInfoByCertDN
11
+ } = new IWSAgent()
12
+ IWSASetTimeOut(6000)
13
+
14
+ function getDN() {
15
+ let dn
16
+ let userInfo = JSON.parse(sessionStorage.getItem('userInfo'))
17
+ if (userInfo && userInfo.dn) {
18
+ dn = userInfo.dn
19
+ }
20
+ return dn
21
+ }
22
+
23
+ /* 检测本地签名端口是否可用 */
24
+ export function availableSign(fn, url) {
25
+ url || (url = '/portal/NetSignCNG-v2.1.152.2.exe')
26
+ // 查找已经打开的签名端口
27
+ let available = IWSAGetAvailable()
28
+ if (available) {
29
+ fn && fn(available)
30
+ } else {
31
+ // 如果没有,再刺探一遍 (异步请求,需等待)
32
+ IWSASendAvailable()
33
+ setTimeout(() => {
34
+ available = IWSAGetAvailable()
35
+ fn && fn(available)
36
+
37
+ if (!available) {
38
+ Notification({
39
+ title: '提示',
40
+ dangerouslyUseHTMLString: true,
41
+ message: `<div>检测到您的电脑中没有安装签名助手,为了不影响使用请使用管理员权限<a class="color-primary" href="${url}" download>下载安装</a>NetSignCNG签名助手</div>`,
42
+ duration: 5000
43
+ })
44
+ }
45
+ }, 300)
46
+ }
47
+ }
48
+
49
+ /* 签名解签 */
50
+ export function verifySign(signedMsg) {
51
+ let plainText
52
+ IWSAAttachedVerify('1', signedMsg, (errorCode, PlainText, SigncertDN) => {
53
+ if (errorCode === 0 || errorCode === '0') {
54
+ plainText = PlainText
55
+ } else {
56
+ Message.error('签名解签失败!')
57
+ }
58
+ })
59
+ return plainText
60
+ }
61
+
62
+ /* 给对象或字符串签名 */
63
+ export function getSign(plain, dn) {
64
+ if (dn === undefined) {
65
+ dn = getDN()
66
+ }
67
+ if (!dn) {
68
+ Message.error('签名参数DN错误!')
69
+ return false
70
+ }
71
+ let plainText = ''
72
+ if (typeof plain === 'object') {
73
+ plainText = JSON.stringify(plain)
74
+ } else {
75
+ plainText = plain
76
+ }
77
+
78
+ let index
79
+ IWSAGetAllCertsListInfoByCertDN('', 'Sign', parseCA(dn), 0, (dnList) => {
80
+ index = verifyDn(dnList, dn)
81
+ })
82
+ if(index==-1){
83
+ Message.warning('没有匹配到证书!')
84
+ return ''
85
+ }
86
+ let answer = undefined
87
+ IWSAAttachedSign('1', plainText, index, 'SHA1', (errorCode, signedData) => {
88
+ if (errorCode === 0 || errorCode === '0') {
89
+ answer = signedData
90
+ } else {
91
+ Message.error('签名失败!')
92
+ }
93
+ })
94
+ return answer
95
+ }
96
+
97
+ function parseCA(dn) {
98
+ const mark = /^CN=/
99
+ let cn = ''
100
+ if (dn == null) return cn
101
+
102
+ let booked = dn.split(',')
103
+ let dnC = booked.find((b) => mark.test(b))
104
+ dnC && (cn = dnC.replace(mark, ''))
105
+ return cn
106
+ }
107
+
108
+ function verifyDn(dnList, dn) {
109
+ if (dnList.length === 0) return 'dnListEmpty'
110
+ if (!dnList) return 'Empty'
111
+ if (!dn) return 'dnIsEmpty'
112
+
113
+ let userDnAttrsArr = dn.split(',').map((c) => c.trim())
114
+
115
+ let isIn = false
116
+ let index=0;
117
+ dnList.find((C,i) => {
118
+ let dnAttrsArr = C.certDN.split(',').map((c) => c.trim())
119
+ if (dnAttrsArr.every((dnAttr) => userDnAttrsArr.includes(dnAttr))) {
120
+ index = i;
121
+ return (isIn = true)
122
+ }
123
+ })
124
+ if (!isIn) {
125
+ index = -1
126
+ }
127
+ return index
128
+ }