fullstack.web/swa/u/fiseckey.js

1612 lines
35 KiB
JavaScript
Raw Normal View History

2022-12-22 06:57:51 +00:00
/**
* Description: 通用Ukey的js接口
* Author: paulhou(houenchao)
* Version: V1.1
* Create: 2019/3/22 13:56
*/
var initurl = "http://127.0.0.1:8090/do";
var keyType = 4;
var ppid = 0;//sm3 hash时默认id
jQuery.support.cors=true;
if (isIE()&&isSSL()) {
initurl = "https://127.0.0.1:433/do";
//alert(initurl);
}
function isSSL() {
var url = window.location.href;
if (url.indexOf("https")!=-1) {
return true;
}
return false;
}
function isIE() {
var userAgent = navigator.userAgent;
//alert(userAgent);
var isIE = userAgent.indexOf("NET") > -1 && userAgent.indexOf("rv") > -1 ;
isIE = isIE || (userAgent.indexOf("MSIE") > -1);
return isIE;
}
var FISECKEY = {
OpenDevice : function(index, keyType) {
var handle = 0;
$.ajax({
url : initurl,
type : "post",
dataType : "json",
data : {
order : '01000001',
index : index
},
async : false,
success : function(data) {
if (0 == data.rev) {
handle = data.hdev;
} else {
throw new Error("设备打开失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return handle;
},
CloseDevice : function(hDev) {
$.ajax({
url : initurl,
type : "post",
dataType : "json",
data : {
order : '01000002',
hdevice : hDev
},
async : false,
success : function(data) {
if (0 == data.rev) {
handle = 0;
} else {
throw new Error("设备关闭失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
OpenByName : function(devName, keyType, devID) {
var handle = 0;
$.ajax({
url : initurl,
type : "post",
dataType : "json",
data : {
order : '01000003',
devName : devName,
devID : devID
},
async : false,
success : function(data) {
if (0 == data.rev) {
handle = data.hdev;
} else {
throw new Error("设备打开失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return handle;
},
OpenBySerial : function(devSerial, keyType) {
var handle = 0;
$.ajax({
url : initurl,
type : "post",
dataType : "json",
data : {
order : '01000004',
devSerial : devSerial
},
async : false,
success : function(data) {
if (0 == data.rev) {
handle = data.hdev;
} else {
throw new Error("设备打开失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return handle;
},
EnumByArray : function() {
var result = null;
$.ajax({
url : initurl,
type : "post",
dataType : "json",
data : {
order : '01000005'
},
async : false,
success : function(data) {
if (0 == data.rev) {
result = data.EnumDeviceNameList;
} else {
throw new Error("设备枚举失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
},
EnumByName : function() {
var result = null;
$.ajax({
url : initurl,
type : "post",
dataType : "json",
data : {
order : '01000006'
},
async : false,
success : function(data) {
if (0 == data.rev) {
result = data.EnumDeviceNameList;
} else {
throw new Error("设备枚举失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
},
EnumBySerial : function() {
var result = null;
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000007'
},
async : false,
success : function(data) {
if (0 == data.rev) {
result = data.EnumDeviceSerelList;
} else {
throw new Error("设备枚举失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
},
GetInfo : function(hDev,flag,inBuf) {
var result = null;
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000008',
hdevice: hDev
},
async : false,
success : function(data){
if (0 == data.rev) {
result = data.info;
return result;
} else {
throw new Error("设备信息获取失败:" +FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
SetDevName : function(hDev, devName) {
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000009',
hdevice:hDev,
devName:devName
},
async : false,
success : function(data){
if (0 != data.rev) {
throw new Error("设置设备名称失败:"+FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
GetDevName : function(hDev) {
var result = null;
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000063',
hdevice:hDev
},
async : false,
success : function(data){
if (0 == data.rev) {
result = data.devname;
} else {
throw new Error("获取设备名称失败:"+FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
},
GenRandom : function(hDev, len) {
var result;
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000010',
hdevice:hDev,
len:len
},
async : false,
success : function(data){
if (0 == data.rev) {
result = data.ranData;
} else {
throw new Error("生成随机数失败:" +FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
},
GenRSAKeypair : function(hDev, flag, keyLength, keyNum) {
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000011',
hdevice:hDev,
flag:flag,
keyNum:keyNum,
keyLen:keyLength
},
async : false,
success : function(data){
if (0 != data.rev) {
throw new Error("RSA密钥对生成失败:"+FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
DelRSAKeypair : function(hDev, keyNum) {
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000012',
hdevice:hDev,
keyNum:keyNum
},
async : false,
success : function(data){
if (0 != data.rev) {
throw new Error("RSA密钥对删除失败:"+FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
ImportRSAKey : function(hDev, keyNum, keyLength, flag, vRsakey) {
$.ajax({
url : initurl,
type : "post",
dataType : "json",
data : {
order : '01000013',
hdevice : hDev,
keyNum : keyNum,
keyLen : keyLength,
flag : flag,
key : vRsakey
},
async : false,
success : function(data) {
if (0 != data.rev) {
throw new Error("RSA密钥对导入失败:"
+ FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
ExportRSAKey : function(hDev, keyNum) {
var result;
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000014',
hdevice:hDev,
keyNum:keyNum
},
async : false,
success : function(data){
if (0 == data.rev) {
result = data.pubkey;
} else {
throw new Error("RSA密钥对导出失败:"
+ FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
},
ExportRSAKeyBase64 : function(hDev, keyNum) {
var result;
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000058',
hdevice:hDev,
keyNum:keyNum
},
async : false,
success : function(data){
if (0 == data.rev) {
result = data.pubkey;
} else {
throw new Error("RSA密钥对导出失败:"
+ FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
},
RSAEncrypt : function(hDev, keyNum, inData) {
var result;
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000015',
hdevice:hDev,
keyNum:keyNum,
inData:inData
},
async : false,
success : function(data){
if (0 == data.rev) {
result = data.enData;
} else {
throw new Error("RSA加密失败:"
+ FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
},
RSADecrypt : function(hDev, keyNum, inData) {
var result;
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000016',
hdevice:hDev,
keyNum:keyNum,
inData:inData
},
async : false,
success : function(data){
if (0 == data.rev) {
result = data.decData;
} else {
throw new Error("RSA解密失败:"
+ FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
},
RSASignData : function(hDev, keyNum, inData) {
var result;
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000017',
hdevice:hDev,
keyNum:keyNum,
inData:inData
},
async : false,
success : function(data){
if (0 == data.rev) {
result = data.sigData;
} else {
throw new Error("RSA签名失败:"
+ FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
},
RSAVerify : function(hDev, keyNum, vHashAlg, inData, vSignData) {
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000018',
hdevice:hDev,
keyNum:keyNum,
alg:vHashAlg,
inData:inData,
signData:vSignData
},
async : false,
success : function(data) {
if (0 != data.rev) {
throw new Error("RSA验签失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
Hash : function(hDev, vHashAlg, inData) {
var result;
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000019',
hdevice:hDev,
flag:vHashAlg,
inData:inData
},
async : false,
success : function(data){
if (0 == data.rev) {
result = data.digest;
}else {
throw new Error("哈希运算失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
},
SM3Data : function(hDev, keyNum, inData) {
var result;
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000020',
hdevice:hDev,
keyNum:keyNum,
inData:inData
},
async : false,
success : function(data){
if (0 == data.rev) {
result = data.digest;
}else {
throw new Error("SM3运算失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
},
GenECCKeypair : function(hDev, vAlg, vKeyBits, keyNum) {
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000040',
hdevice:hDev,
alg:vAlg,
keyNum:keyNum,
keyLen:vKeyBits
},
async : false,
success : function(data){
if (0 != data.rev) {
throw new Error("ECC密钥对生成失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
DelECCKeypair : function(hDev, keyNum) {
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000041',
hdevice:hDev,
keyNum:keyNum,
},
async : false,
success : function(data){
if (0 != data.rev) {
throw new Error("ECC密钥对生成失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
ImportECCKeypair : function(hDev, keyNum, keyLength, flag, vStrECCPubkey,
vStrECCPrikey) {
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000042',
hdevice:hDev,
keyNum:keyNum,
priKey:vStrECCPrikey,
pubKey:vStrECCPubkey
},
async : false,
success : function(data){
if (0 != data.rev) {
throw new Error("ECC密钥对导入失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
ExportECCKeypair : function(hDev, keyNum) {
var result;
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000043',
hdevice:hDev,
keyNum:keyNum
},
async : false,
success : function(data){
if (0 == data.rev) {
result = data.keyData;
} else {
throw new Error("ECC密钥对导出失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
},
ECCEncrypt : function(hDev, alg, keyNum, inData) {
var result;
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000044',
hdevice:hDev,
keyNum:keyNum,
inData:inData
},
async : false,
success : function(data){
if (0 == data.rev) {
result = data.enData;
} else {
throw new Error("ECC加密失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
},
ECCDecrypt : function(hDev, alg, keyNum, inData) {
var result;
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000045',
hdevice:hDev,
keyNum:keyNum,
inData:inData
},
async : false,
success : function(data){
if (0 == data.rev) {
result = data.decData;
} else {
throw new Error("ECC解密失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
},
ECCEncryptDer : function(hDev, alg, keyNum, inData) {
var result;
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000065',
hdevice:hDev,
keyNum:keyNum,
inData:inData
},
async : false,
success : function(data){
if (0 == data.rev) {
result = data.enDataDer;
} else {
throw new Error("ECC加密失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
},
ECCDecryptDer : function(hDev, alg, keyNum, inData) {
var result;
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000066',
hdevice:hDev,
keyNum:keyNum,
inData:inData
},
async : false,
success : function(data){
if (0 == data.rev) {
result = data.decData;
} else {
throw new Error("ECC解密失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
},
ECCSign : function(hDev, alg, keyNum, inData) {
var result;
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000046',
hdevice:hDev,
keyNum:keyNum,
inData:inData,
alg:alg
},
async : false,
success : function(data){
if (0 == data.rev) {
result = data.sigData;
} else {
throw new Error("ECC签名失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
},
ECCVerify : function(hDev, vAlg, keyNum, inData, vSignData) {
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000047',
hdevice:hDev,
keyNum:keyNum,
alg:vAlg,
inData:inData,
signData:vSignData
},
async : false,
success : function(data){
if (0 != data.rev) {
throw new Error("ECC验签失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
ContainerWriteCert : function(hDev, vFlag, vContainerName, vCertData) {
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000061',
hdevice:hDev,
cintainer:vContainerName,
flag:vFlag,
cert:vCertData
},
async : false,
success : function(data){
if (0 != data.rev) {
throw new Error("证书写入失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
ContainerReadCert : function(hDev, vFlag, vContainerName) {
var result;
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000062',
hdevice:hDev,
cintainer:vContainerName,
flag:vFlag
},
async : false,
success : function(data){
if (0 == data.rev) {
result = data.data;
} else {
throw new Error("证书读取失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
},
ContainerEnum : function(hDev) {
var result;
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000052',
hdevice:hDev
},
async : false,
success : function(data){
if (0 == data.rev) {
result = data.conlist;
} else {
throw new Error("证书容器枚举失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
},
ContainerDelete : function(hDev, vContainerName) {
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000051',
hdevice:hDev,
cintainer:vContainerName
},
async : false,
success : function(data){
if (0 != data.rev) {
throw new Error("证书容器删除失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
USER_Login : function(hDev, vstrPin) {
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000027',
hdevice:hDev,
pin:vstrPin
},
async : false,
success : function(data){
if (0 == data.rev) {
result = data.rev;
}else{
var pinErr = "" + data.rev.toString(16);
if(pinErr.match(/.*\83$/)){
throw new Error("用户PIN码错误剩余尝试次数" + data.count);
}else{
throw new Error("用户登录失败," + FISECERR.getErrMsg(data.rev));
}
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return 0;
},
USER_Logout : function(hDevice, vuser) {
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000028',
hdevice:hDevice,
user:vuser
},
async : false,
success : function(data){
if (0 != data.rev) {
throw new Error("用户登出失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
ADMIN_Login : function(hDev, vstrPin) {
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000064',
hdevice:hDev,
pin:vstrPin
},
async : false,
success : function(data){
if (0 == data.rev) {
result = data.rev;
}else{
var pinErr = "" + data.rev.toString(16);
if(pinErr.match(/.*\83$/)){
throw new Error("管理员PIN码错误剩余尝试次数" + data.count);
}else{
throw new Error("管理员登录失败," + FISECERR.getErrMsg(data.rev));
}
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
ADMIN_Logout : function(hDevice, vuser) {
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000028',
hdevice:hDevice,
user:vuser
},
async : false,
success : function(data){
if (0 == data.rev) {
alert("管理员登出成功")
} else {
alert("管理员登出失败");
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
USER_ChangePin : function(hDev, vflag, vstrOldPin, vstrNewPin) {
//vflag 1修改操作员口令2修改管理员口令3解锁
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000029',
hdevice:hDev,
flag:vflag,
oldPin:vstrOldPin,
pin:vstrNewPin
},
async : false,
success : function(data){
if (0 != data.rev) {
if (!(1001==data.rev || 1002==data.rev)) {
throw new Error("修改PIN码失败剩余重试次数"+ data.count);
} else {
throw new Error("修改PIN码错误"+FISECERR.getErrMsg(data.rev));
}
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
GenKey : function(hDev, vAlg, index) {
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000022',
hdevice:hDev,
alg:vAlg,
keyNum:index
},
async : false,
success : function(data){
if (0 != data.rev) {
throw new Error("对称密钥生成失败:"+FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
DelKey : function(hDevice, index) {
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000023',
hdevice:hDevice,
keyNum:index
},
async : false,
success : function(data){
if (0 != data.rev) {
throw new Error("对称密钥删除失败:"+FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
ImportKey : function(hDevice, viAlg, vstrKey,index) {
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000021',
hdevice:hDevice,
alg:viAlg,
keyNum:index,
key:vstrKey
},
async : false,
success : function(data){
if (0 != data.rev) {
throw new Error("对称密钥导入失败:"+FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
Encrypt : function(hDevice, alg, index, vWorkMode, vstrIn, vstrIv, vstrKey) {
var result;
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000025',
hdevice:hDevice,
alg:alg,
keyNum:index,
mode:vWorkMode,
inData:vstrIn,
iv:vstrIv,
inKey:vstrKey
},
async : false,
success : function(data){
if (0 == data.rev) {
result = data.enData;
} else {
throw new Error("对称加密失败:"+FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
},
Decrypt : function(hDevice, alg, index, vWorkMode, vstrChiper, vstrIv, vstrKey) {
var result;
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000026',
hdevice:hDevice,
alg:alg,
keyNum:index,
mode:vWorkMode,
inData:vstrChiper,
iv:vstrIv,
inKey:vstrKey
},
async : false,
success : function(data){
if (0 == data.rev) {
result = data.decData;
} else {
throw new Error("对称解密失败:"+FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
},
FILE_Init : function(hDevice) {
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000031',
hdevice:hDevice
},
async : false,
success : function(data){
if (0 != data.rev) {
throw new Error("文件初始化失败:"+FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
FILE_CreateDir : function(hDevice, vstrDir, vdwAccCon) {
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000032',
hdevice:hDevice,
dir:vstrDir,
acc:vdwAccCon
},
async : false,
success : function(data){
if (0 != data.rev) {
throw new Error("路径创建失败:"+FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
FILE_CreateFile : function(hDevice, vstrDir, vstrfile, vdwSize, vdwAccCon) {
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000034',
hdevice:hDevice,
dir:vstrDir,
file:vstrfile,
size:vdwSize,
acc:vdwAccCon
},
async : false,
success : function(data){
if (0 != data.rev) {
throw new Error("文件创建失败:"+FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
FILE_DeleteDir : function(hDevice, vstrDir) {
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000033',
hdevice:hDevice,
dir:vstrDir
},
async : false,
success : function(data){
if (0 != data.rev) {
throw new Error("路径删除失败:"+FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
FILE_DeleteFile : function(hDevice, vstrDir, vstrfile) {
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000037',
hdevice:hDevice,
dir:vstrDir,
file:vstrfile
},
async : false,
success : function(data){
if (0 != data.rev) {
throw new Error("文件删除失败:"+FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
FILE_EnmuDir : function(hDevice, vstrDir) {
var dirlist = "";
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000038',
hdevice:hDevice,
dir:vstrDir
},
async : false,
success : function(data){
if (0 == data.rev) {
dirlist = data.data;
}else{
throw new Error("路径枚举失败:"+FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return dirlist;
},
FILE_EnmuFile : function(hDevice, vstrDir) {
var dirlist = "";
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000039',
hdevice:hDevice,
dir:vstrDir
},
async : false,
success : function(data){
if (0 == data.rev) {
dirlist = data.data;
}else{
throw new Error("文件枚举失败:"+FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return dirlist;
},
FILE_ReadFile : function(hDevice, vstrDir, vstrfile, vdwOffSet, vdwSize) {
var result;
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000035',
hdevice:hDevice,
dir:vstrDir,
file:vstrfile,
offset:vdwOffSet,
size:vdwSize
},
async : false,
success : function(data){
if (0 == data.rev) {
result = data.data;
} else {
throw new Error("文件读取失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
},
FILE_WriteFile : function(hDevice, vstrDir, vstrfile, vdwOffSet, vdwSize,
vstrData) {
$.ajax({
url: initurl,
type : "post",
dataType:"json",
data : {
order: '01000036',
hdevice:hDevice,
dir:vstrDir,
file:vstrfile,
offset:vdwOffSet,
size:vdwSize,
input:vstrData
},
async : false,
success : function(data){
if (0 != data.rev) {
throw new Error("文件写入失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
},
FILE_GetInfo : function(hDevice, vstrDir, vstrfile) {
var result;
$.ajax({
url: initurl,
type : "post",
data : {
order: '01000053',
hdevice: hDevice,
vstrDir: vstrDir,
vstrfile: vstrfile
},
async : false,
success : function(data){
if (0 == data.rev) {
result = data.fileinfo;
} else {
throw new Error("文件获取信息失败:" + FISECERR.getErrMsg(data.rev));
}
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
},
getSerialAndSubjects : function(hDevice) {
var result;
$.ajax({
url: initurl,
type : "post",
data : {
order: '01000054',
hdevice:hDevice
},
async : false,
success : function(data){
result = data.sersublist;
},
error : function(XMLHttpRequest, textStatus) {
throw new Error(XMLHttpRequest.status + ";" + textStatus);
}
});
return result;
}
}
var FISECERR = {
getErrMsg : function(errCode) {
switch(errCode) {
case 0x001:
return "fail";
case 0x002:
return "part ok";
case 0x003:
return "unknown error";
case 0x005:
return "error parameter";
case 0x006:
return "error right";
case 0x007:
return "device busy";
case 0x008:
return "operation timeout";
case 0x009:
return "no mem";
case 0x00a:
return "no resouce";
case 0x00b:
return "communication error";
case 0x00c:
return "register access error";
case 0x00d:
return "stack is overflow";
case 0x00e:
return "device is used now";
case 0x00f:
return "open session is out of range";
case 0x010:
return "dma read error";
case 0x011:
return "dma write error";
case 0x012:
return "create sync objcect error";
case 0x013:
return "get sync objcect error";
case 0x014:
return "release sync objcect error";
case 0x015:
return "data length error";
case 0x016:
return "key length error or not support";
case 0x017:
return "dev not close";
case 0x0a0:
return "key is not exist";
case 0x0a1:
return "no free key handle";
case 0x0a2:
return "key handle is out of range";
case 0x0a3:
return "alg step err(init/update/final) ";
case 0x100:
return "iv length error";
case 0x180:
return "ECC not init";
case 0x181:
return "ECC pubkey error";
case 0x182:
return "ECC prikey error";
case 0x183:
return "ECC sign error";
case 0x184:
return "ECC verify error";
case 0x185:
return "ECC encrypt error";
case 0x186:
return "ECC decrypt error";
case 0x187:
return "ECC decrypt verify error";
case 0x188:
return "ECC agreement error";
case 0x200:
return "SM3 user'ID length is out of range";
case 0x240:
return "file system is not init";
case 0x241:
return "dir nested too deep";
case 0x242:
return "dir is not exist";
case 0x243:
return "file is not exist";
case 0x244:
return "dir has already exist";
case 0x245:
return "file has already exist";
case 0x246:
return "dir number is out of range";
case 0x247:
return "file number is out of range";
case 0x248:
return "file space is not enough";
case 0x249:
return "file operation is out of range";
case 0x260:
return "flash operation is timeout";
case 0x261:
return "flash write error";
case 0x262:
return "flash read error";
case 0x263:
return "flash operation is out of range";
case 0x264:
return "eeprom operation is timeout";
case 0x265:
return "eeprom write error";
case 0x266:
return "eeprom read error";
case 0x267:
return "eeprom operation is out of range";
case 0x280:
return "user is not exist";
case 0x281:
return "user has already exist";
case 0x282:
return "user number is out of range";
case 0x283:
return "user pin err";
case 0x284:
return "backup step err";
case 0x285:
return "open user dev err";
case 0x286:
return "get user dev info err";
case 0x287:
return "write user dev mem err";
case 0x288:
return "read user dev mem err";
case 0x289:
return "user is not login";
case 0xF902005:
return "PIN码长度范围8-16";
default:
return "not support";
}
}
}