| | |
| | | }catch (e) { |
| | | console.log("获取签名异常:"+e) |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 校验ukey的签名 |
| | | * @param randomNumber |
| | | * @param callback |
| | | */ |
| | | SoftUKey.prototype.checkSign = function(userName, randomNumber, callback) { |
| | | try { |
| | | let s_simnew1 = new this.SoftKey3W(); //创建UK类 |
| | | let inPath, sign, uKeyId, publicX, publicY; |
| | | // 开启监听 |
| | | s_simnew1.Socket_UK.onopen = function() { |
| | | s_simnew1.ResetOrder();//这里调用ResetOrder将计数清零,这样,消息处理处就会收到0序号的消息,通过计数及序号的方式,从而生产流程 |
| | | } |
| | | |
| | | // 监听获取到的信息 |
| | | s_simnew1.Socket_UK.onmessage = function(Msg) { |
| | | let UK_Data = JSON.parse(Msg.data); |
| | | if(UK_Data.type!="Process")return ;//如果不是流程处理消息,则跳过 |
| | | |
| | | // 根据收到的序号执行函数 |
| | | switch(UK_Data.order) { |
| | | case 0: |
| | | s_simnew1.FindPort(0); //发送命令取UK的路径 |
| | | break; |
| | | case 1: |
| | | if(UK_Data.LastError!=0) { |
| | | window.alert ( "未发现加密锁,请插入加密锁"); |
| | | s_simnew1.Socket_UK.close(); |
| | | return false; |
| | | } |
| | | // 设置路径 |
| | | inPath=UK_Data.return_value;//获得返回的UK的路径 |
| | | |
| | | s_simnew1.GetProduceDate(inPath);//返回芯片唯一ID |
| | | break; |
| | | case 2: |
| | | if(UK_Data.LastError!=0){ |
| | | window.alert("返回芯片唯一ID时出现错误,错误码为:"+UK_Data.LastError.toString()); |
| | | s_simnew1.Socket_UK.close(); |
| | | return false; |
| | | } |
| | | uKeyId = UK_Data.return_value; |
| | | |
| | | //返回设置在锁中的公钥X |
| | | s_simnew1.GetPubKeyX(inPath); |
| | | break; |
| | | case 3: |
| | | if(UK_Data.LastError!=0){ |
| | | window.alert("返回设置在锁中的公钥X时出现错误,错误码为:"+UK_Data.LastError.toString()); |
| | | s_simnew1.Socket_UK.close(); |
| | | return false; |
| | | } |
| | | publicX = UK_Data.return_value; |
| | | |
| | | // 返回设置在锁中的公钥Y |
| | | s_simnew1.GetPubKeyY(inPath); |
| | | break; |
| | | case 4: |
| | | if(UK_Data.LastError!=0){ |
| | | window.alert("返回设置在锁中的公钥Y时出现错误,错误码为:"+UK_Data.LastError.toString()); |
| | | s_simnew1.Socket_UK.close(); |
| | | return false; |
| | | } |
| | | publicY = UK_Data.return_value; |
| | | |
| | | // 对数据进行签名 |
| | | s_simnew1.YtSign(randomNumber,"123", inPath); |
| | | break; |
| | | case 5: |
| | | if(UK_Data.LastError!=0){ |
| | | window.alert("对数据进行签名时出现错误,错误码为:"+UK_Data.LastError.toString()); |
| | | s_simnew1.Socket_UK.close(); |
| | | return false; |
| | | } |
| | | sign = UK_Data.return_value; |
| | | s_simnew1.YtVerfiy(userName, randomNumber, publicX, publicY, sign, inPath); |
| | | |
| | | break; |
| | | case 6: |
| | | if(UK_Data.LastError!=0){ |
| | | // 执行回调函数 |
| | | if(typeof callback == 'function') { |
| | | callback({ |
| | | code: 1, |
| | | errorCode: UK_Data.LastError.toString(), |
| | | msg: "uKey验签失败", |
| | | }); |
| | | } |
| | | s_simnew1.Socket_UK.close(); |
| | | return false; |
| | | } |
| | | // 执行回调函数 |
| | | if(typeof callback == 'function') { |
| | | callback({ |
| | | code: 1, |
| | | errorCode: 0, |
| | | msg: "uKey验签成功", |
| | | }); |
| | | } |
| | | |
| | | //所有工作处理完成后,关掉Socket |
| | | s_simnew1.Socket_UK.close(); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | // 关闭监听 |
| | | s_simnew1.Socket_UK.onclose = function() { |
| | | console.log("关闭获取签名") |
| | | } |
| | | }catch (e) { |
| | | console.log("获取签名异常:"+e) |
| | | } |
| | | } |