n20-common-lib 2.9.13 → 2.9.14
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/nstc-g6/components/NstcCharts/NstcCharts.vue +16 -8
- package/package.json +8 -5
- package/src/assets/css/approve-card.scss +1 -1
- package/src/assets/css/date-quarter.scss +8 -0
- package/src/assets/css/expandable-pane.scss +7 -0
- package/src/assets/css/file-upload-table.scss +2 -3
- package/src/assets/css/font-icon.scss +3 -1
- package/src/assets/css/message.scss +6 -6
- package/src/assets/css/normalize.scss +4 -1
- package/src/assets/css/table.scss +16 -11
- package/src/assets/iconFont/SIMSUN.ttf +0 -0
- package/src/assets/iconFont/font.css +4 -0
- package/src/components/AIButton/index.vue +101 -0
- package/src/components/AdvancedFilter/formItemRender.vue +7 -4
- package/src/components/AdvancedFilter/index.vue +6 -7
- package/src/components/Anchor/index.vue +1 -0
- package/src/components/ApprovalButtons/index.vue +404 -82
- package/src/components/ApprovalButtons/indexApp.vue +1102 -0
- package/src/components/ApprovalButtons/selectSpr.vue +128 -0
- package/src/components/ApprovalButtons/setCarboncopyProp.vue +1 -1
- package/src/components/ApprovalButtons/setRejectToProp.vue +45 -5
- package/src/components/ApprovalButtons/showAppOpi.vue +265 -8
- package/src/components/ApprovalButtons/showOtherAttrNew.vue +161 -0
- package/src/components/ApprovalCard/index.vue +190 -44
- package/src/components/ApprovalCard/indexApp.vue +592 -0
- package/src/components/ApprovalRecord/approvalImgPro/child.vue +1 -1
- package/src/components/ApprovalRecord/approvalImgPro/index.vue +42 -5
- package/src/components/ApprovalRecord/index.vue +23 -6
- package/src/components/ApprovalRecord/indexApp.vue +79 -0
- package/src/components/AttachmentPass/index.vue +286 -0
- package/src/components/Button/button-group.vue +3 -1
- package/src/components/CascaderArea/index.vue +5 -6
- package/src/components/DatePicker/por.vue +31 -1
- package/src/components/DateSelect/quarterDatePicker.vue +23 -1
- package/src/components/Descriptions/index.vue +7 -3
- package/src/components/Dialog/index.vue +4 -0
- package/src/components/Diff/index.vue +4 -2
- package/src/components/DynamicField/DynamicField.vue +29 -6
- package/src/components/DynamicField/DynamicFieldMixin.js +13 -5
- package/src/components/DynamicField/DynamicFieldOptions.vue +135 -62
- package/src/components/DynamicField/DynamicTable.vue +11 -1
- package/src/components/DynamicField/contentPop.vue +110 -0
- package/src/components/DynamicField/tableList.vue +5 -1
- package/src/components/DynamicField/tableView.vue +143 -0
- package/src/components/ECharts/index.vue +15 -9
- package/src/components/Expandable/main.vue +17 -2
- package/src/components/FileImport/index.vue +4 -5
- package/src/components/FileUploadTable/FileUploadTableV3.vue +937 -0
- package/src/components/FileUploadTable/aiCheckDialog.vue +139 -0
- package/src/components/FileUploadTable/index.vue +251 -33
- package/src/components/FileUploadTable/jytg.svg +6 -0
- package/src/components/FileUploadTable/wsc.svg +3 -0
- package/src/components/FileUploadTable/ysc.svg +3 -0
- package/src/components/HandlingAdvice/index.vue +191 -0
- package/src/components/InputAccount/index.vue +105 -0
- package/src/components/InputNumber/index.vue +16 -4
- package/src/components/InputNumber/numberRange.vue +14 -0
- package/src/components/InputSearch/index.vue +8 -0
- package/src/components/Layout/HeaderWrap/changePwd.vue +50 -23
- package/src/components/Layout/HeaderWrap/index.vue +2 -2
- package/src/components/Layout/HeaderWrap/indexN.vue +296 -119
- package/src/components/Layout/SubContent/index.vue +45 -14
- package/src/components/Layout/indexN.vue +26 -5
- package/src/components/LoginTemporary/form.vue +126 -34
- package/src/components/LoginTemporary/index.vue +14 -3
- package/src/components/LoginTemporary/indexN.vue +35 -13
- package/src/components/Preview/index.vue +199 -0
- package/src/components/SelectDatePickerPro/customDatePicker.vue +7 -0
- package/src/components/SelectDatePickerPro/halfYearPicker.vue +165 -0
- package/src/components/SelectDatePickerPro/index.vue +44 -4
- package/src/components/SelectDatePickerPro/quarterDatePicker.vue +32 -10
- package/src/components/SelectTree/index.vue +10 -4
- package/src/components/SelectTree/pro.vue +3 -0
- package/src/components/ShowColumn/index copy 2.vue +545 -0
- package/src/components/ShowColumn/index copy.vue +566 -0
- package/src/components/ShowColumn/index.vue +11 -7
- package/src/components/Statis/statisItem.vue +8 -7
- package/src/components/Table/filters.js +13 -0
- package/src/components/Table/index.vue +4 -4
- package/src/components/TablePro/filterContent.vue +18 -8
- package/src/components/TablePro/index.js +41 -1
- package/src/components/TablePro/index.vue +117 -6
- package/src/components/TableProOperateColumn/OperateBtns.vue +11 -53
- package/src/components/TableProOperateColumn/OperateBtns_copy.vue +141 -0
- package/src/components/TableProOperateColumn/childrenOperateBtn.vue +108 -0
- package/src/components/TableProOperateColumn/index.vue +3 -6
- package/src/components/TableSetSize/index.vue +1 -1
- package/src/components/Tree/index.vue +21 -5
- package/src/components/Upload/index.vue +25 -10
- package/src/components/Upload/uploadMsg.vue +30 -25
- package/src/components/operatingStatus/index.vue +3 -4
- package/src/directives/VTitle/index.js +15 -5
- package/src/directives/watermark/index.js +140 -56
- package/src/i18n.json +146 -18
- package/src/index.js +31 -3
- package/src/plugins/Sign/CaMap.js +47 -8
- package/src/plugins/Sign/Itrus/index.js +1 -1
- package/src/plugins/Sign/Itrus/sign_3720.js +2 -1
- package/src/plugins/Sign/NetSM3/index.js +20 -11
- package/src/plugins/Sign/NetV3/index.js +163 -22
- package/src/plugins/Sign/SkfSign/index.js +55 -52
- package/src/plugins/Sign/bjca/index.js +229 -9
- package/src/plugins/Sign/hnca/index.js +5064 -0
- package/src/plugins/Sign/index.js +155 -103
- package/src/plugins/Sign/kySign/base64.js +160 -0
- package/src/plugins/Sign/kySign/hex.js +92 -0
- package/src/plugins/Sign/kySign/index.js +186 -0
- package/src/plugins/Sign/kySign/skf.js +937 -0
- package/src/plugins/Sign/kySign/test.html +463 -0
- package/src/plugins/Sign/sdca/index.js +73 -0
- package/src/plugins/Sign/sign.js +72 -52
- package/src/plugins/Sign/signV3/InfosecNetSignCNGAgent.min.js +1 -0
- package/src/plugins/Sign/signV3/sign.js +187 -0
- package/src/plugins/Sign/sign_back.js +172 -0
- package/src/utils/accountFormat.js +7 -0
- package/src/utils/asyncGetRelaNos.js +79 -46
- package/src/utils/axios.js +3 -5
- package/src/utils/i18n/index.js +1 -1
- package/src/utils/importGlobal.js +23 -12
- package/style/fonts/SIMSUN.5e0c362c.ttf +0 -0
- package/style/index.css +2 -2
- package/theme/blue.css +2 -2
- package/theme/cctcRed.css +2 -2
- package/theme/fonts/SIMSUN.5e0c362c.ttf +0 -0
- package/theme/green.css +2 -2
- package/theme/lightBlue.css +2 -2
- package/theme/orange.css +2 -2
- package/theme/purple.css +2 -2
- package/theme/red.css +2 -2
- package/theme/yellow.css +2 -2
|
@@ -0,0 +1,5064 @@
|
|
|
1
|
+
/*******************************************************
|
|
2
|
+
*
|
|
3
|
+
* 函数名称:Base64encode()
|
|
4
|
+
* 功 能:对数据进行Base64加密
|
|
5
|
+
* 说 明:函数中将数据使用_utf8_encode()进行编码转换后再加密,保证数据完整
|
|
6
|
+
*
|
|
7
|
+
**********************************************************/
|
|
8
|
+
|
|
9
|
+
var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
|
|
10
|
+
|
|
11
|
+
function _Base64encode(input) {
|
|
12
|
+
|
|
13
|
+
var output = "";
|
|
14
|
+
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
|
|
15
|
+
var i = 0;
|
|
16
|
+
|
|
17
|
+
input = _utf8_encode(input);
|
|
18
|
+
|
|
19
|
+
while (i < input.length) {
|
|
20
|
+
|
|
21
|
+
chr1 = input.charCodeAt(i++);
|
|
22
|
+
chr2 = input.charCodeAt(i++);
|
|
23
|
+
chr3 = input.charCodeAt(i++);
|
|
24
|
+
|
|
25
|
+
enc1 = chr1 >> 2;
|
|
26
|
+
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
|
|
27
|
+
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
|
|
28
|
+
enc4 = chr3 & 63;
|
|
29
|
+
|
|
30
|
+
if (isNaN(chr2)) {
|
|
31
|
+
enc3 = enc4 = 64;
|
|
32
|
+
} else if (isNaN(chr3)) {
|
|
33
|
+
enc4 = 64;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
output = output + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4);
|
|
37
|
+
}
|
|
38
|
+
return output;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/*******************************************************
|
|
42
|
+
*
|
|
43
|
+
* 函数名称:Base64decode()
|
|
44
|
+
* 功 能:对数据进行Base64解密
|
|
45
|
+
* 说 明:函数中将数据使用_utf8_decode()将解密后的数据编码,保证数据完整
|
|
46
|
+
*
|
|
47
|
+
**********************************************************/
|
|
48
|
+
function _Base64decode(input) {
|
|
49
|
+
var output = "";
|
|
50
|
+
var chr1, chr2, chr3;
|
|
51
|
+
var enc1, enc2, enc3, enc4;
|
|
52
|
+
var i = 0;
|
|
53
|
+
|
|
54
|
+
//input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
|
|
55
|
+
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
|
|
56
|
+
|
|
57
|
+
while (i < input.length) {
|
|
58
|
+
|
|
59
|
+
enc1 = _keyStr.indexOf(input.charAt(i++));
|
|
60
|
+
enc2 = _keyStr.indexOf(input.charAt(i++));
|
|
61
|
+
enc3 = _keyStr.indexOf(input.charAt(i++));
|
|
62
|
+
enc4 = _keyStr.indexOf(input.charAt(i++));
|
|
63
|
+
|
|
64
|
+
chr1 = (enc1 << 2) | (enc2 >> 4);
|
|
65
|
+
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
|
|
66
|
+
chr3 = ((enc3 & 3) << 6) | enc4;
|
|
67
|
+
|
|
68
|
+
output = output + String.fromCharCode(chr1);
|
|
69
|
+
|
|
70
|
+
if (enc3 != 64) {
|
|
71
|
+
output = output + String.fromCharCode(chr2);
|
|
72
|
+
}
|
|
73
|
+
if (enc4 != 64) {
|
|
74
|
+
output = output + String.fromCharCode(chr3);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
output = _utf8_decode(output);
|
|
80
|
+
|
|
81
|
+
return output;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/*******************************************************
|
|
85
|
+
*
|
|
86
|
+
* 函数名称:_utf8_encode()
|
|
87
|
+
* 功 能:将数据进行utf8编码
|
|
88
|
+
* 说 明:
|
|
89
|
+
*
|
|
90
|
+
**********************************************************/
|
|
91
|
+
function _utf8_encode(in_string) {
|
|
92
|
+
var string = "" + in_string;
|
|
93
|
+
string = string.replace(/\r\n/g, "\n");
|
|
94
|
+
var utftext = "";
|
|
95
|
+
|
|
96
|
+
for (var n = 0; n < string.length; n++) {
|
|
97
|
+
|
|
98
|
+
var c = string.charCodeAt(n);
|
|
99
|
+
|
|
100
|
+
if (c < 128) {
|
|
101
|
+
utftext += String.fromCharCode(c);
|
|
102
|
+
} else if ((c > 127) && (c < 2048)) {
|
|
103
|
+
utftext += String.fromCharCode((c >> 6) | 192);
|
|
104
|
+
utftext += String.fromCharCode((c & 63) | 128);
|
|
105
|
+
} else {
|
|
106
|
+
utftext += String.fromCharCode((c >> 12) | 224);
|
|
107
|
+
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
|
|
108
|
+
utftext += String.fromCharCode((c & 63) | 128);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return utftext;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/*******************************************************
|
|
115
|
+
*
|
|
116
|
+
* 函数名称:_utf8_decode()
|
|
117
|
+
* 功 能:将数据进行utf8解码
|
|
118
|
+
* 说 明:
|
|
119
|
+
*
|
|
120
|
+
**********************************************************/
|
|
121
|
+
function _utf8_decode(utftext) {
|
|
122
|
+
var string = "";
|
|
123
|
+
var i = 0;
|
|
124
|
+
var c = c1 = c2 = 0;
|
|
125
|
+
|
|
126
|
+
while (i < utftext.length) {
|
|
127
|
+
|
|
128
|
+
c = utftext.charCodeAt(i);
|
|
129
|
+
|
|
130
|
+
if (c < 128) {
|
|
131
|
+
string += String.fromCharCode(c);
|
|
132
|
+
i++;
|
|
133
|
+
} else if ((c > 191) && (c < 224)) {
|
|
134
|
+
c2 = utftext.charCodeAt(i + 1);
|
|
135
|
+
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
|
|
136
|
+
i += 2;
|
|
137
|
+
} else {
|
|
138
|
+
c2 = utftext.charCodeAt(i + 1);
|
|
139
|
+
c3 = utftext.charCodeAt(i + 2);
|
|
140
|
+
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
|
|
141
|
+
i += 3;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return string;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* @name mTokenPlugin集成代码
|
|
148
|
+
* @author Akay
|
|
149
|
+
* @version 0.7.12
|
|
150
|
+
* @date 2020.07.21
|
|
151
|
+
*
|
|
152
|
+
* @description
|
|
153
|
+
*ver 0.7.12 2020.12.21
|
|
154
|
+
* 1. 新增操作系统判断,根据不同的系统加载不同的配置
|
|
155
|
+
*
|
|
156
|
+
*ver 0.7.11 2020.07.21
|
|
157
|
+
* 1. 解决Https的问题
|
|
158
|
+
*
|
|
159
|
+
* ver 0.7.10 2020.04.04
|
|
160
|
+
* 1. 新增获取设备序号
|
|
161
|
+
* 2. 支持多Key
|
|
162
|
+
*
|
|
163
|
+
* ver 0.7.9 2020.01.08
|
|
164
|
+
* 1. 支持SJK1137型号
|
|
165
|
+
*
|
|
166
|
+
* ver 0.7.8 2019.10.23
|
|
167
|
+
* 1. 新增UKey适配
|
|
168
|
+
*
|
|
169
|
+
* ver 0.7.4 2019.09.18
|
|
170
|
+
* 1. 新增证书生效,失效时间
|
|
171
|
+
*
|
|
172
|
+
* ver 0.7.3 2019.08.19
|
|
173
|
+
* 1. 获取证书使用者信息
|
|
174
|
+
*
|
|
175
|
+
* ver 0.7.2 2019.08.08
|
|
176
|
+
* 1. 新增远程解锁接口
|
|
177
|
+
*
|
|
178
|
+
* ver 0.7.1 2019.07.17
|
|
179
|
+
* TODO: 未安装组件时,判断组件是否安装(暂定,未解决)
|
|
180
|
+
*
|
|
181
|
+
* ver 0.7.0 2019.07.04
|
|
182
|
+
* 1. 更新核心文件,解决多Key插入问题
|
|
183
|
+
* 2. Ukey目前仅支持国密证书
|
|
184
|
+
*
|
|
185
|
+
* ver 0.6.3 2019.06.24
|
|
186
|
+
* 1. 修复部分Bug
|
|
187
|
+
*
|
|
188
|
+
* ver 0.6.1 2019.06.24
|
|
189
|
+
* 1. 支持数字信封数据解密接口
|
|
190
|
+
* 2. 修复加密接口错误部分。
|
|
191
|
+
*
|
|
192
|
+
* ver 0.6.0 2019.06.20
|
|
193
|
+
* 1. 支持数字信封数据加密接口
|
|
194
|
+
* 2. 暂不支持多Ukey
|
|
195
|
+
*
|
|
196
|
+
* ver 0.5.1 2019.06.19
|
|
197
|
+
* 1. 修正新Ukey引入导致的Bug
|
|
198
|
+
*
|
|
199
|
+
* ver 0.5 2019.06.18
|
|
200
|
+
* 1. 适配SJK1137型号Ukey
|
|
201
|
+
*
|
|
202
|
+
* ver 0.4 2019.03.16
|
|
203
|
+
* 1. 新增方法 枚举Ukey获取证书“G项信息”列表
|
|
204
|
+
* 2. 新增方法 将“证书G项信息”转化为“证书名称”方法
|
|
205
|
+
*
|
|
206
|
+
* ver 0.3 2018.12.10
|
|
207
|
+
* 1. 新增修改Ukey密码的方法
|
|
208
|
+
*
|
|
209
|
+
* ver 0.2 2018.09.26
|
|
210
|
+
* 1. 新增获取签名证书SN号的方法
|
|
211
|
+
* 2. 修正部分Bug
|
|
212
|
+
*
|
|
213
|
+
* ver 0.1 2018.09.21
|
|
214
|
+
* 1. 搭建初步框架
|
|
215
|
+
* 2. 完成签名功能
|
|
216
|
+
*
|
|
217
|
+
*/
|
|
218
|
+
function hunca_mToken_core() {
|
|
219
|
+
|
|
220
|
+
var token = new mToken("mTokenPlugin");
|
|
221
|
+
var certInfoList = null;
|
|
222
|
+
var singleKey = 0;
|
|
223
|
+
var libraryNameList = null;
|
|
224
|
+
var signResultInfo = null;
|
|
225
|
+
var certInfo = null;
|
|
226
|
+
|
|
227
|
+
libraryNameList = Array("GM3000"); //国产操作系统支持GM3000型号
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* 错误信息
|
|
231
|
+
*/
|
|
232
|
+
var LAST_ERRORSTRING = "";
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* 证书用途
|
|
236
|
+
*/
|
|
237
|
+
var KEY_SPEC_TYPE_ENCRYPT = 0;
|
|
238
|
+
var KEY_SPEC_TYPE_SIGN = 1;
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* 摘要算法
|
|
242
|
+
*/
|
|
243
|
+
var SGD_SM3 = 1;
|
|
244
|
+
var SGD_SHA1 = 2;
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* 加密算法
|
|
248
|
+
*/
|
|
249
|
+
//分组加密算法标识
|
|
250
|
+
var SGD_SM1_ECB = 0x00000101;
|
|
251
|
+
var SGD_SM1_CBC = 0x00000102;
|
|
252
|
+
var SGD_SM1_CFB = 0x00000104;
|
|
253
|
+
var SGD_SM1_OFB = 0x00000108;
|
|
254
|
+
var SGD_SM1_MAC = 0x00000110;
|
|
255
|
+
var SGD_SM4_ECB = 0x00000401;
|
|
256
|
+
var SGD_SM4_CBC = 0x00000402;
|
|
257
|
+
var SGD_SM4_CFB = 0x00000404;
|
|
258
|
+
var SGD_SM4_OFB = 0x00000408;
|
|
259
|
+
var SGD_SM4_MAC = 0x00000410;
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* 用户ID(固定)
|
|
264
|
+
*/
|
|
265
|
+
var USER_ID = "1234567812345678";
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* 错误信息提示列表
|
|
270
|
+
*/
|
|
271
|
+
var ERROR_MESSAGE_NOT_LOADLIBRARY = "控件加载失败,错误码:";
|
|
272
|
+
var ERROR_MESSAGE_NOT_FIND_UKEY = "未找到UKey!\n1.请确认是否安装最新驱动!\n2.计算机是否插入湖南CA UKey!";
|
|
273
|
+
var ERROR_MSSSAGE_FIND_MORE_UKEY = "计算机插入多个UKey,请拔除多余“湖南CA UKey”!";
|
|
274
|
+
var ERROR_MESSAGE_NOT_INSTANCE_DEVICE = "USBKey实例化失败,请确认此UKey是否插入计算机!\n点击‘刷新’按钮,更新设备列表。\n错误码:";
|
|
275
|
+
var ERROR_MESSAGE_USERPIN_LENGTH = "Ukey密码必须为4~16位!";
|
|
276
|
+
var ERROR_MESSAGE_USERPIN_IS_ERROR = "UKey密码错误";
|
|
277
|
+
var ERROR_MESSAGE_USERPIN_CHANGE_ERROR = "UKey密码修改失败";
|
|
278
|
+
var ERROR_MESSAGE_KEY_NOT_EXIT = "UKey不存在,请确认此UKey是否插入计算机,并点击'刷新'按钮,更新设备列表!";
|
|
279
|
+
var ERROR_MESSAGE_USERNAME_IS_NULL = "请点击‘刷新’按钮,更新设备列表并选择相应设备!";
|
|
280
|
+
var ERROR_MESSAGE_KEY_EXPORT_CERT = "证书获取失败,请加检测Key中是否存在证书!";
|
|
281
|
+
var ERROR_MESSAGE_SET_DIGEST_METHOD_ERROR = "设置摘要算法失败,请重新刷新浏览器!";
|
|
282
|
+
var ERROR_MESSAGE_SET_USERID_ERROR = "设置用户ID失败,请重新刷新浏览器";
|
|
283
|
+
var ERROR_MESSAGE_SIGN_ORIGINALDATA_IS_NULL = "签名失败,待签名原文不能为空";
|
|
284
|
+
var ERROR_MESSAGE_SIGN_ERROR = "签名失败,返回错误码:";
|
|
285
|
+
var ERROR_MESSAGE_USERNAMEGN_IS_NULL = "请点击‘刷新’按钮,更新设备列表并选择相应设备!";
|
|
286
|
+
var ERROR_MESSAGE_USERNAMEGN_TO_USERNAME_ERROR = "证书G项信息转化证书名称失败,请点击“刷新”按钮!";
|
|
287
|
+
var ERROR_MESSAGE_KEY_LIBRAY = "加载国密库失败!";
|
|
288
|
+
var ERROR_MESSAGE_ENCRYPT_DATA_IS_NULL = "加密失败:待加密原文不能为空!";
|
|
289
|
+
var ERROR_MESSAGE_DECRYPT_DATA_IS_NULL = "解密失败:待解密密文不能为空!";
|
|
290
|
+
var ERROR_MESSAGE_DECRYPT_DATA_IS_ERROR = "解密失败:请确认密文是否完整!\n解密所采用的Ukey是否为加密时的Ukey!";
|
|
291
|
+
var ERROR_MESSAGE_GET_REMOTEUNLOCKREQUEST_FAIL = "申请解锁请求失败!";
|
|
292
|
+
var ERROR_MESSAGE_GET_REMOTEUNLOCKREQUEST_NOT_SUPPORT = "此型号Ukey不支持解锁!";
|
|
293
|
+
var ERROR_MESSAGE_REMOTE_UNLOCK_FAIL = "Ukey解锁失败!";
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* 私有变量
|
|
297
|
+
*/
|
|
298
|
+
var tokenInfoList = null;
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* 私有变量
|
|
302
|
+
*/
|
|
303
|
+
var signResultSignData = null;
|
|
304
|
+
var signResultCert = null;
|
|
305
|
+
|
|
306
|
+
/**
|
|
307
|
+
* 证书信息
|
|
308
|
+
*/
|
|
309
|
+
var certSn = null; //证书Sn
|
|
310
|
+
var cert_subject_GN = null; //证书Gn
|
|
311
|
+
var cert_subject = null; //证书使用者
|
|
312
|
+
var cert_validTime = null; //证书失效时间
|
|
313
|
+
var cert_notbeforetime = null; //证书生效时间
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* 返回错误信息
|
|
317
|
+
*/
|
|
318
|
+
this.Hunca_GetLastError = function () {
|
|
319
|
+
return LAST_ERRORSTRING;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* 获取证书列表
|
|
324
|
+
*/
|
|
325
|
+
this.Hunca_GetUserList = function () {
|
|
326
|
+
var deviceArray = null;
|
|
327
|
+
var containerName = null;
|
|
328
|
+
var userName = null;
|
|
329
|
+
var tmpInfo = null;
|
|
330
|
+
var libraryName = null;
|
|
331
|
+
|
|
332
|
+
signResultCert = null;
|
|
333
|
+
signResultSignData = null;
|
|
334
|
+
tokenInfoList = new Array(); //清空信息
|
|
335
|
+
|
|
336
|
+
for (var index = 0; index < libraryNameList.length; index++) {
|
|
337
|
+
libraryName = libraryNameList[index];
|
|
338
|
+
if (!SOF_LoadLibrary(libraryName)) {
|
|
339
|
+
continue;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
deviceArray = SOF_EnumDevice();
|
|
343
|
+
if (null == deviceArray) {
|
|
344
|
+
continue;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
for (var i = 0; i < deviceArray.length; i++) {
|
|
348
|
+
var tokenInfo = new Object();
|
|
349
|
+
//实例化设备失败
|
|
350
|
+
if (!SOF_GetDeviceInstance(deviceArray[i])) {
|
|
351
|
+
break;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
//获取设备信息
|
|
355
|
+
tmpInfo = SOF_GetUserList();
|
|
356
|
+
if (null != tmpInfo || tmpInfo.length != 0) {
|
|
357
|
+
containerName = tmpInfo[0][1];
|
|
358
|
+
userName = tmpInfo[0][0];
|
|
359
|
+
|
|
360
|
+
tokenInfo.libraryName = libraryName; //Ukey型号
|
|
361
|
+
tokenInfo.serial = deviceArray[i]; //设备序列号
|
|
362
|
+
tokenInfo.userName = userName; //证书名称
|
|
363
|
+
tokenInfo.containerName = containerName; //应用名称
|
|
364
|
+
|
|
365
|
+
tokenInfoList.push(tokenInfo);
|
|
366
|
+
} else {
|
|
367
|
+
continue;
|
|
368
|
+
}
|
|
369
|
+
SOF_LogOut();
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
//返回证书信息
|
|
374
|
+
var userNameList = new Array();
|
|
375
|
+
for (var i = 0; i < tokenInfoList.length; i++) {
|
|
376
|
+
userNameList[i] = tokenInfoList[i].userName;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
if (userNameList.length == 0) {
|
|
380
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;
|
|
381
|
+
return "";
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
return userNameList;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
/**
|
|
388
|
+
* 获取证书G项信息列表
|
|
389
|
+
*/
|
|
390
|
+
this.Hunca_GetUserListGN = function () {
|
|
391
|
+
var deviceArray = null;
|
|
392
|
+
var containerName = null;
|
|
393
|
+
var userName = null;
|
|
394
|
+
var tmpInfo = null;
|
|
395
|
+
var certB64 = null;
|
|
396
|
+
var deviceSerial = "";
|
|
397
|
+
var libraryName = null;
|
|
398
|
+
|
|
399
|
+
signResultCert = null;
|
|
400
|
+
signResultSignData = null;
|
|
401
|
+
tokenInfoList = new Array(); //清空信息
|
|
402
|
+
LAST_ERRORSTRING = "";
|
|
403
|
+
|
|
404
|
+
for (var index = 0; index < libraryNameList.length; index++) {
|
|
405
|
+
libraryName = libraryNameList[index];
|
|
406
|
+
//加载控件
|
|
407
|
+
if (!SOF_LoadLibrary(libraryName)) {
|
|
408
|
+
continue;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
deviceArray = SOF_EnumDevice();
|
|
412
|
+
if (null == deviceArray) {
|
|
413
|
+
continue;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
for (var i = 0; i < deviceArray.length; i++) {
|
|
417
|
+
cert_subject_GN = null;
|
|
418
|
+
certSn = null;
|
|
419
|
+
deviceSerial = deviceArray[i];
|
|
420
|
+
|
|
421
|
+
var tokenInfo = new Object();
|
|
422
|
+
|
|
423
|
+
//实例化设备失败
|
|
424
|
+
if (!SOF_GetDeviceInstance(deviceSerial)) {
|
|
425
|
+
break;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
//获取设备信息
|
|
429
|
+
tmpInfo = SOF_GetUserList();
|
|
430
|
+
if (null != tmpInfo || tmpInfo.length != 0) {
|
|
431
|
+
containerName = tmpInfo[0][1];
|
|
432
|
+
userName = tmpInfo[0][0];
|
|
433
|
+
|
|
434
|
+
tokenInfo.libraryName = libraryName;
|
|
435
|
+
tokenInfo.serial = deviceArray[i]; //设备序列号
|
|
436
|
+
tokenInfo.userName = userName; //证书名称
|
|
437
|
+
tokenInfo.containerName = containerName;
|
|
438
|
+
} else {
|
|
439
|
+
continue;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
//获取证书G项信息
|
|
443
|
+
certB64 = SOF_ExportUserCert(tokenInfo.containerName, KEY_SPEC_TYPE_SIGN);
|
|
444
|
+
if (SOF_GetCertInfo(certB64)) {
|
|
445
|
+
tokenInfo.subjectGN = cert_subject_GN; //设备证书G项目;
|
|
446
|
+
} else {
|
|
447
|
+
continue;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
tokenInfoList.push(tokenInfo);
|
|
451
|
+
SOF_LogOut();
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
//返回证书G项信息
|
|
456
|
+
var userNameGNList = new Array();
|
|
457
|
+
for (var i = 0; i < tokenInfoList.length; i++) {
|
|
458
|
+
userNameGNList[i] = tokenInfoList[i].subjectGN;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
if (userNameGNList.length == 0) {
|
|
462
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;
|
|
463
|
+
return "";
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
/*****
|
|
467
|
+
if (userNameGNList.length > 1){
|
|
468
|
+
LAST_ERRORSTRING = ERROR_MSSSAGE_FIND_MORE_UKEY;
|
|
469
|
+
return "";
|
|
470
|
+
}
|
|
471
|
+
****/
|
|
472
|
+
return userNameGNList;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* 将证书G项信息转化为证书名称
|
|
477
|
+
*/
|
|
478
|
+
this.Hunca_userNameGNToUserName = function (userNameGN) {
|
|
479
|
+
var userName = null;
|
|
480
|
+
LAST_ERRORSTRING = "";
|
|
481
|
+
if (null == userNameGN || userNameGN.length == 0) {
|
|
482
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_USERNAMEGN_IS_NULL;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
for (var i = 0; i < tokenInfoList.length; i++) {
|
|
486
|
+
if (userNameGN == tokenInfoList[i].subjectGN) {
|
|
487
|
+
userName = tokenInfoList[i].userName;
|
|
488
|
+
break;
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
if (null == userName || userName.length == 0) {
|
|
493
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_USERNAMEGN_TO_USERNAME_ERROR;
|
|
494
|
+
return null;
|
|
495
|
+
}
|
|
496
|
+
return userName;
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
this.Hunca_GenRemoteUnblockRequest = function (userName) {
|
|
500
|
+
var tokenInfo = null; //Ukey设备信息
|
|
501
|
+
var tempTokenInfo = null; //临时设备信息,循环遍历用
|
|
502
|
+
var request = "";
|
|
503
|
+
|
|
504
|
+
LAST_ERRORSTRING = "";
|
|
505
|
+
|
|
506
|
+
//设备名称为空
|
|
507
|
+
if (null == userName || userName.length == null) {
|
|
508
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;
|
|
509
|
+
return false;
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
//查找匹配的设备序列号
|
|
513
|
+
if (null == tokenInfoList || tokenInfoList.length == 0) {
|
|
514
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;
|
|
515
|
+
return false;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
//索引设备编号
|
|
519
|
+
for (var i = 0; i < tokenInfoList.length; i++) {
|
|
520
|
+
tempTokenInfo = tokenInfoList[i];
|
|
521
|
+
if (tempTokenInfo.userName == userName) {
|
|
522
|
+
tokenInfo = tempTokenInfo;
|
|
523
|
+
break;
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
//如果所选择的设备不存在
|
|
528
|
+
if (null == tokenInfo) {
|
|
529
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;
|
|
530
|
+
return false;
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
//判断设备是否支持远程解锁
|
|
534
|
+
if (tokenInfo.libraryName != "GM3000") {
|
|
535
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_GET_REMOTEUNLOCKREQUEST_NOT_SUPPORT;
|
|
536
|
+
return false;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
//加载库文件
|
|
540
|
+
if (!SOF_LoadLibrary(tokenInfo.libraryName)) {
|
|
541
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;
|
|
542
|
+
return false;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
//实例化设备
|
|
546
|
+
if (!SOF_GetDeviceInstance(tokenInfo.serial)) {
|
|
547
|
+
return false;
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
//枚举容器,并选择第一个容器
|
|
551
|
+
if (SOF_GetUserList() == null) {
|
|
552
|
+
return false;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
//远程解锁
|
|
556
|
+
request = SOF_GenRemoteUnblockRequest()
|
|
557
|
+
|
|
558
|
+
return request;
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
this.HUnca_GetDeviceNumber = function(userName){
|
|
562
|
+
var m_devNumber = null;
|
|
563
|
+
|
|
564
|
+
//设备名称为空
|
|
565
|
+
if (null == userName || userName.length == null) {
|
|
566
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;
|
|
567
|
+
return false;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
//查找匹配的设备序列号
|
|
571
|
+
if (null == tokenInfoList || tokenInfoList.length == 0) {
|
|
572
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;
|
|
573
|
+
return false;
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
//索引设备编号
|
|
577
|
+
for (var i = 0; i < tokenInfoList.length; i++) {
|
|
578
|
+
tempTokenInfo = tokenInfoList[i];
|
|
579
|
+
if (tempTokenInfo.userName == userName) {
|
|
580
|
+
tokenInfo = tempTokenInfo;
|
|
581
|
+
break;
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
//如果所选择的设备不存在
|
|
586
|
+
if (null == tokenInfo) {
|
|
587
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;
|
|
588
|
+
return false;
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
//加载库文件
|
|
592
|
+
if (!SOF_LoadLibrary(tokenInfo.libraryName)) {
|
|
593
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;
|
|
594
|
+
return false;
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
//实例化设备
|
|
598
|
+
if (!SOF_GetDeviceInstance(tokenInfo.serial)) {
|
|
599
|
+
return false;
|
|
600
|
+
}
|
|
601
|
+
m_devNumber =SOF_GetDeviceNumber();
|
|
602
|
+
|
|
603
|
+
return m_devNumber + "";
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
this.Hunca_RemoteUnlockPIN = function (userName, response) {
|
|
607
|
+
var tokenInfo = null; //Ukey设备信息
|
|
608
|
+
var tempTokenInfo = null; //临时设备信息,循环遍历用
|
|
609
|
+
var result = false;
|
|
610
|
+
|
|
611
|
+
LAST_ERRORSTRING = "";
|
|
612
|
+
|
|
613
|
+
//设备名称为空
|
|
614
|
+
if (null == userName || userName.length == null) {
|
|
615
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;
|
|
616
|
+
return false;
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
//查找匹配的设备序列号
|
|
620
|
+
if (null == tokenInfoList || tokenInfoList.length == 0) {
|
|
621
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;
|
|
622
|
+
return false;
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
//索引设备编号
|
|
626
|
+
for (var i = 0; i < tokenInfoList.length; i++) {
|
|
627
|
+
tempTokenInfo = tokenInfoList[i];
|
|
628
|
+
if (tempTokenInfo.userName == userName) {
|
|
629
|
+
tokenInfo = tempTokenInfo;
|
|
630
|
+
break;
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
//如果所选择的设备不存在
|
|
635
|
+
if (null == tokenInfo) {
|
|
636
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;
|
|
637
|
+
return false;
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
//判断设备是否支持远程解锁
|
|
641
|
+
if (tokenInfo.libraryName != "GM3000") {
|
|
642
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_GET_REMOTEUNLOCKREQUEST_NOT_SUPPORT;
|
|
643
|
+
return false;
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
//加载库文件
|
|
647
|
+
if (!SOF_LoadLibrary(tokenInfo.libraryName)) {
|
|
648
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;
|
|
649
|
+
return false;
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
//实例化设备
|
|
653
|
+
if (!SOF_GetDeviceInstance(tokenInfo.serial)) {
|
|
654
|
+
return false;
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
//枚举容器,并选择第一个容器
|
|
658
|
+
if (SOF_GetUserList() == null) {
|
|
659
|
+
return false;
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
//远程解锁
|
|
663
|
+
result = SOF_RemoteUnlockPIN(response)
|
|
664
|
+
return result;
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
/**
|
|
668
|
+
* 修改Ukey密码
|
|
669
|
+
*/
|
|
670
|
+
this.Hunca_ChangeUserPin = function (userName, oldUserPin, newUserPin) {
|
|
671
|
+
var tokenInfo = null; //Ukey设备信息
|
|
672
|
+
var tempTokenInfo = null; //临时设备信息,循环遍历用
|
|
673
|
+
LAST_ERRORSTRING = "";
|
|
674
|
+
|
|
675
|
+
//设备名称为空
|
|
676
|
+
if (null == userName || userName.length == null) {
|
|
677
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;
|
|
678
|
+
return false;
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
//查找匹配的设备序列号
|
|
682
|
+
if (null == tokenInfoList || tokenInfoList.length == 0) {
|
|
683
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;
|
|
684
|
+
return false;
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
//索引设备编号
|
|
688
|
+
for (var i = 0; i < tokenInfoList.length; i++) {
|
|
689
|
+
tempTokenInfo = tokenInfoList[i];
|
|
690
|
+
if (tempTokenInfo.userName == userName) {
|
|
691
|
+
tokenInfo = tempTokenInfo;
|
|
692
|
+
break;
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
//如果所选择的设备不存在
|
|
697
|
+
if (null == tokenInfo) {
|
|
698
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;
|
|
699
|
+
return false;
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
//加载库文件
|
|
703
|
+
if (!SOF_LoadLibrary(tokenInfo.libraryName)) {
|
|
704
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
//实例化设备
|
|
708
|
+
if (!SOF_GetDeviceInstance(tokenInfo.serial)) {
|
|
709
|
+
return false;
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
//修改密码
|
|
713
|
+
if (!SOF_ChangeUserPin(oldUserPin, newUserPin)) {
|
|
714
|
+
return false;
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
SOF_LogOut();
|
|
718
|
+
return true;
|
|
719
|
+
}
|
|
720
|
+
|
|
721
|
+
/**
|
|
722
|
+
* 对数据进行签名,并返回签名是否成功
|
|
723
|
+
* @param {string} originalData 待签名原文
|
|
724
|
+
* @param {string} userName Ukey用户名称
|
|
725
|
+
* @param {string} userPin Ukey密码
|
|
726
|
+
*/
|
|
727
|
+
this.Hunca_PKCS1 = function (originalData, userName, userPin) {
|
|
728
|
+
var libraryName = null;
|
|
729
|
+
var tokenInfo = null; //Ukey设备信息
|
|
730
|
+
var tempTokenInfo = null; //临时设备信息,循环遍历用
|
|
731
|
+
var certBase64 = null; //签名证书值
|
|
732
|
+
|
|
733
|
+
LAST_ERRORSTRING = "";
|
|
734
|
+
signResultInfo = null;
|
|
735
|
+
certInfo = new Object();
|
|
736
|
+
//设备名称为空
|
|
737
|
+
if (null == userName || userName.length == null) {
|
|
738
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;
|
|
739
|
+
return false;
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
//查找匹配的设备序列号
|
|
743
|
+
if (null == tokenInfoList || tokenInfoList.length == 0) {
|
|
744
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;
|
|
745
|
+
return false;
|
|
746
|
+
}
|
|
747
|
+
|
|
748
|
+
//索引设备编号
|
|
749
|
+
for (var i = 0; i < tokenInfoList.length; i++) {
|
|
750
|
+
tempTokenInfo = tokenInfoList[i];
|
|
751
|
+
if (tempTokenInfo.userName == userName) {
|
|
752
|
+
tokenInfo = tempTokenInfo;
|
|
753
|
+
break;
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
//如果所选择的设备不存在
|
|
758
|
+
if (null == tokenInfo) {
|
|
759
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;
|
|
760
|
+
return false;
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
//加载库文件
|
|
764
|
+
if (!SOF_LoadLibrary(tokenInfo.libraryName)) {
|
|
765
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
//实例化设备
|
|
769
|
+
if (!SOF_GetDeviceInstance(tokenInfo.serial)) {
|
|
770
|
+
return false;
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
//登陆应用
|
|
774
|
+
if (!SOF_Login(userPin)) {
|
|
775
|
+
return false;
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
//获取签名证书Base64
|
|
779
|
+
certBase64 = SOF_ExportUserCert(tokenInfo.containerName, KEY_SPEC_TYPE_SIGN);
|
|
780
|
+
if (null == certBase64) {
|
|
781
|
+
return false;
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
//设置摘要算法
|
|
785
|
+
if (!SOF_SetDigestMethod(SGD_SM3)) {
|
|
786
|
+
return false;
|
|
787
|
+
}
|
|
788
|
+
|
|
789
|
+
if (!SOF_SetUserID()) {
|
|
790
|
+
return false;
|
|
791
|
+
}
|
|
792
|
+
|
|
793
|
+
//进行签名
|
|
794
|
+
if (!SOF_SignData(tokenInfo.containerName, SGD_SM3, originalData, certBase64)) {
|
|
795
|
+
return false;
|
|
796
|
+
}
|
|
797
|
+
|
|
798
|
+
//获取证书信息
|
|
799
|
+
if (!SOF_GetCertInfo(certBase64)) {
|
|
800
|
+
return false;
|
|
801
|
+
}
|
|
802
|
+
|
|
803
|
+
SOF_LogOut();
|
|
804
|
+
return true;
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
/**
|
|
808
|
+
* 获取签名结果
|
|
809
|
+
*/
|
|
810
|
+
this.Hunca_GetSignData = function () {
|
|
811
|
+
return signResultSignData;
|
|
812
|
+
}
|
|
813
|
+
|
|
814
|
+
/**
|
|
815
|
+
* 获取签名证书
|
|
816
|
+
*/
|
|
817
|
+
this.Hunca_GetSignCert = function () {
|
|
818
|
+
return signResultCert;
|
|
819
|
+
}
|
|
820
|
+
|
|
821
|
+
this.Hunca_GetSignCertSn = function () {
|
|
822
|
+
return certSn
|
|
823
|
+
}
|
|
824
|
+
|
|
825
|
+
this.Hunca_GetSignCertSubject = function (){
|
|
826
|
+
return cert_subject;
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
this.Hunca_GetValidTime = function(){
|
|
830
|
+
return cert_validTime;
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
this.HUnca_GetNotBeforeTime = function(){
|
|
834
|
+
return cert_notbeforetime;
|
|
835
|
+
}
|
|
836
|
+
/**
|
|
837
|
+
* 处理设备中签名证书信息
|
|
838
|
+
* @param {*} userName
|
|
839
|
+
*/
|
|
840
|
+
this.Hunca_DealCertInfo = function (userName) {
|
|
841
|
+
var tokenInfo = null; //Ukey设备信息
|
|
842
|
+
var tempTokenInfo = null; //临时设备信息,循环遍历用
|
|
843
|
+
var certBase64 = null; //签名证书值
|
|
844
|
+
|
|
845
|
+
LAST_ERRORSTRING = "";
|
|
846
|
+
signResultInfo = null;
|
|
847
|
+
certInfo = new Object();
|
|
848
|
+
//设备名称为空
|
|
849
|
+
if (null == userName || userName.length == null) {
|
|
850
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;
|
|
851
|
+
return false;
|
|
852
|
+
}
|
|
853
|
+
|
|
854
|
+
//查找匹配的设备序列号
|
|
855
|
+
if (null == tokenInfoList || tokenInfoList.length == 0) {
|
|
856
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;
|
|
857
|
+
return false;
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
//索引设备编号
|
|
861
|
+
for (var i = 0; i < tokenInfoList.length; i++) {
|
|
862
|
+
tempTokenInfo = tokenInfoList[i];
|
|
863
|
+
if (tempTokenInfo.userName == userName) {
|
|
864
|
+
tokenInfo = tempTokenInfo;
|
|
865
|
+
break;
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
//如果所选择的设备不存在
|
|
870
|
+
if (null == tokenInfo) {
|
|
871
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;
|
|
872
|
+
return false;
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
if (!SOF_LoadLibrary(tokenInfo.libraryName)) {
|
|
876
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;
|
|
877
|
+
return false;
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
//实例化设备
|
|
881
|
+
if (!SOF_GetDeviceInstance(tokenInfo.serial)) {
|
|
882
|
+
return false;
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
//导出证书
|
|
886
|
+
certBase64 = SOF_ExportUserCert(tokenInfo.containerName, KEY_SPEC_TYPE_SIGN);
|
|
887
|
+
if (null == certBase64 || certBase64.length == 0) {
|
|
888
|
+
return false;
|
|
889
|
+
}
|
|
890
|
+
|
|
891
|
+
SOF_GetCertInfo(certBase64);
|
|
892
|
+
SOF_LogOut();
|
|
893
|
+
return true;
|
|
894
|
+
}
|
|
895
|
+
|
|
896
|
+
/**
|
|
897
|
+
* 对数据进行数字信封加密
|
|
898
|
+
* @param {string} inData 待加密原文
|
|
899
|
+
* @param {string} userName Ukey用户名称
|
|
900
|
+
* @param {string} EncryptMethod 对称加密方式
|
|
901
|
+
* @param {string} EncryptIV 加密IV值
|
|
902
|
+
* @returns {string} "",加密失败;非空,加密成功
|
|
903
|
+
*/
|
|
904
|
+
this.Hunca_EncryptDataPKCS7 = function (inData, userName, EncryptMethod, EncryptIV) {
|
|
905
|
+
var tokenInfo = null; //Ukey设备信息
|
|
906
|
+
var tempTokenInfo = null; //临时设备信息,循环遍历用
|
|
907
|
+
var certBase64 = null; //签名证书值
|
|
908
|
+
var m_EncryptMethod = "",
|
|
909
|
+
m_EncryptIV = "";
|
|
910
|
+
|
|
911
|
+
LAST_ERRORSTRING = "";
|
|
912
|
+
signResultInfo = null;
|
|
913
|
+
certInfo = new Object();
|
|
914
|
+
|
|
915
|
+
|
|
916
|
+
//设备名称为空
|
|
917
|
+
if (null == userName || userName.length == null) {
|
|
918
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;
|
|
919
|
+
return "";
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
//查找匹配的设备序列号
|
|
923
|
+
if (null == tokenInfoList || tokenInfoList.length == 0) {
|
|
924
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;
|
|
925
|
+
return "";
|
|
926
|
+
}
|
|
927
|
+
|
|
928
|
+
//索引设备编号
|
|
929
|
+
for (var i = 0; i < tokenInfoList.length; i++) {
|
|
930
|
+
tempTokenInfo = tokenInfoList[i];
|
|
931
|
+
if (tempTokenInfo.userName == userName) {
|
|
932
|
+
tokenInfo = tempTokenInfo;
|
|
933
|
+
break;
|
|
934
|
+
}
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
//如果所选择的设备不存在
|
|
938
|
+
if (null == tokenInfo) {
|
|
939
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;
|
|
940
|
+
return "";
|
|
941
|
+
}
|
|
942
|
+
|
|
943
|
+
//加载链接库
|
|
944
|
+
if (!SOF_LoadLibrary(tokenInfo.libraryName)) {
|
|
945
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;
|
|
946
|
+
return "";
|
|
947
|
+
}
|
|
948
|
+
|
|
949
|
+
//实例化设备
|
|
950
|
+
if (!SOF_GetDeviceInstance(tokenInfo.serial)) {
|
|
951
|
+
return "";
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
//导出加密证书
|
|
955
|
+
certBase64 = SOF_ExportUserCert(tokenInfo.containerName, KEY_SPEC_TYPE_ENCRYPT);
|
|
956
|
+
if (null == certBase64 || certBase64.length == 0) {
|
|
957
|
+
return "";
|
|
958
|
+
}
|
|
959
|
+
|
|
960
|
+
//设置加密方式
|
|
961
|
+
|
|
962
|
+
m_EncryptMethod = EncryptMethod + "";
|
|
963
|
+
m_EncryptIV = EncryptIV + "";
|
|
964
|
+
|
|
965
|
+
if (m_EncryptMethod == null || m_EncryptMethod.length == 0) {
|
|
966
|
+
m_EncryptMethod = SGD_SM4_ECB;
|
|
967
|
+
m_EncryptIV = "";
|
|
968
|
+
}
|
|
969
|
+
|
|
970
|
+
if (!SOF_SetEncryptMethodAndIV(m_EncryptMethod, m_EncryptIV)) {
|
|
971
|
+
return "";
|
|
972
|
+
}
|
|
973
|
+
|
|
974
|
+
//对数据进行加密
|
|
975
|
+
encryptData = SOF_EncryptDataPKCS7(certBase64, inData);
|
|
976
|
+
|
|
977
|
+
SOF_LogOut();
|
|
978
|
+
|
|
979
|
+
return encryptData;
|
|
980
|
+
}
|
|
981
|
+
|
|
982
|
+
/**
|
|
983
|
+
* 对密文进行数字信封解密操作
|
|
984
|
+
* @param {string} encryptData 待解密密文
|
|
985
|
+
* @param {string} userName Ukey用户名称
|
|
986
|
+
* @param {string} userPin Ukey用户PIN码
|
|
987
|
+
* @param {string} EncryptMethod 对称加密方式
|
|
988
|
+
* @param {string} EncryptIV 加密IV值
|
|
989
|
+
* @returns {string} "",加密失败;非空,加密成功
|
|
990
|
+
*/
|
|
991
|
+
this.Hunca_DecryptDataPKCS7 = function (encryptData, userName, userPin, EncryptMethod, EncryptIV) {
|
|
992
|
+
var tokenInfo = null; //Ukey设备信息
|
|
993
|
+
var tempTokenInfo = null; //临时设备信息,循环遍历用
|
|
994
|
+
var m_EncryptMethod = "",
|
|
995
|
+
m_EncryptIV = "";
|
|
996
|
+
var m_EncryptData = "";
|
|
997
|
+
var m_DecryptData = "";
|
|
998
|
+
var resData = "";
|
|
999
|
+
|
|
1000
|
+
LAST_ERRORSTRING = "";
|
|
1001
|
+
signResultInfo = null;
|
|
1002
|
+
certInfo = new Object();
|
|
1003
|
+
|
|
1004
|
+
|
|
1005
|
+
m_EncryptData = "" + encryptData;
|
|
1006
|
+
//设备名称为空
|
|
1007
|
+
if (null == userName || userName.length == null) {
|
|
1008
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;
|
|
1009
|
+
return "";
|
|
1010
|
+
}
|
|
1011
|
+
|
|
1012
|
+
//查找匹配的设备序列号
|
|
1013
|
+
if (null == tokenInfoList || tokenInfoList.length == 0) {
|
|
1014
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;
|
|
1015
|
+
return "";
|
|
1016
|
+
}
|
|
1017
|
+
|
|
1018
|
+
//索引设备编号
|
|
1019
|
+
for (var i = 0; i < tokenInfoList.length; i++) {
|
|
1020
|
+
tempTokenInfo = tokenInfoList[i];
|
|
1021
|
+
if (tempTokenInfo.userName == userName) {
|
|
1022
|
+
tokenInfo = tempTokenInfo;
|
|
1023
|
+
break;
|
|
1024
|
+
}
|
|
1025
|
+
}
|
|
1026
|
+
|
|
1027
|
+
//如果所选择的设备不存在
|
|
1028
|
+
if (null == tokenInfo) {
|
|
1029
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;
|
|
1030
|
+
return "";
|
|
1031
|
+
}
|
|
1032
|
+
|
|
1033
|
+
//加载链接库
|
|
1034
|
+
if (!SOF_LoadLibrary(tokenInfo.libraryName)) {
|
|
1035
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;
|
|
1036
|
+
return "";
|
|
1037
|
+
}
|
|
1038
|
+
|
|
1039
|
+
//实例化设备
|
|
1040
|
+
if (!SOF_GetDeviceInstance(tokenInfo.serial)) {
|
|
1041
|
+
return "";
|
|
1042
|
+
}
|
|
1043
|
+
|
|
1044
|
+
//登陆应用
|
|
1045
|
+
if (!SOF_Login(userPin)) {
|
|
1046
|
+
return "";
|
|
1047
|
+
}
|
|
1048
|
+
|
|
1049
|
+
//设置加密方式
|
|
1050
|
+
m_EncryptMethod = EncryptMethod + "";
|
|
1051
|
+
m_EncryptIV = EncryptIV + "";
|
|
1052
|
+
if (m_EncryptMethod == null || m_EncryptMethod.length == 0) {
|
|
1053
|
+
m_EncryptMethod = SGD_SM4_ECB;
|
|
1054
|
+
m_EncryptIV = "";
|
|
1055
|
+
}
|
|
1056
|
+
|
|
1057
|
+
if (!SOF_SetEncryptMethodAndIV(m_EncryptMethod, m_EncryptIV)) {
|
|
1058
|
+
return "";
|
|
1059
|
+
}
|
|
1060
|
+
|
|
1061
|
+
m_DecryptData = SOF_DecryptDataPKCS7(tokenInfo.containerName, KEY_SPEC_TYPE_ENCRYPT, m_EncryptData);
|
|
1062
|
+
if (m_DecryptData.length == 0) {
|
|
1063
|
+
return "";
|
|
1064
|
+
}
|
|
1065
|
+
|
|
1066
|
+
try {
|
|
1067
|
+
resData = _Base64decode(m_DecryptData);
|
|
1068
|
+
} catch (e) {
|
|
1069
|
+
resData = m_DecryptData;
|
|
1070
|
+
LAST_ERRORSTRING = "解密失败:Base64解码失败";
|
|
1071
|
+
}
|
|
1072
|
+
|
|
1073
|
+
return resData;
|
|
1074
|
+
}
|
|
1075
|
+
|
|
1076
|
+
/**
|
|
1077
|
+
* 对文件进行数字信封加密
|
|
1078
|
+
* @param {string} InFile 原文件
|
|
1079
|
+
* @param {string} OutFile 目标文件
|
|
1080
|
+
* @param {string} userName Ukey用户名称
|
|
1081
|
+
* @param {string} EncryptMethod 对称加密方式
|
|
1082
|
+
* @param {string} EncryptIV 加密IV值
|
|
1083
|
+
* @returns {string} "",加密失败;非空,加密成功
|
|
1084
|
+
*/
|
|
1085
|
+
this.Hunca_EncryptFilePKCS7 = function (userName,InFile,OutFile, EncryptMethod, EncryptIV) {
|
|
1086
|
+
var tokenInfo = null; //Ukey设备信息
|
|
1087
|
+
var tempTokenInfo = null; //临时设备信息,循环遍历用
|
|
1088
|
+
var certBase64 = null; //签名证书值
|
|
1089
|
+
var m_EncryptMethod = "",
|
|
1090
|
+
m_EncryptIV = "";
|
|
1091
|
+
|
|
1092
|
+
LAST_ERRORSTRING = "";
|
|
1093
|
+
signResultInfo = null;
|
|
1094
|
+
certInfo = new Object();
|
|
1095
|
+
|
|
1096
|
+
|
|
1097
|
+
//设备名称为空
|
|
1098
|
+
if (null == userName || userName.length == null) {
|
|
1099
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;
|
|
1100
|
+
return "";
|
|
1101
|
+
}
|
|
1102
|
+
|
|
1103
|
+
//查找匹配的设备序列号
|
|
1104
|
+
if (null == tokenInfoList || tokenInfoList.length == 0) {
|
|
1105
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;
|
|
1106
|
+
return "";
|
|
1107
|
+
}
|
|
1108
|
+
|
|
1109
|
+
//索引设备编号
|
|
1110
|
+
for (var i = 0; i < tokenInfoList.length; i++) {
|
|
1111
|
+
tempTokenInfo = tokenInfoList[i];
|
|
1112
|
+
if (tempTokenInfo.userName == userName) {
|
|
1113
|
+
tokenInfo = tempTokenInfo;
|
|
1114
|
+
break;
|
|
1115
|
+
}
|
|
1116
|
+
}
|
|
1117
|
+
|
|
1118
|
+
//如果所选择的设备不存在
|
|
1119
|
+
if (null == tokenInfo) {
|
|
1120
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;
|
|
1121
|
+
return "";
|
|
1122
|
+
}
|
|
1123
|
+
|
|
1124
|
+
//加载链接库
|
|
1125
|
+
if (!SOF_LoadLibrary(tokenInfo.libraryName)) {
|
|
1126
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;
|
|
1127
|
+
return "";
|
|
1128
|
+
}
|
|
1129
|
+
|
|
1130
|
+
//实例化设备
|
|
1131
|
+
if (!SOF_GetDeviceInstance(tokenInfo.serial)) {
|
|
1132
|
+
return "";
|
|
1133
|
+
}
|
|
1134
|
+
|
|
1135
|
+
//导出加密证书
|
|
1136
|
+
certBase64 = SOF_ExportUserCert(tokenInfo.containerName, KEY_SPEC_TYPE_ENCRYPT);
|
|
1137
|
+
if (null == certBase64 || certBase64.length == 0) {
|
|
1138
|
+
return "";
|
|
1139
|
+
}
|
|
1140
|
+
|
|
1141
|
+
//设置加密方式
|
|
1142
|
+
|
|
1143
|
+
m_EncryptMethod = EncryptMethod + "";
|
|
1144
|
+
m_EncryptIV = EncryptIV + "";
|
|
1145
|
+
|
|
1146
|
+
if (m_EncryptMethod == null || m_EncryptMethod.length == 0) {
|
|
1147
|
+
m_EncryptMethod = SGD_SM4_ECB;
|
|
1148
|
+
m_EncryptIV = "";
|
|
1149
|
+
}
|
|
1150
|
+
|
|
1151
|
+
if (!SOF_SetEncryptMethodAndIV(m_EncryptMethod, m_EncryptIV)) {
|
|
1152
|
+
return "";
|
|
1153
|
+
}
|
|
1154
|
+
|
|
1155
|
+
//对文件进行加密
|
|
1156
|
+
encryptData = SOF_EncryptFileToPKCS7(certBase64, InFile,OutFile,'0');
|
|
1157
|
+
|
|
1158
|
+
SOF_LogOut();
|
|
1159
|
+
|
|
1160
|
+
return encryptData;
|
|
1161
|
+
}
|
|
1162
|
+
/**
|
|
1163
|
+
* 对文件进行数字信封解密操作
|
|
1164
|
+
* @param {string} evncryptFileData 待解密密文
|
|
1165
|
+
* @param {string} userName Ukey用户名称
|
|
1166
|
+
* @param {string} userPin Ukey用户PIN码
|
|
1167
|
+
* @param {string} EncryptMethod 对称加密方式
|
|
1168
|
+
* @param {string} EncryptIV 加密IV值
|
|
1169
|
+
* @param {string} InFile 加密文件
|
|
1170
|
+
* @param {string} OutFile 输出文件
|
|
1171
|
+
* @returns {string} "",加密失败;非空,加密成功
|
|
1172
|
+
*/
|
|
1173
|
+
this.Hunca_DecryptFileToPKCS7 = function (evncryptFileData, userName, userPin, EncryptMethod, EncryptIV,InFile,OutFile) {
|
|
1174
|
+
var tokenInfo = null; //Ukey设备信息
|
|
1175
|
+
var tempTokenInfo = null; //临时设备信息,循环遍历用
|
|
1176
|
+
var m_EncryptMethod = "",
|
|
1177
|
+
m_EncryptIV = "";
|
|
1178
|
+
var m_EncryptData = "";
|
|
1179
|
+
var m_DecryptData = "";
|
|
1180
|
+
var resData = "";
|
|
1181
|
+
|
|
1182
|
+
LAST_ERRORSTRING = "";
|
|
1183
|
+
signResultInfo = null;
|
|
1184
|
+
certInfo = new Object();
|
|
1185
|
+
|
|
1186
|
+
|
|
1187
|
+
m_EncryptData = "" + evncryptFileData;
|
|
1188
|
+
//设备名称为空
|
|
1189
|
+
if (null == userName || userName.length == null) {
|
|
1190
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;
|
|
1191
|
+
return "";
|
|
1192
|
+
}
|
|
1193
|
+
|
|
1194
|
+
//查找匹配的设备序列号
|
|
1195
|
+
if (null == tokenInfoList || tokenInfoList.length == 0) {
|
|
1196
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;
|
|
1197
|
+
return "";
|
|
1198
|
+
}
|
|
1199
|
+
|
|
1200
|
+
//索引设备编号
|
|
1201
|
+
for (var i = 0; i < tokenInfoList.length; i++) {
|
|
1202
|
+
tempTokenInfo = tokenInfoList[i];
|
|
1203
|
+
if (tempTokenInfo.userName == userName) {
|
|
1204
|
+
tokenInfo = tempTokenInfo;
|
|
1205
|
+
break;
|
|
1206
|
+
}
|
|
1207
|
+
}
|
|
1208
|
+
|
|
1209
|
+
//如果所选择的设备不存在
|
|
1210
|
+
if (null == tokenInfo) {
|
|
1211
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;
|
|
1212
|
+
return "";
|
|
1213
|
+
}
|
|
1214
|
+
|
|
1215
|
+
//加载链接库
|
|
1216
|
+
if (!SOF_LoadLibrary(tokenInfo.libraryName)) {
|
|
1217
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;
|
|
1218
|
+
return "";
|
|
1219
|
+
}
|
|
1220
|
+
|
|
1221
|
+
//实例化设备
|
|
1222
|
+
if (!SOF_GetDeviceInstance(tokenInfo.serial)) {
|
|
1223
|
+
return "";
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1226
|
+
//登陆应用
|
|
1227
|
+
if (!SOF_Login(userPin)) {
|
|
1228
|
+
return "";
|
|
1229
|
+
}
|
|
1230
|
+
|
|
1231
|
+
//设置加密方式
|
|
1232
|
+
m_EncryptMethod = EncryptMethod + "";
|
|
1233
|
+
m_EncryptIV = EncryptIV + "";
|
|
1234
|
+
if (m_EncryptMethod == null || m_EncryptMethod.length == 0) {
|
|
1235
|
+
m_EncryptMethod = SGD_SM4_ECB;
|
|
1236
|
+
m_EncryptIV = "";
|
|
1237
|
+
}
|
|
1238
|
+
|
|
1239
|
+
if (!SOF_SetEncryptMethodAndIV(m_EncryptMethod, m_EncryptIV)) {
|
|
1240
|
+
return "";
|
|
1241
|
+
}
|
|
1242
|
+
|
|
1243
|
+
m_DecryptData = SOF_DecryptFileToPKCS7(tokenInfo.containerName, KEY_SPEC_TYPE_ENCRYPT, m_EncryptData,InFile,OutFile,0);
|
|
1244
|
+
if (m_DecryptData.length == 0) {
|
|
1245
|
+
return "";
|
|
1246
|
+
}
|
|
1247
|
+
|
|
1248
|
+
try {
|
|
1249
|
+
resData = _Base64decode(m_DecryptData);
|
|
1250
|
+
} catch (e) {
|
|
1251
|
+
resData = m_DecryptData;
|
|
1252
|
+
LAST_ERRORSTRING = "解密失败:Base64解码失败";
|
|
1253
|
+
}
|
|
1254
|
+
|
|
1255
|
+
return resData;
|
|
1256
|
+
}
|
|
1257
|
+
/**
|
|
1258
|
+
* 加载底层文件
|
|
1259
|
+
* @returns {boolean} true,加载成功;false加载失败;
|
|
1260
|
+
*/
|
|
1261
|
+
function SOF_LoadLibrary(libraryName) {
|
|
1262
|
+
var resultCode = 0;
|
|
1263
|
+
if (libraryName == "GM3000") {
|
|
1264
|
+
resultCode = token.SOF_LoadLibrary(token.GM3000);
|
|
1265
|
+
}
|
|
1266
|
+
else if (libraryName == "HT"){
|
|
1267
|
+
resultCode = token.SOF_LoadLibrary(token.HT);
|
|
1268
|
+
}
|
|
1269
|
+
else if (libraryName == "SJK1137") {
|
|
1270
|
+
resultCode = token.SOF_LoadLibrary(token.SJK1137);
|
|
1271
|
+
}
|
|
1272
|
+
|
|
1273
|
+
if (resultCode != 0) {
|
|
1274
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_NOT_LOADLIBRARY + token.SOF_GetLastError();
|
|
1275
|
+
return false;
|
|
1276
|
+
}
|
|
1277
|
+
return true;
|
|
1278
|
+
}
|
|
1279
|
+
|
|
1280
|
+
/**
|
|
1281
|
+
* 枚举设备
|
|
1282
|
+
*/
|
|
1283
|
+
function SOF_EnumDevice() {
|
|
1284
|
+
var deviceNameList = "";
|
|
1285
|
+
|
|
1286
|
+
deviceNameList = token.SOF_EnumDevice();
|
|
1287
|
+
|
|
1288
|
+
//检测是否插入USBKey
|
|
1289
|
+
if (null == deviceNameList || deviceNameList.length == 0) {
|
|
1290
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;
|
|
1291
|
+
return null;
|
|
1292
|
+
}
|
|
1293
|
+
|
|
1294
|
+
return deviceNameList;
|
|
1295
|
+
}
|
|
1296
|
+
|
|
1297
|
+
/**
|
|
1298
|
+
* 实例化设备,为后续一系列操作准备
|
|
1299
|
+
* @param {string} deviceName 设备名称
|
|
1300
|
+
*/
|
|
1301
|
+
function SOF_GetDeviceInstance(deviceName) {
|
|
1302
|
+
var resultCode = 0;
|
|
1303
|
+
|
|
1304
|
+
resultCode = token.SOF_GetDeviceInstance(deviceName, "");
|
|
1305
|
+
//设备未正常实例化
|
|
1306
|
+
if (resultCode != 0) {
|
|
1307
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_NOT_INSTANCE_DEVICE + token.SOF_GetLastError();
|
|
1308
|
+
return false;
|
|
1309
|
+
}
|
|
1310
|
+
return true;
|
|
1311
|
+
}
|
|
1312
|
+
|
|
1313
|
+
/**
|
|
1314
|
+
* 枚举应用中的容器
|
|
1315
|
+
*/
|
|
1316
|
+
function SOF_GetUserList() {
|
|
1317
|
+
var userList = "";
|
|
1318
|
+
|
|
1319
|
+
userList = token.SOF_GetUserList();
|
|
1320
|
+
if (null == userList || userList.length == 0) {
|
|
1321
|
+
LAST_ERRORSTRING = "USBkey中未找到证书!";
|
|
1322
|
+
return null;
|
|
1323
|
+
}
|
|
1324
|
+
|
|
1325
|
+
return userList;
|
|
1326
|
+
}
|
|
1327
|
+
|
|
1328
|
+
/**
|
|
1329
|
+
* 登陆应用,验证密码是否正确
|
|
1330
|
+
* @param {string} userPin
|
|
1331
|
+
*/
|
|
1332
|
+
function SOF_Login(userPin) {
|
|
1333
|
+
var resultCode = 0;
|
|
1334
|
+
var m_userPin = "" + userPin;
|
|
1335
|
+
var RetryCount = 0;
|
|
1336
|
+
|
|
1337
|
+
if (null == m_userPin || m_userPin.length == 0) {
|
|
1338
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_USERPIN_LENGTH;
|
|
1339
|
+
return false;
|
|
1340
|
+
}
|
|
1341
|
+
|
|
1342
|
+
if (m_userPin.length < 4 || m_userPin.length > 16) {
|
|
1343
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_USERPIN_LENGTH;
|
|
1344
|
+
return false;
|
|
1345
|
+
}
|
|
1346
|
+
|
|
1347
|
+
resultCode = token.SOF_Login(m_userPin);
|
|
1348
|
+
if (resultCode != 0) {
|
|
1349
|
+
RetryCount = SOF_GetPinRetryCount();
|
|
1350
|
+
if (RetryCount > 0) {
|
|
1351
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_USERPIN_IS_ERROR + ",还剩 " + RetryCount + " 次重试机会!";
|
|
1352
|
+
} else {
|
|
1353
|
+
LAST_ERRORSTRING = "UKey已经锁死,请联系管理员进行解锁!"
|
|
1354
|
+
}
|
|
1355
|
+
return false;
|
|
1356
|
+
}
|
|
1357
|
+
return true
|
|
1358
|
+
}
|
|
1359
|
+
|
|
1360
|
+
/**
|
|
1361
|
+
* 修改UKey密码
|
|
1362
|
+
* @param {*} oldUserPin
|
|
1363
|
+
* @param {*} newUserPin
|
|
1364
|
+
*/
|
|
1365
|
+
function SOF_ChangeUserPin(oldUserPin, newUserPin) {
|
|
1366
|
+
var resultCode = 0;
|
|
1367
|
+
var m_oldUserPin = "" + oldUserPin;
|
|
1368
|
+
var m_newUserPin = "" + newUserPin;
|
|
1369
|
+
var RetryCount = 0;
|
|
1370
|
+
|
|
1371
|
+
if (null == m_oldUserPin || m_oldUserPin.length == 0) {
|
|
1372
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_USERPIN_LENGTH;
|
|
1373
|
+
return false;
|
|
1374
|
+
}
|
|
1375
|
+
|
|
1376
|
+
if (null == m_newUserPin || m_newUserPin.length == 0) {
|
|
1377
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_USERPIN_LENGTH;
|
|
1378
|
+
return false;
|
|
1379
|
+
}
|
|
1380
|
+
|
|
1381
|
+
if (m_oldUserPin.length < 4 || m_oldUserPin.length > 16) {
|
|
1382
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_USERPIN_LENGTH;
|
|
1383
|
+
return false;
|
|
1384
|
+
}
|
|
1385
|
+
|
|
1386
|
+
if (m_newUserPin.length < 4 || m_newUserPin.length > 16) {
|
|
1387
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_USERPIN_LENGTH;
|
|
1388
|
+
return false;
|
|
1389
|
+
}
|
|
1390
|
+
|
|
1391
|
+
resultCode = token.SOF_ChangePassWd(m_oldUserPin, m_newUserPin);
|
|
1392
|
+
if (resultCode != 0) {
|
|
1393
|
+
RetryCount = SOF_GetPinRetryCount();
|
|
1394
|
+
if (RetryCount > 0) {
|
|
1395
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_USERPIN_CHANGE_ERROR + ",还剩 " + RetryCount + " 次重试机会!";
|
|
1396
|
+
} else {
|
|
1397
|
+
LAST_ERRORSTRING = "UKey已经锁死,请联系管理员进行解锁!"
|
|
1398
|
+
}
|
|
1399
|
+
return false;
|
|
1400
|
+
}
|
|
1401
|
+
return true;
|
|
1402
|
+
}
|
|
1403
|
+
|
|
1404
|
+
/**
|
|
1405
|
+
* 返回重试次数
|
|
1406
|
+
*/
|
|
1407
|
+
function SOF_GetPinRetryCount() {
|
|
1408
|
+
var retryCount = 0;
|
|
1409
|
+
retryCount = token.SOF_GetPinRetryCount();
|
|
1410
|
+
return retryCount;
|
|
1411
|
+
}
|
|
1412
|
+
|
|
1413
|
+
function SOF_GetDeviceNumber(){
|
|
1414
|
+
var deviceNumber = null;
|
|
1415
|
+
deviceNumber = token.SOF_GetDeviceInfo(token.SGD_DEVICE_SERIAL_NUMBER);
|
|
1416
|
+
return deviceNumber;
|
|
1417
|
+
}
|
|
1418
|
+
|
|
1419
|
+
/**
|
|
1420
|
+
* 导出证书值
|
|
1421
|
+
* @param {string} containerName 容器名称
|
|
1422
|
+
* @param {int} keySec 证书用途
|
|
1423
|
+
*/
|
|
1424
|
+
function SOF_ExportUserCert(containerName, keySec) {
|
|
1425
|
+
var certBase64;
|
|
1426
|
+
certBase64 = token.SOF_ExportUserCert(containerName, keySec);
|
|
1427
|
+
if (null == certBase64 || certBase64.length == 0) {
|
|
1428
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_KEY_EXPORT_CERT;
|
|
1429
|
+
return null;
|
|
1430
|
+
}
|
|
1431
|
+
return certBase64;
|
|
1432
|
+
}
|
|
1433
|
+
|
|
1434
|
+
/**
|
|
1435
|
+
* 设置加密算法
|
|
1436
|
+
* @param {*} EncryptMethod 设置加密算法
|
|
1437
|
+
* @param {*} EncryptIV 设置IV值
|
|
1438
|
+
*/
|
|
1439
|
+
function SOF_SetEncryptMethodAndIV(EncryptMethod, EncryptIV) {
|
|
1440
|
+
var resCode = 1;
|
|
1441
|
+
|
|
1442
|
+
if (EncryptMethod == undefined || EncryptMethod == null) {
|
|
1443
|
+
LAST_ERRORSTRING = "请设置加密方式!";
|
|
1444
|
+
return false;
|
|
1445
|
+
}
|
|
1446
|
+
|
|
1447
|
+
resCode = token.SOF_SetEncryptMethodAndIV(EncryptMethod, _Base64encode(EncryptIV));
|
|
1448
|
+
if (resCode != 0) {
|
|
1449
|
+
LAST_ERRORSTRING = token.SOF_GetLastError();
|
|
1450
|
+
return false;
|
|
1451
|
+
}
|
|
1452
|
+
return true;
|
|
1453
|
+
}
|
|
1454
|
+
|
|
1455
|
+
/**
|
|
1456
|
+
* 设置签名算法
|
|
1457
|
+
* @param {}} digestMethod
|
|
1458
|
+
*/
|
|
1459
|
+
function SOF_SetDigestMethod(digestMethod) {
|
|
1460
|
+
var resultCode = 0;
|
|
1461
|
+
resultCode = token.SOF_SetDigestMethod(digestMethod);
|
|
1462
|
+
if (resultCode != 0) {
|
|
1463
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_SET_DIGEST_METHOD_ERROR;
|
|
1464
|
+
return false;
|
|
1465
|
+
}
|
|
1466
|
+
|
|
1467
|
+
return true;
|
|
1468
|
+
}
|
|
1469
|
+
|
|
1470
|
+
/**
|
|
1471
|
+
* 设置默认USERID
|
|
1472
|
+
*/
|
|
1473
|
+
function SOF_SetUserID() {
|
|
1474
|
+
var resultCode = 0;
|
|
1475
|
+
resultCode = token.SOF_SetUserID(USER_ID);
|
|
1476
|
+
if (resultCode != 0) {
|
|
1477
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_SET_USERID_ERROR;
|
|
1478
|
+
return false;
|
|
1479
|
+
}
|
|
1480
|
+
return true;
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1483
|
+
/**
|
|
1484
|
+
* 数字信封加密
|
|
1485
|
+
* @param {String} Base64EncodeCert 加密证书值
|
|
1486
|
+
* @param {String} inData 待加密原文
|
|
1487
|
+
* @returns {*} "",表示加密失败;非空,加密成功
|
|
1488
|
+
*/
|
|
1489
|
+
function SOF_EncryptDataPKCS7(Base64EncodeCert, inData) {
|
|
1490
|
+
var encryptData = "";
|
|
1491
|
+
var inDataBase64 = "";
|
|
1492
|
+
var m_inData = "";
|
|
1493
|
+
|
|
1494
|
+
m_inData = "" + inData;
|
|
1495
|
+
if (m_inData.length == 0) {
|
|
1496
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_ENCRYPT_DATA_IS_NULL;
|
|
1497
|
+
return "";
|
|
1498
|
+
}
|
|
1499
|
+
|
|
1500
|
+
inDataBase64 = _Base64encode(m_inData)
|
|
1501
|
+
encryptData = token.SOF_EncryptDataPKCS7(Base64EncodeCert, inDataBase64, inData.length);
|
|
1502
|
+
|
|
1503
|
+
if (encryptData == null || encryptData.length == 0) {
|
|
1504
|
+
LAST_ERRORSTRING = "加密失败," + token.SOF_GetLastError();
|
|
1505
|
+
return "";
|
|
1506
|
+
}
|
|
1507
|
+
return encryptData;
|
|
1508
|
+
}
|
|
1509
|
+
|
|
1510
|
+
/**
|
|
1511
|
+
* 数字信封解密
|
|
1512
|
+
* @param {*} containerName 应用名称
|
|
1513
|
+
* @param {int} cerType
|
|
1514
|
+
* @param {*} encrypedData
|
|
1515
|
+
*/
|
|
1516
|
+
function SOF_DecryptDataPKCS7(containerName, cerType, encrypedData) {
|
|
1517
|
+
var m_EncrypedData = "",
|
|
1518
|
+
m_DecryptData = "";
|
|
1519
|
+
|
|
1520
|
+
m_EncrypedData = "" + encrypedData;
|
|
1521
|
+
if (containerName == null || containerName.length == 0) {
|
|
1522
|
+
LAST_ERRORSTRING = "应用名称不能为空!";
|
|
1523
|
+
return "";
|
|
1524
|
+
}
|
|
1525
|
+
|
|
1526
|
+
if (m_EncrypedData.length == 0) {
|
|
1527
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_DECRYPT_DATA_IS_NULL;
|
|
1528
|
+
return "";
|
|
1529
|
+
}
|
|
1530
|
+
|
|
1531
|
+
try {
|
|
1532
|
+
m_DecryptData = token.SOF_DecryptDataPKCS7(containerName, cerType, m_EncrypedData);
|
|
1533
|
+
} catch (e) {
|
|
1534
|
+
m_DecryptData = "";
|
|
1535
|
+
}
|
|
1536
|
+
if (undefined == m_DecryptData || m_DecryptData == null || m_DecryptData == "") {
|
|
1537
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_DECRYPT_DATA_IS_ERROR;
|
|
1538
|
+
return "";
|
|
1539
|
+
}
|
|
1540
|
+
|
|
1541
|
+
return m_DecryptData;
|
|
1542
|
+
}
|
|
1543
|
+
/**
|
|
1544
|
+
* 数字信封文件加密
|
|
1545
|
+
* @param {String} Base64EncodeCert 加密证书值
|
|
1546
|
+
* @param {String} inData 待加密原文
|
|
1547
|
+
* @returns {*} "",表示加密失败;非空,加密成功
|
|
1548
|
+
*/
|
|
1549
|
+
function SOF_EncryptFileToPKCS7(serial, InFile,OutFile,type) {
|
|
1550
|
+
var encryptData = "";
|
|
1551
|
+
encryptData = token.SOF_EncryptFileToPKCS7(serial, InFile,OutFile,type);
|
|
1552
|
+
if (encryptData == null || encryptData.length == 0) {
|
|
1553
|
+
LAST_ERRORSTRING = "加密失败," + token.SOF_GetLastError();
|
|
1554
|
+
return "";
|
|
1555
|
+
}
|
|
1556
|
+
return encryptData;
|
|
1557
|
+
}
|
|
1558
|
+
/**
|
|
1559
|
+
* 数字信封文件加密
|
|
1560
|
+
* @param {String} Base64EncodeCert 加密证书值
|
|
1561
|
+
* @param {String} inData 待加密原文
|
|
1562
|
+
* @returns {*} "",表示加密失败;非空,加密成功
|
|
1563
|
+
*/
|
|
1564
|
+
function SOF_DecryptFileToPKCS7(containerName, keySpec, Pkcs7Data,InFile,OutFile,type) {
|
|
1565
|
+
var encryptData = "";
|
|
1566
|
+
encryptData = token.SOF_DecryptFileToPKCS7(containerName, keySpec, Pkcs7Data,InFile,OutFile,type);
|
|
1567
|
+
if (encryptData == null || encryptData.length == 0) {
|
|
1568
|
+
LAST_ERRORSTRING = "文件解密失败," + token.SOF_GetLastError();
|
|
1569
|
+
return "";
|
|
1570
|
+
}
|
|
1571
|
+
return encryptData;
|
|
1572
|
+
}
|
|
1573
|
+
|
|
1574
|
+
/**
|
|
1575
|
+
* 数据签名
|
|
1576
|
+
* @param {*} containerName
|
|
1577
|
+
* @param {*} ulKeySpec
|
|
1578
|
+
* @param {*} data
|
|
1579
|
+
* @param {*} certBase64
|
|
1580
|
+
*/
|
|
1581
|
+
function SOF_SignData(containerName, ulKeySpec, data, certBase64) {
|
|
1582
|
+
var signData = null;
|
|
1583
|
+
var b64Data = null;
|
|
1584
|
+
var m_data = "" + data;
|
|
1585
|
+
|
|
1586
|
+
|
|
1587
|
+
if (null == m_data || m_data.length == 0) {
|
|
1588
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_SIGN_ORIGINALDATA_IS_NULL;
|
|
1589
|
+
return false;
|
|
1590
|
+
}
|
|
1591
|
+
|
|
1592
|
+
b64Data = _Base64encode(m_data);
|
|
1593
|
+
signData = token.SOF_SignData(containerName, ulKeySpec, _Base64encode(b64Data), b64Data.length)
|
|
1594
|
+
if (null == signData || signData.length == 0) {
|
|
1595
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_SIGN_ERROR + SOF_GetLastError();
|
|
1596
|
+
return false;
|
|
1597
|
+
}
|
|
1598
|
+
|
|
1599
|
+
signResultCert = certBase64;
|
|
1600
|
+
signResultSignData = signData;
|
|
1601
|
+
|
|
1602
|
+
return true;
|
|
1603
|
+
}
|
|
1604
|
+
|
|
1605
|
+
/**
|
|
1606
|
+
* 导出证书
|
|
1607
|
+
* @param {*} certBase64
|
|
1608
|
+
*/
|
|
1609
|
+
function SOF_GetCertInfo(certBase64) {
|
|
1610
|
+
var str = null;
|
|
1611
|
+
var subject = null;
|
|
1612
|
+
var tmpList = null;
|
|
1613
|
+
var validTime = null;
|
|
1614
|
+
var notBeforetime = null;
|
|
1615
|
+
var key, value;
|
|
1616
|
+
|
|
1617
|
+
if (null == certBase64 || certBase64.length == 0) {
|
|
1618
|
+
return false;
|
|
1619
|
+
}
|
|
1620
|
+
|
|
1621
|
+
cert_subject_GN = "";
|
|
1622
|
+
certSn = "";
|
|
1623
|
+
cert_subject = "";
|
|
1624
|
+
|
|
1625
|
+
str = token.SOF_GetCertInfo(certBase64, token.SGD_CERT_SERIAL);
|
|
1626
|
+
certSn = hexToDec(str);
|
|
1627
|
+
|
|
1628
|
+
subject = token.SOF_GetCertInfo(certBase64, token.SGD_CERT_SUBJECT);
|
|
1629
|
+
cert_subject = subject;
|
|
1630
|
+
|
|
1631
|
+
validTime = token.SOF_GetCertInfo(certBase64,token.SGD_CERT_VALID_TIME);
|
|
1632
|
+
cert_validTime = validTime;
|
|
1633
|
+
|
|
1634
|
+
notBeforetime = token.SOF_GetCertInfo(certBase64,token.SGD_CERT_NOT_BEFORE);
|
|
1635
|
+
cert_notbeforetime = notBeforetime;
|
|
1636
|
+
|
|
1637
|
+
tmpList = subject.split(',');
|
|
1638
|
+
for (var i = 0; i < tmpList.length; i++) {
|
|
1639
|
+
if (tmpList[i].indexOf("=") == -1) {
|
|
1640
|
+
continue;
|
|
1641
|
+
}
|
|
1642
|
+
|
|
1643
|
+
key = tmpList[i].split('=')[0];
|
|
1644
|
+
value = tmpList[i].split('=')[1];
|
|
1645
|
+
|
|
1646
|
+
if (key == 'GN') {
|
|
1647
|
+
cert_subject_GN = value;
|
|
1648
|
+
break;
|
|
1649
|
+
}
|
|
1650
|
+
}
|
|
1651
|
+
return true;
|
|
1652
|
+
}
|
|
1653
|
+
|
|
1654
|
+
|
|
1655
|
+
|
|
1656
|
+
/**
|
|
1657
|
+
* 登出UKey
|
|
1658
|
+
*/
|
|
1659
|
+
function SOF_LogOut() {
|
|
1660
|
+
token.SOF_LogOut();
|
|
1661
|
+
}
|
|
1662
|
+
|
|
1663
|
+
/**
|
|
1664
|
+
* 生成解锁请求
|
|
1665
|
+
*/
|
|
1666
|
+
function SOF_GenRemoteUnblockRequest() {
|
|
1667
|
+
var request = token.SOF_GenRemoteUnblockRequest();
|
|
1668
|
+
if (request == null || request == "") {
|
|
1669
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_GET_REMOTEUNLOCKREQUEST_FAIL;
|
|
1670
|
+
return "";
|
|
1671
|
+
}
|
|
1672
|
+
|
|
1673
|
+
return request;
|
|
1674
|
+
}
|
|
1675
|
+
|
|
1676
|
+
function SOF_RemoteUnlockPIN(response) {
|
|
1677
|
+
var result = false;
|
|
1678
|
+
|
|
1679
|
+
if (null == response || response.length == 0) {
|
|
1680
|
+
LAST_ERRORSTRING = "解锁失败解:响应不能为空!";
|
|
1681
|
+
return false;
|
|
1682
|
+
}
|
|
1683
|
+
|
|
1684
|
+
result = token.SOF_RemoteUnblockPIN(response);
|
|
1685
|
+
if (result != 0) {
|
|
1686
|
+
LAST_ERRORSTRING = ERROR_MESSAGE_REMOTE_UNLOCK_FAIL;
|
|
1687
|
+
return false;
|
|
1688
|
+
} else {
|
|
1689
|
+
return true;
|
|
1690
|
+
}
|
|
1691
|
+
}
|
|
1692
|
+
|
|
1693
|
+
function add(x, y, base) {
|
|
1694
|
+
var z = [];
|
|
1695
|
+
var n = Math.max(x.length, y.length);
|
|
1696
|
+
var carry = 0;
|
|
1697
|
+
var i = 0;
|
|
1698
|
+
while (i < n || carry) {
|
|
1699
|
+
var xi = i < x.length ? x[i] : 0;
|
|
1700
|
+
var yi = i < y.length ? y[i] : 0;
|
|
1701
|
+
var zi = carry + xi + yi;
|
|
1702
|
+
z.push(zi % base);
|
|
1703
|
+
carry = Math.floor(zi / base);
|
|
1704
|
+
i++;
|
|
1705
|
+
}
|
|
1706
|
+
return z;
|
|
1707
|
+
}
|
|
1708
|
+
|
|
1709
|
+
function multiplyByNumber(num, x, base) {
|
|
1710
|
+
if (num < 0) return null;
|
|
1711
|
+
if (num == 0) return [];
|
|
1712
|
+
|
|
1713
|
+
var result = [];
|
|
1714
|
+
var power = x;
|
|
1715
|
+
while (true) {
|
|
1716
|
+
if (num & 1) {
|
|
1717
|
+
result = add(result, power, base);
|
|
1718
|
+
}
|
|
1719
|
+
num = num >> 1;
|
|
1720
|
+
if (num === 0) break;
|
|
1721
|
+
power = add(power, power, base);
|
|
1722
|
+
}
|
|
1723
|
+
|
|
1724
|
+
return result;
|
|
1725
|
+
}
|
|
1726
|
+
|
|
1727
|
+
function parseToDigitsArray(str, base) {
|
|
1728
|
+
var digits = str.split('');
|
|
1729
|
+
var ary = [];
|
|
1730
|
+
for (var i = digits.length - 1; i >= 0; i--) {
|
|
1731
|
+
var n = parseInt(digits[i], base);
|
|
1732
|
+
if (isNaN(n)) return null;
|
|
1733
|
+
ary.push(n);
|
|
1734
|
+
}
|
|
1735
|
+
return ary;
|
|
1736
|
+
}
|
|
1737
|
+
|
|
1738
|
+
|
|
1739
|
+
function convertBase(str, fromBase, toBase) {
|
|
1740
|
+
var digits = parseToDigitsArray(str, fromBase);
|
|
1741
|
+
if (digits === null) return null;
|
|
1742
|
+
|
|
1743
|
+
var outArray = [];
|
|
1744
|
+
var power = [1];
|
|
1745
|
+
for (var i = 0; i < digits.length; i++) {
|
|
1746
|
+
// invariant: at this point, fromBase^i = power
|
|
1747
|
+
if (digits[i]) {
|
|
1748
|
+
outArray = add(outArray, multiplyByNumber(digits[i], power, toBase), toBase);
|
|
1749
|
+
}
|
|
1750
|
+
power = multiplyByNumber(fromBase, power, toBase);
|
|
1751
|
+
}
|
|
1752
|
+
|
|
1753
|
+
var out = '';
|
|
1754
|
+
for (var i = outArray.length - 1; i >= 0; i--) {
|
|
1755
|
+
out += outArray[i].toString(toBase);
|
|
1756
|
+
}
|
|
1757
|
+
return out;
|
|
1758
|
+
}
|
|
1759
|
+
|
|
1760
|
+
function decToHex(decStr) {
|
|
1761
|
+
var hex = convertBase(decStr, 10, 16);
|
|
1762
|
+
return hex ? '0x' + hex : null;
|
|
1763
|
+
}
|
|
1764
|
+
|
|
1765
|
+
|
|
1766
|
+
function hexToDec(hexStr) {
|
|
1767
|
+
if (hexStr.substring(0, 2) === '0x') hexStr = hexStr.substring(2);
|
|
1768
|
+
hexStr = hexStr.toLowerCase();
|
|
1769
|
+
return convertBase(hexStr, 16, 10);
|
|
1770
|
+
}
|
|
1771
|
+
}
|
|
1772
|
+
|
|
1773
|
+
/*******************************************************
|
|
1774
|
+
*
|
|
1775
|
+
* 使用此JS脚本之前请先仔细阅读帮助文档!
|
|
1776
|
+
*
|
|
1777
|
+
* @author Fuly
|
|
1778
|
+
* @version 3.2.3
|
|
1779
|
+
* @date 2020/12/23
|
|
1780
|
+
*
|
|
1781
|
+
**********************************************************/
|
|
1782
|
+
|
|
1783
|
+
|
|
1784
|
+
|
|
1785
|
+
var split;
|
|
1786
|
+
|
|
1787
|
+
// Avoid running twice; that would break the `nativeSplit` reference
|
|
1788
|
+
split = split || function (undef) {
|
|
1789
|
+
|
|
1790
|
+
var nativeSplit = String.prototype.split,
|
|
1791
|
+
compliantExecNpcg = /()??/.exec("")[1] === undef, // NPCG: nonparticipating capturing group
|
|
1792
|
+
self;
|
|
1793
|
+
|
|
1794
|
+
self = function (str, separator, limit) {
|
|
1795
|
+
// If `separator` is not a regex, use `nativeSplit`
|
|
1796
|
+
if (Object.prototype.toString.call(separator) !== "[object RegExp]") {
|
|
1797
|
+
return nativeSplit.call(str, separator, limit);
|
|
1798
|
+
}
|
|
1799
|
+
var output = [],
|
|
1800
|
+
flags = (separator.ignoreCase ? "i" : "") +
|
|
1801
|
+
(separator.multiline ? "m" : "") +
|
|
1802
|
+
(separator.extended ? "x" : "") + // Proposed for ES6
|
|
1803
|
+
(separator.sticky ? "y" : ""), // Firefox 3+
|
|
1804
|
+
lastLastIndex = 0,
|
|
1805
|
+
// Make `global` and avoid `lastIndex` issues by working with a copy
|
|
1806
|
+
separator = new RegExp(separator.source, flags + "g"),
|
|
1807
|
+
separator2, match, lastIndex, lastLength;
|
|
1808
|
+
str += ""; // Type-convert
|
|
1809
|
+
if (!compliantExecNpcg) {
|
|
1810
|
+
// Doesn't need flags gy, but they don't hurt
|
|
1811
|
+
separator2 = new RegExp("^" + separator.source + "$(?!\\s)", flags);
|
|
1812
|
+
}
|
|
1813
|
+
/* Values for `limit`, per the spec:
|
|
1814
|
+
* If undefined: 4294967295 // Math.pow(2, 32) - 1
|
|
1815
|
+
* If 0, Infinity, or NaN: 0
|
|
1816
|
+
* If positive number: limit = Math.floor(limit); if (limit > 4294967295) limit -= 4294967296;
|
|
1817
|
+
* If negative number: 4294967296 - Math.floor(Math.abs(limit))
|
|
1818
|
+
* If other: Type-convert, then use the above rules
|
|
1819
|
+
*/
|
|
1820
|
+
limit = limit === undef ?
|
|
1821
|
+
-1 >>> 0 : // Math.pow(2, 32) - 1
|
|
1822
|
+
limit >>> 0; // ToUint32(limit)
|
|
1823
|
+
while (match = separator.exec(str)) {
|
|
1824
|
+
// `separator.lastIndex` is not reliable cross-browser
|
|
1825
|
+
lastIndex = match.index + match[0].length;
|
|
1826
|
+
if (lastIndex > lastLastIndex) {
|
|
1827
|
+
output.push(str.slice(lastLastIndex, match.index));
|
|
1828
|
+
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
|
1829
|
+
// nonparticipating capturing groups
|
|
1830
|
+
if (!compliantExecNpcg && match.length > 1) {
|
|
1831
|
+
match[0].replace(separator2, function () {
|
|
1832
|
+
for (var i = 1; i < arguments.length - 2; i++) {
|
|
1833
|
+
if (arguments[i] === undef) {
|
|
1834
|
+
match[i] = undef;
|
|
1835
|
+
}
|
|
1836
|
+
}
|
|
1837
|
+
});
|
|
1838
|
+
}
|
|
1839
|
+
if (match.length > 1 && match.index < str.length) {
|
|
1840
|
+
Array.prototype.push.apply(output, match.slice(1));
|
|
1841
|
+
}
|
|
1842
|
+
lastLength = match[0].length;
|
|
1843
|
+
lastLastIndex = lastIndex;
|
|
1844
|
+
if (output.length >= limit) {
|
|
1845
|
+
break;
|
|
1846
|
+
}
|
|
1847
|
+
}
|
|
1848
|
+
if (separator.lastIndex === match.index) {
|
|
1849
|
+
separator.lastIndex++; // Avoid an infinite loop
|
|
1850
|
+
}
|
|
1851
|
+
}
|
|
1852
|
+
if (lastLastIndex === str.length) {
|
|
1853
|
+
if (lastLength || !separator.test("")) {
|
|
1854
|
+
output.push("");
|
|
1855
|
+
}
|
|
1856
|
+
} else {
|
|
1857
|
+
output.push(str.slice(lastLastIndex));
|
|
1858
|
+
}
|
|
1859
|
+
return output.length > limit ? output.slice(0, limit) : output;
|
|
1860
|
+
};
|
|
1861
|
+
|
|
1862
|
+
// For convenience
|
|
1863
|
+
String.prototype.split = function (separator, limit) {
|
|
1864
|
+
return self(this, separator, limit);
|
|
1865
|
+
};
|
|
1866
|
+
|
|
1867
|
+
return self;
|
|
1868
|
+
|
|
1869
|
+
}();
|
|
1870
|
+
|
|
1871
|
+
|
|
1872
|
+
function mToken(obj) {
|
|
1873
|
+
this.obj = obj;
|
|
1874
|
+
|
|
1875
|
+
this.SAR_OK = 0;
|
|
1876
|
+
this.SAR_FALSE = 1;
|
|
1877
|
+
|
|
1878
|
+
//分组加密算法标识
|
|
1879
|
+
this.SGD_SM1_ECB = 0x00000101;
|
|
1880
|
+
this.SGD_SM1_CBC = 0x00000102;
|
|
1881
|
+
this.SGD_SM1_CFB = 0x00000104;
|
|
1882
|
+
this.SGD_SM1_OFB = 0x00000108;
|
|
1883
|
+
this.SGD_SM1_MAC = 0x00000110;
|
|
1884
|
+
this.SGD_SSF33_ECB = 0x00000201;
|
|
1885
|
+
this.SGD_SSF33_CBC = 0x00000202;
|
|
1886
|
+
this.SGD_SSF33_CFB = 0x00000204;
|
|
1887
|
+
this.SGD_SSF33_OFB = 0x00000208;
|
|
1888
|
+
this.SGD_SSF33_MAC = 0x00000210;
|
|
1889
|
+
this.SGD_SM4_ECB = 0x00000401;
|
|
1890
|
+
this.SGD_SM4_CBC = 0x00000402;
|
|
1891
|
+
this.SGD_SM4_CFB = 0x00000404;
|
|
1892
|
+
this.SGD_SM4_OFB = 0x00000408;
|
|
1893
|
+
this.SGD_SM4_MAC = 0x00000410;
|
|
1894
|
+
|
|
1895
|
+
this.SGD_VENDOR_DEFINED = 0x80000000;
|
|
1896
|
+
this.SGD_DES_ECB = this.SGD_VENDOR_DEFINED + 0x00000211
|
|
1897
|
+
this.SGD_DES_CBC = this.SGD_VENDOR_DEFINED + 0x00000212
|
|
1898
|
+
|
|
1899
|
+
this.SGD_3DES168_ECB = this.SGD_VENDOR_DEFINED + 0x00000241
|
|
1900
|
+
this.SGD_3DES168_CBC = this.SGD_VENDOR_DEFINED + 0x00000242
|
|
1901
|
+
|
|
1902
|
+
this.SGD_3DES112_ECB = this.SGD_VENDOR_DEFINED + 0x00000221
|
|
1903
|
+
this.SGD_3DES112_CBC = this.SGD_VENDOR_DEFINED + 0x00000222
|
|
1904
|
+
|
|
1905
|
+
this.SGD_AES128_ECB = this.SGD_VENDOR_DEFINED + 0x00000111
|
|
1906
|
+
this.SGD_AES128_CBC = this.SGD_VENDOR_DEFINED + 0x00000112
|
|
1907
|
+
|
|
1908
|
+
this.SGD_AES192_ECB = this.SGD_VENDOR_DEFINED + 0x00000121
|
|
1909
|
+
this.SGD_AES192_CBC = this.SGD_VENDOR_DEFINED + 0x00000122
|
|
1910
|
+
|
|
1911
|
+
this.SGD_AES256_ECB = this.SGD_VENDOR_DEFINED + 0x00000141
|
|
1912
|
+
this.SGD_AES256_CBC = this.SGD_VENDOR_DEFINED + 0x00000142
|
|
1913
|
+
|
|
1914
|
+
|
|
1915
|
+
//非对称密码算法标识
|
|
1916
|
+
this.SGD_RSA = 0x00010000;
|
|
1917
|
+
this.SGD_SM2_1 = 0x00020100; //ECC签名
|
|
1918
|
+
this.SGD_SM2_2 = 0x00020200; //ECC密钥交换
|
|
1919
|
+
this.SGD_SM2_3 = 0x00020400; //ECC加密
|
|
1920
|
+
|
|
1921
|
+
//密码杂凑算法标识
|
|
1922
|
+
this.SGD_SM3 = 0x00000001;
|
|
1923
|
+
this.SGD_SHA1 = 0x00000002;
|
|
1924
|
+
this.SGD_SHA256 = 0x00000004;
|
|
1925
|
+
this.SGD_RAW = 0x00000080;
|
|
1926
|
+
this.SGD_MD5 = 0x00000081;
|
|
1927
|
+
this.SGD_SHA384 = 0x00000082;
|
|
1928
|
+
this.SGD_SHA512 = 0x00000083;
|
|
1929
|
+
|
|
1930
|
+
|
|
1931
|
+
this.SGD_CERT_VERSION = 0x00000001;
|
|
1932
|
+
this.SGD_CERT_SERIAL = 0x00000002;
|
|
1933
|
+
this.SGD_CERT_ISSUE = 0x00000005;
|
|
1934
|
+
this.SGD_CERT_VALID_TIME = 0x00000006;
|
|
1935
|
+
this.SGD_CERT_SUBJECT = 0x00000007;
|
|
1936
|
+
this.SGD_CERT_DER_PUBLIC_KEY = 0x00000008;
|
|
1937
|
+
this.SGD_CERT_DER_EXTENSIONS = 0x00000009;
|
|
1938
|
+
this.SGD_CERT_NOT_BEFORE = 0x00000010;
|
|
1939
|
+
this.SGD_CERT_ISSUER_CN = 0x00000021;
|
|
1940
|
+
this.SGD_CERT_ISSUER_O = 0x00000022;
|
|
1941
|
+
this.SGD_CERT_ISSUER_OU = 0x00000023;
|
|
1942
|
+
this.SGD_CERT_ISSUER_C = 0x00000024;
|
|
1943
|
+
this.SGD_CERT_ISSUER_P = 0x00000025;
|
|
1944
|
+
this.SGD_CERT_ISSUER_L = 0x00000026;
|
|
1945
|
+
this.SGD_CERT_ISSUER_S = 0x00000027;
|
|
1946
|
+
this.SGD_CERT_ISSUER_EMAIL = 0x00000028;
|
|
1947
|
+
|
|
1948
|
+
this.SGD_CERT_SUBJECT_CN = 0x00000031;
|
|
1949
|
+
this.SGD_CERT_SUBJECT_O = 0x00000032;
|
|
1950
|
+
this.SGD_CERT_SUBJECT_OU = 0x00000033;
|
|
1951
|
+
this.SGD_CERT_SUBJECT_EMALL = 0x00000034;
|
|
1952
|
+
this.SGD_REMAIN_TIME = 0x00000035;
|
|
1953
|
+
this.SGD_SIGNATURE_ALG = 0x00000036;
|
|
1954
|
+
this.SGD_CERT_SUBJECT_C = 0x00000037;
|
|
1955
|
+
this.SGD_CERT_SUBJECT_P = 0x00000038;
|
|
1956
|
+
this.SGD_CERT_SUBJECT_L = 0x00000039;
|
|
1957
|
+
this.SGD_CERT_SUBJECT_S = 0x0000003A;
|
|
1958
|
+
|
|
1959
|
+
this.SGD_CERT_CRL = 0x00000041;
|
|
1960
|
+
|
|
1961
|
+
|
|
1962
|
+
this.SGD_DEVICE_SORT = 0x00000201;
|
|
1963
|
+
this.SGD_DEVICE_TYPE = 0x00000202;
|
|
1964
|
+
this.SGD_DEVICE_NAME = 0x00000203;
|
|
1965
|
+
this.SGD_DEVICE_MANUFACTURER = 0x00000204;
|
|
1966
|
+
this.SGD_DEVICE_HARDWARE_VERSION = 0x00000205;
|
|
1967
|
+
this.SGD_DEVICE_SOFTWARE_VERSION = 0x00000206;
|
|
1968
|
+
this.SGD_DEVICE_STANDARD_VERSION = 0x00000207;
|
|
1969
|
+
this.SGD_DEVICE_SERIAL_NUMBER = 0x00000208;
|
|
1970
|
+
this.SGD_DEVICE_SUPPORT_SYM_ALG = 0x00000209;
|
|
1971
|
+
this.SGD_DEVICE_SUPPORT_ASYM_ALG = 0x0000020A;
|
|
1972
|
+
this.SGD_DEVICE_SUPPORT_HASH_ALG = 0x0000020B;
|
|
1973
|
+
this.SGD_DEVICE_SUPPORT_STORANGE_SPACE = 0x0000020C;
|
|
1974
|
+
this.SGD_DEVICE_SUPPORT_FREE_SAPCE = 0x0000020D;
|
|
1975
|
+
this.SGD_DEVICE_RUNTIME = 0x0000020E;
|
|
1976
|
+
this.SGD_DEVICE_USED_TIMES = 0x0000020F;
|
|
1977
|
+
this.SGD_DEVICE_LOCATION = 0x00000210;
|
|
1978
|
+
this.SGD_DEVICE_DESCRIPTION = 0x00000211;
|
|
1979
|
+
this.SGD_DEVICE_MANAGER_INFO = 0x00000212;
|
|
1980
|
+
this.SGD_DEVICE_MAX_DATA_SIZE = 0x00000213;
|
|
1981
|
+
|
|
1982
|
+
this.TRUE = 1;
|
|
1983
|
+
this.FALSE = 0;
|
|
1984
|
+
|
|
1985
|
+
this.GM3000 = 1;
|
|
1986
|
+
this.K5 = 3;
|
|
1987
|
+
this.TF = 4;
|
|
1988
|
+
this.HT = 5;
|
|
1989
|
+
this.SJK1137 = 2;
|
|
1990
|
+
|
|
1991
|
+
this.TYPE_UKEY = 1; //普通UKEY
|
|
1992
|
+
this.TYPE_FPKEY = 2; //指纹UKEY
|
|
1993
|
+
|
|
1994
|
+
var g_mTokenPlugin = null;
|
|
1995
|
+
var g_deviceNames = null;
|
|
1996
|
+
|
|
1997
|
+
|
|
1998
|
+
this.SOF_GetLastError = function () {
|
|
1999
|
+
if (g_mTokenPlugin == null) {
|
|
2000
|
+
return -1;
|
|
2001
|
+
}
|
|
2002
|
+
|
|
2003
|
+
return g_mTokenPlugin.SOF_GetLastError();
|
|
2004
|
+
}
|
|
2005
|
+
|
|
2006
|
+
function isIe() {
|
|
2007
|
+
return ("ActiveXObject" in window);
|
|
2008
|
+
}
|
|
2009
|
+
|
|
2010
|
+
function isMobile() {
|
|
2011
|
+
var browser = {
|
|
2012
|
+
versions: function () {
|
|
2013
|
+
var u = navigator.userAgent, app = navigator.appVersion;
|
|
2014
|
+
return {//移动终端浏览器版本信息
|
|
2015
|
+
trident: u.indexOf('Trident') > -1, //IE内核
|
|
2016
|
+
presto: u.indexOf('Presto') > -1, //opera内核
|
|
2017
|
+
webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
|
|
2018
|
+
gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
|
|
2019
|
+
mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
|
|
2020
|
+
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
|
|
2021
|
+
android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器
|
|
2022
|
+
iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器
|
|
2023
|
+
iPad: u.indexOf('iPad') > -1, //是否iPad
|
|
2024
|
+
webApp: u.indexOf('Safari') == -1
|
|
2025
|
+
//是否web应该程序,没有头部与底部
|
|
2026
|
+
};
|
|
2027
|
+
}(),
|
|
2028
|
+
language: (navigator.browserLanguage || navigator.language).toLowerCase()
|
|
2029
|
+
}
|
|
2030
|
+
|
|
2031
|
+
if ((browser.versions.mobile) && (browser.versions.ios || browser.versions.android || browser.versions.iPhone || browser.versions.iPad)) {
|
|
2032
|
+
return true;
|
|
2033
|
+
}
|
|
2034
|
+
else {
|
|
2035
|
+
return false;
|
|
2036
|
+
}
|
|
2037
|
+
}
|
|
2038
|
+
|
|
2039
|
+
this.SOF_LoadLibrary = function (type) {
|
|
2040
|
+
os = check_os();
|
|
2041
|
+
var ret;
|
|
2042
|
+
if (g_mTokenPlugin == null) {
|
|
2043
|
+
g_mTokenPlugin = new mTokenPlugin();
|
|
2044
|
+
}
|
|
2045
|
+
|
|
2046
|
+
if (type == this.GM3000) {
|
|
2047
|
+
if (isMobile()) {
|
|
2048
|
+
ret = g_mTokenPlugin.SOF_LoadLibrary("1", "mToken OTG", "com.longmai.security.plugin.driver.otg.OTGDriver");
|
|
2049
|
+
}
|
|
2050
|
+
else {
|
|
2051
|
+
ret = g_mTokenPlugin.SOF_LoadLibrary("mtoken_gm3000_hnca.dll", "libgm3000.1.0.so", "libgm3000.1.0.dylib");
|
|
2052
|
+
}
|
|
2053
|
+
}
|
|
2054
|
+
else if(type == this.SJK1137){
|
|
2055
|
+
ret = g_mTokenPlugin.SOF_LoadLibrary("SKF_APP.dll", "libhunca_hsic_skf.so", "libhunca_hsic_skf.dylib");
|
|
2056
|
+
}
|
|
2057
|
+
else if(type == this.HT) {
|
|
2058
|
+
ret = g_mTokenPlugin.SOF_LoadLibrary("HUNCA_HT_20522_SKF.dll", "libhunca_ht_h2070f63_skf.so", "libhunca_ht_h2070f63_skf.dylib");
|
|
2059
|
+
}
|
|
2060
|
+
else if (type == this.K5) {
|
|
2061
|
+
if (isMobile()) {
|
|
2062
|
+
ret = g_mTokenPlugin.SOF_LoadLibrary("2", "mToken K5 Bluetooth", "com.longmai.security.plugin.driver.ble.BLEDriver");
|
|
2063
|
+
}
|
|
2064
|
+
else {
|
|
2065
|
+
ret = g_mTokenPlugin.SOF_LoadLibrary("mtoken_k5.dll", "libgm3000.1.0.so", "libk5.1.0.dylib");
|
|
2066
|
+
}
|
|
2067
|
+
}
|
|
2068
|
+
else if (type == this.TF) {
|
|
2069
|
+
if (isMobile()) {
|
|
2070
|
+
ret = g_mTokenPlugin.SOF_LoadLibrary("0", "mToken TF/SD Card", "com.longmai.security.plugin.driver.tf.TFDriver");
|
|
2071
|
+
} else {
|
|
2072
|
+
ret = g_mTokenPlugin.SOF_LoadLibrary("mtoken_tf.dll", "libgm3000.1.0.so", "libtf.dylib");;
|
|
2073
|
+
}
|
|
2074
|
+
}
|
|
2075
|
+
else {
|
|
2076
|
+
return -1;
|
|
2077
|
+
}
|
|
2078
|
+
|
|
2079
|
+
if (ret != 0) {
|
|
2080
|
+
return -2;
|
|
2081
|
+
}
|
|
2082
|
+
return this.SAR_OK;
|
|
2083
|
+
};
|
|
2084
|
+
|
|
2085
|
+
|
|
2086
|
+
this.SOF_EnumDevice = function () {
|
|
2087
|
+
if (g_mTokenPlugin == null) {
|
|
2088
|
+
return null;
|
|
2089
|
+
}
|
|
2090
|
+
|
|
2091
|
+
var array = g_mTokenPlugin.SOF_EnumDevice();
|
|
2092
|
+
if (array == null || array.length <= 0) {
|
|
2093
|
+
return null;
|
|
2094
|
+
}
|
|
2095
|
+
|
|
2096
|
+
return array.split("||");
|
|
2097
|
+
|
|
2098
|
+
};
|
|
2099
|
+
|
|
2100
|
+
|
|
2101
|
+
this.SOF_GetVersion = function () {
|
|
2102
|
+
if (g_mTokenPlugin == null) {
|
|
2103
|
+
return null;
|
|
2104
|
+
}
|
|
2105
|
+
|
|
2106
|
+
return g_mTokenPlugin.SOF_GetVersion();
|
|
2107
|
+
};
|
|
2108
|
+
|
|
2109
|
+
|
|
2110
|
+
this.SOF_GetDeviceInstance = function (DeviceName, ApplicationName) {
|
|
2111
|
+
if (g_mTokenPlugin == null) {
|
|
2112
|
+
return -1;
|
|
2113
|
+
}
|
|
2114
|
+
|
|
2115
|
+
return g_mTokenPlugin.SOF_GetDeviceInstance(DeviceName, ApplicationName);
|
|
2116
|
+
};
|
|
2117
|
+
|
|
2118
|
+
this.SOF_ReleaseDeviceInstance = function () {
|
|
2119
|
+
if (g_mTokenPlugin == null) {
|
|
2120
|
+
return -1;
|
|
2121
|
+
}
|
|
2122
|
+
|
|
2123
|
+
return g_mTokenPlugin.SOF_ReleaseDeviceInstance()
|
|
2124
|
+
}
|
|
2125
|
+
|
|
2126
|
+
|
|
2127
|
+
this.SOF_GetUserList = function () {
|
|
2128
|
+
if (g_mTokenPlugin == null) {
|
|
2129
|
+
return null;
|
|
2130
|
+
}
|
|
2131
|
+
|
|
2132
|
+
var array = g_mTokenPlugin.SOF_GetUserList();
|
|
2133
|
+
if (array == null || array.length <= 0)
|
|
2134
|
+
return null;
|
|
2135
|
+
|
|
2136
|
+
var list = new Array();
|
|
2137
|
+
var user = array.split("&&&");
|
|
2138
|
+
var length = user.length;
|
|
2139
|
+
for (var i = 0; i < length; i++) {
|
|
2140
|
+
list[i] = user[i].split("||");
|
|
2141
|
+
}
|
|
2142
|
+
|
|
2143
|
+
return list;
|
|
2144
|
+
};
|
|
2145
|
+
|
|
2146
|
+
|
|
2147
|
+
this.SOF_ExportUserCert = function (ContainerName, KeySpec) {
|
|
2148
|
+
if (g_mTokenPlugin == null) {
|
|
2149
|
+
return null;
|
|
2150
|
+
}
|
|
2151
|
+
|
|
2152
|
+
return g_mTokenPlugin.SOF_ExportUserCert(ContainerName, KeySpec);
|
|
2153
|
+
};
|
|
2154
|
+
|
|
2155
|
+
|
|
2156
|
+
this.SOF_GetDeviceInfo = function (Type) {
|
|
2157
|
+
if (g_mTokenPlugin == null) {
|
|
2158
|
+
return null;
|
|
2159
|
+
}
|
|
2160
|
+
|
|
2161
|
+
return g_mTokenPlugin.SOF_GetDeviceInfo(Type);
|
|
2162
|
+
};
|
|
2163
|
+
|
|
2164
|
+
|
|
2165
|
+
this.SOF_GetCertInfo = function (Base64EncodeCert, Type) {
|
|
2166
|
+
if (g_mTokenPlugin == null) {
|
|
2167
|
+
return null;
|
|
2168
|
+
}
|
|
2169
|
+
|
|
2170
|
+
return g_mTokenPlugin.SOF_GetCertInfo(Base64EncodeCert, Type);
|
|
2171
|
+
};
|
|
2172
|
+
|
|
2173
|
+
this.SOF_GetCertInfoByOid = function (Base64EncodeCert, OID) {
|
|
2174
|
+
if (g_mTokenPlugin == null) {
|
|
2175
|
+
return null;
|
|
2176
|
+
}
|
|
2177
|
+
|
|
2178
|
+
return g_mTokenPlugin.SOF_GetCertInfoByOid(Base64EncodeCert, OID);
|
|
2179
|
+
}
|
|
2180
|
+
|
|
2181
|
+
this.SOF_Login = function (PassWd) {
|
|
2182
|
+
if (g_mTokenPlugin == null) {
|
|
2183
|
+
return -1;
|
|
2184
|
+
}
|
|
2185
|
+
|
|
2186
|
+
return g_mTokenPlugin.SOF_Login(PassWd);
|
|
2187
|
+
};
|
|
2188
|
+
|
|
2189
|
+
|
|
2190
|
+
this.SOF_LogOut = function () {
|
|
2191
|
+
if (g_mTokenPlugin == null) {
|
|
2192
|
+
return -1;
|
|
2193
|
+
}
|
|
2194
|
+
|
|
2195
|
+
return g_mTokenPlugin.SOF_LogOut();
|
|
2196
|
+
};
|
|
2197
|
+
|
|
2198
|
+
|
|
2199
|
+
this.SOF_GetPinRetryCount = function () {
|
|
2200
|
+
if (g_mTokenPlugin == null) {
|
|
2201
|
+
return -1;
|
|
2202
|
+
}
|
|
2203
|
+
|
|
2204
|
+
return g_mTokenPlugin.SOF_GetPinRetryCount();
|
|
2205
|
+
};
|
|
2206
|
+
|
|
2207
|
+
|
|
2208
|
+
this.SOF_ChangePassWd = function (OldPassWd, NewPassWd) {
|
|
2209
|
+
if (g_mTokenPlugin == null) {
|
|
2210
|
+
return -1;
|
|
2211
|
+
}
|
|
2212
|
+
|
|
2213
|
+
return g_mTokenPlugin.SOF_ChangePassWd(OldPassWd, NewPassWd);
|
|
2214
|
+
};
|
|
2215
|
+
|
|
2216
|
+
|
|
2217
|
+
this.SOF_SetDigestMethod = function (DigestMethod) {
|
|
2218
|
+
if (g_mTokenPlugin == null) {
|
|
2219
|
+
return -1;
|
|
2220
|
+
}
|
|
2221
|
+
|
|
2222
|
+
return g_mTokenPlugin.SOF_SetDigestMethod(DigestMethod);
|
|
2223
|
+
};
|
|
2224
|
+
|
|
2225
|
+
|
|
2226
|
+
this.SOF_SetUserID = function (UserID) {
|
|
2227
|
+
if (g_mTokenPlugin == null) {
|
|
2228
|
+
return -1;
|
|
2229
|
+
}
|
|
2230
|
+
|
|
2231
|
+
return g_mTokenPlugin.SOF_SetUserID(UserID);
|
|
2232
|
+
};
|
|
2233
|
+
|
|
2234
|
+
|
|
2235
|
+
this.SOF_SetEncryptMethodAndIV = function (EncryptMethod, EncryptIV) {
|
|
2236
|
+
if (g_mTokenPlugin == null) {
|
|
2237
|
+
return -1;
|
|
2238
|
+
}
|
|
2239
|
+
|
|
2240
|
+
return g_mTokenPlugin.SOF_SetEncryptMethodAndIV(EncryptMethod, EncryptIV);
|
|
2241
|
+
};
|
|
2242
|
+
|
|
2243
|
+
|
|
2244
|
+
this.SOF_EncryptFileToPKCS7 = function (Cert, InFile, OutFile, type) {
|
|
2245
|
+
if (g_mTokenPlugin == null) {
|
|
2246
|
+
return -1;
|
|
2247
|
+
}
|
|
2248
|
+
|
|
2249
|
+
return g_mTokenPlugin.SOF_EncryptFileToPKCS7(Cert, InFile, OutFile, type);
|
|
2250
|
+
};
|
|
2251
|
+
|
|
2252
|
+
|
|
2253
|
+
this.SOF_SignFileToPKCS7 = function (ContainerName, InFile, OutFile) {
|
|
2254
|
+
if (g_mTokenPlugin == null) {
|
|
2255
|
+
return -1;
|
|
2256
|
+
}
|
|
2257
|
+
|
|
2258
|
+
return g_mTokenPlugin.SOF_SignFileToPKCS7(ContainerName, InFile, OutFile);
|
|
2259
|
+
};
|
|
2260
|
+
|
|
2261
|
+
this.SOF_VerifyFileToPKCS7 = function (strPkcs7Data, InFilePath) {
|
|
2262
|
+
if (g_mTokenPlugin == null) {
|
|
2263
|
+
return -1;
|
|
2264
|
+
}
|
|
2265
|
+
|
|
2266
|
+
return g_mTokenPlugin.SOF_VerifyFileToPKCS7(strPkcs7Data, InFilePath);
|
|
2267
|
+
};
|
|
2268
|
+
|
|
2269
|
+
this.SOF_DecryptFileToPKCS7 = function (ContainerName, keySpec, Pkcs7Data, InFile, OutFile, type) {
|
|
2270
|
+
if (g_mTokenPlugin == null) {
|
|
2271
|
+
return -1;
|
|
2272
|
+
}
|
|
2273
|
+
|
|
2274
|
+
return g_mTokenPlugin.SOF_DecryptFileToPKCS7(ContainerName, keySpec, Pkcs7Data, InFile, OutFile, type);
|
|
2275
|
+
};
|
|
2276
|
+
|
|
2277
|
+
this.SOF_DigestData = function (ContainerName, nData, InDataLen) {
|
|
2278
|
+
if (g_mTokenPlugin == null) {
|
|
2279
|
+
return null;
|
|
2280
|
+
}
|
|
2281
|
+
|
|
2282
|
+
return g_mTokenPlugin.SOF_DigestData(ContainerName, nData, InDataLen);
|
|
2283
|
+
};
|
|
2284
|
+
|
|
2285
|
+
this.SOF_SignData = function (ContainerName, ulKeySpec, InData, InDataLen) {
|
|
2286
|
+
if (g_mTokenPlugin == null) {
|
|
2287
|
+
return null;
|
|
2288
|
+
}
|
|
2289
|
+
|
|
2290
|
+
return g_mTokenPlugin.SOF_SignData(ContainerName, ulKeySpec, InData, InDataLen);
|
|
2291
|
+
};
|
|
2292
|
+
//交互式签名
|
|
2293
|
+
this.SOF_SignDataInteractive = function (ContainerName, ulKeySpec, InData, InDataLen) {
|
|
2294
|
+
if (g_mTokenPlugin == null) {
|
|
2295
|
+
return null;
|
|
2296
|
+
}
|
|
2297
|
+
|
|
2298
|
+
return g_mTokenPlugin.SOF_SignDataInteractive(ContainerName, ulKeySpec, InData, InDataLen);
|
|
2299
|
+
}
|
|
2300
|
+
|
|
2301
|
+
|
|
2302
|
+
this.SOF_SignDataToPKCS7 = function (ContainerName, ulKeySpec, InData, ulDetached) {
|
|
2303
|
+
if (g_mTokenPlugin == null) {
|
|
2304
|
+
return null;
|
|
2305
|
+
}
|
|
2306
|
+
|
|
2307
|
+
return g_mTokenPlugin.SOF_SignDataToPKCS7(ContainerName, ulKeySpec, InData, ulDetached);
|
|
2308
|
+
};
|
|
2309
|
+
|
|
2310
|
+
|
|
2311
|
+
|
|
2312
|
+
this.SOF_VerifyDataToPKCS7 = function (Base64EncodeCert, InData, SignedValue) {
|
|
2313
|
+
if (g_mTokenPlugin == null) {
|
|
2314
|
+
return -1;
|
|
2315
|
+
}
|
|
2316
|
+
|
|
2317
|
+
return g_mTokenPlugin.SOF_VerifyDataToPKCS7(Base64EncodeCert, InData, SignedValue);
|
|
2318
|
+
};
|
|
2319
|
+
|
|
2320
|
+
|
|
2321
|
+
this.SOF_VerifySignedData = function (Base64EncodeCert, digestMethod, InData, SignedValue) {
|
|
2322
|
+
if (g_mTokenPlugin == null) {
|
|
2323
|
+
return -1;
|
|
2324
|
+
}
|
|
2325
|
+
|
|
2326
|
+
return g_mTokenPlugin.SOF_VerifySignedData(Base64EncodeCert, digestMethod, InData, SignedValue);
|
|
2327
|
+
};
|
|
2328
|
+
|
|
2329
|
+
|
|
2330
|
+
this.SOF_EncryptDataPKCS7 = function (Base64EncodeCert, InData, InDataLen) {
|
|
2331
|
+
if (g_mTokenPlugin == null) {
|
|
2332
|
+
return null;
|
|
2333
|
+
}
|
|
2334
|
+
|
|
2335
|
+
return g_mTokenPlugin.SOF_EncryptDataPKCS7(Base64EncodeCert, InData, InDataLen);
|
|
2336
|
+
};
|
|
2337
|
+
|
|
2338
|
+
|
|
2339
|
+
this.SOF_DecryptDataPKCS7 = function (ContainerName, ulKeySpec, InData) {
|
|
2340
|
+
if (g_mTokenPlugin == null) {
|
|
2341
|
+
return null;
|
|
2342
|
+
}
|
|
2343
|
+
|
|
2344
|
+
return g_mTokenPlugin.SOF_DecryptDataPKCS7(ContainerName, ulKeySpec, InData);
|
|
2345
|
+
};
|
|
2346
|
+
|
|
2347
|
+
|
|
2348
|
+
this.SOF_GenRemoteUnblockRequest = function () {
|
|
2349
|
+
if (g_mTokenPlugin == null) {
|
|
2350
|
+
return null;
|
|
2351
|
+
}
|
|
2352
|
+
|
|
2353
|
+
return g_mTokenPlugin.SOF_GenRemoteUnblockRequest();
|
|
2354
|
+
};
|
|
2355
|
+
|
|
2356
|
+
|
|
2357
|
+
this.SOF_GenResetpwdResponse = function (request, soPin, userPin) {
|
|
2358
|
+
if (g_mTokenPlugin == null) {
|
|
2359
|
+
return null;
|
|
2360
|
+
}
|
|
2361
|
+
|
|
2362
|
+
return g_mTokenPlugin.SOF_GenResetpwdResponse(request, soPin, userPin);
|
|
2363
|
+
};
|
|
2364
|
+
|
|
2365
|
+
|
|
2366
|
+
this.SOF_RemoteUnblockPIN = function (request) {
|
|
2367
|
+
if (g_mTokenPlugin == null) {
|
|
2368
|
+
return null;
|
|
2369
|
+
}
|
|
2370
|
+
|
|
2371
|
+
return g_mTokenPlugin.SOF_RemoteUnblockPIN(request);
|
|
2372
|
+
};
|
|
2373
|
+
|
|
2374
|
+
|
|
2375
|
+
this.SOF_SignDataToPKCS7 = function (ContainerName, ulKeySpec, InData, ulDetached) {
|
|
2376
|
+
if (g_mTokenPlugin == null) {
|
|
2377
|
+
return null;
|
|
2378
|
+
}
|
|
2379
|
+
|
|
2380
|
+
return g_mTokenPlugin.SOF_SignDataToPKCS7(ContainerName, ulKeySpec, InData, ulDetached);
|
|
2381
|
+
};
|
|
2382
|
+
|
|
2383
|
+
|
|
2384
|
+
this.SOF_VerifyDataToPKCS7 = function (strPkcs7Data, OriginalText, ulDetached) {
|
|
2385
|
+
if (g_mTokenPlugin == null) {
|
|
2386
|
+
return null;
|
|
2387
|
+
}
|
|
2388
|
+
|
|
2389
|
+
return g_mTokenPlugin.SOF_VerifyDataToPKCS7(strPkcs7Data, OriginalText, ulDetached);
|
|
2390
|
+
};
|
|
2391
|
+
|
|
2392
|
+
//按expType导出的公钥,格式为国密规范指定的格式或DER格式
|
|
2393
|
+
this.SOF_ExportPubKey = function (containerName, cerType, expType) {
|
|
2394
|
+
if (g_mTokenPlugin == null) {
|
|
2395
|
+
return null;
|
|
2396
|
+
}
|
|
2397
|
+
|
|
2398
|
+
return g_mTokenPlugin.SOF_ExportPubKey(containerName, cerType, expType);
|
|
2399
|
+
}
|
|
2400
|
+
|
|
2401
|
+
this.SOF_EncryptByPubKey = function (strPubKey, strInput, cerType) {
|
|
2402
|
+
if (g_mTokenPlugin == null) {
|
|
2403
|
+
return null;
|
|
2404
|
+
}
|
|
2405
|
+
|
|
2406
|
+
return g_mTokenPlugin.SOF_EncryptByPubKey(strPubKey, strInput, cerType);
|
|
2407
|
+
}
|
|
2408
|
+
|
|
2409
|
+
this.SOF_DecryptByPrvKey = function (containerName, cerType, strAsymCipher) {
|
|
2410
|
+
if (g_mTokenPlugin == null) {
|
|
2411
|
+
return null;
|
|
2412
|
+
}
|
|
2413
|
+
|
|
2414
|
+
return g_mTokenPlugin.SOF_DecryptByPrvKey(containerName, cerType, strAsymCipher);
|
|
2415
|
+
}
|
|
2416
|
+
|
|
2417
|
+
//RA客户端相关接口:P10及证书导入等
|
|
2418
|
+
this.SOF_GenerateP10Request = function(deviceName,container, dn, asymAlg, keySpec, keyLength)
|
|
2419
|
+
{
|
|
2420
|
+
if(g_mTokenPlugin == null)
|
|
2421
|
+
{
|
|
2422
|
+
return null;
|
|
2423
|
+
}
|
|
2424
|
+
|
|
2425
|
+
return g_mTokenPlugin.SOF_GenerateP10Request(deviceName,container, dn, asymAlg, keySpec, keyLength);
|
|
2426
|
+
}
|
|
2427
|
+
|
|
2428
|
+
this.SOF_EnumCertContiner = function () {
|
|
2429
|
+
if (g_mTokenPlugin == null) {
|
|
2430
|
+
return null;
|
|
2431
|
+
}
|
|
2432
|
+
|
|
2433
|
+
return g_mTokenPlugin.SOF_EnumCertContiner();
|
|
2434
|
+
}
|
|
2435
|
+
|
|
2436
|
+
this.SOF_FindContainer = function (certSN) {
|
|
2437
|
+
if (g_mTokenPlugin == null) {
|
|
2438
|
+
return null;
|
|
2439
|
+
}
|
|
2440
|
+
|
|
2441
|
+
return g_mTokenPlugin.SOF_FindContainer(certSN);
|
|
2442
|
+
}
|
|
2443
|
+
|
|
2444
|
+
this.SOF_DeleteCert = function (certSN) {
|
|
2445
|
+
if (g_mTokenPlugin == null) {
|
|
2446
|
+
return null;
|
|
2447
|
+
}
|
|
2448
|
+
|
|
2449
|
+
return g_mTokenPlugin.SOF_DeleteCert(certSN);
|
|
2450
|
+
}
|
|
2451
|
+
|
|
2452
|
+
this.SOF_DeleteContainer = function (certSN) {
|
|
2453
|
+
if (g_mTokenPlugin == null) {
|
|
2454
|
+
return null;
|
|
2455
|
+
}
|
|
2456
|
+
|
|
2457
|
+
return g_mTokenPlugin.SOF_DeleteContainer(certSN);
|
|
2458
|
+
}
|
|
2459
|
+
|
|
2460
|
+
this.SOF_SignByCert = function (certSN, plain) {
|
|
2461
|
+
if (g_mTokenPlugin == null) {
|
|
2462
|
+
return null;
|
|
2463
|
+
}
|
|
2464
|
+
|
|
2465
|
+
return g_mTokenPlugin.SOF_SignByCert(certSN, plain);
|
|
2466
|
+
}
|
|
2467
|
+
|
|
2468
|
+
this.SOF_VerifyByCert = function (certSN, plain, signature) {
|
|
2469
|
+
if (g_mTokenPlugin == null) {
|
|
2470
|
+
return null;
|
|
2471
|
+
}
|
|
2472
|
+
|
|
2473
|
+
return g_mTokenPlugin.SOF_VerifyByCert(certSN, plain, signature);
|
|
2474
|
+
}
|
|
2475
|
+
|
|
2476
|
+
|
|
2477
|
+
this.SOF_ImportCert = function (container, cert, keySpec) {
|
|
2478
|
+
if (g_mTokenPlugin == null) {
|
|
2479
|
+
return null;
|
|
2480
|
+
}
|
|
2481
|
+
|
|
2482
|
+
return g_mTokenPlugin.SOF_ImportCert(container, cert, keySpec);
|
|
2483
|
+
}
|
|
2484
|
+
|
|
2485
|
+
this.SOF_ImportCryptoCertAndKey = function (container, cert, nAsymAlg, EncryptedSessionKeyData, symAlg, EncryptedPrivateKeyData, mode) {
|
|
2486
|
+
if (g_mTokenPlugin == null) {
|
|
2487
|
+
return null;
|
|
2488
|
+
}
|
|
2489
|
+
|
|
2490
|
+
return g_mTokenPlugin.SOF_ImportCryptoCertAndKey(container, cert, nAsymAlg, EncryptedSessionKeyData, symAlg, EncryptedPrivateKeyData, mode);
|
|
2491
|
+
}
|
|
2492
|
+
|
|
2493
|
+
this.SOF_VerifyByExtCert = function (cert, plain, signature, digestMethod) {
|
|
2494
|
+
if (g_mTokenPlugin == null) {
|
|
2495
|
+
return null;
|
|
2496
|
+
}
|
|
2497
|
+
|
|
2498
|
+
return g_mTokenPlugin.SOF_VerifyByExtCert(cert, plain, signature, digestMethod);
|
|
2499
|
+
}
|
|
2500
|
+
|
|
2501
|
+
this.SOF_GenerateRandom = function (length) {
|
|
2502
|
+
if (g_mTokenPlugin == null) {
|
|
2503
|
+
return null;
|
|
2504
|
+
}
|
|
2505
|
+
|
|
2506
|
+
return g_mTokenPlugin.SOF_GenerateRandom(length);
|
|
2507
|
+
}
|
|
2508
|
+
|
|
2509
|
+
this.SOF_SymEncryptFile = function (sessionKey, srcfile, destfile, type) {
|
|
2510
|
+
if (g_mTokenPlugin == null) {
|
|
2511
|
+
return null;
|
|
2512
|
+
}
|
|
2513
|
+
|
|
2514
|
+
return g_mTokenPlugin.SOF_SymEncryptFile(sessionKey, srcfile, destfile, type);
|
|
2515
|
+
}
|
|
2516
|
+
|
|
2517
|
+
this.SOF_SymDecryptFile = function (sessionKey, srcfile, destfile, type) {
|
|
2518
|
+
if (g_mTokenPlugin == null) {
|
|
2519
|
+
return null;
|
|
2520
|
+
}
|
|
2521
|
+
|
|
2522
|
+
return g_mTokenPlugin.SOF_SymDecryptFile(sessionKey, srcfile, destfile, type);
|
|
2523
|
+
}
|
|
2524
|
+
|
|
2525
|
+
this.SOF_SymEncryptData = function (sessionKey, inData) {
|
|
2526
|
+
if (g_mTokenPlugin == null) {
|
|
2527
|
+
return null;
|
|
2528
|
+
}
|
|
2529
|
+
|
|
2530
|
+
return g_mTokenPlugin.SOF_SymEncryptData(sessionKey, inData);
|
|
2531
|
+
}
|
|
2532
|
+
|
|
2533
|
+
this.SOF_SymDecryptData = function (sessionKey, inData) {
|
|
2534
|
+
if (g_mTokenPlugin == null) {
|
|
2535
|
+
return null;
|
|
2536
|
+
}
|
|
2537
|
+
|
|
2538
|
+
return g_mTokenPlugin.SOF_SymDecryptData(sessionKey, inData);
|
|
2539
|
+
}
|
|
2540
|
+
|
|
2541
|
+
this.SOF_GenerateQRCode = function (qrcode_text) {
|
|
2542
|
+
if (g_mTokenPlugin == null) {
|
|
2543
|
+
return null;
|
|
2544
|
+
}
|
|
2545
|
+
|
|
2546
|
+
return g_mTokenPlugin.SOF_GenerateQRCode(qrcode_text);
|
|
2547
|
+
}
|
|
2548
|
+
|
|
2549
|
+
|
|
2550
|
+
this.SOF_VerifyPinMS = function (responseKey) {
|
|
2551
|
+
if (g_mTokenPlugin == null) {
|
|
2552
|
+
return null;
|
|
2553
|
+
}
|
|
2554
|
+
|
|
2555
|
+
return g_mTokenPlugin.SOF_VerifyPinMS(responseKey);
|
|
2556
|
+
}
|
|
2557
|
+
|
|
2558
|
+
this.SOF_GetHardwareType = function () {
|
|
2559
|
+
if (g_mTokenPlugin == null) {
|
|
2560
|
+
return null;
|
|
2561
|
+
}
|
|
2562
|
+
|
|
2563
|
+
return g_mTokenPlugin.SOF_GetHardwareType();
|
|
2564
|
+
}
|
|
2565
|
+
|
|
2566
|
+
this.SOF_VerifyFingerprint = function () {
|
|
2567
|
+
if (g_mTokenPlugin == null) {
|
|
2568
|
+
return null;
|
|
2569
|
+
}
|
|
2570
|
+
|
|
2571
|
+
return g_mTokenPlugin.SOF_VerifyFingerprint();
|
|
2572
|
+
}
|
|
2573
|
+
|
|
2574
|
+
|
|
2575
|
+
this.SOF_EnumFiles = function () {
|
|
2576
|
+
if (g_mTokenPlugin == null) {
|
|
2577
|
+
return null;
|
|
2578
|
+
}
|
|
2579
|
+
|
|
2580
|
+
var array = g_mTokenPlugin.SOF_EnumFiles();
|
|
2581
|
+
if (array == null || array.length <= 0) {
|
|
2582
|
+
return null;
|
|
2583
|
+
}
|
|
2584
|
+
|
|
2585
|
+
return array.split("||");
|
|
2586
|
+
}
|
|
2587
|
+
|
|
2588
|
+
this.SOF_ReadFile = function (fileName, offset, length) {
|
|
2589
|
+
if (g_mTokenPlugin == null) {
|
|
2590
|
+
return null;
|
|
2591
|
+
}
|
|
2592
|
+
return g_mTokenPlugin.SOF_ReadFile(fileName, Number(offset), Number(length));
|
|
2593
|
+
}
|
|
2594
|
+
|
|
2595
|
+
this.SOF_WriteFile = function (fileName, offset, data) {
|
|
2596
|
+
if (g_mTokenPlugin == null) {
|
|
2597
|
+
return null;
|
|
2598
|
+
}
|
|
2599
|
+
return g_mTokenPlugin.SOF_WriteFile(fileName, offset, data);
|
|
2600
|
+
}
|
|
2601
|
+
|
|
2602
|
+
this.SOF_CreateFile = function (fileName, length, readRight, writeRight) {
|
|
2603
|
+
if (g_mTokenPlugin == null) {
|
|
2604
|
+
return null;
|
|
2605
|
+
}
|
|
2606
|
+
return g_mTokenPlugin.SOF_CreateFile(fileName, length, readRight, writeRight);
|
|
2607
|
+
}
|
|
2608
|
+
|
|
2609
|
+
this.SOF_DeleteFile = function (fileName) {
|
|
2610
|
+
if (g_mTokenPlugin == null) {
|
|
2611
|
+
return null;
|
|
2612
|
+
}
|
|
2613
|
+
return g_mTokenPlugin.SOF_DeleteFile(fileName);
|
|
2614
|
+
}
|
|
2615
|
+
|
|
2616
|
+
|
|
2617
|
+
}
|
|
2618
|
+
|
|
2619
|
+
//判断插件名称是否存在
|
|
2620
|
+
function hasPlugin(name) {
|
|
2621
|
+
name = name.toLowerCase();
|
|
2622
|
+
for (var i = 0; i < navigator.plugins.length; i++) {
|
|
2623
|
+
if (navigator.plugins[i].name.toLowerCase().indexOf(name) > -1) {
|
|
2624
|
+
return true;
|
|
2625
|
+
}
|
|
2626
|
+
}
|
|
2627
|
+
return false;
|
|
2628
|
+
}
|
|
2629
|
+
//判断系统
|
|
2630
|
+
function check_os() {
|
|
2631
|
+
let windows = (navigator.userAgent.indexOf("Windows", 0) != -1) ? 1 : 0;
|
|
2632
|
+
let mac = (navigator.userAgent.indexOf("mac", 0) != -1) ? 1 : 0;
|
|
2633
|
+
let linux = (navigator.userAgent.indexOf("Linux", 0) != -1) ? 1 : 0;
|
|
2634
|
+
let unix = (navigator.userAgent.indexOf("X11", 0) != -1) ? 1 : 0;
|
|
2635
|
+
let os_type = "";
|
|
2636
|
+
if (windows) os_type = "MS Windows";
|
|
2637
|
+
else if (linux) os_type = "Lunix";
|
|
2638
|
+
if (hasPlugin("mPlugin1.0.0.1")) {
|
|
2639
|
+
linuxWin = 2;
|
|
2640
|
+
return "id_mPluginV2Router";
|
|
2641
|
+
} else {
|
|
2642
|
+
linuxWin = 1;
|
|
2643
|
+
return "mTokenPlugin";
|
|
2644
|
+
}
|
|
2645
|
+
|
|
2646
|
+
|
|
2647
|
+
}
|
|
2648
|
+
var linuxWin = 0;
|
|
2649
|
+
var os;
|
|
2650
|
+
|
|
2651
|
+
function mTokenPlugin() {
|
|
2652
|
+
var _xmlhttp;
|
|
2653
|
+
var retJSON = "";
|
|
2654
|
+
var _curDevName = "";
|
|
2655
|
+
|
|
2656
|
+
function AjaxIO(json_in) {
|
|
2657
|
+
//id_mPluginV2Router mTokenPlugin
|
|
2658
|
+
if (os == "id_mPluginV2Router") {
|
|
2659
|
+
var router = null;
|
|
2660
|
+
//var url = "http://192.168.1.25:51235/alpha";
|
|
2661
|
+
var url = "http://127.0.0.1:51235/alpha";
|
|
2662
|
+
|
|
2663
|
+
router = document.getElementById("id_mPluginV2Router");
|
|
2664
|
+
if (null == router) {
|
|
2665
|
+
alert("无法获取到插件,请确认已经安装好插件!");
|
|
2666
|
+
}
|
|
2667
|
+
/*
|
|
2668
|
+
if("https:" == document.location.protocol)
|
|
2669
|
+
{
|
|
2670
|
+
url = "https://127.0.0.1:51245/alpha";
|
|
2671
|
+
}
|
|
2672
|
+
*/
|
|
2673
|
+
var json = json_in;
|
|
2674
|
+
|
|
2675
|
+
retJSON = router.invoke(url, json);
|
|
2676
|
+
return retJSON;
|
|
2677
|
+
} else {
|
|
2678
|
+
|
|
2679
|
+
var _curDevName = "";
|
|
2680
|
+
var _url = "http://127.0.0.1:51235/alpha";
|
|
2681
|
+
var json = json_in;
|
|
2682
|
+
if (_xmlhttp == null) {
|
|
2683
|
+
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
|
|
2684
|
+
_xmlhttp = new XMLHttpRequest();
|
|
2685
|
+
} else { // code for IE6, IE5
|
|
2686
|
+
_xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
|
|
2687
|
+
}
|
|
2688
|
+
}
|
|
2689
|
+
|
|
2690
|
+
/***
|
|
2691
|
+
if ("https:" == document.location.protocol) {
|
|
2692
|
+
_url = "https://127.0.0.1:51245/alpha";
|
|
2693
|
+
}
|
|
2694
|
+
***/
|
|
2695
|
+
_xmlhttp.open("POST", _url, false);
|
|
2696
|
+
_xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
|
|
2697
|
+
_xmlhttp.send("json=" + json);
|
|
2698
|
+
}
|
|
2699
|
+
|
|
2700
|
+
|
|
2701
|
+
|
|
2702
|
+
|
|
2703
|
+
};
|
|
2704
|
+
|
|
2705
|
+
function GetHttpResult() {
|
|
2706
|
+
if (_xmlhttp.readyState == 4 && _xmlhttp.status == 200) {
|
|
2707
|
+
var obj = eval("(" + _xmlhttp.responseText + ")");
|
|
2708
|
+
return obj;
|
|
2709
|
+
}
|
|
2710
|
+
else {
|
|
2711
|
+
return null;
|
|
2712
|
+
}
|
|
2713
|
+
}
|
|
2714
|
+
|
|
2715
|
+
this.SOF_GetLastError = function () {
|
|
2716
|
+
var json = '{"function":"SOF_GetLastError"}';
|
|
2717
|
+
if (linuxWin == 2) {
|
|
2718
|
+
var retJSON = "";
|
|
2719
|
+
try {
|
|
2720
|
+
retJSON = AjaxIO(json);
|
|
2721
|
+
} catch (e) {
|
|
2722
|
+
return -3;
|
|
2723
|
+
}
|
|
2724
|
+
|
|
2725
|
+
|
|
2726
|
+
if (retJSON.length > 3) {
|
|
2727
|
+
var obj = eval("(" + retJSON + ")");
|
|
2728
|
+
return obj.errorCode;
|
|
2729
|
+
} else {
|
|
2730
|
+
return -2;
|
|
2731
|
+
|
|
2732
|
+
}
|
|
2733
|
+
} else {
|
|
2734
|
+
try {
|
|
2735
|
+
AjaxIO(json);
|
|
2736
|
+
} catch (e) {
|
|
2737
|
+
return -3;
|
|
2738
|
+
}
|
|
2739
|
+
var ret = GetHttpResult();
|
|
2740
|
+
if (ret) {
|
|
2741
|
+
return ret.rtn;
|
|
2742
|
+
}
|
|
2743
|
+
|
|
2744
|
+
return -2;
|
|
2745
|
+
}
|
|
2746
|
+
}
|
|
2747
|
+
|
|
2748
|
+
this.SOF_LoadLibrary = function (windows, linux, mac) {
|
|
2749
|
+
var json = '{"function":"SOF_LoadLibrary", "winDllName":"' + windows + '", "linuxSOName":"' + linux + '", "macDylibName":"' + mac + '"}';
|
|
2750
|
+
if (linuxWin == 2) {
|
|
2751
|
+
var retJSON = "";
|
|
2752
|
+
try {
|
|
2753
|
+
retJSON = AjaxIO(json);
|
|
2754
|
+
} catch (e) {
|
|
2755
|
+
return -3;
|
|
2756
|
+
}
|
|
2757
|
+
|
|
2758
|
+
|
|
2759
|
+
if (retJSON.length > 3) {
|
|
2760
|
+
var obj = eval("(" + retJSON + ")");
|
|
2761
|
+
return obj.rtn;
|
|
2762
|
+
} else {
|
|
2763
|
+
return -2;
|
|
2764
|
+
|
|
2765
|
+
}
|
|
2766
|
+
} else {
|
|
2767
|
+
try {
|
|
2768
|
+
AjaxIO(json);
|
|
2769
|
+
} catch (e) {
|
|
2770
|
+
return -3;
|
|
2771
|
+
}
|
|
2772
|
+
var ret = GetHttpResult();
|
|
2773
|
+
if (ret) {
|
|
2774
|
+
return ret.rtn;
|
|
2775
|
+
}
|
|
2776
|
+
|
|
2777
|
+
return -2;
|
|
2778
|
+
}
|
|
2779
|
+
};
|
|
2780
|
+
|
|
2781
|
+
|
|
2782
|
+
this.SOF_EnumDevice = function () {
|
|
2783
|
+
var json = '{"function":"SOF_EnumDevice"}';
|
|
2784
|
+
if (linuxWin == 2) {
|
|
2785
|
+
var retJSON = "";
|
|
2786
|
+
try {
|
|
2787
|
+
retJSON = AjaxIO(json);
|
|
2788
|
+
} catch (e) {
|
|
2789
|
+
return -3;
|
|
2790
|
+
}
|
|
2791
|
+
|
|
2792
|
+
|
|
2793
|
+
if (retJSON.length > 3) {
|
|
2794
|
+
var obj = eval("(" + retJSON + ")");
|
|
2795
|
+
return obj.array;
|
|
2796
|
+
} else {
|
|
2797
|
+
return -2;
|
|
2798
|
+
|
|
2799
|
+
}
|
|
2800
|
+
} else {
|
|
2801
|
+
try {
|
|
2802
|
+
AjaxIO(json);
|
|
2803
|
+
} catch (e) {
|
|
2804
|
+
return -3;
|
|
2805
|
+
}
|
|
2806
|
+
var ret = GetHttpResult();
|
|
2807
|
+
if (ret) {
|
|
2808
|
+
return ret.array;
|
|
2809
|
+
}
|
|
2810
|
+
|
|
2811
|
+
return -2;
|
|
2812
|
+
}
|
|
2813
|
+
};
|
|
2814
|
+
|
|
2815
|
+
|
|
2816
|
+
this.SOF_GetVersion = function () {
|
|
2817
|
+
var json = '{"function":"SOF_GetVersion"}';
|
|
2818
|
+
if (linuxWin == 2) {
|
|
2819
|
+
var retJSON = "";
|
|
2820
|
+
try {
|
|
2821
|
+
retJSON = AjaxIO(json);
|
|
2822
|
+
} catch (e) {
|
|
2823
|
+
return -3;
|
|
2824
|
+
}
|
|
2825
|
+
|
|
2826
|
+
|
|
2827
|
+
if (retJSON.length > 3) {
|
|
2828
|
+
var obj = eval("(" + retJSON + ")");
|
|
2829
|
+
return obj.version;
|
|
2830
|
+
} else {
|
|
2831
|
+
return -2;
|
|
2832
|
+
|
|
2833
|
+
}
|
|
2834
|
+
} else {
|
|
2835
|
+
try {
|
|
2836
|
+
AjaxIO(json);
|
|
2837
|
+
} catch (e) {
|
|
2838
|
+
return -3;
|
|
2839
|
+
}
|
|
2840
|
+
var ret = GetHttpResult();
|
|
2841
|
+
if (ret) {
|
|
2842
|
+
return ret.version;
|
|
2843
|
+
}
|
|
2844
|
+
|
|
2845
|
+
return -2;
|
|
2846
|
+
}
|
|
2847
|
+
};
|
|
2848
|
+
|
|
2849
|
+
|
|
2850
|
+
this.SOF_GetDeviceInstance = function (DeviceName, ApplicationName) {
|
|
2851
|
+
var json = '{"function":"SOF_GetDeviceInstance", "deviceName":"' + DeviceName + '", "applicationName":"' + ApplicationName + '"}';
|
|
2852
|
+
if (linuxWin == 2) {
|
|
2853
|
+
var retJSON = "";
|
|
2854
|
+
try {
|
|
2855
|
+
_curDevName = DeviceName;
|
|
2856
|
+
retJSON = AjaxIO(json);
|
|
2857
|
+
} catch (e) {
|
|
2858
|
+
return -3;
|
|
2859
|
+
}
|
|
2860
|
+
|
|
2861
|
+
|
|
2862
|
+
if (retJSON.length > 3) {
|
|
2863
|
+
var obj = eval("(" + retJSON + ")");
|
|
2864
|
+
return obj.rtn;
|
|
2865
|
+
} else {
|
|
2866
|
+
return -2;
|
|
2867
|
+
|
|
2868
|
+
}
|
|
2869
|
+
} else {
|
|
2870
|
+
try {
|
|
2871
|
+
AjaxIO(json);
|
|
2872
|
+
} catch (e) {
|
|
2873
|
+
return -3;
|
|
2874
|
+
}
|
|
2875
|
+
var ret = GetHttpResult();
|
|
2876
|
+
if (ret) {
|
|
2877
|
+
if (ret.rtn == 0) {
|
|
2878
|
+
_curDevName = DeviceName;
|
|
2879
|
+
}
|
|
2880
|
+
return ret.rtn;
|
|
2881
|
+
}
|
|
2882
|
+
|
|
2883
|
+
return -2;
|
|
2884
|
+
}
|
|
2885
|
+
};
|
|
2886
|
+
|
|
2887
|
+
this.SOF_ReleaseDeviceInstance = function () {
|
|
2888
|
+
var json = '{"function":"SOF_ReleaseDeviceInstance", "deviceName":"' + _curDevName + '"}';
|
|
2889
|
+
if (linuxWin == 2) {
|
|
2890
|
+
var retJSON = "";
|
|
2891
|
+
try {
|
|
2892
|
+
retJSON = AjaxIO(json);
|
|
2893
|
+
}
|
|
2894
|
+
catch (e) {
|
|
2895
|
+
return -3;
|
|
2896
|
+
}
|
|
2897
|
+
|
|
2898
|
+
if (retJSON.length > 3) {
|
|
2899
|
+
var obj = eval("(" + retJSON + ")");
|
|
2900
|
+
return obj.array;
|
|
2901
|
+
} else {
|
|
2902
|
+
return -2;
|
|
2903
|
+
|
|
2904
|
+
}
|
|
2905
|
+
} else {
|
|
2906
|
+
try {
|
|
2907
|
+
AjaxIO(json);
|
|
2908
|
+
} catch (e) {
|
|
2909
|
+
return -3;
|
|
2910
|
+
}
|
|
2911
|
+
var ret = GetHttpResult();
|
|
2912
|
+
if (ret) {
|
|
2913
|
+
return ret.rtn;
|
|
2914
|
+
}
|
|
2915
|
+
|
|
2916
|
+
return -2;
|
|
2917
|
+
}
|
|
2918
|
+
};
|
|
2919
|
+
|
|
2920
|
+
this.SOF_GetUserList = function () {
|
|
2921
|
+
var json = '{"function":"SOF_GetUserList", "deviceName":"' + _curDevName + '"}';
|
|
2922
|
+
if (linuxWin == 2) {
|
|
2923
|
+
var retJSON = "";
|
|
2924
|
+
try {
|
|
2925
|
+
retJSON = AjaxIO(json);
|
|
2926
|
+
} catch (e) {
|
|
2927
|
+
return -3;
|
|
2928
|
+
}
|
|
2929
|
+
|
|
2930
|
+
|
|
2931
|
+
if (retJSON.length > 3) {
|
|
2932
|
+
var obj = eval("(" + retJSON + ")");
|
|
2933
|
+
return obj.array;
|
|
2934
|
+
} else {
|
|
2935
|
+
return -2;
|
|
2936
|
+
|
|
2937
|
+
}
|
|
2938
|
+
} else {
|
|
2939
|
+
try {
|
|
2940
|
+
AjaxIO(json);
|
|
2941
|
+
} catch (e) {
|
|
2942
|
+
return -3;
|
|
2943
|
+
}
|
|
2944
|
+
var ret = GetHttpResult();
|
|
2945
|
+
if (ret) {
|
|
2946
|
+
return ret.array;
|
|
2947
|
+
}
|
|
2948
|
+
|
|
2949
|
+
return -2;
|
|
2950
|
+
}
|
|
2951
|
+
};
|
|
2952
|
+
|
|
2953
|
+
|
|
2954
|
+
this.SOF_ExportUserCert = function (ContainerName, KeySpec) {
|
|
2955
|
+
|
|
2956
|
+
var json = '{"function":"SOF_ExportUserCert", "deviceName":"' + _curDevName + '", "containerName":"' + ContainerName + '", "keySpec":' + KeySpec + '}';
|
|
2957
|
+
if (linuxWin == 2) {
|
|
2958
|
+
var retJSON = "";
|
|
2959
|
+
try {
|
|
2960
|
+
retJSON = AjaxIO(json);
|
|
2961
|
+
} catch (e) {
|
|
2962
|
+
return -3;
|
|
2963
|
+
}
|
|
2964
|
+
|
|
2965
|
+
|
|
2966
|
+
if (retJSON.length > 3) {
|
|
2967
|
+
var obj = eval("(" + retJSON + ")");
|
|
2968
|
+
return obj.cert;
|
|
2969
|
+
} else {
|
|
2970
|
+
return -2;
|
|
2971
|
+
|
|
2972
|
+
}
|
|
2973
|
+
} else {
|
|
2974
|
+
try {
|
|
2975
|
+
AjaxIO(json);
|
|
2976
|
+
} catch (e) {
|
|
2977
|
+
return -3;
|
|
2978
|
+
}
|
|
2979
|
+
var ret = GetHttpResult();
|
|
2980
|
+
if (ret) {
|
|
2981
|
+
return ret.cert;
|
|
2982
|
+
}
|
|
2983
|
+
|
|
2984
|
+
return -2;
|
|
2985
|
+
}
|
|
2986
|
+
};
|
|
2987
|
+
|
|
2988
|
+
|
|
2989
|
+
this.SOF_GetDeviceInfo = function (Type) {
|
|
2990
|
+
var json = '{"function":"SOF_GetDeviceInfo", "deviceName":"' + _curDevName + '", "type":' + Type + '}';
|
|
2991
|
+
if (linuxWin == 2) {
|
|
2992
|
+
var retJSON = "";
|
|
2993
|
+
try {
|
|
2994
|
+
retJSON = AjaxIO(json);
|
|
2995
|
+
} catch (e) {
|
|
2996
|
+
return -3;
|
|
2997
|
+
}
|
|
2998
|
+
|
|
2999
|
+
|
|
3000
|
+
if (retJSON.length > 3) {
|
|
3001
|
+
var obj = eval("(" + retJSON + ")");
|
|
3002
|
+
return obj.info;
|
|
3003
|
+
} else {
|
|
3004
|
+
return -2;
|
|
3005
|
+
|
|
3006
|
+
}
|
|
3007
|
+
} else {
|
|
3008
|
+
try {
|
|
3009
|
+
AjaxIO(json);
|
|
3010
|
+
} catch (e) {
|
|
3011
|
+
return -3;
|
|
3012
|
+
}
|
|
3013
|
+
var ret = GetHttpResult();
|
|
3014
|
+
if (ret) {
|
|
3015
|
+
return ret.info;
|
|
3016
|
+
}
|
|
3017
|
+
|
|
3018
|
+
return -2;
|
|
3019
|
+
}
|
|
3020
|
+
|
|
3021
|
+
};
|
|
3022
|
+
|
|
3023
|
+
|
|
3024
|
+
this.SOF_GetCertInfo = function (Base64EncodeCert, Type) {
|
|
3025
|
+
var json = '{"function":"SOF_GetCertInfo", "base64EncodeCert":"' + Base64EncodeCert + '", "type":' + Type + '}';
|
|
3026
|
+
if (linuxWin == 2) {
|
|
3027
|
+
var retJSON = "";
|
|
3028
|
+
try {
|
|
3029
|
+
retJSON = AjaxIO(json);
|
|
3030
|
+
} catch (e) {
|
|
3031
|
+
return -3;
|
|
3032
|
+
}
|
|
3033
|
+
|
|
3034
|
+
|
|
3035
|
+
if (retJSON.length > 3) {
|
|
3036
|
+
var obj = eval("(" + retJSON + ")");
|
|
3037
|
+
return obj.info;
|
|
3038
|
+
} else {
|
|
3039
|
+
return -2;
|
|
3040
|
+
|
|
3041
|
+
}
|
|
3042
|
+
} else {
|
|
3043
|
+
try {
|
|
3044
|
+
AjaxIO(json);
|
|
3045
|
+
} catch (e) {
|
|
3046
|
+
return -3;
|
|
3047
|
+
}
|
|
3048
|
+
var ret = GetHttpResult();
|
|
3049
|
+
if (ret) {
|
|
3050
|
+
return ret.info;
|
|
3051
|
+
}
|
|
3052
|
+
|
|
3053
|
+
return -2;
|
|
3054
|
+
}
|
|
3055
|
+
|
|
3056
|
+
};
|
|
3057
|
+
|
|
3058
|
+
|
|
3059
|
+
this.SOF_GetCertInfoByOid = function (Base64EncodeCert, OID) {
|
|
3060
|
+
var json = '{"function":"SOF_GetCertInfoByOid", "base64EncodeCert":"' + Base64EncodeCert + '", "oid":"' + OID + '"}';
|
|
3061
|
+
if (linuxWin == 2) {
|
|
3062
|
+
var retJSON = "";
|
|
3063
|
+
try {
|
|
3064
|
+
retJSON = AjaxIO(json);
|
|
3065
|
+
} catch (e) {
|
|
3066
|
+
return -3;
|
|
3067
|
+
}
|
|
3068
|
+
|
|
3069
|
+
|
|
3070
|
+
if (retJSON.length > 3) {
|
|
3071
|
+
var obj = eval("(" + retJSON + ")");
|
|
3072
|
+
return obj.info;
|
|
3073
|
+
} else {
|
|
3074
|
+
return -2;
|
|
3075
|
+
|
|
3076
|
+
}
|
|
3077
|
+
} else {
|
|
3078
|
+
try {
|
|
3079
|
+
AjaxIO(json);
|
|
3080
|
+
}
|
|
3081
|
+
catch (e) {
|
|
3082
|
+
return -3;
|
|
3083
|
+
}
|
|
3084
|
+
|
|
3085
|
+
var ret = GetHttpResult();
|
|
3086
|
+
if (ret) {
|
|
3087
|
+
return ret.info;
|
|
3088
|
+
}
|
|
3089
|
+
|
|
3090
|
+
return null;
|
|
3091
|
+
}
|
|
3092
|
+
|
|
3093
|
+
};
|
|
3094
|
+
|
|
3095
|
+
|
|
3096
|
+
|
|
3097
|
+
this.SOF_Login = function (PassWd) {
|
|
3098
|
+
|
|
3099
|
+
var json = '{"function":"SOF_Login", "deviceName":"' + _curDevName + '", "passWd":"' + PassWd + '"}';
|
|
3100
|
+
if (linuxWin == 2) {
|
|
3101
|
+
var retJSON = "";
|
|
3102
|
+
try {
|
|
3103
|
+
retJSON = AjaxIO(json);
|
|
3104
|
+
} catch (e) {
|
|
3105
|
+
return -3;
|
|
3106
|
+
}
|
|
3107
|
+
|
|
3108
|
+
|
|
3109
|
+
if (retJSON.length > 3) {
|
|
3110
|
+
var obj = eval("(" + retJSON + ")");
|
|
3111
|
+
return obj.rtn;
|
|
3112
|
+
} else {
|
|
3113
|
+
return -2;
|
|
3114
|
+
|
|
3115
|
+
}
|
|
3116
|
+
} else {
|
|
3117
|
+
try {
|
|
3118
|
+
AjaxIO(json);
|
|
3119
|
+
} catch (e) {
|
|
3120
|
+
return -3;
|
|
3121
|
+
}
|
|
3122
|
+
var ret = GetHttpResult();
|
|
3123
|
+
if (ret) {
|
|
3124
|
+
return ret.rtn;
|
|
3125
|
+
}
|
|
3126
|
+
|
|
3127
|
+
return -2;
|
|
3128
|
+
}
|
|
3129
|
+
};
|
|
3130
|
+
|
|
3131
|
+
|
|
3132
|
+
this.SOF_LogOut = function () {
|
|
3133
|
+
|
|
3134
|
+
var json = '{"function":"SOF_LogOut", "deviceName":"' + _curDevName + '"}';
|
|
3135
|
+
if (linuxWin == 2) {
|
|
3136
|
+
var retJSON = "";
|
|
3137
|
+
try {
|
|
3138
|
+
retJSON = AjaxIO(json);
|
|
3139
|
+
} catch (e) {
|
|
3140
|
+
return -3;
|
|
3141
|
+
}
|
|
3142
|
+
|
|
3143
|
+
|
|
3144
|
+
if (retJSON.length > 3) {
|
|
3145
|
+
var obj = eval("(" + retJSON + ")");
|
|
3146
|
+
return obj.rtn;
|
|
3147
|
+
} else {
|
|
3148
|
+
return -2;
|
|
3149
|
+
|
|
3150
|
+
}
|
|
3151
|
+
} else {
|
|
3152
|
+
try {
|
|
3153
|
+
AjaxIO(json);
|
|
3154
|
+
} catch (e) {
|
|
3155
|
+
return -3;
|
|
3156
|
+
}
|
|
3157
|
+
var ret = GetHttpResult();
|
|
3158
|
+
if (ret) {
|
|
3159
|
+
return ret.rtn;
|
|
3160
|
+
}
|
|
3161
|
+
|
|
3162
|
+
return -2;
|
|
3163
|
+
}
|
|
3164
|
+
};
|
|
3165
|
+
|
|
3166
|
+
|
|
3167
|
+
this.SOF_GetPinRetryCount = function () {
|
|
3168
|
+
|
|
3169
|
+
var json = '{"function":"SOF_GetPinRetryCount", "deviceName":"' + _curDevName + '"}';
|
|
3170
|
+
if (linuxWin == 2) {
|
|
3171
|
+
var retJSON = "";
|
|
3172
|
+
try {
|
|
3173
|
+
retJSON = AjaxIO(json);
|
|
3174
|
+
} catch (e) {
|
|
3175
|
+
return -3;
|
|
3176
|
+
}
|
|
3177
|
+
|
|
3178
|
+
|
|
3179
|
+
if (retJSON.length > 3) {
|
|
3180
|
+
var obj = eval("(" + retJSON + ")");
|
|
3181
|
+
return obj.retryCount;
|
|
3182
|
+
} else {
|
|
3183
|
+
return -2;
|
|
3184
|
+
|
|
3185
|
+
}
|
|
3186
|
+
} else {
|
|
3187
|
+
try {
|
|
3188
|
+
AjaxIO(json);
|
|
3189
|
+
} catch (e) {
|
|
3190
|
+
return -3;
|
|
3191
|
+
}
|
|
3192
|
+
var ret = GetHttpResult();
|
|
3193
|
+
if (ret) {
|
|
3194
|
+
return ret.retryCount;
|
|
3195
|
+
}
|
|
3196
|
+
|
|
3197
|
+
return -2;
|
|
3198
|
+
}
|
|
3199
|
+
};
|
|
3200
|
+
|
|
3201
|
+
|
|
3202
|
+
this.SOF_ChangePassWd = function (OldPassWd, NewPassWd) {
|
|
3203
|
+
|
|
3204
|
+
var json = '{"function":"SOF_ChangePassWd", "deviceName":"' + _curDevName + '", "oldUpin":"' + OldPassWd + '", "newUpin":"' + NewPassWd + '"}';
|
|
3205
|
+
if (linuxWin == 2) {
|
|
3206
|
+
var retJSON = "";
|
|
3207
|
+
try {
|
|
3208
|
+
retJSON = AjaxIO(json);
|
|
3209
|
+
} catch (e) {
|
|
3210
|
+
return -3;
|
|
3211
|
+
}
|
|
3212
|
+
|
|
3213
|
+
|
|
3214
|
+
if (retJSON.length > 3) {
|
|
3215
|
+
var obj = eval("(" + retJSON + ")");
|
|
3216
|
+
return obj.rtn;
|
|
3217
|
+
} else {
|
|
3218
|
+
return -2;
|
|
3219
|
+
|
|
3220
|
+
}
|
|
3221
|
+
} else {
|
|
3222
|
+
try {
|
|
3223
|
+
AjaxIO(json);
|
|
3224
|
+
} catch (e) {
|
|
3225
|
+
return -3;
|
|
3226
|
+
}
|
|
3227
|
+
var ret = GetHttpResult();
|
|
3228
|
+
if (ret) {
|
|
3229
|
+
return ret.rtn;
|
|
3230
|
+
}
|
|
3231
|
+
|
|
3232
|
+
return -2;
|
|
3233
|
+
}
|
|
3234
|
+
};
|
|
3235
|
+
|
|
3236
|
+
|
|
3237
|
+
this.SOF_SetDigestMethod = function (DigestMethod) {
|
|
3238
|
+
|
|
3239
|
+
var json = '{"function":"SOF_SetDigestMethod","deviceName":"' + _curDevName + '", "digestMethod":' + DigestMethod + '}';
|
|
3240
|
+
if (linuxWin == 2) {
|
|
3241
|
+
var retJSON = "";
|
|
3242
|
+
try {
|
|
3243
|
+
retJSON = AjaxIO(json);
|
|
3244
|
+
} catch (e) {
|
|
3245
|
+
return -3;
|
|
3246
|
+
}
|
|
3247
|
+
|
|
3248
|
+
|
|
3249
|
+
if (retJSON.length > 3) {
|
|
3250
|
+
var obj = eval("(" + retJSON + ")");
|
|
3251
|
+
return obj.rtn;
|
|
3252
|
+
} else {
|
|
3253
|
+
return -2;
|
|
3254
|
+
|
|
3255
|
+
}
|
|
3256
|
+
} else {
|
|
3257
|
+
try {
|
|
3258
|
+
AjaxIO(json);
|
|
3259
|
+
} catch (e) {
|
|
3260
|
+
return -3;
|
|
3261
|
+
}
|
|
3262
|
+
var ret = GetHttpResult();
|
|
3263
|
+
if (ret) {
|
|
3264
|
+
return ret.rtn;
|
|
3265
|
+
}
|
|
3266
|
+
|
|
3267
|
+
return -2;
|
|
3268
|
+
}
|
|
3269
|
+
};
|
|
3270
|
+
|
|
3271
|
+
|
|
3272
|
+
this.SOF_SetUserID = function (UserID) {
|
|
3273
|
+
|
|
3274
|
+
var json = '{"function":"SOF_SetUserID","deviceName":"' + _curDevName + '", "userID":"' + UserID + '"}';
|
|
3275
|
+
if (linuxWin == 2) {
|
|
3276
|
+
var retJSON = "";
|
|
3277
|
+
try {
|
|
3278
|
+
retJSON = AjaxIO(json);
|
|
3279
|
+
} catch (e) {
|
|
3280
|
+
return -3;
|
|
3281
|
+
}
|
|
3282
|
+
|
|
3283
|
+
|
|
3284
|
+
if (retJSON.length > 3) {
|
|
3285
|
+
var obj = eval("(" + retJSON + ")");
|
|
3286
|
+
return obj.rtn;
|
|
3287
|
+
} else {
|
|
3288
|
+
return -2;
|
|
3289
|
+
|
|
3290
|
+
}
|
|
3291
|
+
} else {
|
|
3292
|
+
try {
|
|
3293
|
+
AjaxIO(json);
|
|
3294
|
+
} catch (e) {
|
|
3295
|
+
return -3;
|
|
3296
|
+
}
|
|
3297
|
+
var ret = GetHttpResult();
|
|
3298
|
+
if (ret) {
|
|
3299
|
+
return ret.rtn;
|
|
3300
|
+
}
|
|
3301
|
+
|
|
3302
|
+
return -2;
|
|
3303
|
+
}
|
|
3304
|
+
};
|
|
3305
|
+
|
|
3306
|
+
|
|
3307
|
+
this.SOF_SetEncryptMethodAndIV = function (EncryptMethod, EncryptIV) {
|
|
3308
|
+
|
|
3309
|
+
var json = '{"function":"SOF_SetEncryptMethodAndIV","deviceName":"' + _curDevName + '", "encryptMethod":' + EncryptMethod + ', "encryptIV":"' + EncryptIV + '"}';
|
|
3310
|
+
if (linuxWin == 2) {
|
|
3311
|
+
var retJSON = "";
|
|
3312
|
+
try {
|
|
3313
|
+
retJSON = AjaxIO(json);
|
|
3314
|
+
} catch (e) {
|
|
3315
|
+
return -3;
|
|
3316
|
+
}
|
|
3317
|
+
|
|
3318
|
+
|
|
3319
|
+
if (retJSON.length > 3) {
|
|
3320
|
+
var obj = eval("(" + retJSON + ")");
|
|
3321
|
+
return obj.rtn;
|
|
3322
|
+
} else {
|
|
3323
|
+
return -2;
|
|
3324
|
+
|
|
3325
|
+
}
|
|
3326
|
+
} else {
|
|
3327
|
+
try {
|
|
3328
|
+
AjaxIO(json);
|
|
3329
|
+
} catch (e) {
|
|
3330
|
+
return -3;
|
|
3331
|
+
}
|
|
3332
|
+
var ret = GetHttpResult();
|
|
3333
|
+
if (ret) {
|
|
3334
|
+
return ret.rtn;
|
|
3335
|
+
}
|
|
3336
|
+
|
|
3337
|
+
return -2;
|
|
3338
|
+
}
|
|
3339
|
+
};
|
|
3340
|
+
|
|
3341
|
+
|
|
3342
|
+
this.SOF_EncryptFileToPKCS7 = function (Cert, InFile, OutFile, type) {
|
|
3343
|
+
|
|
3344
|
+
var json = '{"function":"SOF_EncryptFileToPKCS7", "deviceName":"' + _curDevName + '", "cert":"' + Cert + '", "inFile":"' + InFile.replace(/\\/g, '\\\\') + '", "outFile":"' + OutFile.replace(/\\/g, '\\\\') + '", "type":' + type + '}';
|
|
3345
|
+
if (linuxWin == 2) {
|
|
3346
|
+
var retJSON = "";
|
|
3347
|
+
try {
|
|
3348
|
+
retJSON = AjaxIO(json);
|
|
3349
|
+
} catch (e) {
|
|
3350
|
+
return -3;
|
|
3351
|
+
}
|
|
3352
|
+
|
|
3353
|
+
|
|
3354
|
+
if (retJSON.length > 3) {
|
|
3355
|
+
var obj = eval("(" + retJSON + ")");
|
|
3356
|
+
return obj.envelopData;
|
|
3357
|
+
} else {
|
|
3358
|
+
return -2;
|
|
3359
|
+
|
|
3360
|
+
}
|
|
3361
|
+
} else {
|
|
3362
|
+
try {
|
|
3363
|
+
AjaxIO(json);
|
|
3364
|
+
} catch (e) {
|
|
3365
|
+
return -3;
|
|
3366
|
+
}
|
|
3367
|
+
var ret = GetHttpResult();
|
|
3368
|
+
if (ret) {
|
|
3369
|
+
return ret.envelopData;
|
|
3370
|
+
}
|
|
3371
|
+
|
|
3372
|
+
return -2;
|
|
3373
|
+
}
|
|
3374
|
+
};
|
|
3375
|
+
|
|
3376
|
+
|
|
3377
|
+
this.SOF_SignFileToPKCS7 = function (ContainerName, KeySpec, InFile) {
|
|
3378
|
+
|
|
3379
|
+
var json = '{"function":"SOF_SignFileToPKCS7", "deviceName":"' + _curDevName + '", "containerName":"' + ContainerName + '", "KeySpec":' + KeySpec + ', "inFile":"' + InFile.replace(/\\/g, '\\\\') + '"}';
|
|
3380
|
+
if (linuxWin == 2) {
|
|
3381
|
+
var retJSON = "";
|
|
3382
|
+
try {
|
|
3383
|
+
retJSON = AjaxIO(json);
|
|
3384
|
+
} catch (e) {
|
|
3385
|
+
return -3;
|
|
3386
|
+
}
|
|
3387
|
+
|
|
3388
|
+
|
|
3389
|
+
if (retJSON.length > 3) {
|
|
3390
|
+
var obj = eval("(" + retJSON + ")");
|
|
3391
|
+
return obj.signed;
|
|
3392
|
+
} else {
|
|
3393
|
+
return -2;
|
|
3394
|
+
|
|
3395
|
+
}
|
|
3396
|
+
} else {
|
|
3397
|
+
try {
|
|
3398
|
+
AjaxIO(json);
|
|
3399
|
+
} catch (e) {
|
|
3400
|
+
return -3;
|
|
3401
|
+
}
|
|
3402
|
+
var ret = GetHttpResult();
|
|
3403
|
+
if (ret) {
|
|
3404
|
+
return ret.signed;
|
|
3405
|
+
}
|
|
3406
|
+
|
|
3407
|
+
return -2;
|
|
3408
|
+
}
|
|
3409
|
+
};
|
|
3410
|
+
|
|
3411
|
+
|
|
3412
|
+
this.SOF_VerifyFileToPKCS7 = function (strPkcs7Data, InFilePath) {
|
|
3413
|
+
var json = '{"function":"SOF_VerifyFileToPKCS7", "deviceName":"' + _curDevName + '","strPkcs7Data":"' + strPkcs7Data + '", "inFile":"' + InFilePath.replace(/\\/g, '\\\\') + '"}';
|
|
3414
|
+
if (linuxWin == 2) {
|
|
3415
|
+
var retJSON = "";
|
|
3416
|
+
try {
|
|
3417
|
+
retJSON = AjaxIO(json);
|
|
3418
|
+
} catch (e) {
|
|
3419
|
+
return -3;
|
|
3420
|
+
}
|
|
3421
|
+
|
|
3422
|
+
|
|
3423
|
+
if (retJSON.length > 3) {
|
|
3424
|
+
var obj = eval("(" + retJSON + ")");
|
|
3425
|
+
return obj.rtn;
|
|
3426
|
+
} else {
|
|
3427
|
+
return -2;
|
|
3428
|
+
|
|
3429
|
+
}
|
|
3430
|
+
} else {
|
|
3431
|
+
try {
|
|
3432
|
+
AjaxIO(json);
|
|
3433
|
+
} catch (e) {
|
|
3434
|
+
return -3;
|
|
3435
|
+
}
|
|
3436
|
+
var ret = GetHttpResult();
|
|
3437
|
+
if (ret) {
|
|
3438
|
+
return ret.rtn;
|
|
3439
|
+
}
|
|
3440
|
+
|
|
3441
|
+
return -2;
|
|
3442
|
+
}
|
|
3443
|
+
};
|
|
3444
|
+
|
|
3445
|
+
|
|
3446
|
+
this.SOF_DecryptFileToPKCS7 = function (ContainerName, keySpec, Pkcs7Data, InFile, OutFile, type) {
|
|
3447
|
+
|
|
3448
|
+
var json = '{"function":"SOF_DecryptFileToPKCS7", "deviceName":"' + _curDevName + '", "containerName":"' + ContainerName + '", "keySpec":' + keySpec + ', "pkcs7Data":"' + Pkcs7Data + '", "inFile":"' + InFile.replace(/\\/g, '\\\\') + '", "outFile":"' + OutFile.replace(/\\/g, '\\\\') + '", "type":' + type + '}';
|
|
3449
|
+
if (linuxWin == 2) {
|
|
3450
|
+
var retJSON = "";
|
|
3451
|
+
try {
|
|
3452
|
+
retJSON = AjaxIO(json);
|
|
3453
|
+
} catch (e) {
|
|
3454
|
+
return -3;
|
|
3455
|
+
}
|
|
3456
|
+
|
|
3457
|
+
|
|
3458
|
+
if (retJSON.length > 3) {
|
|
3459
|
+
var obj = eval("(" + retJSON + ")");
|
|
3460
|
+
return obj.rtn;
|
|
3461
|
+
} else {
|
|
3462
|
+
return -2;
|
|
3463
|
+
|
|
3464
|
+
}
|
|
3465
|
+
} else {
|
|
3466
|
+
try {
|
|
3467
|
+
AjaxIO(json);
|
|
3468
|
+
} catch (e) {
|
|
3469
|
+
return -3;
|
|
3470
|
+
}
|
|
3471
|
+
var ret = GetHttpResult();
|
|
3472
|
+
if (ret) {
|
|
3473
|
+
return ret.rtn;
|
|
3474
|
+
}
|
|
3475
|
+
|
|
3476
|
+
return -2;
|
|
3477
|
+
}
|
|
3478
|
+
};
|
|
3479
|
+
|
|
3480
|
+
|
|
3481
|
+
this.SOF_DigestData = function (ContainerName, InData, InDataLen) {
|
|
3482
|
+
|
|
3483
|
+
var json = '{"function":"SOF_DigestData","deviceName":"' + _curDevName + '", "containerName":"' + ContainerName + '", "inData":"' + InData + '", "inDataLen":' + InDataLen + '}';
|
|
3484
|
+
if (linuxWin == 2) {
|
|
3485
|
+
var retJSON = "";
|
|
3486
|
+
try {
|
|
3487
|
+
retJSON = AjaxIO(json);
|
|
3488
|
+
} catch (e) {
|
|
3489
|
+
return -3;
|
|
3490
|
+
}
|
|
3491
|
+
|
|
3492
|
+
|
|
3493
|
+
if (retJSON.length > 3) {
|
|
3494
|
+
var obj = eval("(" + retJSON + ")");
|
|
3495
|
+
return obj.digest;
|
|
3496
|
+
} else {
|
|
3497
|
+
return -2;
|
|
3498
|
+
|
|
3499
|
+
}
|
|
3500
|
+
} else {
|
|
3501
|
+
try {
|
|
3502
|
+
AjaxIO(json);
|
|
3503
|
+
} catch (e) {
|
|
3504
|
+
return -3;
|
|
3505
|
+
}
|
|
3506
|
+
var ret = GetHttpResult();
|
|
3507
|
+
if (ret) {
|
|
3508
|
+
return ret.digest;
|
|
3509
|
+
}
|
|
3510
|
+
|
|
3511
|
+
return -2;
|
|
3512
|
+
}
|
|
3513
|
+
};
|
|
3514
|
+
|
|
3515
|
+
//交互式签名
|
|
3516
|
+
this.SOF_SignDataInteractive = function (ContainerName, ulKeySpec, inData, InDataLen) {
|
|
3517
|
+
var InDataBase64 = inData; //对报文进行Base64编码
|
|
3518
|
+
var json = '{"function":"SOF_SignDataInteractive", "deviceName":"' + _curDevName + '", "containerName":"' + ContainerName + '", "keySpec":' + ulKeySpec + ', "inData":"' + InDataBase64 + '", "inDataLen":' + InDataLen + '}';
|
|
3519
|
+
|
|
3520
|
+
if (linuxWin == 2) {
|
|
3521
|
+
var retJSON = "";
|
|
3522
|
+
try {
|
|
3523
|
+
retJSON = AjaxIO(json);
|
|
3524
|
+
} catch (e) {
|
|
3525
|
+
return -3;
|
|
3526
|
+
}
|
|
3527
|
+
|
|
3528
|
+
|
|
3529
|
+
if (retJSON.length > 3) {
|
|
3530
|
+
var obj = eval("(" + retJSON + ")");
|
|
3531
|
+
return obj.signed;
|
|
3532
|
+
} else {
|
|
3533
|
+
return -2;
|
|
3534
|
+
|
|
3535
|
+
}
|
|
3536
|
+
} else {
|
|
3537
|
+
try {
|
|
3538
|
+
AjaxIO(json);
|
|
3539
|
+
}
|
|
3540
|
+
catch (e) {
|
|
3541
|
+
return -3;
|
|
3542
|
+
}
|
|
3543
|
+
|
|
3544
|
+
|
|
3545
|
+
var ret = GetHttpResult();
|
|
3546
|
+
if (ret) {
|
|
3547
|
+
return ret.signed;
|
|
3548
|
+
}
|
|
3549
|
+
|
|
3550
|
+
return null;
|
|
3551
|
+
}
|
|
3552
|
+
};
|
|
3553
|
+
|
|
3554
|
+
this.SOF_SignData = function (ContainerName, ulKeySpec, InData, InDataLen) {
|
|
3555
|
+
|
|
3556
|
+
var json = '{"function":"SOF_SignDataEx", "deviceName":"' + _curDevName + '", "containerName":"' + ContainerName + '", "keySpec":' + ulKeySpec + ', "inData":"' + InData + '", "inDataLen":' + InDataLen + '}';
|
|
3557
|
+
if (linuxWin == 2) {
|
|
3558
|
+
var retJSON = "";
|
|
3559
|
+
try {
|
|
3560
|
+
retJSON = AjaxIO(json);
|
|
3561
|
+
} catch (e) {
|
|
3562
|
+
return -3;
|
|
3563
|
+
}
|
|
3564
|
+
|
|
3565
|
+
|
|
3566
|
+
if (retJSON.length > 3) {
|
|
3567
|
+
var obj = eval("(" + retJSON + ")");
|
|
3568
|
+
return obj.signed;
|
|
3569
|
+
} else {
|
|
3570
|
+
return -2;
|
|
3571
|
+
|
|
3572
|
+
}
|
|
3573
|
+
} else {
|
|
3574
|
+
try {
|
|
3575
|
+
AjaxIO(json);
|
|
3576
|
+
} catch (e) {
|
|
3577
|
+
return -3;
|
|
3578
|
+
}
|
|
3579
|
+
var ret = GetHttpResult();
|
|
3580
|
+
if (ret) {
|
|
3581
|
+
return ret.signed;
|
|
3582
|
+
}
|
|
3583
|
+
|
|
3584
|
+
return -2;
|
|
3585
|
+
}
|
|
3586
|
+
};
|
|
3587
|
+
|
|
3588
|
+
|
|
3589
|
+
this.SOF_VerifySignedData = function (Base64EncodeCert, digestMethod, InData, SignedValue) {
|
|
3590
|
+
var json = '{"function":"SOF_VerifySignedDataEx","deviceName":"' + _curDevName + '", "base64EncodeCert":"' + Base64EncodeCert + '", "digestMethod":' + digestMethod + ', "inData":"' + InData + '", "signedValue":"' + SignedValue + '"}';
|
|
3591
|
+
if (linuxWin == 2) {
|
|
3592
|
+
var retJSON = "";
|
|
3593
|
+
try {
|
|
3594
|
+
retJSON = AjaxIO(json);
|
|
3595
|
+
} catch (e) {
|
|
3596
|
+
return -3;
|
|
3597
|
+
}
|
|
3598
|
+
|
|
3599
|
+
|
|
3600
|
+
if (retJSON.length > 3) {
|
|
3601
|
+
var obj = eval("(" + retJSON + ")");
|
|
3602
|
+
return obj.rtn;
|
|
3603
|
+
} else {
|
|
3604
|
+
return -2;
|
|
3605
|
+
|
|
3606
|
+
}
|
|
3607
|
+
} else {
|
|
3608
|
+
try {
|
|
3609
|
+
AjaxIO(json);
|
|
3610
|
+
} catch (e) {
|
|
3611
|
+
return -3;
|
|
3612
|
+
}
|
|
3613
|
+
var ret = GetHttpResult();
|
|
3614
|
+
if (ret) {
|
|
3615
|
+
return ret.rtn;
|
|
3616
|
+
}
|
|
3617
|
+
|
|
3618
|
+
return -2;
|
|
3619
|
+
}
|
|
3620
|
+
};
|
|
3621
|
+
|
|
3622
|
+
|
|
3623
|
+
this.SOF_EncryptDataPKCS7 = function (Base64EncodeCert, InData, InDataLen) {
|
|
3624
|
+
|
|
3625
|
+
var json = '{"function":"SOF_EncryptDataPKCS7", "deviceName":"' + _curDevName + '", "base64EncodeCert":"' + Base64EncodeCert + '", "inData":"' + InData + '", "inDataLen":' + InDataLen + '}';
|
|
3626
|
+
if (linuxWin == 2) {
|
|
3627
|
+
var retJSON = "";
|
|
3628
|
+
try {
|
|
3629
|
+
retJSON = AjaxIO(json);
|
|
3630
|
+
} catch (e) {
|
|
3631
|
+
return -3;
|
|
3632
|
+
}
|
|
3633
|
+
|
|
3634
|
+
|
|
3635
|
+
if (retJSON.length > 3) {
|
|
3636
|
+
var obj = eval("(" + retJSON + ")");
|
|
3637
|
+
return obj.encrypedData;
|
|
3638
|
+
} else {
|
|
3639
|
+
return -2;
|
|
3640
|
+
|
|
3641
|
+
}
|
|
3642
|
+
} else {
|
|
3643
|
+
try {
|
|
3644
|
+
AjaxIO(json);
|
|
3645
|
+
} catch (e) {
|
|
3646
|
+
return -3;
|
|
3647
|
+
}
|
|
3648
|
+
var ret = GetHttpResult();
|
|
3649
|
+
if (ret) {
|
|
3650
|
+
return ret.encrypedData;
|
|
3651
|
+
}
|
|
3652
|
+
|
|
3653
|
+
return -2;
|
|
3654
|
+
}
|
|
3655
|
+
|
|
3656
|
+
};
|
|
3657
|
+
|
|
3658
|
+
|
|
3659
|
+
this.SOF_DecryptDataPKCS7 = function (ContainerName, ulKeySpec, InData) {
|
|
3660
|
+
|
|
3661
|
+
var json = '{"function":"SOF_DecryptDataPKCS7", "deviceName":"' + _curDevName + '", "containerName":"' + ContainerName + '", "keySpec":' + ulKeySpec + ', "inData":"' + InData + '"}';
|
|
3662
|
+
if (linuxWin == 2) {
|
|
3663
|
+
var retJSON = "";
|
|
3664
|
+
try {
|
|
3665
|
+
retJSON = AjaxIO(json);
|
|
3666
|
+
} catch (e) {
|
|
3667
|
+
return -3;
|
|
3668
|
+
}
|
|
3669
|
+
|
|
3670
|
+
|
|
3671
|
+
if (retJSON.length > 3) {
|
|
3672
|
+
var obj = eval("(" + retJSON + ")");
|
|
3673
|
+
return obj.decryptedData;
|
|
3674
|
+
} else {
|
|
3675
|
+
return -2;
|
|
3676
|
+
|
|
3677
|
+
}
|
|
3678
|
+
} else {
|
|
3679
|
+
try {
|
|
3680
|
+
AjaxIO(json);
|
|
3681
|
+
} catch (e) {
|
|
3682
|
+
return -3;
|
|
3683
|
+
}
|
|
3684
|
+
var ret = GetHttpResult();
|
|
3685
|
+
if (ret) {
|
|
3686
|
+
return ret.decryptedData;
|
|
3687
|
+
}
|
|
3688
|
+
|
|
3689
|
+
return -2;
|
|
3690
|
+
}
|
|
3691
|
+
};
|
|
3692
|
+
|
|
3693
|
+
|
|
3694
|
+
this.SOF_GenRemoteUnblockRequest = function () {
|
|
3695
|
+
|
|
3696
|
+
var json = '{"function":"SOF_GenRemoteUnblockRequest", "deviceName":"' + _curDevName + '"}';
|
|
3697
|
+
if (linuxWin == 2) {
|
|
3698
|
+
var retJSON = "";
|
|
3699
|
+
try {
|
|
3700
|
+
retJSON = AjaxIO(json);
|
|
3701
|
+
} catch (e) {
|
|
3702
|
+
return -3;
|
|
3703
|
+
}
|
|
3704
|
+
|
|
3705
|
+
|
|
3706
|
+
if (retJSON.length > 3) {
|
|
3707
|
+
var obj = eval("(" + retJSON + ")");
|
|
3708
|
+
return obj.request;
|
|
3709
|
+
} else {
|
|
3710
|
+
return -2;
|
|
3711
|
+
|
|
3712
|
+
}
|
|
3713
|
+
} else {
|
|
3714
|
+
try {
|
|
3715
|
+
AjaxIO(json);
|
|
3716
|
+
} catch (e) {
|
|
3717
|
+
return -3;
|
|
3718
|
+
}
|
|
3719
|
+
var ret = GetHttpResult();
|
|
3720
|
+
if (ret) {
|
|
3721
|
+
return ret.request;
|
|
3722
|
+
}
|
|
3723
|
+
|
|
3724
|
+
return -2;
|
|
3725
|
+
}
|
|
3726
|
+
};
|
|
3727
|
+
|
|
3728
|
+
|
|
3729
|
+
this.SOF_GenResetpwdResponse = function (request, soPin, userPin) {
|
|
3730
|
+
|
|
3731
|
+
var json = '{"function":"SOF_GenResetpwdResponse", "deviceName":"' + _curDevName + '", "request":"' + request + '", "soPin":"' + soPin + '", "userPin":"' + userPin + '"}';
|
|
3732
|
+
if (linuxWin == 2) {
|
|
3733
|
+
var retJSON = "";
|
|
3734
|
+
try {
|
|
3735
|
+
retJSON = AjaxIO(json);
|
|
3736
|
+
} catch (e) {
|
|
3737
|
+
return -3;
|
|
3738
|
+
}
|
|
3739
|
+
|
|
3740
|
+
|
|
3741
|
+
if (retJSON.length > 3) {
|
|
3742
|
+
var obj = eval("(" + retJSON + ")");
|
|
3743
|
+
return obj.request;
|
|
3744
|
+
} else {
|
|
3745
|
+
return -2;
|
|
3746
|
+
|
|
3747
|
+
}
|
|
3748
|
+
} else {
|
|
3749
|
+
try {
|
|
3750
|
+
AjaxIO(json);
|
|
3751
|
+
} catch (e) {
|
|
3752
|
+
return -3;
|
|
3753
|
+
}
|
|
3754
|
+
var ret = GetHttpResult();
|
|
3755
|
+
if (ret) {
|
|
3756
|
+
return ret.request;
|
|
3757
|
+
}
|
|
3758
|
+
|
|
3759
|
+
return -2;
|
|
3760
|
+
}
|
|
3761
|
+
};
|
|
3762
|
+
|
|
3763
|
+
|
|
3764
|
+
this.SOF_RemoteUnblockPIN = function (request) {
|
|
3765
|
+
|
|
3766
|
+
var json = '{"function":"SOF_RemoteUnblockPIN", "deviceName":"' + _curDevName + '", "request":"' + request + '"}';
|
|
3767
|
+
if (linuxWin == 2) {
|
|
3768
|
+
var retJSON = "";
|
|
3769
|
+
try {
|
|
3770
|
+
retJSON = AjaxIO(json);
|
|
3771
|
+
} catch (e) {
|
|
3772
|
+
return -3;
|
|
3773
|
+
}
|
|
3774
|
+
|
|
3775
|
+
|
|
3776
|
+
if (retJSON.length > 3) {
|
|
3777
|
+
var obj = eval("(" + retJSON + ")");
|
|
3778
|
+
return obj.rtn;
|
|
3779
|
+
} else {
|
|
3780
|
+
return -2;
|
|
3781
|
+
|
|
3782
|
+
}
|
|
3783
|
+
} else {
|
|
3784
|
+
try {
|
|
3785
|
+
AjaxIO(json);
|
|
3786
|
+
} catch (e) {
|
|
3787
|
+
return -3;
|
|
3788
|
+
}
|
|
3789
|
+
var ret = GetHttpResult();
|
|
3790
|
+
if (ret) {
|
|
3791
|
+
return ret.rtn;
|
|
3792
|
+
}
|
|
3793
|
+
|
|
3794
|
+
return -2;
|
|
3795
|
+
}
|
|
3796
|
+
};
|
|
3797
|
+
|
|
3798
|
+
|
|
3799
|
+
this.SOF_SignDataToPKCS7 = function (ContainerName, ulKeySpec, InData, ulDetached) {
|
|
3800
|
+
|
|
3801
|
+
var json = '{"function":"SOF_SignDataToPKCS7", "deviceName":"' + _curDevName + '", "containerName":"' + ContainerName + '", "keySpec":' + ulKeySpec + ', "inData":"' + InData + '", "detached":' + ulDetached + '}';
|
|
3802
|
+
if (linuxWin == 2) {
|
|
3803
|
+
var retJSON = "";
|
|
3804
|
+
try {
|
|
3805
|
+
retJSON = AjaxIO(json);
|
|
3806
|
+
} catch (e) {
|
|
3807
|
+
return -3;
|
|
3808
|
+
}
|
|
3809
|
+
|
|
3810
|
+
|
|
3811
|
+
if (retJSON.length > 3) {
|
|
3812
|
+
var obj = eval("(" + retJSON + ")");
|
|
3813
|
+
return obj.pkcs7;
|
|
3814
|
+
} else {
|
|
3815
|
+
return -2;
|
|
3816
|
+
|
|
3817
|
+
}
|
|
3818
|
+
} else {
|
|
3819
|
+
try {
|
|
3820
|
+
AjaxIO(json);
|
|
3821
|
+
} catch (e) {
|
|
3822
|
+
return -3;
|
|
3823
|
+
}
|
|
3824
|
+
var ret = GetHttpResult();
|
|
3825
|
+
if (ret) {
|
|
3826
|
+
return ret.pkcs7;
|
|
3827
|
+
}
|
|
3828
|
+
|
|
3829
|
+
return -2;
|
|
3830
|
+
}
|
|
3831
|
+
};
|
|
3832
|
+
|
|
3833
|
+
|
|
3834
|
+
this.SOF_VerifyDataToPKCS7 = function (strPkcs7Data, OriginalText, ulDetached) {
|
|
3835
|
+
|
|
3836
|
+
var json = '{"function":"SOF_VerifyDataToPKCS7", "deviceName":"' + _curDevName + '", "pkcs7":"' + strPkcs7Data + '", "original":"' + OriginalText + '", "detached":' + ulDetached + '}';
|
|
3837
|
+
if (linuxWin == 2) {
|
|
3838
|
+
var retJSON = "";
|
|
3839
|
+
try {
|
|
3840
|
+
retJSON = AjaxIO(json);
|
|
3841
|
+
} catch (e) {
|
|
3842
|
+
return -3;
|
|
3843
|
+
}
|
|
3844
|
+
|
|
3845
|
+
|
|
3846
|
+
if (retJSON.length > 3) {
|
|
3847
|
+
var obj = eval("(" + retJSON + ")");
|
|
3848
|
+
return obj.rtn;
|
|
3849
|
+
} else {
|
|
3850
|
+
return -2;
|
|
3851
|
+
|
|
3852
|
+
}
|
|
3853
|
+
} else {
|
|
3854
|
+
try {
|
|
3855
|
+
AjaxIO(json);
|
|
3856
|
+
} catch (e) {
|
|
3857
|
+
return -3;
|
|
3858
|
+
}
|
|
3859
|
+
var ret = GetHttpResult();
|
|
3860
|
+
if (ret) {
|
|
3861
|
+
return ret.rtn;
|
|
3862
|
+
}
|
|
3863
|
+
|
|
3864
|
+
return -2;
|
|
3865
|
+
}
|
|
3866
|
+
};
|
|
3867
|
+
|
|
3868
|
+
//按expType导出的公钥,格式为国密规范指定的格式或DER格式或裸数据格式
|
|
3869
|
+
this.SOF_ExportPubKey = function (containerName, keySpec, expType) //expType=1: 国密格式; 2:DER; 3:RAW (SM2 public key ONLY: X|Y, X,Y各为32字节)
|
|
3870
|
+
{
|
|
3871
|
+
var json = '{"function":"SOF_ExportPubKeyEx","deviceName":"' + _curDevName + '", "containerName":"' + containerName + '", "keySpec":' + keySpec + ', "expType":' + expType + '}';
|
|
3872
|
+
if (linuxWin == 2) {
|
|
3873
|
+
var retJSON = "";
|
|
3874
|
+
try {
|
|
3875
|
+
retJSON = AjaxIO(json);
|
|
3876
|
+
} catch (e) {
|
|
3877
|
+
return -3;
|
|
3878
|
+
}
|
|
3879
|
+
|
|
3880
|
+
|
|
3881
|
+
if (retJSON.length > 3) {
|
|
3882
|
+
var obj = eval("(" + retJSON + ")");
|
|
3883
|
+
return obj.pubKey;
|
|
3884
|
+
} else {
|
|
3885
|
+
return -2;
|
|
3886
|
+
|
|
3887
|
+
}
|
|
3888
|
+
} else {
|
|
3889
|
+
try {
|
|
3890
|
+
AjaxIO(json);
|
|
3891
|
+
} catch (e) {
|
|
3892
|
+
return -3;
|
|
3893
|
+
}
|
|
3894
|
+
var ret = GetHttpResult();
|
|
3895
|
+
if (ret) {
|
|
3896
|
+
return ret.pubKey;
|
|
3897
|
+
}
|
|
3898
|
+
|
|
3899
|
+
return -2;
|
|
3900
|
+
}
|
|
3901
|
+
}
|
|
3902
|
+
|
|
3903
|
+
//公钥加密
|
|
3904
|
+
this.SOF_EncryptByPubKey = function (strPubKey, strInput, cerType) {
|
|
3905
|
+
var json = '{"function":"SOF_EncryptByPubKey", "deviceName":"' + _curDevName + '", "pubKey":"' + strPubKey + '", "asymPlain":"' + strInput + '", "keySpec":' + cerType + '}';
|
|
3906
|
+
if (linuxWin == 2) {
|
|
3907
|
+
var retJSON = "";
|
|
3908
|
+
try {
|
|
3909
|
+
retJSON = AjaxIO(json);
|
|
3910
|
+
} catch (e) {
|
|
3911
|
+
return -3;
|
|
3912
|
+
}
|
|
3913
|
+
|
|
3914
|
+
|
|
3915
|
+
if (retJSON.length > 3) {
|
|
3916
|
+
var obj = eval("(" + retJSON + ")");
|
|
3917
|
+
return obj.asymCipher;
|
|
3918
|
+
} else {
|
|
3919
|
+
return -2;
|
|
3920
|
+
|
|
3921
|
+
}
|
|
3922
|
+
} else {
|
|
3923
|
+
try {
|
|
3924
|
+
AjaxIO(json);
|
|
3925
|
+
}
|
|
3926
|
+
catch (e) {
|
|
3927
|
+
return -3;
|
|
3928
|
+
}
|
|
3929
|
+
|
|
3930
|
+
var ret = GetHttpResult();
|
|
3931
|
+
if (ret) {
|
|
3932
|
+
return ret.asymCipher;
|
|
3933
|
+
}
|
|
3934
|
+
|
|
3935
|
+
return null;
|
|
3936
|
+
}
|
|
3937
|
+
}
|
|
3938
|
+
|
|
3939
|
+
//私钥解密
|
|
3940
|
+
this.SOF_DecryptByPrvKey = function (containerName, cerType, strAsymCipher) {
|
|
3941
|
+
var json = '{"function":"SOF_DecryptByPrvKey", "deviceName":"' + _curDevName + '", "containerName":"' + containerName + '", "asymCipher":"' + strAsymCipher + '", "keySpec":' + cerType + '}';
|
|
3942
|
+
if (linuxWin == 2) {
|
|
3943
|
+
var retJSON = "";
|
|
3944
|
+
try {
|
|
3945
|
+
retJSON = AjaxIO(json);
|
|
3946
|
+
} catch (e) {
|
|
3947
|
+
return -3;
|
|
3948
|
+
}
|
|
3949
|
+
|
|
3950
|
+
|
|
3951
|
+
if (retJSON.length > 3) {
|
|
3952
|
+
var obj = eval("(" + retJSON + ")");
|
|
3953
|
+
return obj.asymPlain;
|
|
3954
|
+
} else {
|
|
3955
|
+
return -2;
|
|
3956
|
+
|
|
3957
|
+
}
|
|
3958
|
+
} else {
|
|
3959
|
+
try {
|
|
3960
|
+
AjaxIO(json);
|
|
3961
|
+
}
|
|
3962
|
+
catch (e) {
|
|
3963
|
+
return -3;
|
|
3964
|
+
}
|
|
3965
|
+
|
|
3966
|
+
var ret = GetHttpResult();
|
|
3967
|
+
if (ret) {
|
|
3968
|
+
return ret.asymPlain;
|
|
3969
|
+
}
|
|
3970
|
+
|
|
3971
|
+
return null;
|
|
3972
|
+
}
|
|
3973
|
+
}
|
|
3974
|
+
|
|
3975
|
+
//RA客户端控件
|
|
3976
|
+
this.SOF_CreateKeyPair = function (container, keySpec, asymAlg, keyLength) {
|
|
3977
|
+
var json = '{"function":"SOF_CreateKeyPair","deviceName":"' + _curDevName + '", "containerName":"' + container + '", "asymAlg":' + asymAlg + ', "keySpec":' + keySpec + ',"keyLength":' + keyLength + '}';
|
|
3978
|
+
if (linuxWin == 2) {
|
|
3979
|
+
var retJSON = "";
|
|
3980
|
+
try {
|
|
3981
|
+
retJSON = AjaxIO(json);
|
|
3982
|
+
} catch (e) {
|
|
3983
|
+
return -3;
|
|
3984
|
+
}
|
|
3985
|
+
|
|
3986
|
+
|
|
3987
|
+
if (retJSON.length > 3) {
|
|
3988
|
+
var obj = eval("(" + retJSON + ")");
|
|
3989
|
+
return obj.rtn;
|
|
3990
|
+
} else {
|
|
3991
|
+
return -2;
|
|
3992
|
+
|
|
3993
|
+
}
|
|
3994
|
+
} else {
|
|
3995
|
+
try {
|
|
3996
|
+
AjaxIO(json);
|
|
3997
|
+
}
|
|
3998
|
+
catch (e) {
|
|
3999
|
+
return -3;
|
|
4000
|
+
}
|
|
4001
|
+
|
|
4002
|
+
var ret = GetHttpResult();
|
|
4003
|
+
if (ret) {
|
|
4004
|
+
return ret.rtn;
|
|
4005
|
+
}
|
|
4006
|
+
|
|
4007
|
+
return -2;
|
|
4008
|
+
}
|
|
4009
|
+
}
|
|
4010
|
+
|
|
4011
|
+
this.SOF_EnumCertContiner = function () {
|
|
4012
|
+
var json = '{"function":"SOF_EnumCertContiner", "deviceName":"' + _curDevName + '"}';
|
|
4013
|
+
if (linuxWin == 2) {
|
|
4014
|
+
var retJSON = "";
|
|
4015
|
+
try {
|
|
4016
|
+
retJSON = AjaxIO(json);
|
|
4017
|
+
} catch (e) {
|
|
4018
|
+
return -3;
|
|
4019
|
+
}
|
|
4020
|
+
|
|
4021
|
+
|
|
4022
|
+
if (retJSON.length > 3) {
|
|
4023
|
+
var obj = eval("(" + retJSON + ")");
|
|
4024
|
+
return obj.containerName;
|
|
4025
|
+
} else {
|
|
4026
|
+
return -2;
|
|
4027
|
+
|
|
4028
|
+
}
|
|
4029
|
+
} else {
|
|
4030
|
+
try {
|
|
4031
|
+
AjaxIO(json);
|
|
4032
|
+
}
|
|
4033
|
+
catch (e) {
|
|
4034
|
+
return -3;
|
|
4035
|
+
}
|
|
4036
|
+
|
|
4037
|
+
var ret = GetHttpResult();
|
|
4038
|
+
if (ret) {
|
|
4039
|
+
return ret.containerName;
|
|
4040
|
+
}
|
|
4041
|
+
|
|
4042
|
+
return "";
|
|
4043
|
+
}
|
|
4044
|
+
}
|
|
4045
|
+
|
|
4046
|
+
this.SOF_FindContainer = function (certSN) {
|
|
4047
|
+
var json = '{"function":"SOF_FindContainer","deviceName":"' + _curDevName + '", "certSN":"' + certSN + '"}';
|
|
4048
|
+
if (linuxWin == 2) {
|
|
4049
|
+
var retJSON = "";
|
|
4050
|
+
try {
|
|
4051
|
+
retJSON = AjaxIO(json);
|
|
4052
|
+
} catch (e) {
|
|
4053
|
+
return -3;
|
|
4054
|
+
}
|
|
4055
|
+
|
|
4056
|
+
|
|
4057
|
+
if (retJSON.length > 3) {
|
|
4058
|
+
var obj = eval("(" + retJSON + ")");
|
|
4059
|
+
return obj.containerName;
|
|
4060
|
+
} else {
|
|
4061
|
+
return -2;
|
|
4062
|
+
|
|
4063
|
+
}
|
|
4064
|
+
} else {
|
|
4065
|
+
try {
|
|
4066
|
+
AjaxIO(json);
|
|
4067
|
+
}
|
|
4068
|
+
catch (e) {
|
|
4069
|
+
return -3;
|
|
4070
|
+
}
|
|
4071
|
+
|
|
4072
|
+
var ret = GetHttpResult();
|
|
4073
|
+
if (ret) {
|
|
4074
|
+
return ret.containerName;
|
|
4075
|
+
}
|
|
4076
|
+
|
|
4077
|
+
return "";
|
|
4078
|
+
}
|
|
4079
|
+
}
|
|
4080
|
+
|
|
4081
|
+
this.SOF_DeleteCert = function (certSN) {
|
|
4082
|
+
var json = '{"function":"SOF_DeleteCert","deviceName":"' + _curDevName + '", "certSN":"' + certSN + '"}';
|
|
4083
|
+
if (linuxWin == 2) {
|
|
4084
|
+
var retJSON = "";
|
|
4085
|
+
try {
|
|
4086
|
+
retJSON = AjaxIO(json);
|
|
4087
|
+
} catch (e) {
|
|
4088
|
+
return -3;
|
|
4089
|
+
}
|
|
4090
|
+
|
|
4091
|
+
|
|
4092
|
+
if (retJSON.length > 3) {
|
|
4093
|
+
var obj = eval("(" + retJSON + ")");
|
|
4094
|
+
return obj.rtn;
|
|
4095
|
+
} else {
|
|
4096
|
+
return -2;
|
|
4097
|
+
|
|
4098
|
+
}
|
|
4099
|
+
} else {
|
|
4100
|
+
try {
|
|
4101
|
+
AjaxIO(json);
|
|
4102
|
+
}
|
|
4103
|
+
catch (e) {
|
|
4104
|
+
return -3;
|
|
4105
|
+
}
|
|
4106
|
+
|
|
4107
|
+
var ret = GetHttpResult();
|
|
4108
|
+
if (ret) {
|
|
4109
|
+
return ret.rtn;
|
|
4110
|
+
}
|
|
4111
|
+
|
|
4112
|
+
return -2;
|
|
4113
|
+
}
|
|
4114
|
+
}
|
|
4115
|
+
|
|
4116
|
+
this.SOF_DeleteContainer = function (certSN) {
|
|
4117
|
+
var json = '{"function":"SOF_DeleteContainer", "deviceName":"' + _curDevName + '", "certSN":"' + certSN + '"}';
|
|
4118
|
+
if (linuxWin == 2) {
|
|
4119
|
+
var retJSON = "";
|
|
4120
|
+
try {
|
|
4121
|
+
retJSON = AjaxIO(json);
|
|
4122
|
+
} catch (e) {
|
|
4123
|
+
return -3;
|
|
4124
|
+
}
|
|
4125
|
+
|
|
4126
|
+
|
|
4127
|
+
if (retJSON.length > 3) {
|
|
4128
|
+
var obj = eval("(" + retJSON + ")");
|
|
4129
|
+
return obj.rtn;
|
|
4130
|
+
} else {
|
|
4131
|
+
return -2;
|
|
4132
|
+
|
|
4133
|
+
}
|
|
4134
|
+
} else {
|
|
4135
|
+
try {
|
|
4136
|
+
AjaxIO(json);
|
|
4137
|
+
}
|
|
4138
|
+
catch (e) {
|
|
4139
|
+
return -3;
|
|
4140
|
+
}
|
|
4141
|
+
|
|
4142
|
+
var ret = GetHttpResult();
|
|
4143
|
+
if (ret) {
|
|
4144
|
+
return ret.rtn;
|
|
4145
|
+
}
|
|
4146
|
+
|
|
4147
|
+
return -2;
|
|
4148
|
+
}
|
|
4149
|
+
}
|
|
4150
|
+
|
|
4151
|
+
this.SOF_SignByCert = function (certSN, plain) {
|
|
4152
|
+
var json = '{"function":"SOF_SignByCert", "deviceName":"' + _curDevName + '", "certSN":"' + certSN + '", "inData":"' + plain + '"}';
|
|
4153
|
+
if (linuxWin == 2) {
|
|
4154
|
+
var retJSON = "";
|
|
4155
|
+
try {
|
|
4156
|
+
retJSON = AjaxIO(json);
|
|
4157
|
+
} catch (e) {
|
|
4158
|
+
return -3;
|
|
4159
|
+
}
|
|
4160
|
+
|
|
4161
|
+
|
|
4162
|
+
if (retJSON.length > 3) {
|
|
4163
|
+
var obj = eval("(" + retJSON + ")");
|
|
4164
|
+
return obj.signed;
|
|
4165
|
+
} else {
|
|
4166
|
+
return -2;
|
|
4167
|
+
|
|
4168
|
+
}
|
|
4169
|
+
} else {
|
|
4170
|
+
try {
|
|
4171
|
+
AjaxIO(json);
|
|
4172
|
+
}
|
|
4173
|
+
catch (e) {
|
|
4174
|
+
return -3;
|
|
4175
|
+
}
|
|
4176
|
+
|
|
4177
|
+
var ret = GetHttpResult();
|
|
4178
|
+
if (ret) {
|
|
4179
|
+
return ret.signed;
|
|
4180
|
+
}
|
|
4181
|
+
|
|
4182
|
+
return null;
|
|
4183
|
+
}
|
|
4184
|
+
}
|
|
4185
|
+
|
|
4186
|
+
this.SOF_VerifyByCert = function (certSN, plain, signature, digestMethod) {
|
|
4187
|
+
|
|
4188
|
+
var json = '{"function":"SOF_VerifyByCert", "deviceName":"' + _curDevName + '", "certSN":"' + certSN + '","digestMethod":' + digestMethod + ', "inData":"' + plain + '", "signed":"' + signature + '"}';
|
|
4189
|
+
if (linuxWin == 2) {
|
|
4190
|
+
var retJSON = "";
|
|
4191
|
+
try {
|
|
4192
|
+
retJSON = AjaxIO(json);
|
|
4193
|
+
} catch (e) {
|
|
4194
|
+
return -3;
|
|
4195
|
+
}
|
|
4196
|
+
|
|
4197
|
+
|
|
4198
|
+
if (retJSON.length > 3) {
|
|
4199
|
+
var obj = eval("(" + retJSON + ")");
|
|
4200
|
+
return obj.rtn;
|
|
4201
|
+
} else {
|
|
4202
|
+
return -2;
|
|
4203
|
+
|
|
4204
|
+
}
|
|
4205
|
+
} else {
|
|
4206
|
+
try {
|
|
4207
|
+
AjaxIO(json);
|
|
4208
|
+
}
|
|
4209
|
+
catch (e) {
|
|
4210
|
+
return -3;
|
|
4211
|
+
}
|
|
4212
|
+
var ret = GetHttpResult();
|
|
4213
|
+
if (ret) {
|
|
4214
|
+
return ret.rtn;
|
|
4215
|
+
}
|
|
4216
|
+
|
|
4217
|
+
return -2;
|
|
4218
|
+
}
|
|
4219
|
+
}
|
|
4220
|
+
|
|
4221
|
+
this.SOF_VerifyByExtCert = function (cert, plain, signature, digestMethod) {
|
|
4222
|
+
var json = '{"function":"SOF_VerifyByExtCert","deviceName":"' + _curDevName + '", "cert":"' + cert + '", "digestMethod":' + digestMethod + ', "inData":"' + plain + '", "signed":"' + signature + '"}';
|
|
4223
|
+
if (linuxWin == 2) {
|
|
4224
|
+
var retJSON = "";
|
|
4225
|
+
try {
|
|
4226
|
+
retJSON = AjaxIO(json);
|
|
4227
|
+
} catch (e) {
|
|
4228
|
+
return -3;
|
|
4229
|
+
}
|
|
4230
|
+
|
|
4231
|
+
|
|
4232
|
+
if (retJSON.length > 3) {
|
|
4233
|
+
var obj = eval("(" + retJSON + ")");
|
|
4234
|
+
return obj.rtn;
|
|
4235
|
+
} else {
|
|
4236
|
+
return -2;
|
|
4237
|
+
|
|
4238
|
+
}
|
|
4239
|
+
} else {
|
|
4240
|
+
try {
|
|
4241
|
+
AjaxIO(json);
|
|
4242
|
+
}
|
|
4243
|
+
catch (e) {
|
|
4244
|
+
return -3;
|
|
4245
|
+
}
|
|
4246
|
+
|
|
4247
|
+
var ret = GetHttpResult();
|
|
4248
|
+
if (ret) {
|
|
4249
|
+
return ret.rtn;
|
|
4250
|
+
}
|
|
4251
|
+
|
|
4252
|
+
return -2;
|
|
4253
|
+
}
|
|
4254
|
+
}
|
|
4255
|
+
|
|
4256
|
+
// this.SOF_GenerateP10Request = function (container, dn, asymAlg, keySpec, keyLength) {
|
|
4257
|
+
// var json = '{"function":"SOF_GenerateP10Request", "deviceName":"' + _curDevName + '", "containerName":"' + container + '", "certDN":"' + dn + '", "asymAlg":' + asymAlg + ', "keySpec":' + keySpec + ',"keyLength":' + keyLength + '}';
|
|
4258
|
+
// if (linuxWin == 2) {
|
|
4259
|
+
// var retJSON = "";
|
|
4260
|
+
// try {
|
|
4261
|
+
// retJSON = AjaxIO(json);
|
|
4262
|
+
// } catch (e) {
|
|
4263
|
+
// return -3;
|
|
4264
|
+
// }
|
|
4265
|
+
//
|
|
4266
|
+
//
|
|
4267
|
+
// if (retJSON.length > 3) {
|
|
4268
|
+
// var obj = eval("(" + retJSON + ")");
|
|
4269
|
+
// return obj.outData;
|
|
4270
|
+
// } else {
|
|
4271
|
+
// return -2;
|
|
4272
|
+
//
|
|
4273
|
+
// }
|
|
4274
|
+
// } else {
|
|
4275
|
+
// try {
|
|
4276
|
+
// AjaxIO(json);
|
|
4277
|
+
// }
|
|
4278
|
+
// catch (e) {
|
|
4279
|
+
// return -3;
|
|
4280
|
+
// }
|
|
4281
|
+
//
|
|
4282
|
+
// var ret = GetHttpResult();
|
|
4283
|
+
// if (ret) {
|
|
4284
|
+
// return ret.outData;
|
|
4285
|
+
// }
|
|
4286
|
+
//
|
|
4287
|
+
// return null;
|
|
4288
|
+
// }
|
|
4289
|
+
// }
|
|
4290
|
+
this.SOF_GenerateP10Request = function(_curDevName,container, dn, asymAlg, keySpec, keyLength)
|
|
4291
|
+
{
|
|
4292
|
+
var json = '{"function":"SOF_GenerateP10Request", "deviceName":"' + _curDevName + '", "containerName":"' + container + '", "certDN":"' + dn + '", "asymAlg":' + asymAlg + ', "keySpec":'+ keySpec + ',"keyLength":' + keyLength + '}';
|
|
4293
|
+
if (linuxWin == 2) {
|
|
4294
|
+
var retJSON = "";
|
|
4295
|
+
try {
|
|
4296
|
+
retJSON = AjaxIO(json);
|
|
4297
|
+
} catch (e) {
|
|
4298
|
+
return -3;
|
|
4299
|
+
}
|
|
4300
|
+
|
|
4301
|
+
|
|
4302
|
+
if (retJSON.length > 3) {
|
|
4303
|
+
var obj = eval("(" + retJSON + ")");
|
|
4304
|
+
return obj.outData;
|
|
4305
|
+
} else {
|
|
4306
|
+
return -2;
|
|
4307
|
+
|
|
4308
|
+
}
|
|
4309
|
+
} else {
|
|
4310
|
+
try {
|
|
4311
|
+
AjaxIO(json);
|
|
4312
|
+
}
|
|
4313
|
+
catch (e) {
|
|
4314
|
+
return -3;
|
|
4315
|
+
}
|
|
4316
|
+
|
|
4317
|
+
var ret = GetHttpResult();
|
|
4318
|
+
if (ret) {
|
|
4319
|
+
return ret.outData;
|
|
4320
|
+
}
|
|
4321
|
+
|
|
4322
|
+
return null;
|
|
4323
|
+
}
|
|
4324
|
+
}
|
|
4325
|
+
this.SOF_ImportCert = function (container, cert, keySpec) {
|
|
4326
|
+
var json = '{"function":"SOF_ImportCert", "deviceName":"' + _curDevName + '", "containerName":"' + container + '", "cert":"' + cert + '", "keySpec":' + keySpec + '}';
|
|
4327
|
+
if (linuxWin == 2) {
|
|
4328
|
+
var retJSON = "";
|
|
4329
|
+
try {
|
|
4330
|
+
retJSON = AjaxIO(json);
|
|
4331
|
+
} catch (e) {
|
|
4332
|
+
return -3;
|
|
4333
|
+
}
|
|
4334
|
+
|
|
4335
|
+
|
|
4336
|
+
if (retJSON.length > 3) {
|
|
4337
|
+
var obj = eval("(" + retJSON + ")");
|
|
4338
|
+
return obj.rtn;
|
|
4339
|
+
} else {
|
|
4340
|
+
return -2;
|
|
4341
|
+
|
|
4342
|
+
}
|
|
4343
|
+
} else {
|
|
4344
|
+
try {
|
|
4345
|
+
AjaxIO(json);
|
|
4346
|
+
}
|
|
4347
|
+
catch (e) {
|
|
4348
|
+
return -3;
|
|
4349
|
+
}
|
|
4350
|
+
|
|
4351
|
+
var ret = GetHttpResult();
|
|
4352
|
+
if (ret) {
|
|
4353
|
+
return ret.rtn;
|
|
4354
|
+
}
|
|
4355
|
+
|
|
4356
|
+
return -2;
|
|
4357
|
+
}
|
|
4358
|
+
}
|
|
4359
|
+
|
|
4360
|
+
this.SOF_ImportCryptoCertAndKey = function (container, cert, nAsymAlg, EncryptedSessionKeyData, symAlg, EncryptedPrivateKeyData, mode) {
|
|
4361
|
+
var json = '{"function":"SOF_ImportCryptoCertAndKey", "deviceName":"' + _curDevName + '", "containerName":"' + container + '", "cert":"' + cert + '", "asymAlg":' + nAsymAlg + ', "sessionKey":"' + EncryptedSessionKeyData + '", "symAlg":"' + symAlg + '", "encrypedData":"' + EncryptedPrivateKeyData + ', + "mode":' + mode + '}';
|
|
4362
|
+
if (linuxWin == 2) {
|
|
4363
|
+
var retJSON = "";
|
|
4364
|
+
try {
|
|
4365
|
+
retJSON = AjaxIO(json);
|
|
4366
|
+
} catch (e) {
|
|
4367
|
+
return -3;
|
|
4368
|
+
}
|
|
4369
|
+
|
|
4370
|
+
|
|
4371
|
+
if (retJSON.length > 3) {
|
|
4372
|
+
var obj = eval("(" + retJSON + ")");
|
|
4373
|
+
return obj.rtn;
|
|
4374
|
+
} else {
|
|
4375
|
+
return -2;
|
|
4376
|
+
|
|
4377
|
+
}
|
|
4378
|
+
} else {
|
|
4379
|
+
try {
|
|
4380
|
+
AjaxIO(json);
|
|
4381
|
+
}
|
|
4382
|
+
catch (e) {
|
|
4383
|
+
return -3;
|
|
4384
|
+
}
|
|
4385
|
+
|
|
4386
|
+
var ret = GetHttpResult();
|
|
4387
|
+
if (ret) {
|
|
4388
|
+
return ret.rtn;
|
|
4389
|
+
}
|
|
4390
|
+
|
|
4391
|
+
return -2;
|
|
4392
|
+
}
|
|
4393
|
+
}
|
|
4394
|
+
|
|
4395
|
+
this.SOF_GenerateRandom = function (length) {
|
|
4396
|
+
var json = '{"function":"SOF_GenRandom", "deviceName":"' + _curDevName + '", "inDataLen":' + length + '}';
|
|
4397
|
+
if (linuxWin == 2) {
|
|
4398
|
+
var retJSON = "";
|
|
4399
|
+
try {
|
|
4400
|
+
retJSON = AjaxIO(json);
|
|
4401
|
+
} catch (e) {
|
|
4402
|
+
return -3;
|
|
4403
|
+
}
|
|
4404
|
+
|
|
4405
|
+
|
|
4406
|
+
if (retJSON.length > 3) {
|
|
4407
|
+
var obj = eval("(" + retJSON + ")");
|
|
4408
|
+
return obj.outData;
|
|
4409
|
+
} else {
|
|
4410
|
+
return -2;
|
|
4411
|
+
|
|
4412
|
+
}
|
|
4413
|
+
} else {
|
|
4414
|
+
try {
|
|
4415
|
+
AjaxIO(json);
|
|
4416
|
+
}
|
|
4417
|
+
catch (e) {
|
|
4418
|
+
return -3;
|
|
4419
|
+
}
|
|
4420
|
+
|
|
4421
|
+
var ret = GetHttpResult();
|
|
4422
|
+
if (ret) {
|
|
4423
|
+
return ret.outData;
|
|
4424
|
+
}
|
|
4425
|
+
|
|
4426
|
+
return -2;
|
|
4427
|
+
}
|
|
4428
|
+
}
|
|
4429
|
+
|
|
4430
|
+
this.SOF_SymEncryptFile = function (sessionKey, srcfile, destfile, type) {
|
|
4431
|
+
var json = '{"function":"SOF_SymEncryptFile", "deviceName":"' + _curDevName + '", "sessionKey":"' + sessionKey + '", "inFile":"' + srcfile.replace(/\\/g, '\\\\') + '", "outFile":"' + destfile.replace(/\\/g, '\\\\') + '", "type":' + type + '}';
|
|
4432
|
+
if (linuxWin == 2) {
|
|
4433
|
+
var retJSON = "";
|
|
4434
|
+
try {
|
|
4435
|
+
retJSON = AjaxIO(json);
|
|
4436
|
+
} catch (e) {
|
|
4437
|
+
return -3;
|
|
4438
|
+
}
|
|
4439
|
+
|
|
4440
|
+
|
|
4441
|
+
if (retJSON.length > 3) {
|
|
4442
|
+
var obj = eval("(" + retJSON + ")");
|
|
4443
|
+
return obj.rtn;
|
|
4444
|
+
} else {
|
|
4445
|
+
return -2;
|
|
4446
|
+
|
|
4447
|
+
}
|
|
4448
|
+
} else {
|
|
4449
|
+
try {
|
|
4450
|
+
AjaxIO(json);
|
|
4451
|
+
}
|
|
4452
|
+
catch (e) {
|
|
4453
|
+
return -3;
|
|
4454
|
+
}
|
|
4455
|
+
|
|
4456
|
+
var ret = GetHttpResult();
|
|
4457
|
+
if (ret) {
|
|
4458
|
+
return ret.rtn;
|
|
4459
|
+
}
|
|
4460
|
+
|
|
4461
|
+
return -2;
|
|
4462
|
+
}
|
|
4463
|
+
}
|
|
4464
|
+
|
|
4465
|
+
this.SOF_SymDecryptFile = function (sessionKey, srcfile, destfile, type) {
|
|
4466
|
+
var json = '{"function":"SOF_SymDecryptFile", "deviceName":"' + _curDevName + '", "sessionKey":"' + sessionKey + '", "inFile":"' + srcfile.replace(/\\/g, '\\\\') + '", "outFile":"' + destfile.replace(/\\/g, '\\\\') + '", "type":' + type + '}';
|
|
4467
|
+
if (linuxWin == 2) {
|
|
4468
|
+
var retJSON = "";
|
|
4469
|
+
try {
|
|
4470
|
+
retJSON = AjaxIO(json);
|
|
4471
|
+
} catch (e) {
|
|
4472
|
+
return -3;
|
|
4473
|
+
}
|
|
4474
|
+
|
|
4475
|
+
|
|
4476
|
+
if (retJSON.length > 3) {
|
|
4477
|
+
var obj = eval("(" + retJSON + ")");
|
|
4478
|
+
return obj.rtn;
|
|
4479
|
+
} else {
|
|
4480
|
+
return -2;
|
|
4481
|
+
|
|
4482
|
+
}
|
|
4483
|
+
} else {
|
|
4484
|
+
try {
|
|
4485
|
+
AjaxIO(json);
|
|
4486
|
+
}
|
|
4487
|
+
catch (e) {
|
|
4488
|
+
return -3;
|
|
4489
|
+
}
|
|
4490
|
+
|
|
4491
|
+
var ret = GetHttpResult();
|
|
4492
|
+
if (ret) {
|
|
4493
|
+
return ret.rtn;
|
|
4494
|
+
}
|
|
4495
|
+
|
|
4496
|
+
return -2;
|
|
4497
|
+
}
|
|
4498
|
+
}
|
|
4499
|
+
|
|
4500
|
+
this.SOF_SymEncryptData = function (sessionKey, inData) {
|
|
4501
|
+
var json = '{"function":"SOF_SymEncryptData", "deviceName":"' + _curDevName + '", "sessionKey":"' + sessionKey + '", "inData":"' + inData + '"}';
|
|
4502
|
+
if (linuxWin == 2) {
|
|
4503
|
+
var retJSON = "";
|
|
4504
|
+
try {
|
|
4505
|
+
retJSON = AjaxIO(json);
|
|
4506
|
+
} catch (e) {
|
|
4507
|
+
return -3;
|
|
4508
|
+
}
|
|
4509
|
+
|
|
4510
|
+
|
|
4511
|
+
if (retJSON.length > 3) {
|
|
4512
|
+
var obj = eval("(" + retJSON + ")");
|
|
4513
|
+
return obj.outData;
|
|
4514
|
+
} else {
|
|
4515
|
+
return -2;
|
|
4516
|
+
|
|
4517
|
+
}
|
|
4518
|
+
} else {
|
|
4519
|
+
try {
|
|
4520
|
+
AjaxIO(json);
|
|
4521
|
+
}
|
|
4522
|
+
catch (e) {
|
|
4523
|
+
return -3;
|
|
4524
|
+
}
|
|
4525
|
+
|
|
4526
|
+
var ret = GetHttpResult();
|
|
4527
|
+
if (ret) {
|
|
4528
|
+
return ret.outData;
|
|
4529
|
+
}
|
|
4530
|
+
|
|
4531
|
+
return null;
|
|
4532
|
+
}
|
|
4533
|
+
}
|
|
4534
|
+
|
|
4535
|
+
this.SOF_SymDecryptData = function (sessionKey, inData) {
|
|
4536
|
+
var json = '{"function":"SOF_SymDecryptData", "deviceName":"' + _curDevName + '", "sessionKey":"' + sessionKey + '", "inData":"' + inData + '"}';
|
|
4537
|
+
if (linuxWin == 2) {
|
|
4538
|
+
var retJSON = "";
|
|
4539
|
+
try {
|
|
4540
|
+
retJSON = AjaxIO(json);
|
|
4541
|
+
} catch (e) {
|
|
4542
|
+
return -3;
|
|
4543
|
+
}
|
|
4544
|
+
|
|
4545
|
+
|
|
4546
|
+
if (retJSON.length > 3) {
|
|
4547
|
+
var obj = eval("(" + retJSON + ")");
|
|
4548
|
+
return obj.outData;
|
|
4549
|
+
} else {
|
|
4550
|
+
return -2;
|
|
4551
|
+
|
|
4552
|
+
}
|
|
4553
|
+
} else {
|
|
4554
|
+
try {
|
|
4555
|
+
AjaxIO(json);
|
|
4556
|
+
}
|
|
4557
|
+
catch (e) {
|
|
4558
|
+
return -3;
|
|
4559
|
+
}
|
|
4560
|
+
|
|
4561
|
+
var ret = GetHttpResult();
|
|
4562
|
+
if (ret) {
|
|
4563
|
+
return ret.outData;
|
|
4564
|
+
}
|
|
4565
|
+
|
|
4566
|
+
return null;
|
|
4567
|
+
}
|
|
4568
|
+
}
|
|
4569
|
+
|
|
4570
|
+
/////////////////////////////////////////////////////////////////
|
|
4571
|
+
this.SOF_GenerateQRCode = function (qrcode_text_in) {
|
|
4572
|
+
var qrcode_text = qrcode_text_in.replace(/"/g, '\\"');
|
|
4573
|
+
var json = '{"module":"libQR","function":"SOF_GenerateQRCode", "inData":"' + qrcode_text + '"}';
|
|
4574
|
+
if (linuxWin == 2) {
|
|
4575
|
+
var retJSON = "";
|
|
4576
|
+
try {
|
|
4577
|
+
retJSON = AjaxIO(json);
|
|
4578
|
+
} catch (e) {
|
|
4579
|
+
return -3;
|
|
4580
|
+
}
|
|
4581
|
+
|
|
4582
|
+
|
|
4583
|
+
if (retJSON.length > 3) {
|
|
4584
|
+
var obj = eval("(" + retJSON + ")");
|
|
4585
|
+
return obj.outData;
|
|
4586
|
+
} else {
|
|
4587
|
+
return -2;
|
|
4588
|
+
|
|
4589
|
+
}
|
|
4590
|
+
} else {
|
|
4591
|
+
try {
|
|
4592
|
+
AjaxIO(json);
|
|
4593
|
+
}
|
|
4594
|
+
catch (e) {
|
|
4595
|
+
return -3;
|
|
4596
|
+
}
|
|
4597
|
+
|
|
4598
|
+
var ret = GetHttpResult();
|
|
4599
|
+
if (ret) {
|
|
4600
|
+
return ret.outData;
|
|
4601
|
+
}
|
|
4602
|
+
|
|
4603
|
+
return null;
|
|
4604
|
+
}
|
|
4605
|
+
}
|
|
4606
|
+
|
|
4607
|
+
this.SOF_VerifyPinMS = function (responseKey) {
|
|
4608
|
+
var json = '{"function":"SOF_VerifyPinMS", "deviceName":"' + _curDevName + '", "passWd":"' + responseKey + '"}';
|
|
4609
|
+
if (linuxWin == 2) {
|
|
4610
|
+
var retJSON = "";
|
|
4611
|
+
try {
|
|
4612
|
+
retJSON = AjaxIO(json);
|
|
4613
|
+
} catch (e) {
|
|
4614
|
+
return -3;
|
|
4615
|
+
}
|
|
4616
|
+
|
|
4617
|
+
|
|
4618
|
+
if (retJSON.length > 3) {
|
|
4619
|
+
var obj = eval("(" + retJSON + ")");
|
|
4620
|
+
return obj.rtn;
|
|
4621
|
+
} else {
|
|
4622
|
+
return -2;
|
|
4623
|
+
|
|
4624
|
+
}
|
|
4625
|
+
} else {
|
|
4626
|
+
try {
|
|
4627
|
+
AjaxIO(json);
|
|
4628
|
+
}
|
|
4629
|
+
catch (e) {
|
|
4630
|
+
return -3;
|
|
4631
|
+
}
|
|
4632
|
+
|
|
4633
|
+
var ret = GetHttpResult();
|
|
4634
|
+
if (ret) {
|
|
4635
|
+
return ret.rtn;
|
|
4636
|
+
}
|
|
4637
|
+
|
|
4638
|
+
return -2;
|
|
4639
|
+
}
|
|
4640
|
+
}
|
|
4641
|
+
/////////////////////////////////////////////////////////////////
|
|
4642
|
+
this.SOF_GetHardwareType = function () {
|
|
4643
|
+
var json = '{"function":"SOF_GetHardwareType", "deviceName":"' + _curDevName + '"}';
|
|
4644
|
+
if (linuxWin == 2) {
|
|
4645
|
+
var retJSON = "";
|
|
4646
|
+
try {
|
|
4647
|
+
retJSON = AjaxIO(json);
|
|
4648
|
+
} catch (e) {
|
|
4649
|
+
return -3;
|
|
4650
|
+
}
|
|
4651
|
+
|
|
4652
|
+
|
|
4653
|
+
if (retJSON.length > 3) {
|
|
4654
|
+
var obj = eval("(" + retJSON + ")");
|
|
4655
|
+
return obj.type;
|
|
4656
|
+
} else {
|
|
4657
|
+
return -2;
|
|
4658
|
+
|
|
4659
|
+
}
|
|
4660
|
+
} else {
|
|
4661
|
+
try {
|
|
4662
|
+
AjaxIO(json);
|
|
4663
|
+
}
|
|
4664
|
+
catch (e) {
|
|
4665
|
+
return -3;
|
|
4666
|
+
}
|
|
4667
|
+
|
|
4668
|
+
var ret = GetHttpResult();
|
|
4669
|
+
if (ret) {
|
|
4670
|
+
return ret.type;
|
|
4671
|
+
}
|
|
4672
|
+
|
|
4673
|
+
return -2;
|
|
4674
|
+
}
|
|
4675
|
+
}
|
|
4676
|
+
|
|
4677
|
+
this.SOF_VerifyFingerprint = function () {
|
|
4678
|
+
var json = '{"function":"SOF_VerifyFingerprint", "deviceName":"' + _curDevName + '"}';
|
|
4679
|
+
if (linuxWin == 2) {
|
|
4680
|
+
var retJSON = "";
|
|
4681
|
+
try {
|
|
4682
|
+
retJSON = AjaxIO(json);
|
|
4683
|
+
} catch (e) {
|
|
4684
|
+
return -3;
|
|
4685
|
+
}
|
|
4686
|
+
|
|
4687
|
+
|
|
4688
|
+
if (retJSON.length > 3) {
|
|
4689
|
+
var obj = eval("(" + retJSON + ")");
|
|
4690
|
+
return obj.rtn;
|
|
4691
|
+
} else {
|
|
4692
|
+
return -2;
|
|
4693
|
+
|
|
4694
|
+
}
|
|
4695
|
+
} else {
|
|
4696
|
+
try {
|
|
4697
|
+
AjaxIO(json);
|
|
4698
|
+
}
|
|
4699
|
+
catch (e) {
|
|
4700
|
+
return -3;
|
|
4701
|
+
}
|
|
4702
|
+
|
|
4703
|
+
var ret = GetHttpResult();
|
|
4704
|
+
if (ret) {
|
|
4705
|
+
return ret.rtn;
|
|
4706
|
+
}
|
|
4707
|
+
|
|
4708
|
+
return -2;
|
|
4709
|
+
}
|
|
4710
|
+
}
|
|
4711
|
+
|
|
4712
|
+
this.SOF_EnumFiles = function () {
|
|
4713
|
+
var json = '{"function":"SOF_EnumFiles", "deviceName":"' + _curDevName + '"}';
|
|
4714
|
+
if (linuxWin == 2) {
|
|
4715
|
+
var retJSON = "";
|
|
4716
|
+
try {
|
|
4717
|
+
retJSON = AjaxIO(json);
|
|
4718
|
+
} catch (e) {
|
|
4719
|
+
return -3;
|
|
4720
|
+
}
|
|
4721
|
+
|
|
4722
|
+
|
|
4723
|
+
if (retJSON.length > 3) {
|
|
4724
|
+
var obj = eval("(" + retJSON + ")");
|
|
4725
|
+
return obj.array;
|
|
4726
|
+
} else {
|
|
4727
|
+
return -2;
|
|
4728
|
+
|
|
4729
|
+
}
|
|
4730
|
+
} else {
|
|
4731
|
+
try {
|
|
4732
|
+
AjaxIO(json);
|
|
4733
|
+
}
|
|
4734
|
+
catch (e) {
|
|
4735
|
+
return -3;
|
|
4736
|
+
}
|
|
4737
|
+
|
|
4738
|
+
var ret = GetHttpResult();
|
|
4739
|
+
if (ret) {
|
|
4740
|
+
return ret.array;
|
|
4741
|
+
}
|
|
4742
|
+
|
|
4743
|
+
return -2;
|
|
4744
|
+
}
|
|
4745
|
+
}
|
|
4746
|
+
|
|
4747
|
+
this.SOF_ReadFile = function (fileName, offset, length) {
|
|
4748
|
+
var json = '{"function":"SOF_ReadFile", "deviceName":"' + _curDevName + '", "fileName":"' + fileName + '", "offset":' + offset + ',"length":' + length + '}';
|
|
4749
|
+
if (linuxWin == 2) {
|
|
4750
|
+
var retJSON = "";
|
|
4751
|
+
try {
|
|
4752
|
+
retJSON = AjaxIO(json);
|
|
4753
|
+
} catch (e) {
|
|
4754
|
+
return -3;
|
|
4755
|
+
}
|
|
4756
|
+
|
|
4757
|
+
|
|
4758
|
+
if (retJSON.length > 3) {
|
|
4759
|
+
var obj = eval("(" + retJSON + ")");
|
|
4760
|
+
return obj.outData;
|
|
4761
|
+
} else {
|
|
4762
|
+
return -2;
|
|
4763
|
+
|
|
4764
|
+
}
|
|
4765
|
+
} else {
|
|
4766
|
+
try {
|
|
4767
|
+
AjaxIO(json);
|
|
4768
|
+
}
|
|
4769
|
+
catch (e) {
|
|
4770
|
+
return -3;
|
|
4771
|
+
}
|
|
4772
|
+
|
|
4773
|
+
var ret = GetHttpResult();
|
|
4774
|
+
if (ret) {
|
|
4775
|
+
return ret.outData;
|
|
4776
|
+
}
|
|
4777
|
+
}
|
|
4778
|
+
}
|
|
4779
|
+
|
|
4780
|
+
this.SOF_WriteFile = function (fileName, offset, data) {
|
|
4781
|
+
var json = '{"function":"SOF_WriteFile", "deviceName":"' + _curDevName + '", "fileName":"' + fileName + '", "offset":' + offset + ',"inData":"' + data + '"}';
|
|
4782
|
+
if (linuxWin == 2) {
|
|
4783
|
+
var retJSON = "";
|
|
4784
|
+
try {
|
|
4785
|
+
retJSON = AjaxIO(json);
|
|
4786
|
+
} catch (e) {
|
|
4787
|
+
return -3;
|
|
4788
|
+
}
|
|
4789
|
+
|
|
4790
|
+
|
|
4791
|
+
if (retJSON.length > 3) {
|
|
4792
|
+
var obj = eval("(" + retJSON + ")");
|
|
4793
|
+
return obj.rtn;
|
|
4794
|
+
} else {
|
|
4795
|
+
return -2;
|
|
4796
|
+
|
|
4797
|
+
}
|
|
4798
|
+
} else {
|
|
4799
|
+
try {
|
|
4800
|
+
AjaxIO(json);
|
|
4801
|
+
}
|
|
4802
|
+
catch (e) {
|
|
4803
|
+
return -3;
|
|
4804
|
+
}
|
|
4805
|
+
|
|
4806
|
+
var ret = GetHttpResult();
|
|
4807
|
+
if (ret) {
|
|
4808
|
+
return ret.rtn;
|
|
4809
|
+
}
|
|
4810
|
+
}
|
|
4811
|
+
}
|
|
4812
|
+
|
|
4813
|
+
this.SOF_CreateFile = function (fileName, length, readRight, writeRight) {
|
|
4814
|
+
var json = '{"function":"SOF_CreateFile", "deviceName":"' + _curDevName + '","fileName":"' + fileName + '", "length" :' + length + ', "readRight":' + readRight + ',"writeRight":' + writeRight + '}';
|
|
4815
|
+
if (linuxWin == 2) {
|
|
4816
|
+
var retJSON = "";
|
|
4817
|
+
try {
|
|
4818
|
+
retJSON = AjaxIO(json);
|
|
4819
|
+
} catch (e) {
|
|
4820
|
+
return -3;
|
|
4821
|
+
}
|
|
4822
|
+
|
|
4823
|
+
|
|
4824
|
+
if (retJSON.length > 3) {
|
|
4825
|
+
var obj = eval("(" + retJSON + ")");
|
|
4826
|
+
return obj.rtn;
|
|
4827
|
+
} else {
|
|
4828
|
+
return -2;
|
|
4829
|
+
|
|
4830
|
+
}
|
|
4831
|
+
} else {
|
|
4832
|
+
try {
|
|
4833
|
+
AjaxIO(json);
|
|
4834
|
+
}
|
|
4835
|
+
catch (e) {
|
|
4836
|
+
return -3;
|
|
4837
|
+
}
|
|
4838
|
+
|
|
4839
|
+
var ret = GetHttpResult();
|
|
4840
|
+
if (ret) {
|
|
4841
|
+
return ret.rtn;
|
|
4842
|
+
}
|
|
4843
|
+
}
|
|
4844
|
+
}
|
|
4845
|
+
|
|
4846
|
+
this.SOF_DeleteFile = function (fileName) {
|
|
4847
|
+
var json = '{"function":"SOF_DeleteFile", "deviceName":"' + _curDevName + '","fileName":"' + fileName + '"}';
|
|
4848
|
+
if (linuxWin == 2) {
|
|
4849
|
+
var retJSON = "";
|
|
4850
|
+
try {
|
|
4851
|
+
retJSON = AjaxIO(json);
|
|
4852
|
+
} catch (e) {
|
|
4853
|
+
return -3;
|
|
4854
|
+
}
|
|
4855
|
+
|
|
4856
|
+
|
|
4857
|
+
if (retJSON.length > 3) {
|
|
4858
|
+
var obj = eval("(" + retJSON + ")");
|
|
4859
|
+
return obj.rtn;
|
|
4860
|
+
} else {
|
|
4861
|
+
return -2;
|
|
4862
|
+
|
|
4863
|
+
}
|
|
4864
|
+
} else {
|
|
4865
|
+
try {
|
|
4866
|
+
AjaxIO(json);
|
|
4867
|
+
}
|
|
4868
|
+
catch (e) {
|
|
4869
|
+
return -3;
|
|
4870
|
+
}
|
|
4871
|
+
|
|
4872
|
+
var ret = GetHttpResult();
|
|
4873
|
+
if (ret) {
|
|
4874
|
+
return ret.rtn;
|
|
4875
|
+
}
|
|
4876
|
+
}
|
|
4877
|
+
}
|
|
4878
|
+
|
|
4879
|
+
//Socket API
|
|
4880
|
+
this.SocketConnect = function (HostName, Port) {
|
|
4881
|
+
var json = '{"module":"libSocket","function":"SocketConnect", "HostName":"' + HostName + '", "Port":' + Port + '}';
|
|
4882
|
+
if (linuxWin == 2) {
|
|
4883
|
+
var retJSON = "";
|
|
4884
|
+
try {
|
|
4885
|
+
retJSON = AjaxIO(json);
|
|
4886
|
+
} catch (e) {
|
|
4887
|
+
return -3;
|
|
4888
|
+
}
|
|
4889
|
+
|
|
4890
|
+
|
|
4891
|
+
if (retJSON.length > 3) {
|
|
4892
|
+
var obj = eval("(" + retJSON + ")");
|
|
4893
|
+
return obj.rtn;
|
|
4894
|
+
} else {
|
|
4895
|
+
return -2;
|
|
4896
|
+
|
|
4897
|
+
}
|
|
4898
|
+
} else {
|
|
4899
|
+
try {
|
|
4900
|
+
AjaxIO(json);
|
|
4901
|
+
}
|
|
4902
|
+
catch (e) {
|
|
4903
|
+
return -3;
|
|
4904
|
+
}
|
|
4905
|
+
|
|
4906
|
+
var ret = GetHttpResult();
|
|
4907
|
+
if (ret) {
|
|
4908
|
+
return ret.rtn;
|
|
4909
|
+
}
|
|
4910
|
+
}
|
|
4911
|
+
}
|
|
4912
|
+
|
|
4913
|
+
this.SocketDisConnect = function () {
|
|
4914
|
+
var json = '{"module":"libSocket","function":"SocketDisConnect"}';
|
|
4915
|
+
if (linuxWin == 2) {
|
|
4916
|
+
var retJSON = "";
|
|
4917
|
+
try {
|
|
4918
|
+
retJSON = AjaxIO(json);
|
|
4919
|
+
} catch (e) {
|
|
4920
|
+
return -3;
|
|
4921
|
+
}
|
|
4922
|
+
|
|
4923
|
+
|
|
4924
|
+
if (retJSON.length > 3) {
|
|
4925
|
+
var obj = eval("(" + retJSON + ")");
|
|
4926
|
+
return obj.rtn;
|
|
4927
|
+
} else {
|
|
4928
|
+
return -2;
|
|
4929
|
+
|
|
4930
|
+
}
|
|
4931
|
+
} else {
|
|
4932
|
+
try {
|
|
4933
|
+
AjaxIO(json);
|
|
4934
|
+
}
|
|
4935
|
+
catch (e) {
|
|
4936
|
+
return -3;
|
|
4937
|
+
}
|
|
4938
|
+
|
|
4939
|
+
var ret = GetHttpResult();
|
|
4940
|
+
if (ret) {
|
|
4941
|
+
return ret.rtn;
|
|
4942
|
+
}
|
|
4943
|
+
}
|
|
4944
|
+
}
|
|
4945
|
+
|
|
4946
|
+
this.SocketSendText = function (SendText) {
|
|
4947
|
+
var json = '{"module":"libSocket","function":"SocketSendText", "SendText":"' + SendText + '"}';
|
|
4948
|
+
if (linuxWin == 2) {
|
|
4949
|
+
var retJSON = "";
|
|
4950
|
+
try {
|
|
4951
|
+
retJSON = AjaxIO(json);
|
|
4952
|
+
} catch (e) {
|
|
4953
|
+
return -3;
|
|
4954
|
+
}
|
|
4955
|
+
|
|
4956
|
+
|
|
4957
|
+
if (retJSON.length > 3) {
|
|
4958
|
+
var obj = eval("(" + retJSON + ")");
|
|
4959
|
+
return obj.RecvText;
|
|
4960
|
+
} else {
|
|
4961
|
+
return -2;
|
|
4962
|
+
|
|
4963
|
+
}
|
|
4964
|
+
} else {
|
|
4965
|
+
try {
|
|
4966
|
+
AjaxIO(json);
|
|
4967
|
+
}
|
|
4968
|
+
catch (e) {
|
|
4969
|
+
return -3;
|
|
4970
|
+
}
|
|
4971
|
+
|
|
4972
|
+
var ret = GetHttpResult();
|
|
4973
|
+
if (ret) {
|
|
4974
|
+
return ret.RecvText;
|
|
4975
|
+
}
|
|
4976
|
+
}
|
|
4977
|
+
}
|
|
4978
|
+
}
|
|
4979
|
+
|
|
4980
|
+
import { Message, MessageBox } from 'element-ui'
|
|
4981
|
+
|
|
4982
|
+
var hnca = new hunca_mToken_core();
|
|
4983
|
+
//九恒星开发内容
|
|
4984
|
+
export function getCert(dn) {
|
|
4985
|
+
if (dn === undefined) {
|
|
4986
|
+
dn = getDN()
|
|
4987
|
+
}
|
|
4988
|
+
if (!dn) {
|
|
4989
|
+
return 'dnIsEmpty'
|
|
4990
|
+
}
|
|
4991
|
+
var devList = "";
|
|
4992
|
+
|
|
4993
|
+
devList = hnca.Hunca_GetUserListGN(); //枚举Ukey,获取证书G项信息列表
|
|
4994
|
+
if (null == devList || devList.length == 0) {
|
|
4995
|
+
console.log('获取证书失败', hnca.Hunca_GetLastError());
|
|
4996
|
+
return 'dnListEmpty'
|
|
4997
|
+
}else{
|
|
4998
|
+
|
|
4999
|
+
}
|
|
5000
|
+
}
|
|
5001
|
+
|
|
5002
|
+
// 签名方法
|
|
5003
|
+
export async function getSign(plain, dn) {
|
|
5004
|
+
let plainText = undefined
|
|
5005
|
+
if (typeof plain === 'object') {
|
|
5006
|
+
plainText = JSON.stringify(plain)
|
|
5007
|
+
} else {
|
|
5008
|
+
plainText = plain
|
|
5009
|
+
}
|
|
5010
|
+
try {
|
|
5011
|
+
if (dn === undefined) {
|
|
5012
|
+
dn = getDN()
|
|
5013
|
+
}
|
|
5014
|
+
if (!dn) {
|
|
5015
|
+
Message.error('签名参数DN错误!')
|
|
5016
|
+
return false
|
|
5017
|
+
}
|
|
5018
|
+
var devList = "";
|
|
5019
|
+
|
|
5020
|
+
devList = hnca.Hunca_GetUserListGN(); //枚举Ukey,获取证书G项信息列表
|
|
5021
|
+
if (null == devList || devList.length == 0) {
|
|
5022
|
+
console.log('获取证书失败', hnca.Hunca_GetLastError());
|
|
5023
|
+
Message.warning('请检查key是否插入!')
|
|
5024
|
+
}else{
|
|
5025
|
+
var userName;
|
|
5026
|
+
for (var i = 0; i < devList.length; i++) {
|
|
5027
|
+
var userNameGN = devList[i]; //获取证书G项信息
|
|
5028
|
+
var curUserName = hnca.Hunca_userNameGNToUserName(userNameGN); //将证书G项信息转化为证书名称
|
|
5029
|
+
if(dn===curUserName){
|
|
5030
|
+
userName = curUserName;
|
|
5031
|
+
break;
|
|
5032
|
+
}
|
|
5033
|
+
}
|
|
5034
|
+
if(!userName){
|
|
5035
|
+
Message.warning('没有匹配到证书!')
|
|
5036
|
+
return false;
|
|
5037
|
+
}
|
|
5038
|
+
var signData;
|
|
5039
|
+
await MessageBox.prompt('请输入PIN码', '提示', {
|
|
5040
|
+
confirmButtonText: '确定',
|
|
5041
|
+
cancelButtonText: '取消',
|
|
5042
|
+
closeOnClickModal: false,
|
|
5043
|
+
inputType: 'password'
|
|
5044
|
+
}).then(({ value:password }) => {
|
|
5045
|
+
console.log('密码', password);
|
|
5046
|
+
if (!hnca.Hunca_PKCS1(plain, userName, password)) {
|
|
5047
|
+
Message.warning('证书签名失败:'+hnca.Hunca_GetLastError());
|
|
5048
|
+
return false;
|
|
5049
|
+
}else{
|
|
5050
|
+
signData = hnca.Hunca_GetSignData();
|
|
5051
|
+
}
|
|
5052
|
+
})
|
|
5053
|
+
if(signData){
|
|
5054
|
+
return signData+"@@@"+hnca.Hunca_GetSignCert();
|
|
5055
|
+
}
|
|
5056
|
+
return false;
|
|
5057
|
+
}
|
|
5058
|
+
|
|
5059
|
+
} catch (e) {
|
|
5060
|
+
console.log('签名失败', e)
|
|
5061
|
+
Message.error('签名失败!')
|
|
5062
|
+
}
|
|
5063
|
+
}
|
|
5064
|
+
|