|
export default class SoftKey3W
|
{
|
static Socket_UK;
|
static url;
|
static LastError
|
constructor() {
|
|
var isIE11 = navigator.userAgent.indexOf('Trident') > -1 && navigator.userAgent.indexOf("rv:11.0") > -1;
|
var isEDGE= navigator.userAgent.indexOf("Edge") > -1;
|
var u = document.URL;
|
if (u.substring(0, 5) == "https") {
|
if(isIE11 || isEDGE)
|
{
|
if(isIE11)this.url = "wss://127.0.0.1:4006/xxx"; else url = "ws://127.0.0.1:4006/xxx";
|
}
|
else
|
{
|
this.url = "ws://localhost:4006/xxx";
|
}
|
} else {
|
this.url = "ws://127.0.0.1:4006/xxx";
|
}
|
|
if (typeof MozWebSocket != "undefined") {
|
this.Socket_UK = new MozWebSocket(this.url,"usbkey-protocol");
|
} else {
|
this.Socket_UK = new WebSocket(this.url,"usbkey-protocol");
|
}
|
this.Socket_UK.onerror = (event) => {
|
alert('未能连接服务程序,请确定服务程序是否安装。');
|
};
|
SoftKey3W.LastError=0
|
}
|
|
_FindPort = function (UK,start)
|
{
|
var msg =
|
{
|
FunName: "FindPort",
|
start: start
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_FindPort_2 = function (UK,start, in_data , verf_data)
|
{
|
var msg =
|
{
|
FunName: "FindPort_2",
|
start: start,
|
in_data: in_data,
|
verf_data:verf_data
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_FindPort_3 = function (UK,start,in_data,verf_data)
|
{
|
var msg =
|
{
|
FunName: "FindPort_3",
|
start: start,
|
in_data: in_data,
|
verf_data:verf_data
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_GetVersion = function (UK,Path)
|
{
|
var msg =
|
{
|
FunName: "GetVersion",
|
Path: Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_GetVersionEx = function (UK,Path)
|
{
|
var msg =
|
{
|
FunName: "GetVersionEx",
|
Path: Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_GetID_1 = function (UK,Path)
|
{
|
var msg =
|
{
|
FunName: "GetID_1",
|
Path: Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_GetID_2 = function (UK,Path)
|
{
|
var msg =
|
{
|
FunName: "GetID_2",
|
Path: Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
|
_sRead = function (UK,Path)
|
{
|
var msg =
|
{
|
FunName: "sRead",
|
Path: Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_sWrite = function (UK,InData, Path)
|
{
|
var msg =
|
{
|
FunName: "sWrite",
|
InData: InData,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_sWrite_2 = function (UK,InData, Path)
|
{
|
var msg =
|
{
|
FunName: "sWrite_2",
|
InData: InData,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_sWrite_2Ex = function (UK,InData,Path)
|
{
|
var msg =
|
{
|
FunName: "sWrite_2Ex",
|
InData: InData,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_sWriteEx = function (UK,InData,Path)
|
{
|
var msg =
|
{
|
FunName: "sWriteEx",
|
InData: InData,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_sWriteEx_New = function (UK,InData,Path)
|
{
|
var msg =
|
{
|
FunName: "sWriteEx_New",
|
InData: InData,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_sWrite_2Ex_New = function (UK,InData,Path)
|
{
|
var msg =
|
{
|
FunName: "sWrite_2Ex_New",
|
InData: InData,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
|
_YRead= function(Address,HKey,LKey,Path)
|
{
|
var msg =
|
{
|
FunName: "YRead",
|
Address:Address,
|
HKey:HKey,
|
LKey:LKey,
|
Path:Path
|
};
|
Socket_UK.send(JSON.stringify(msg));
|
};
|
|
_YWrite= function(InData,Address,HKey,LKey,Path)
|
{
|
var msg =
|
{
|
FunName: "YWrite",
|
InData:InData,
|
Address:Address,
|
HKey:HKey,
|
LKey:LKey,
|
Path:Path
|
};
|
Socket_UK.send(JSON.stringify(msg));
|
};
|
|
|
static _SetBuf= function(UK,InData,pos)
|
{
|
var msg =
|
{
|
FunName: "SetBuf",
|
InData: InData,
|
pos:pos
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
static _GetBuf= function(UK,pos)
|
{
|
var msg =
|
{
|
FunName: "GetBuf",
|
pos: pos
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
static _YReadEx= function(UK,Address,len, HKey,LKey,Path)
|
{
|
var msg =
|
{
|
FunName: "YReadEx",
|
Address:Address,
|
len:len,
|
HKey:HKey,
|
LKey:LKey,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
static _YWriteEx= function (UK,Address,len,HKey,LKey,Path)
|
{
|
var msg =
|
{
|
FunName: "YWriteEx",
|
Address:Address,
|
len:len,
|
HKey:HKey,
|
LKey:LKey,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_YReadString = function (UK,Address,len,HKey,LKey,Path)
|
{
|
var msg =
|
{
|
FunName: "YReadString",
|
Address:Address,
|
len:len,
|
HKey:HKey,
|
LKey:LKey,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_YWriteString = function (UK,InString,Address,HKey,LKey,Path)
|
{
|
var msg =
|
{
|
FunName: "YWriteString",
|
InString:InString,
|
Address:Address,
|
HKey:HKey,
|
LKey:LKey,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_SetWritePassword = function (UK,W_Hkey,W_Lkey,new_Hkey,new_Lkey,Path)
|
{
|
var msg =
|
{
|
FunName: "SetWritePassword",
|
W_Hkey:W_Hkey,
|
W_Lkey:W_Lkey,
|
new_Hkey:new_Hkey,
|
new_Lkey:new_Lkey,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_SetReadPassword = function (UK,W_Hkey,W_Lkey,new_Hkey,new_Lkey,Path)
|
{
|
var msg =
|
{
|
FunName: "SetReadPassword",
|
W_Hkey:W_Hkey,
|
W_Lkey:W_Lkey,
|
new_Hkey:new_Hkey,
|
new_Lkey:new_Lkey,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
|
_DecString = function (UK,InString,Key)
|
{
|
var msg =
|
{
|
FunName: "DecString",
|
InString:InString,
|
Key:Key
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_EncString = function (UK,InString,Path)
|
{
|
var msg =
|
{
|
FunName: "EncString",
|
InString:InString,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_EncString_New = function (UK,InString,Path)
|
{
|
var msg =
|
{
|
FunName: "EncString_New",
|
InString:InString,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_Cal = function(UK,Path)
|
{
|
var msg =
|
{
|
FunName: "Cal",
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_Cal_New = function(UK,Path)
|
{
|
var msg =
|
{
|
FunName: "Cal_New",
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_GetProduceDate= function(UK,Path)
|
{
|
var msg =
|
{
|
FunName: "GetProduceDate",
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_SetID= function(UK,Seed,Path)
|
{
|
var msg =
|
{
|
FunName: "SetID",
|
Seed:Seed,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_SetCal_2 = function (UK,Key,Path)
|
{
|
var msg =
|
{
|
FunName: "SetCal_2",
|
Key:Key,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_SetCal_2 = function (UK,Key,Path)
|
{
|
var msg =
|
{
|
FunName: "SetCal_2",
|
Key:Key,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_SetCal_New = function (UK,Key,Path)
|
{
|
var msg =
|
{
|
FunName: "SetCal_New",
|
Key:Key,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
static _SetEncBuf= function(UK,InData,pos)
|
{
|
var msg =
|
{
|
FunName: "SetEncBuf",
|
InData:InData,
|
pos: pos
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
static _GetEncBuf= function(UK,pos)
|
{
|
var msg =
|
{
|
FunName: "GetEncBuf",
|
pos: pos
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
|
_ReSet = function (UK,Path)
|
{
|
var msg =
|
{
|
FunName: "ReSet",
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_MacAddr = function (UK)
|
{
|
var msg =
|
{
|
FunName: "MacAddr"
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
|
_GetChipID = function (UK,Path)
|
{
|
var msg =
|
{
|
FunName: "GetChipID",
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
static _StarGenKeyPair= function(UK,Path)
|
{
|
var msg =
|
{
|
FunName: "StarGenKeyPair",
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
static _GenPubKeyY= function(UK)
|
{
|
var msg =
|
{
|
FunName: "GenPubKeyY"
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
static _GenPubKeyX= function(UK)
|
{
|
var msg =
|
{
|
FunName: "GenPubKeyX"
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
static _GenPriKey= function(UK)
|
{
|
var msg =
|
{
|
FunName: "GenPriKey"
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_GetPubKeyY = function (UK,Path)
|
{
|
var msg =
|
{
|
FunName: "GetPubKeyY",
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_GetPubKeyX = function (UK,Path)
|
{
|
var msg =
|
{
|
FunName: "GetPubKeyX",
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_GetSm2UserName = function (UK,Path)
|
{
|
var msg =
|
{
|
FunName: "GetSm2UserName",
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_Set_SM2_KeyPair = function (UK,PriKey,PubKeyX,PubKeyY,sm2UserName,Path )
|
{
|
var msg =
|
{
|
FunName: "Set_SM2_KeyPair",
|
PriKey:PriKey,
|
PubKeyX:PubKeyX,
|
PubKeyY:PubKeyY,
|
sm2UserName:sm2UserName,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_YtSign = function (UK,SignMsg,Pin,Path)
|
{
|
var msg =
|
{
|
FunName: "YtSign",
|
SignMsg:SignMsg,
|
Pin:Pin,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_YtSign_2 = function (UK,SignMsg,Pin,Path)
|
{
|
var msg =
|
{
|
FunName: "YtSign_2",
|
SignMsg:SignMsg,
|
Pin:Pin,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_YtVerfiy = function (UK,id,SignMsg,PubKeyX, PubKeyY,VerfiySign,Path)
|
{
|
var msg =
|
{
|
FunName: "YtVerfiy",
|
id:id,
|
SignMsg:SignMsg,
|
PubKeyX:PubKeyX,
|
PubKeyY:PubKeyY,
|
VerfiySign:VerfiySign,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_SM2_DecString = function (UK,InString,Pin,Path)
|
{
|
var msg =
|
{
|
FunName: "SM2_DecString",
|
InString:InString,
|
Pin:Pin,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_SM2_EncString = function (UK,InString,Path)
|
{
|
var msg =
|
{
|
FunName: "SM2_EncString",
|
InString:InString,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_YtSetPin = function (UK,OldPin,NewPin,Path)
|
{
|
var msg =
|
{
|
FunName: "YtSetPin",
|
OldPin:OldPin,
|
NewPin:NewPin,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_FindU = function (UK,start)
|
{
|
var msg =
|
{
|
FunName: "FindU",
|
start: start
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_FindU_2 = function (UK,start,in_data,verf_data)
|
{
|
var msg =
|
{
|
FunName: "FindU_2",
|
start: start,
|
in_data: in_data,
|
verf_data:verf_data
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_FindU_3 = function (UK,start,in_data,verf_data)
|
{
|
var msg =
|
{
|
FunName: "FindU_3",
|
start: start,
|
in_data: in_data,
|
verf_data:verf_data
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_IsUReadOnly = function (UK,Path)
|
{
|
var msg =
|
{
|
FunName: "IsUReadOnly",
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_SetUReadOnly = function (UK,Path)
|
{
|
var msg =
|
{
|
FunName: "SetUReadOnly",
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
_SetHidOnly = function (UK,IsHidOnly,Path)
|
{
|
var msg =
|
{
|
FunName: "SetHidOnly",
|
IsHidOnly:IsHidOnly,
|
Path:Path
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
static ResetOrder= function(UK)
|
{
|
var msg =
|
{
|
FunName: "ResetOrder"
|
};
|
UK.send(JSON.stringify(msg));
|
}
|
|
ContinueOrder = function (UK)
|
{
|
var msg =
|
{
|
FunName: "ContinueOrder"
|
};
|
UK.send(JSON.stringify(msg));
|
}
|
|
|
_ComputerName= function(UK)
|
{
|
var msg =
|
{
|
FunName: "ComputerName"
|
};
|
UK.send(JSON.stringify(msg));
|
};
|
|
|
|
SendCmdAndWait = function(IsReturnErr,fun,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10)
|
{
|
var UK;
|
|
return new Promise((resolve, reject) => {
|
|
if (typeof MozWebSocket != "undefined") {
|
UK = new MozWebSocket(this.url,"usbkey-protocol");
|
} else {
|
UK = new WebSocket(this.url,"usbkey-protocol");
|
}
|
|
try
|
{
|
UK.onopen = function() {
|
SoftKey3W.ResetOrder(UK);//
|
}
|
|
UK.onmessage =function got_packet(Msg)
|
{
|
var UK_Data = JSON.parse(Msg.data);
|
var return_value;
|
if(UK_Data.type!="Process")return ;//
|
switch(UK_Data.order)
|
{
|
case 0:
|
{
|
fun(UK,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10);
|
}
|
break; //!!!!!
|
case 1:
|
{
|
SoftKey3W.LastError=UK_Data.LastError;
|
return_value=UK_Data.return_value;
|
if( SoftKey3W.LastError!=0){
|
if(IsReturnErr)return_value=SoftKey3W.LastError;
|
}
|
//
|
UK.close();
|
|
resolve(return_value);
|
}
|
break;
|
}
|
}
|
UK.onclose = function(){
|
|
}
|
UK.onerror = (event) => {
|
alert('未能连接服务程序,请确定服务程序是否安装。');
|
};
|
}
|
catch(e)
|
{
|
alert(e.name + ": " + e.message);
|
resolve(false);
|
}
|
})
|
}
|
|
GetLastError = function()
|
{
|
return SoftKey3W.LastError;
|
}
|
|
FindPort = function(start)
|
{
|
return this.SendCmdAndWait(false,this._FindPort,start);
|
}
|
|
FindPort_2= function( start,in_data, verf_data )
|
{
|
return this.SendCmdAndWait(false,this._FindPort_2,start,in_data, verf_data);
|
};
|
|
GetVersionEx= function(KeyPath)
|
{
|
return this.SendCmdAndWait(false,this._GetVersionEx,KeyPath);
|
};
|
|
GetVersion= function(KeyPath)
|
{
|
return this.SendCmdAndWait(false,this._GetVersion,KeyPath);
|
};
|
|
|
|
GetID_1= function(KeyPath)
|
{
|
return this.SendCmdAndWait(false,this._GetID_1,KeyPath);
|
}
|
|
GetID_2= function(KeyPath)
|
{
|
return this.SendCmdAndWait(false,this._GetID_2,KeyPath);
|
|
}
|
|
GetChipID= function(KeyPath)
|
{
|
return this.SendCmdAndWait(false,this._GetChipID,KeyPath);
|
|
};
|
|
SetWritePassword= function( W_HKey, W_LKey, new_HKey, new_LKey,KeyPath)
|
{
|
return this.SendCmdAndWait(true,this._SetWritePassword, W_HKey, W_LKey, new_HKey, new_LKey,KeyPath);
|
}
|
|
SetReadPassword= function( W_HKey, W_LKey, new_HKey, new_LKey,KeyPath)
|
{
|
return this.SendCmdAndWait(true,this._SetReadPassword,W_HKey, W_LKey, new_HKey, new_LKey,KeyPath);
|
}
|
|
|
SetCal_2= function( Key,KeyPath)
|
{
|
return this.SendCmdAndWait(true,this._SetCal_2,Key,KeyPath);
|
}
|
|
SetCal_New= function(Key,KeyPath)
|
{
|
return this.SendCmdAndWait(true,this._SetCal_New,Key,KeyPath);
|
}
|
|
|
EncString= function( InString,KeyPath)
|
{
|
return this.SendCmdAndWait(false,this._EncString,InString,KeyPath);
|
}
|
|
EncString_New= function( InString,KeyPath)
|
{
|
return this.SendCmdAndWait(false,this._EncString_New, InString,KeyPath);
|
}
|
|
|
|
Cal= function(Inbuf,KeyPath)
|
{
|
return SubCal(_Cal,Inbuf,KeyPath);
|
}
|
|
Cal_New= function(Inbuf,KeyPath)
|
{
|
return SubCal(_Cal_New,Inbuf,KeyPath)
|
}
|
|
|
|
sWriteEx= function( in_data ,KeyPath)
|
{
|
return this.SendCmdAndWait(false,this._sWriteEx,in_data ,KeyPath);
|
}
|
|
sWrite_2Ex= function( in_data ,KeyPath)
|
{
|
return this.SendCmdAndWait(false,this._sWrite_2Ex,in_data ,KeyPath);
|
}
|
|
sWriteEx_New= function( in_data ,KeyPath)
|
{
|
return this.SendCmdAndWait(false,this._sWriteEx_New,in_data ,KeyPath);
|
}
|
|
sWrite_2Ex_New= function( in_data ,KeyPath)
|
{
|
return this.SendCmdAndWait(false,this._sWrite_2Ex_New,in_data ,KeyPath);
|
}
|
|
sWrite= function( in_data ,KeyPath)
|
{
|
return this.SendCmdAndWait(true,this._sWrite,in_data ,KeyPath);
|
}
|
|
sWrite_2= function( in_data ,KeyPath)
|
{
|
return this.SendCmdAndWait(true,this._sWrite_2,in_data ,KeyPath);
|
}
|
|
sRead= function(KeyPath)
|
{
|
return this.SendCmdAndWait(false,this._sRead,KeyPath);
|
}
|
|
|
YWriteEx = function(indata, address, nlen, HKey, LKey,KeyPath)
|
{
|
var UK;
|
|
return new Promise((resolve, reject) => {
|
|
if (typeof MozWebSocket != "undefined") {
|
UK = new MozWebSocket(this.url,"usbkey-protocol");
|
} else {
|
UK = new WebSocket(this.url,"usbkey-protocol");
|
}
|
|
try
|
{
|
var i=0,order;
|
UK.onopen = function() {
|
SoftKey3W.ResetOrder(UK);//
|
|
}
|
|
UK.onmessage =function got_packet(Msg)
|
{
|
var UK_Data = JSON.parse(Msg.data);
|
var return_value;
|
if(UK_Data.type!="Process")return ;//
|
if(UK_Data.order<nlen)
|
{
|
SoftKey3W._SetBuf(UK,indata[UK_Data.order],UK_Data.order);
|
return;
|
}
|
else{
|
order=UK_Data.order-nlen;
|
}
|
|
switch(order)
|
{
|
case 0:
|
{
|
SoftKey3W.LastError=UK_Data.LastError;
|
if( SoftKey3W.LastError!=0){ UK.close();resolve(UK_Data.return_value);return ; }
|
SoftKey3W._YWriteEx(UK,address, nlen, HKey, LKey,KeyPath);
|
}
|
break; //!!!!!
|
case 1:
|
{
|
SoftKey3W.LastError=UK_Data.LastError;
|
return_value=UK_Data.return_value;
|
if( SoftKey3W.LastError!=0){
|
return_value=SoftKey3W.LastError;
|
}
|
|
UK.close();
|
|
resolve(return_value);
|
}
|
break;
|
}
|
}
|
UK.onclose = function(){
|
|
}
|
UK.onerror = (event) => {
|
alert('未能连接服务程序,请确定服务程序是否安装。');
|
};
|
}
|
catch(e)
|
{
|
alert(e.name + ": " + e.message);
|
resolve(false);
|
}
|
})
|
}
|
|
|
YWriteString= function(InString,Address , HKey, LKey,KeyPath)
|
{
|
return this.SendCmdAndWait(true,this._YWriteString,InString,Address , HKey, LKey,KeyPath);
|
}
|
|
YReadEx= function(address, nlen, HKey, LKey,KeyPath )
|
{
|
var outb = new Uint8Array(nlen);
|
var UK;
|
return new Promise((resolve, reject) => {
|
|
if (typeof MozWebSocket != "undefined") {
|
UK = new MozWebSocket(this.url,"usbkey-protocol");
|
} else {
|
UK = new WebSocket(this.url,"usbkey-protocol");
|
}
|
|
try
|
{
|
var i,order;
|
UK.onopen = function() {
|
SoftKey3W.ResetOrder(UK);//
|
|
}
|
|
UK.onmessage =function got_packet(Msg)
|
{
|
var UK_Data = JSON.parse(Msg.data);
|
var return_value;
|
if(UK_Data.type!="Process")return ;//
|
if(UK_Data.order<2)
|
{
|
|
switch(UK_Data.order)
|
{
|
case 0:
|
{
|
SoftKey3W._YReadEx(UK,address, nlen, HKey, LKey,KeyPath);
|
}
|
break; //!!!!!
|
case 1:
|
{
|
SoftKey3W.LastError=UK_Data.LastError;
|
if( SoftKey3W.LastError!=0){ UK.close();resolve(outb);return ; }
|
|
i=0;
|
SoftKey3W._GetBuf(UK,i);//
|
}
|
break;
|
}
|
}
|
else{
|
SoftKey3W.LastError=UK_Data.LastError;
|
if( SoftKey3W.LastError!=0){ UK.close();resolve(outb);return ; }
|
outb[i]=UK_Data.return_value;
|
i++;
|
if( UK_Data.LastError!=0 || i>=nlen)
|
{
|
UK.close();resolve(outb);return ;
|
}
|
SoftKey3W._GetBuf(UK,i);//
|
|
}
|
}
|
UK.onclose = function(){
|
|
}
|
UK.onerror = (event) => {
|
alert('未能连接服务程序,请确定服务程序是否安装。');
|
};
|
}
|
catch(e)
|
{
|
alert(e.name + ": " + e.message);
|
resolve(false);
|
}
|
})
|
return outb;
|
}
|
|
YReadString= function( Address, nlen, HKey, LKey,KeyPath)
|
{
|
return this.SendCmdAndWait(false,this._YReadString,Address, nlen, HKey, LKey,KeyPath);
|
}
|
|
|
YRead= function(Address,HKey,LKey,Path)
|
{
|
return this.SendCmdAndWait(false,this._YRead,Address,HKey,LKey,Path);
|
};
|
|
YWrite= function(InData,Address,HKey,LKey,Path)
|
{
|
return this.SendCmdAndWait(true,this._YWrite,InData,Address,HKey,LKey,Path)
|
};
|
|
|
ReSet= function( KeyPath )
|
{
|
return this.SendCmdAndWait(true,this._ReSet,KeyPath);
|
}
|
|
|
SetCal= function( HKey, LKey, new_HKey, new_LKey, KeyPath)
|
{
|
return this.SendCmdAndWait(true,this._SetCal,HKey, LKey, new_HKey, new_LKey,KeyPath);
|
}
|
|
|
|
SetID= function( Seed, KeyPath)
|
{
|
return this.SendCmdAndWait(true,this._SetID, Seed,KeyPath);
|
}
|
|
GetProduceDate= function( KeyPath)
|
{
|
return this.SendCmdAndWait(false,this._GetProduceDate,KeyPath);
|
}
|
|
SetHidOnly= function( IsHidOnly, KeyPath)
|
{
|
return this.SendCmdAndWait(true,this._SetHidOnly, IsHidOnly,KeyPath);
|
}
|
|
|
SetUReadOnly= function(KeyPath)
|
{
|
return this.SendCmdAndWait(true,this._SetUReadOnly,KeyPath);
|
}
|
|
|
StarGenKeyPair = function(KeyPath)
|
{
|
var KeyPairInfo={
|
GenPriKey:"",
|
GenPubKeyX:"",
|
GenPubKeyY:"",
|
}
|
var UK;
|
|
return new Promise((resolve, reject) => {
|
|
if (typeof MozWebSocket != "undefined") {
|
UK = new MozWebSocket(this.url,"usbkey-protocol");
|
} else {
|
UK = new WebSocket(this.url,"usbkey-protocol");
|
}
|
try
|
{
|
UK.onopen = function() {
|
SoftKey3W.ResetOrder(UK);//
|
}
|
|
UK.onmessage =function got_packet(Msg)
|
{
|
var UK_Data = JSON.parse(Msg.data);
|
var return_value;
|
if(UK_Data.type!="Process")return ;//
|
switch(UK_Data.order)
|
{
|
case 0:
|
{
|
SoftKey3W._StarGenKeyPair(UK,KeyPath);
|
}
|
break; //
|
case 1:
|
{
|
SoftKey3W.LastError=UK_Data.LastError;
|
if( SoftKey3W.LastError!=0){UK.close(); resolve(KeyPairInfo);return ;}
|
SoftKey3W._GenPriKey(UK);
|
}
|
break;
|
case 2:
|
{
|
SoftKey3W.LastError=UK_Data.LastError;
|
if( SoftKey3W.LastError!=0){UK.close(); resolve(KeyPairInfo);return ;}
|
KeyPairInfo.GenPriKey=UK_Data.return_value;
|
SoftKey3W._GenPubKeyX(UK);
|
}
|
break;
|
case 3:
|
{
|
SoftKey3W.LastError=UK_Data.LastError;
|
if( SoftKey3W.LastError!=0){UK.close(); resolve(KeyPairInfo);return ;}
|
KeyPairInfo.GenPubKeyX=UK_Data.return_value;
|
SoftKey3W._GenPubKeyY(UK);
|
}
|
break;
|
case 4:
|
{
|
SoftKey3W.LastError=UK_Data.LastError;
|
if( SoftKey3W.LastError!=0){UK.close(); resolve(KeyPairInfo);return ;}
|
KeyPairInfo.GenPubKeyY=UK_Data.return_value;
|
|
UK.close(); resolve(KeyPairInfo);return ;
|
}
|
break;
|
}
|
}
|
UK.onclose = function(){
|
|
}
|
UK.onerror = (event) => {
|
alert('未能连接服务程序,请确定服务程序是否安装。');
|
};
|
}
|
catch(e)
|
{
|
alert(e.name + ": " + e.message);
|
resolve(false);
|
}
|
})
|
}
|
|
|
|
Set_SM2_KeyPair= function(PriKey, PubKeyX, PubKeyY, SM2_UserName, KeyPath)
|
{
|
return this.SendCmdAndWait(true,this._Set_SM2_KeyPair,PriKey, PubKeyX, PubKeyY, SM2_UserName,KeyPath);
|
}
|
|
Get_SM2_PubKey= function(KeyPath)
|
{
|
return this.SendCmdAndWait(false,this._Get_SM2_PubKey,KeyPath);
|
}
|
|
GetPubKeyX= function(KeyPath)
|
{
|
return this.SendCmdAndWait(false,this._GetPubKeyX,KeyPath);
|
}
|
|
GetPubKeyY= function(KeyPath)
|
{
|
return this.SendCmdAndWait(false,this._GetPubKeyY,KeyPath);
|
}
|
|
GetSm2UserName= function(KeyPath)
|
{
|
return this.SendCmdAndWait(false,this._GetSm2UserName,KeyPath);
|
}
|
|
SM2_EncBuf= function( InBuf, inlen, KeyPath)
|
{
|
return this.SendCmdAndWait(true,this._SM2_EncBuf, InBuf, inlen,KeyPath);
|
}
|
|
SM2_DecBuf= function( InBuf, inlen, pin, KeyPath)
|
{
|
return this.SendCmdAndWait(true,this._SM2_DecBuf,InBuf, inlen, pin, KeyPath);
|
}
|
|
SM2_EncString= function(InString, KeyPath)
|
{
|
return this.SendCmdAndWait(false,this._SM2_EncString,InString, KeyPath);
|
}
|
|
SM2_DecString= function(InString, pin, KeyPath)
|
{
|
return this.SendCmdAndWait(false,this._SM2_DecString,InString, pin,KeyPath);
|
}
|
|
YtSetPin= function(old_pin, new_pin, KeyPath)
|
{
|
return this.SendCmdAndWait(true,this._YtSetPin,old_pin, new_pin, KeyPath);
|
}
|
|
|
YtSign= function(msg, pin, KeyPath)
|
{
|
return this.SendCmdAndWait(false,this._YtSign,msg, pin, KeyPath);
|
}
|
|
YtSign_2= function(msg, pin, KeyPath)
|
{
|
return this.SendCmdAndWait(false,this._YtSign_2,msg, pin, KeyPath);
|
}
|
|
MacAddr= function()
|
{
|
return this.SendCmdAndWait(false,this._MacAddr);
|
}
|
|
ComputerName= function()
|
{
|
return this.SendCmdAndWait(false,this._ComputerName);
|
};
|
|
SubCal = function(Fun,Inbuf,KeyPath)
|
{
|
var UK;var outb = new Uint8Array(8);
|
return new Promise((resolve, reject) => {
|
|
if (typeof MozWebSocket != "undefined") {
|
UK = new MozWebSocket(this.url,"usbkey-protocol");
|
} else {
|
UK = new WebSocket(this.url,"usbkey-protocol");
|
}
|
|
try
|
{
|
var i=0,order;var bIsEnc=true;
|
UK.onopen = function() {
|
SoftKey3W.ResetOrder(UK);//
|
|
}
|
|
UK.onmessage =function got_packet(Msg)
|
{
|
var UK_Data = JSON.parse(Msg.data);
|
var return_value;
|
if(UK_Data.type!="Process")return ;//
|
if(bIsEnc)
|
{
|
if(UK_Data.order<8)
|
{
|
SoftKey3W._SetEncBuf(UK,Inbuf[UK_Data.order],UK_Data.order);
|
return;
|
}
|
else{
|
order=UK_Data.order-8;
|
}
|
|
switch(order)
|
{
|
case 0:
|
{
|
SoftKey3W.LastError=UK_Data.LastError;
|
if( SoftKey3W.LastError!=0){UK.close(); resolve(outb);return ;}
|
Fun(UK, KeyPath);
|
}
|
break; //
|
case 1:
|
{
|
SoftKey3W.LastError=UK_Data.LastError;
|
return_value=UK_Data.return_value;
|
if( SoftKey3W.LastError!=0){UK.close(); resolve(outb);return ;}
|
bIsEnc=false;i=0;
|
SoftKey3W.ResetOrder(UK);
|
|
}
|
break;
|
}
|
}
|
else{
|
SoftKey3W.LastError=UK_Data.LastError;
|
if( SoftKey3W.LastError!=0){
|
UK.close();
|
resolve(outb);return ;
|
}
|
if(UK_Data.order<8)
|
{
|
if(UK_Data.order>0)
|
{
|
outb[i-1]=UK_Data.return_value;
|
}
|
SoftKey3W._GetEncBuf(UK,i);//
|
i++;
|
}
|
else{
|
outb[i-1]=UK_Data.return_value;
|
UK.close();
|
resolve(outb);return ;
|
}
|
}
|
}
|
UK.onclose = function(){
|
|
}
|
UK.onerror = (event) => {
|
alert('未能连接服务程序,请确定服务程序是否安装。');
|
};
|
}
|
catch(e)
|
{
|
alert(e.name + ": " + e.message);
|
resolve(false);
|
}
|
})
|
}
|
|
|
}
|