123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542 |
- // 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;
- }
- }
- }
|