|
@@ -0,0 +1,1542 @@
|
|
|
+// var url = "ws://192.168.100.170:8080";
|
|
|
+let d = new Date();
|
|
|
+let url = "wss://127.0.0.1:23939";
|
|
|
+let socket;
|
|
|
+let arr =[];
|
|
|
+let SzcaPki = function() {};
|
|
|
+function initWebSocket() {
|
|
|
+//判断当前浏览器是否支持WebSocket
|
|
|
+ if("WebSocket" in window) {
|
|
|
+ socket = new WebSocket(url);
|
|
|
+ }else if("MozWebSocket" in window) {
|
|
|
+ socket = new MozWebSocket(url);
|
|
|
+ }else {
|
|
|
+ alert("当前浏览器不支持WebSocket !");
|
|
|
+ }
|
|
|
+ //连接成功建立的回调方法
|
|
|
+ socket.onopen = function() {
|
|
|
+ // Web Socket 已连接上,使用 send() 方法发送数据
|
|
|
+ // socket.send('123');
|
|
|
+ // alert("服务已连接...");
|
|
|
+ };
|
|
|
+ //接收到消息的回调方法
|
|
|
+ socket.onmessage = function(event) {
|
|
|
+ let data = event.data;
|
|
|
+ // alert("数据已接收..." + data);
|
|
|
+ };
|
|
|
+ //连接关闭的回调方法
|
|
|
+ socket.onclose = function(event) {
|
|
|
+
|
|
|
+ };
|
|
|
+ //连接发生错误的回调方法
|
|
|
+ socket.onerror = function(){
|
|
|
+
|
|
|
+ };
|
|
|
+}
|
|
|
+initWebSocket();
|
|
|
+
|
|
|
+// 初始化应用
|
|
|
+SzcaPki.prototype.getApplyId = function (callback) { //data为空
|
|
|
+ // return new Promise((resolve, reject) => {
|
|
|
+ // try {
|
|
|
+ // let params = {
|
|
|
+ // fun: 'createApply',
|
|
|
+ // arguments: {
|
|
|
+ // requestID: 'getApplyId'
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // socket.send(JSON.stringify(params))
|
|
|
+ // socket.onmessage = function(event) {
|
|
|
+ // let res = JSON.parse(event.data)
|
|
|
+ // if (res.requestID == 'getApplyId') {
|
|
|
+ // if (res.code == 0) {
|
|
|
+ // resolve(res.data)
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // };
|
|
|
+ // } catch (err) {
|
|
|
+ // reject(err);
|
|
|
+ // }
|
|
|
+ // })
|
|
|
+ let requestID = 'getApplyId-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'createApply',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ clientVer: '1.0'
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ })
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+ // getMessage(requestID,function(data) {
|
|
|
+ // callback(data)
|
|
|
+ // })
|
|
|
+}
|
|
|
+
|
|
|
+// 关闭应用
|
|
|
+SzcaPki.prototype.closeApplyId = function(id,callback){
|
|
|
+ let requestID = 'closeApplyId-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'destroyApply',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ applyID:id
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ })
|
|
|
+ socket.send(JSON.stringify(params))
|
|
|
+ getMessage();
|
|
|
+ // getMessage(requestID,function(data) {
|
|
|
+ // callback(data)
|
|
|
+ // })
|
|
|
+}
|
|
|
+
|
|
|
+// 枚举密钥设备/获取keyID
|
|
|
+SzcaPki.prototype.keyDevice = function (id,callback){
|
|
|
+ let requestID = 'keyDevice-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'enumKey',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ applyID:id
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ })
|
|
|
+ socket.send(JSON.stringify(params))
|
|
|
+ getMessage();
|
|
|
+ // getMessage(requestID,function(data) {
|
|
|
+ // callback(data)
|
|
|
+ // })
|
|
|
+}
|
|
|
+
|
|
|
+// // 获取密钥设备标识
|
|
|
+// function getKeyDeviceObj(id,index){ //index为设备索引
|
|
|
+// let params = {
|
|
|
+// applyID:id,
|
|
|
+// equipmentIndex:index
|
|
|
+// }
|
|
|
+// socket.send(JSON.stringify(params))
|
|
|
+// return socket.onmessage = function(event) {
|
|
|
+// return event.data;
|
|
|
+// };
|
|
|
+// }
|
|
|
+
|
|
|
+// 设备监听
|
|
|
+SzcaPki.prototype.equipmentMonitor = function (id,flag,callback){ //flag为布尔值
|
|
|
+ let requestID = 'equipmentMonitor-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'registListener',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ applyID:id,
|
|
|
+ enabled: flag
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ })
|
|
|
+ socket.send(JSON.stringify(params))
|
|
|
+ getMessage();
|
|
|
+ // getMessage(requestID,function(data) {
|
|
|
+ // callback(data)
|
|
|
+ // })
|
|
|
+}
|
|
|
+
|
|
|
+// OCSP
|
|
|
+function getOCSP(id){
|
|
|
+ let params = {
|
|
|
+ applyID:id
|
|
|
+ }
|
|
|
+ socket.send(JSON.stringify(params))
|
|
|
+ return socket.onmessage = function(event) {
|
|
|
+ return event.data;
|
|
|
+ };
|
|
|
+}
|
|
|
+
|
|
|
+// CRL
|
|
|
+function getCRL(id){
|
|
|
+ let params = {
|
|
|
+ applyID:id
|
|
|
+ }
|
|
|
+ socket.send(JSON.stringify(params))
|
|
|
+ return socket.onmessage = function(event) {
|
|
|
+ return event.data;
|
|
|
+ };
|
|
|
+}
|
|
|
+
|
|
|
+// 时间戳
|
|
|
+function getTimestamp(id,timeAddress,account,password){
|
|
|
+ let params = {
|
|
|
+ applyID:id,
|
|
|
+ timeAddress: timeAddress,
|
|
|
+ account: account,
|
|
|
+ password: password
|
|
|
+ }
|
|
|
+ socket.send(JSON.stringify(params))
|
|
|
+ return socket.onmessage = function(event) {
|
|
|
+ return event.data;
|
|
|
+ };
|
|
|
+}
|
|
|
+
|
|
|
+// 获取设备名称
|
|
|
+SzcaPki.prototype.getEquipmentName = function (deviceIdentification,callback){ //deviceIdentification设备标识
|
|
|
+ let requestID = 'getEquipmentName-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'getKeyName',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params))
|
|
|
+ getMessage();
|
|
|
+ // getMessage(requestID,function(data) {
|
|
|
+ // callback(data)
|
|
|
+ // })
|
|
|
+}
|
|
|
+
|
|
|
+// 获取设备硬件序列号
|
|
|
+SzcaPki.prototype.getEquipmentNumber = function (deviceIdentification,callback){ //deviceIdentification设备标识
|
|
|
+ let requestID = 'getEquipmentNumber-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'getKeySerialNumber',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params))
|
|
|
+ getMessage();
|
|
|
+ // getMessage(requestID,function(data) {
|
|
|
+ // callback(data)
|
|
|
+ // })
|
|
|
+}
|
|
|
+
|
|
|
+// 设备初始化
|
|
|
+SzcaPki.prototype.initEquipment = function (obj,callback){ //deviceIdentification设备标识
|
|
|
+ let requestID = 'initEquipment-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'initToken',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: obj.deviceIdentification,
|
|
|
+ tokenName: obj.tokenName,
|
|
|
+ soPIN: obj.soPIN,
|
|
|
+ userPIN: obj.userPIN,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ })
|
|
|
+ socket.send(JSON.stringify(params))
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 枚举证书个数
|
|
|
+SzcaPki.prototype.getCertificateNumber = function (deviceIdentification,callback){ //data为空
|
|
|
+ let requestID = 'getCertificateNumber-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'getCertList',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// // 读取公钥证书
|
|
|
+// function getPublickeyCertificate(deviceIdentification,index){ // 设备标识、证书索引
|
|
|
+// let params = {
|
|
|
+// deviceIdentification: deviceIdentification,
|
|
|
+// certificateIndex:index
|
|
|
+// }
|
|
|
+// socket.send(JSON.stringify(params))
|
|
|
+// return socket.onmessage = function(event) {
|
|
|
+// return event.data;
|
|
|
+// };
|
|
|
+// }
|
|
|
+
|
|
|
+// 获取当前算法
|
|
|
+SzcaPki.prototype.getCurrentAlgorithm = function (deviceIdentification,callback) { // 设备标识
|
|
|
+ let requestID = 'getCurrentAlgorithm-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'getCurrentAlgorithm',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 选定算法
|
|
|
+SzcaPki.prototype.setCurrentAlgorithm = function (deviceIdentification,algorithmType,callback) { // 设备标识、算法类型
|
|
|
+ let requestID = 'setCurrentAlgorithm-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'setCurrentAlgorithm',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ algoType: Number(algorithmType)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 选定证书
|
|
|
+SzcaPki.prototype.selectedCertificate = function (deviceIdentification,index,callback) { // 设备标识、证书索引/序列号
|
|
|
+ let requestID = 'setCurrentCert-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'setCurrentCert',
|
|
|
+ arguments: /^\d+$/.test(index) ? {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ certIndex: Number(index)
|
|
|
+ } : {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ certSN: index
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 枚举的文件
|
|
|
+SzcaPki.prototype.enumerationFile = function (deviceIdentification,callback){ // 设备标识
|
|
|
+ let requestID = 'enumerationFile-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'getFileList',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 读取文件数据
|
|
|
+SzcaPki.prototype.getFileData = function (deviceIdentification,fileName,callback) { // 设备标识、文件名称
|
|
|
+ let requestID = 'readFile-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'readFile',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ fileName: fileName
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 写入文件数据
|
|
|
+SzcaPki.prototype.writeFileData = function (deviceIdentification,fileName,fileData,callback) { //设备标识 文件名称、文件数据
|
|
|
+ let requestID = 'writeFileData-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'writeFile',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ fileName: fileName,
|
|
|
+ fileContent: fileData,
|
|
|
+ force: true,
|
|
|
+ fileSize: 666
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 删除文件数据
|
|
|
+SzcaPki.prototype.deleteFileData = function (deviceIdentification,fileName,callback) { // 设备标识 文件名称
|
|
|
+ let requestID = 'deleteFileData-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'deleteFile',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ fileName: fileName,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 数据发送
|
|
|
+SzcaPki.prototype.sendData = function (deviceIdentification,fileName,fileData) { // 设备标识、文件名称,文件数据
|
|
|
+ let params = {
|
|
|
+ fun: 'sendData',
|
|
|
+ arguments: {
|
|
|
+ dataID: '8004AFFF',
|
|
|
+ // rangFrom: 0,
|
|
|
+ // rangTo: 2047,
|
|
|
+ packetIndex: 0,
|
|
|
+ dataContent: fileData,
|
|
|
+ abort: false
|
|
|
+ }
|
|
|
+ }
|
|
|
+ socket.send(JSON.stringify(params))
|
|
|
+ return socket.onmessage = function(event) {
|
|
|
+ return event.data;
|
|
|
+ };
|
|
|
+}
|
|
|
+
|
|
|
+// 数据接收
|
|
|
+SzcaPki.prototype.recvData = function (deviceIdentification,fileName,fileData) { // 设备标识、文件名称,文件数据
|
|
|
+ let params = {
|
|
|
+ fun: 'recvData',
|
|
|
+ arguments: {
|
|
|
+ recvDataID: "8004AFFF",
|
|
|
+ // rangFrom: 0,
|
|
|
+ // rangTo: 2048,
|
|
|
+ packetIndex: 0,
|
|
|
+ dataContent: fileData
|
|
|
+ }
|
|
|
+ }
|
|
|
+ socket.send(JSON.stringify(params))
|
|
|
+ return socket.onmessage = function(event) {
|
|
|
+ return event.data;
|
|
|
+ };
|
|
|
+}
|
|
|
+
|
|
|
+// 登录
|
|
|
+SzcaPki.prototype.login = function (deviceIdentification,pin,callback) { // 设备标识、PIN码
|
|
|
+ let requestID = 'login-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'loginKey',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ PIN: pin
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 登出
|
|
|
+SzcaPki.prototype.out = function (deviceIdentification,callback) {
|
|
|
+ let requestID = 'out-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'logoutKey',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 查询登录状态
|
|
|
+SzcaPki.prototype.queryLoginStatus = function (deviceIdentification,callback) {
|
|
|
+ let requestID = 'queryLoginStatus-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'loginState',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 数据解密
|
|
|
+SzcaPki.prototype.dataDecryption = function (deviceIdentification,cipherArray,callback) { //cipherArray为密文数组或者文件
|
|
|
+ let requestID = 'dataDecryption-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'dataDecrypt',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ // ciphertextFile: 'd:\\test.txt',
|
|
|
+ // targetFilePath: 'd:\\out.txt',
|
|
|
+ ciphertextData: cipherArray,
|
|
|
+ ciphertextSize: 666
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 文件数据解密
|
|
|
+SzcaPki.prototype.dataDecryption1 = function (deviceIdentification,ciphertextFile,targetFilePath,callback) { //cipherArray为密文数组或者文件
|
|
|
+ let requestID = 'dataDecryption1-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'dataDecrypt',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ ciphertextFile: ciphertextFile,
|
|
|
+ targetFilePath: targetFilePath,
|
|
|
+ // ciphertextData: cipherArray,
|
|
|
+ ciphertextSize: 666
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 数字信封解密
|
|
|
+SzcaPki.prototype.digitalEnvelopeDecryption = function (deviceIdentification,digitalEnvelope,cipherData,callback) { //设备标识 digitalEnvelope为数字信封,cipherData密文数据
|
|
|
+ let requestID = 'digitalEnvelopeDecryption-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'dataDecEnvelop',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ // filePathEnvelop: 'd:\\test.txt',
|
|
|
+ // filePathEncrypt: 'd:\\test2.txt',
|
|
|
+ // targetFilePath: 'd:\\out.txt',
|
|
|
+ contentEnvelop: digitalEnvelope,
|
|
|
+ contentEncrypt: cipherData,
|
|
|
+ encDataSize: 666
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 文件数字信封解密
|
|
|
+SzcaPki.prototype.digitalEnvelopeDecryption1 = function (deviceIdentification,filePathEnvelop,filePathEncrypt,targetFilePath,callback) { //设备标识 digitalEnvelope为数字信封,cipherData密文数据
|
|
|
+ let requestID = 'digitalEnvelopeDecryption1-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'dataDecEnvelop',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ filePathEnvelop: filePathEnvelop, // 'd:\\test.txt',
|
|
|
+ filePathEncrypt: filePathEncrypt,//'d:\\test2.txt',
|
|
|
+ targetFilePath: targetFilePath,//'d:\\out.txt',
|
|
|
+ // contentEnvelop: digitalEnvelope,
|
|
|
+ // contentEncrypt: cipherData,
|
|
|
+ encDataSize: 666
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 数据签名P1
|
|
|
+SzcaPki.prototype.getP1 = function (deviceIdentification,signData,callback) { // 设备标识 signData是待签名数据
|
|
|
+ let requestID = 'getP1-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'signP1',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ plaintextData: signData,
|
|
|
+ plaintextSize: 666
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 文件数据签名P1
|
|
|
+SzcaPki.prototype.getP11 = function (deviceIdentification,plaintextFile,callback) { // 设备标识 signData是待签名数据
|
|
|
+ let requestID = 'getP11-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'signP1',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ plaintextFile: plaintextFile,
|
|
|
+ plaintextSize: 666
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 数据签名P7
|
|
|
+SzcaPki.prototype.getP7 = function (deviceIdentification,signData,detached,callback) { // 设备标识 signData是待签名数据
|
|
|
+ let requestID = 'getP7-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'signP7',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ // plaintextFile: 'd:\\test.txt',
|
|
|
+ // targetFilePath: 'd:\\out.txt',
|
|
|
+ plaintextData: signData,
|
|
|
+ plaintextSize: 666,
|
|
|
+ detached: detached //true 不附原文
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 数据签名P7
|
|
|
+SzcaPki.prototype.getP71 = function (deviceIdentification,plaintextFile,targetFilePath,detached,callback) { // 设备标识 signData是待签名数据
|
|
|
+ let requestID = 'getP71-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'signP7',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ plaintextFile: plaintextFile,//'d:\\test.txt',
|
|
|
+ targetFilePath: targetFilePath,//'d:\\out.txt',
|
|
|
+ // plaintextData: signData,
|
|
|
+ plaintextSize: 666,
|
|
|
+ detached: detached //true 不附原文
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 生成对称密钥
|
|
|
+// encryptType加密类型
|
|
|
+// ET_AES_CBC = 0,
|
|
|
+// ET_AES_ECB,
|
|
|
+// ET_DES_CBC = 10,
|
|
|
+// ET_DES_ECB,
|
|
|
+// ET_DES_ECB3,
|
|
|
+// ET_SM4_CBC = 20,
|
|
|
+// ET_SM4_ECB
|
|
|
+SzcaPki.prototype.generateSymmetricKey = function (deviceIdentification,encryptType,callback) { // 设备标识、对称加密类型
|
|
|
+ let requestID = 'generateSymmetricKey-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'generateSymmKey',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ symmKeyType: Number(encryptType)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 生成对称密钥(软证书)
|
|
|
+SzcaPki.prototype.generateSymmetricKey2 = function (encryptType,callback) { // 对称加密类型
|
|
|
+ let requestID = 'generateSymmetricKey2-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'generateSymmKey2',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ symmKeyType: Number(encryptType)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 数据求哈希接口
|
|
|
+SzcaPki.prototype.getHex = function (algorithmType,originalData,callback) { //algorithmType算法类型,originalData原始数据
|
|
|
+ let requestID = 'getHex-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'Digest',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ hashID: Number(algorithmType),
|
|
|
+ // filePath: "d:\\test.txt",
|
|
|
+ dataContent: originalData,
|
|
|
+ dataSize: 666
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 对称加密
|
|
|
+SzcaPki.prototype.symmetricalEncryption = function (symmetricalEncryptionType,clearData,secretKey,callback) { //symmetricalEncryptionType对称加密类型,clearData明文数据
|
|
|
+ let requestID = 'symmetricalEncryption-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'symmEncrypt',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ encType: Number(symmetricalEncryptionType),
|
|
|
+ // filePath: "d:\\input.txt",
|
|
|
+ // targetFilePath: "d:\\out.txt",
|
|
|
+ dataContent: clearData,
|
|
|
+ dataSize: 666,
|
|
|
+ encrypt: true,
|
|
|
+ symmKey: secretKey
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 文件对称加密
|
|
|
+SzcaPki.prototype.symmetricalEncryption1 = function (symmetricalEncryptionType,filePath,targetFilePath,secretKey,callback) { //symmetricalEncryptionType对称加密类型,clearData明文数据
|
|
|
+ let requestID = 'symmetricalEncryption1-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'symmEncrypt',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ encType: Number(symmetricalEncryptionType),
|
|
|
+ filePath: filePath,
|
|
|
+ targetFilePath: targetFilePath,
|
|
|
+ // dataContent: clearData,
|
|
|
+ dataSize: 666,
|
|
|
+ encrypt: true,
|
|
|
+ symmKey: secretKey
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 对称解密
|
|
|
+SzcaPki.prototype.symmetricDecryption = function (symmetricalEncryptionType,cipherData,secretKey,callback) { //cipherData密文数据
|
|
|
+ let requestID = 'symmetricDecryption-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'symmEncrypt',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ encType: Number(symmetricalEncryptionType),
|
|
|
+ // filePath: "d:\\input.txt",
|
|
|
+ // targetFilePath: "d:\\out.txt",
|
|
|
+ dataContent: cipherData,
|
|
|
+ dataSize: 666,
|
|
|
+ encrypt: false,
|
|
|
+ symmKey: secretKey,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 文件对称解密
|
|
|
+SzcaPki.prototype.symmetricDecryption1 = function (symmetricalEncryptionType,filePath,targetFilePath,secretKey,callback) { //cipherData密文数据
|
|
|
+ let requestID = 'symmetricDecryption1-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'symmEncrypt',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ encType: Number(symmetricalEncryptionType),
|
|
|
+ filePath: filePath,
|
|
|
+ targetFilePath: targetFilePath,
|
|
|
+ // dataContent: cipherData,
|
|
|
+ dataSize: 666,
|
|
|
+ encrypt: false,
|
|
|
+ symmKey: secretKey,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 非对称加密
|
|
|
+SzcaPki.prototype.asymmetricDecryption = function (encryptionCertificate,clearData,callback) { //encryptionCertificate加密证书 明文数据
|
|
|
+ let requestID = 'asymmetricDecryption-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'dataEncrypt',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ certData: encryptionCertificate,
|
|
|
+ // plaintextFile: "d:\\test.txt",
|
|
|
+ // targetFilePath: "d:\\out.txt",
|
|
|
+ plaintextData: clearData,
|
|
|
+ plaintextSize: 666
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 非对称加密(公钥)
|
|
|
+SzcaPki.prototype.dataEncryptOfECKey = function (encryptionCertificate,clearData,callback) { //encryptionCertificate加密证书 明文数据
|
|
|
+ let requestID = 'dataEncryptOfECKey-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'dataEncryptOfECKey',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ ECKeyData: encryptionCertificate,
|
|
|
+ // plaintextFile: "d:\\test.txt",
|
|
|
+ // targetFilePath: "d:\\out.txt",
|
|
|
+ plaintextData: clearData,
|
|
|
+ plaintextSize: 666
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 文件非对称加密
|
|
|
+SzcaPki.prototype.asymmetricDecryption1 = function (encryptionCertificate,plaintextFile,targetFilePath,callback) { //encryptionCertificate加密证书 明文数据
|
|
|
+ let requestID = 'asymmetricDecryption1-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'dataEncrypt',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ certData: encryptionCertificate,
|
|
|
+ plaintextFile: plaintextFile, // 输入文件路径
|
|
|
+ targetFilePath: targetFilePath, // 输出文件路径
|
|
|
+ plaintextSize: 666
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 数字信封加密
|
|
|
+SzcaPki.prototype.digitalEnvelopeEncryption = function (encryptionCertificate,clearData,split,callback) { // 加密证书、明文数据(或文件)
|
|
|
+ let requestID = 'digitalEnvelopeEncryption-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'dataEnvelope',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ certData: encryptionCertificate,
|
|
|
+ // plaintextFile: "d:\\test.txt",
|
|
|
+ // targetFilePath: "d:\\out.txt",
|
|
|
+ // targetFilePathEncrypt: "d:\\encrypt.txt",
|
|
|
+ plaintextData: clearData,
|
|
|
+ plaintextSize: 666,
|
|
|
+ split: split
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 数字信封文件加密
|
|
|
+SzcaPki.prototype.digitalEnvelopeEncryption1 = function (encryptionCertificate,plaintextFile,targetFilePath,targetFilePathEncrypt,split,callback) { // 加密证书、明文数据(或文件)
|
|
|
+ let requestID = 'digitalEnvelopeEncryption1-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'dataEnvelope',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ certData: encryptionCertificate,
|
|
|
+ plaintextFile: plaintextFile, // 输入文件路径
|
|
|
+ targetFilePath: targetFilePath, // 输出文件路径
|
|
|
+ targetFilePathEncrypt: targetFilePathEncrypt,
|
|
|
+ // plaintextData: clearData,
|
|
|
+ plaintextSize: 666,
|
|
|
+ split: split
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 签名验证P1
|
|
|
+SzcaPki.prototype.signatureVerifyP1 = function (signatureCertificate,signatureData,signature,callback) { //签名证书、签名原文数据(或文件)、签名值
|
|
|
+ let requestID = 'signatureVerifyP1-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'signedVerifyP1',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ certData: signatureCertificate,
|
|
|
+ signature: signature,
|
|
|
+ // plaintextFile: "d:\\test.txt",
|
|
|
+ plaintextData: signatureData,
|
|
|
+ plaintextSize: 666
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 文件签名验证P1
|
|
|
+SzcaPki.prototype.signatureVerifyP11 = function (signatureCertificate,plaintextFile,signature,callback) { //签名证书、签名原文数据(或文件)、签名值
|
|
|
+ let requestID = 'signatureVerifyP11-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'signedVerifyP1',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ certData: signatureCertificate,
|
|
|
+ signature: signature,
|
|
|
+ plaintextFile: plaintextFile,
|
|
|
+ // plaintextData: signatureData,
|
|
|
+ plaintextSize: 666
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 签名验证P7
|
|
|
+SzcaPki.prototype.signatureVerifyP7 = function (signatureData,signature,callback) { //signatureData原文
|
|
|
+ let requestID = 'signatureVerifyP7-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'signedVerifyP7',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ // signatureFile: "d:\\signed.txt",
|
|
|
+ // plaintextFile: "d:\\test.txt",
|
|
|
+ signatureData: signature,
|
|
|
+ plaintextData: signatureData,
|
|
|
+ plaintextSize: 666
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 文件签名验证P7
|
|
|
+SzcaPki.prototype.signatureVerifyP71 = function (signatureFile,plaintextFile,callback) { //signatureData原文
|
|
|
+ let requestID = 'signatureVerifyP71-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'signedVerifyP7',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ signatureFile: signatureFile,
|
|
|
+ plaintextFile: plaintextFile,
|
|
|
+ // signatureData: signature,
|
|
|
+ // plaintextData: signatureData,
|
|
|
+ plaintextSize: 666
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 验证P7签名值(附原文)
|
|
|
+SzcaPki.prototype.serifyP7Signature = function (signatureData,callback) {
|
|
|
+ let requestID = 'serifyP7Signature-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'signatureVerify',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ // signatureFile: "d:\\signed.txt",
|
|
|
+ signatureData: signatureData,
|
|
|
+ signatureSize: 666
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 文件验证P7签名值(附原文)
|
|
|
+SzcaPki.prototype.serifyP7Signature1 = function (signatureFile,callback) {
|
|
|
+ let requestID = 'serifyP7Signature1-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'signatureVerify',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ signatureFile: signatureFile,
|
|
|
+ // signatureData: signatureData,
|
|
|
+ signatureSize: 666
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 时间戳签名请求
|
|
|
+SzcaPki.prototype.getTimeSignature = function (hash,signatureData,timeHost,account,password,callback) { //摘要算法、待签名数据、时间戳服务器地址、账号、密码
|
|
|
+ let requestID = 'getTimeSignature-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'timestampSign',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ hashID: Number(hash),
|
|
|
+ // filePath: "d:\\test.txt",
|
|
|
+ dataContent: signatureData,
|
|
|
+ dataSize: 666,
|
|
|
+ timestampUrl: timeHost,
|
|
|
+ timestampUser: account,
|
|
|
+ timestampPassword: password
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// // 证书有效性验证
|
|
|
+// function certVerify(signatureData,timeHost,account,password) { //待签名数据、时间戳服务器地址、账号、密码
|
|
|
+// let params = {
|
|
|
+// fun: 'certVerify',
|
|
|
+// arguments: {
|
|
|
+// requestID: 'certVerify',
|
|
|
+// certData: "公钥证书的BASE64",
|
|
|
+// verifyWith: 1,
|
|
|
+// rootCert: "根证书的BASE64",
|
|
|
+// clrData: "证书吊销列表BASE64",
|
|
|
+// ocsp: "http:\\xxxx"
|
|
|
+// }
|
|
|
+// }
|
|
|
+// socket.send(JSON.stringify(params))
|
|
|
+// return socket.onmessage = function(event) {
|
|
|
+// return event.data;
|
|
|
+// };
|
|
|
+// }
|
|
|
+
|
|
|
+// 用根证书验证证书
|
|
|
+SzcaPki.prototype.verifyRootCertificate = function (certificate,rootCertificate,callback) { //待验证的证书、跟证书
|
|
|
+ let requestID = 'verifyRootCertificate-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'certVerify',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ certData: certificate,
|
|
|
+ rootCert: rootCertificate,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 用CRL验证证书
|
|
|
+SzcaPki.prototype.verifyCertificateCRL = function (certificate,crl,callback) { //待验证的证书、crl文件(或链接)
|
|
|
+ let requestID = 'verifyRootCertificate-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'certVerify',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ certData: certificate,
|
|
|
+ clrData: crl,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 用OCSP验证证书
|
|
|
+SzcaPki.prototype.verifyCertificateOCSP = function (certificate,ocsp,rootCertificate,callback) { //待验证的证书、ocsp地址
|
|
|
+ let requestID = 'verifyCertificateOCSP-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'certVerify',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ certData: certificate,
|
|
|
+ ocsp: ocsp,
|
|
|
+ rootCert: rootCertificate,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 加载证书并解析
|
|
|
+SzcaPki.prototype.analyticalCertificate = function (publicKeyCertificateDER,oid,callback) { //公钥证书DER或公钥证书路径
|
|
|
+ let requestID = 'verifyCertificateOCSP-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'analyseCert',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ certData: publicKeyCertificateDER,
|
|
|
+ extends: oid,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 基础属性
|
|
|
+SzcaPki.prototype.getBasicAttribute = function (certificateId) { //证书ID
|
|
|
+ let params = {
|
|
|
+ certificateId: certificateId
|
|
|
+ }
|
|
|
+ socket.send(JSON.stringify(params))
|
|
|
+ return socket.onmessage = function(event) {
|
|
|
+ return event.data;
|
|
|
+ };
|
|
|
+}
|
|
|
+
|
|
|
+// 扩展属性
|
|
|
+SzcaPki.prototype.getExtendedAttributes = function (certificateId,extendedAttributesOid) { //证书ID、扩展属性oid
|
|
|
+ let params = {
|
|
|
+ certificateId: certificateId,
|
|
|
+ extendedAttributesOid: extendedAttributesOid
|
|
|
+ }
|
|
|
+ socket.send(JSON.stringify(params))
|
|
|
+ return socket.onmessage = function(event) {
|
|
|
+ return event.data;
|
|
|
+ };
|
|
|
+}
|
|
|
+
|
|
|
+// 生成随机数
|
|
|
+SzcaPki.prototype.generateRandom = function (deviceIdentification,len,callback) { // 设备标识 随机数长度
|
|
|
+ let requestID = 'generateRandom-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'generateRandom',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ len: Number(len),
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+// 介质初始化
|
|
|
+SzcaPki.prototype.initMedium = function (deviceIdentification,fileName,adminPin,userPin,callback) { //设备标识、名称、管理员PIN、用户PIN
|
|
|
+ let requestID = 'initMedium-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'initMedium',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ tokenName: fileName,
|
|
|
+ soPIN: adminPin,
|
|
|
+ userPIN: userPin
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 介质解锁
|
|
|
+SzcaPki.prototype.mediumUnlock = function (deviceIdentification,adminPin,newUserPin) { // 设备标识、管理员PIN、新的用户PIN
|
|
|
+ let params = {
|
|
|
+ deviceIdentification: deviceIdentification,
|
|
|
+ adminPin: adminPin,
|
|
|
+ newUserPin: newUserPin
|
|
|
+ }
|
|
|
+ socket.send(JSON.stringify(params))
|
|
|
+ return socket.onmessage = function(event) {
|
|
|
+ return event.data;
|
|
|
+ };
|
|
|
+}
|
|
|
+
|
|
|
+// 修改管理员PIN
|
|
|
+SzcaPki.prototype.modificationAdminPin = function (deviceIdentification,oldAdminPin,newAdminPin,callback) { // 设备标识、旧管理员PIN、新的管理员PIN
|
|
|
+ let requestID = 'modificationAdminPin-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'modifyOSPIN',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ soPIN: oldAdminPin,
|
|
|
+ newSOPIN: newAdminPin
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 修改用户PIN
|
|
|
+SzcaPki.prototype.modificationUserPin = function (deviceIdentification,oldUserPin,newUserPin,callback) { // 设备标识、旧用户PIN、新的用户PIN
|
|
|
+ let requestID = 'modificationUserPin-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'modifyUserPIN',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ userPIN: oldUserPin,
|
|
|
+ newUserPIN: newUserPin
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 重置用户PIN
|
|
|
+SzcaPki.prototype.resetUserPIN = function (deviceIdentification,adminPin,userPin,callback) { // 设备标识、管理员PIN、用户PIN
|
|
|
+ let requestID = 'modificationUserPin-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'resetUserPIN',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ soPIN: adminPin,
|
|
|
+ userPIN: userPin
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 修改用户PIN
|
|
|
+SzcaPki.prototype.modifyUserPin = function (deviceIdentification, adminPin, userPin, callback) { // 设备标识、管理员PIN、用户PIN
|
|
|
+ let requestID = 'modifyUserPin-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'modifyUserPin',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ oldPIN: adminPin,
|
|
|
+ newPIN: userPin
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 生成P10
|
|
|
+SzcaPki.prototype.getP10 = function (obj,callback) { // 设备标识、管理员PIN、用户PIN
|
|
|
+ let requestID = 'generatePkcs10-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'generatePkcs10',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: obj.keyID,
|
|
|
+ containername: obj.contentName,
|
|
|
+ subject: obj.subject,
|
|
|
+ algoType: Number(obj.algoType),
|
|
|
+ keyType: Number(obj.keyType),
|
|
|
+ keyLength: Number(obj.keyLength),
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 安装证书
|
|
|
+SzcaPki.prototype.installCertificate = function (obj,callback) { // 设备标识、管理员PIN、用户PIN
|
|
|
+ let requestID = 'installCerts-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'installCerts',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: obj.keyID,
|
|
|
+ containername: obj.contentName,
|
|
|
+ subject: obj.subject,
|
|
|
+ algoType: Number(obj.algoType),
|
|
|
+ signP7b: obj.signP7b,
|
|
|
+ signSN: obj.signSN,
|
|
|
+ encP7b: obj.encP7b,
|
|
|
+ encSN: obj.encSN,
|
|
|
+ encSessKey: obj.encSessKey,
|
|
|
+ encPriKey: obj.encPriKey,
|
|
|
+ symmAlgoType: Number(obj.symmAlgoType),
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 删除证书所有
|
|
|
+SzcaPki.prototype.deleteCerts = function (deviceIdentification,callback) { // 设备标识、管理员PIN、用户PIN
|
|
|
+ let requestID = 'deleteCerts-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'deleteCerts',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 删除证书单个
|
|
|
+SzcaPki.prototype.deleteCert = function (deviceIdentification,certNumber,callback) { // 设备标识、管理员PIN、用户PIN
|
|
|
+ let requestID = 'deleteCert-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'deleteCert',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ certsn: certNumber,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 删除空容器
|
|
|
+SzcaPki.prototype.DeleteEmptyContainers = function (deviceIdentification,callback) { // 设备标识、管理员PIN、用户PIN
|
|
|
+ let requestID = 'deleteContainer-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'deleteContainer',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 获取Ukey印章
|
|
|
+SzcaPki.prototype.readSeals = function (deviceIdentification, callback) { // 设备标识、管理员PIN、用户PIN
|
|
|
+ let requestID = 'readSeals-' + d.getTime();
|
|
|
+ let params = {
|
|
|
+ fun: 'readSeals',
|
|
|
+ arguments: {
|
|
|
+ requestID: requestID,
|
|
|
+ keyID: deviceIdentification,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ arr.push({
|
|
|
+ requestID: requestID,
|
|
|
+ callback: callback
|
|
|
+ });
|
|
|
+ socket.send(JSON.stringify(params));
|
|
|
+ getMessage();
|
|
|
+}
|
|
|
+
|
|
|
+// 处理onmessage接收信息
|
|
|
+function getMessage() {
|
|
|
+ socket.onmessage = function(event) {
|
|
|
+ if (event) {
|
|
|
+ let res = JSON.parse(event.data)
|
|
|
+ if (res.fun == 'tokenEvent') {
|
|
|
+ console.log(res);
|
|
|
+ // 在html页面显示ukey监听信息
|
|
|
+ if (document.getElementById('showMessage')) {
|
|
|
+ document.getElementById('showMessage').textContent = JSON.stringify(res);
|
|
|
+ document.getElementById('text2').value = JSON.stringify(res);
|
|
|
+ return
|
|
|
+ }
|
|
|
+ };
|
|
|
+ if (res.code == 0) {
|
|
|
+ arr.map( function(e) {
|
|
|
+ if (e.requestID == res.requestID) {
|
|
|
+ e.callback(res);
|
|
|
+ removeArray(arr,e);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ // alert(res.msg);
|
|
|
+ arr.map( function(e) {
|
|
|
+ if (e.requestID == res.requestID) {
|
|
|
+ e.callback(res);
|
|
|
+ removeArray(arr,e);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+}
|
|
|
+getMessage();
|
|
|
+
|
|
|
+//根据数组的下标,删除该下标的元素对象
|
|
|
+function removeArray(_arr, _obj) {
|
|
|
+ var length = _arr.length;
|
|
|
+ for (var i = 0; i < length; i++) {
|
|
|
+ if (_arr[i] == _obj) {
|
|
|
+ _arr.splice(i, 1); //删除下标为i的元素
|
|
|
+ return _arr;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|