n20-common-lib 2.14.21 → 2.14.22
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 +1 -1
- package/src/plugins/Sign/kySign/index.js +35 -32
package/package.json
CHANGED
|
@@ -16,7 +16,9 @@ let {
|
|
|
16
16
|
SKF_EnumContainer,
|
|
17
17
|
SKF_OpenContainer,
|
|
18
18
|
SKF_PKCS7SignData,
|
|
19
|
-
SKF_VerifyPIN
|
|
19
|
+
SKF_VerifyPIN,
|
|
20
|
+
SKF_ExportCertificate,
|
|
21
|
+
SKF_ParseCert
|
|
20
22
|
} = new SKF(location.port, 'http://127.0.0.1:2020/ssm/ukey/')
|
|
21
23
|
|
|
22
24
|
function IWSAGetAvailable() {
|
|
@@ -73,6 +75,7 @@ export async function getSign(plain, dn = getDN()) {
|
|
|
73
75
|
|
|
74
76
|
// 获取并验证证书信息
|
|
75
77
|
const checkRes = await getCertInfo(dn)
|
|
78
|
+
console.log('checkRes', checkRes)
|
|
76
79
|
if (checkRes === -1) {
|
|
77
80
|
return ''
|
|
78
81
|
}
|
|
@@ -85,6 +88,7 @@ export async function getSign(plain, dn = getDN()) {
|
|
|
85
88
|
closeOnClickModal: false,
|
|
86
89
|
inputType: 'password'
|
|
87
90
|
})
|
|
91
|
+
|
|
88
92
|
return await performSign(plainText, pin, checkRes)
|
|
89
93
|
} catch (error) {
|
|
90
94
|
return Promise.reject(error)
|
|
@@ -122,20 +126,38 @@ export async function getCertInfo(dn) {
|
|
|
122
126
|
checkAvailable()
|
|
123
127
|
reject()
|
|
124
128
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
129
|
+
const rvList = rv.DevList?.split(',')
|
|
130
|
+
let indexDn = -1
|
|
131
|
+
let Container = ''
|
|
132
|
+
let Application = ''
|
|
133
|
+
let DNList = []
|
|
134
|
+
rvList.forEach((item) => {
|
|
135
|
+
var rv1 = SKF_ConnectDev(item) // 连接设备
|
|
136
|
+
var rv2 = SKF_EnumApplication(rv1.DevHandle) // 获取容器
|
|
137
|
+
var rv3 = SKF_OpenApplication(rv1.DevHandle, rv2.ApplicationList)
|
|
138
|
+
var rv4 = SKF_EnumContainer(rv3.Application)
|
|
139
|
+
var rvList4 = rv4.ContainerList?.split(',')
|
|
140
|
+
rvList4.forEach((item2, index) => {
|
|
141
|
+
var rv5 = SKF_OpenContainer(rv3.Application, item2)
|
|
142
|
+
var rv6 = SKF_ExportCertificate(rv5.Container, true)
|
|
143
|
+
var rv7 = SKF_ParseCert(rv6.Cert)
|
|
144
|
+
DNList.push(rv7.Subject)
|
|
145
|
+
if (rv7.Subject === dn) {
|
|
146
|
+
indexDn = index
|
|
147
|
+
Container = rv5.Container
|
|
148
|
+
Application = rv3.Application
|
|
149
|
+
}
|
|
150
|
+
})
|
|
151
|
+
})
|
|
130
152
|
// 检测dn是否匹配
|
|
131
|
-
|
|
153
|
+
if (indexDn === -1) {
|
|
154
|
+
console.log(DNList)
|
|
132
155
|
Message.error('当前Ukey不匹配!')
|
|
133
156
|
reject()
|
|
134
157
|
return -1
|
|
135
158
|
} else {
|
|
136
|
-
resolve({
|
|
137
|
-
}
|
|
138
|
-
resolve({ ContainerList: rv4.ContainerList, Application: rv3.Application })
|
|
159
|
+
resolve({ Container, Application })
|
|
160
|
+
}
|
|
139
161
|
})
|
|
140
162
|
}
|
|
141
163
|
|
|
@@ -145,7 +167,7 @@ export async function getCertInfo(dn) {
|
|
|
145
167
|
* @param value
|
|
146
168
|
* @returns {Promise<*>}
|
|
147
169
|
*/
|
|
148
|
-
async function performSign(plainText, value, {
|
|
170
|
+
async function performSign(plainText, value, { Container, Application }) {
|
|
149
171
|
return new Promise((resolve, reject) => {
|
|
150
172
|
var rv5 = SKF_VerifyPIN(Application, 1, value)
|
|
151
173
|
console.log(rv5)
|
|
@@ -154,31 +176,12 @@ async function performSign(plainText, value, { ContainerList, Application }) {
|
|
|
154
176
|
reject()
|
|
155
177
|
return false
|
|
156
178
|
}
|
|
157
|
-
var
|
|
158
|
-
var rv7 = SKF_PKCS7SignData(rv6.Container, plainText)
|
|
179
|
+
var rv7 = SKF_PKCS7SignData(Container, plainText)
|
|
159
180
|
if (rv7.Status === 0) {
|
|
160
|
-
resolve(rv7.Signature + '@@@' +
|
|
181
|
+
resolve(rv7.Signature + '@@@' + Container)
|
|
161
182
|
} else {
|
|
162
183
|
Message.error('签名失败!')
|
|
163
184
|
reject()
|
|
164
185
|
}
|
|
165
186
|
})
|
|
166
187
|
}
|
|
167
|
-
|
|
168
|
-
/* 签名解签 */
|
|
169
|
-
export async function verifySign(signedMsg) {
|
|
170
|
-
let plainText
|
|
171
|
-
await new Promise((resolve, reject) => {
|
|
172
|
-
IWSASkfVerifySignData(signedMsg, (errorCode, PlainText, certDN) => {
|
|
173
|
-
if (errorCode === 0 || errorCode === '0') {
|
|
174
|
-
plainText = PlainText
|
|
175
|
-
resolve()
|
|
176
|
-
} else {
|
|
177
|
-
Message.error(codeDate[errorCode])
|
|
178
|
-
reject()
|
|
179
|
-
}
|
|
180
|
-
})
|
|
181
|
-
})
|
|
182
|
-
|
|
183
|
-
return Promise.resolve(plainText)
|
|
184
|
-
}
|