fullstack.web/www/swa/u/fiseckey.js
2023-01-04 10:30:35 +08:00

1612 lines
35 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 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";
}
}
}