/*******************************************************************************************************************************
************************************************************************************************************************
**************************************************GDCA KEY OPERATION****************************************************
****************************************************************************************************************************
*******************************************************************************************************************************/
//标签类型
var GDCA_LBL_CONFIG= 1;
var GDCA_LBL_DATA= 2;
var GDCA_LBL_EXDATA= 3;
var GDCA_LBL_SIGNKEY= 4;
var GDCA_LBL_ENCKEY= 5;
var GDCA_LBL_SIGNCERT= 7;
var GDCA_LBL_ENCCERT= 8;
var GDCA_LBL_CACERT= 9;
//标签读写模式:只读MODE_RD 只写MODE_WR 读写MODE_RW
var GDCA_LBLMODE_RD = 1;
var GDCA_LBLMODE_WR = 2;
var GDCA_LBLMODE_RW = 3;
//设备标识
var Wellhope_OldKey = 0;
var Wellhope_Key = 1;
var GDCA_Key = 3;
var GDCA_Machine_Key = 4;
var MH_Key = 5;
//证书类型
var EncCert = 1;
var SignCert = 2;
var ROOTCA_CERT = 3;
var CA_CERT = 4;
//个人证书
var LBL_ROOTCACERT="ROOTCA_CERT";
var LBL_CACERT="CA_CERT";
var LBL_USERCERT="LAB_USERCERT";
var LBL_USERCERT_SIG="LAB_USERCERT_SIG";
var LBL_USERCERT_TEMP="LAB_USERCERT_TEMP";
var LBL_USERCERT_ENC="LAB_USERCERT_ENC";
var LBL_USERCERT_SIG_SN="LAB_USERCERT_SIG_SN";
var LBL_USERCERT_ENC_SN="LAB_USERCERT_ENC_SN";
//原有证书备份
var LBL_USERCERT_ENC_BAK="LAB_USERCERT_ENC_BAK";
var LBL_USERCERT_SIG_BAK="LAB_USERCERT_SIG_BAK";
var LBL_DISAID="LAB_DISAID";
var LBL_USERID="LAB_USERID";
var GDCA_GET_CERT_INFO = 1;
var GDCA_GET_CERT_VERSION = 2;
var GDCA_GET_CERT_SERIAL = 3;
var GDCA_GET_CERT_SIGNATURE_ALGO = 4;
var GDCA_GET_CERT_ISSUER = 5;
var GDCA_GET_CERT_VALID_TIME = 6;
var GDCA_GET_CERT_SUBJECT = 7;
var GDCA_GET_CERT_PUBLIC_KEY = 8;
var GDCA_GET_CERT_EXTENSIONS = 9;
var GDCA_MODE_ECB =1;
var GDCA_MODE_CBC =2;
var GDCA_MODE_CFB =3;
var GDCA_MODE_OFB =4;
/*****************************************************
* 函数名称:replaceChars;
* 函数功能:替换字符串中的相应字符串;
*******************************************************/
function replaceChars(entry,orgStr,replaceStr)
{
temp = "" + entry;
while (temp.indexOf(orgStr)>-1)
{
pos= temp.indexOf(orgStr);
temp = "" + (temp.substring(0, pos) + replaceStr + temp.substring((pos + orgStr.length), temp.length));
}
return temp;
}
function ReadFile(i_Com,filename)
{
var FileData="";
var flag;
var curStatus;
FileData=i_Com.ReadFromFile(filename);
return FileData;
}
function WriteFile(i_Com,filename,inData)
{
var flag;
var curStatus;
flag=i_Com.WriteToFile("",inData);
curStatus=i_Com.CurStatus;
if(flag)
{
alert("保存文件成功!");
}
else
{
alert("文件保存出现异常错误!错误代码:"+curStatus);
}
return flag;
}
//***************************初始化一组*********************************************
function GDCASetDevice(i_Com,deviceType)
{
var rtn,errorCode;
rtn = i_Com.GDCA_SetDeviceType(deviceType);
errorCode = i_Com.GetError();
return errorCode;
}
function GDCAInitialize(i_Com)
{
var rtn,errorCode;
rtn = i_Com.GDCA_Initialize();
errorCode = i_Com.GetError();
return errorCode;
}
function WellhopeOldKeyInit(i_Com)
{
var ret=0;
ret=i_Com.OpkiInit();
if (ret!=0)
{
alert("客户端初使化失败:"+ret);
return ret;
}
return ret;
}
function WellhopeNewKeyInit(i_Com)
{
var ret;
ret = i_Com.AtvInit();
if(ret != 0)
{
alert("客户端控件初始化失败!");
return ret;
}
return ret;
}
function GDCAKeyInit(i_Com,KeyType)
{
var ret;
// alert("KeyType="+KeyType);
ret=GDCASetDevice(i_Com,KeyType);
if(ret!=0)
{
alert("设置设备类型出错:"+ret);
return ret;
}
//初始化控件
ret=GDCAInitialize(i_Com);
if(ret!=0)
{
alert("初始化控件出错:"+ret);
return ret;
}
return ret;
}
function ActiveXInit(i_Com0,i_Com1,i_Com2,KeyType)
{
var ret,DeviceType;
DeviceType = i_Com2.GDCA_GetDevicType();
ret = DeviceType;
// alert(ret);
switch(parseInt(DeviceType))
{
case -1 : alert("注册表错误,请导入正确的注册表文件:"+ret);
KeyType[0] = DeviceType;
break;
case -2 : alert("请插入证书硬件介质:"+ret);
KeyType[0] = DeviceType;
break;
case -3 : alert("有其他的USB设备:"+ret);
KeyType[0] = DeviceType;
break;
case 10 :
case 11 : ret = GDCAKeyInit(i_Com2,DeviceType);
KeyType[0] = 2;
break;
case 3 : ret = WellhopeNewKeyInit(i_Com1);
KeyType[0] = 1;
break;
case 2 : ret = WellhopeOldKeyInit(i_Com0);
KeyType[0] = 0;
break;
}
return ret;
}
//***************************初始化END*********************************************
//***************************释放清除一组******************************************
function WellhopeOldKeyEnd(i_Com)
{
var ret;
ret = i_Com.OpkiEnd();
if(ret != 0)
{
alert("OpkiEnd Error:"+ret);
}
return ret;
}
function WellhopeNewKeyEnd(i_Com)
{
var ret;
ret = i_Com.AtvEnd();
if(ret != 0)
{
alert("AtvEnd Error:"+ret);
}
return ret;
}
function GDCAFinalize(i_Com)
{
var rtn,errorCode;
rtn = i_Com.GDCA_Finalize();
errorCode = i_Com.GetError();
return errorCode;
}
function GDCAKeyEnd(i_Com)
{
var ret;
//释放资源
ret=GDCAFinalize(i_Com);
if(ret!=0)
alert("Finalize Error:"+ret);
return ret;
}
function ActiveXEnd(i_Com,KeyType)
{
var ret;
switch(parseInt(KeyType))
{
case 0 : ret = WellhopeOldKeyEnd(i_Com);
break;
case 1 : ret = WellhopeNewKeyEnd(i_Com);
break;
default : ret = GDCAKeyEnd(i_Com);
}
return ret;
}
//****************************************释放清除一组END****************************************
//******************************登陆一组*******************************************************
function WellhopeOldKeyLogin(i_Com,userpin)
{
var ret;
// 1为USERPIN,0为SOPIN
ret=i_Com.OpkiLogin(1,userpin);
if (ret!=0)
{
alert("你输入的PIN码不正确,请检查:"+ret);
WellhopeOldKeyLogout(i_Com);
WellhopeOldKeyEnd(i_Com);
return ret;
}
return ret;
}
function WellhopeNewKeyLogin(i_Com,userpin)
{
var ret;
flag=i_Com.Login(1,userpin);
if (!flag)
{
alert("你输入的PIN码不正确,请检查:"+ret);
WellhopeNewKeyEnd(i_Com);
return -2021;
}else ret = 0;
return ret;
}
function GDCAKeyLogin(i_Com,userpin)
{
var ret,errorCode;
ret = i_Com.GDCA_Login(2,userpin);
errorCode = i_Com.GetError();
if(errorCode != 0)
{
alert("登陆失败:"+ret);
//释放资源
ret=GDCAFinalize(i_Com);
}
return errorCode;
}
function GDCALogin(i_Com,keytype,userpin)
{
var ret;
switch(parseInt(keytype))
{
case 2 : ret = GDCAKeyLogin(i_Com,userpin);
break;
case 1 : ret = WellhopeNewKeyLogin(i_Com,userpin);
break;
case 0 : ret = WellhopeOldKeyLogin(i_Com,userpin);
break;
}
return ret;
}
//*******************************登陆一组end****************************************
//******************************登出一组******************************************
function WellhopeOldKeyLogout(i_Com)
{
var ret;
ret = i_Com.OpkiLogout();
if(ret != 0)
{
alert("退出登陆失败:"+ret);
WellhopeOldKeyEnd(i_Com);
return ret;
}
return ret;
}
function WellhopeNewKeyLogout(i_Com)
{
var ret;
ret = i_Com.Logout();
if(!ret)
{
alert("退出登录不成功:"+ret);
WellhopeNewKeyEnd(i_Com);
return ret;
}else ret = 0;
return ret;
}
function GDCAKeyLogout(i_Com)
{
var ret,errorCode;
ret = i_Com.GDCA_Logout();
errorCode = i_Com.GetError();
if(errorCode != 0)
{
alert("退出登录不成功:"+ret);
GDCAKeyEnd(i_Com);
}
return ret;
}
function GDCALogout(i_Com,keytype)
{
var ret;
switch(parseInt(keytype))
{
case 2 : ret = GDCAKeyLogout(i_Com);
break;
case 1 : ret = WellhopeNewKeyLogout(i_Com);
break;
case 0 : ret = WellhopeOldKeyLogout(i_Com);
break;
}
return ret;
}
//******************************登出一组END******************************************
//******************************修改PIN码一组******************************************
function ChangePinWellhopeOldKey(i_Com,oldpin,newpin)
{
var ret;
ret=i_Com.OpkiModifyPin(1,oldpin,newpin);
if(ret!=0)
{
alert("修改pin码失败"+ret);
WellhopeOldKeyLogout(i_Com);
WellhopeOldKeyEnd(i_Com);
return ret;
}
return ret;
}
function ChangePinWellhopeNewKey(i_Com,oldpin,newpin)
{
var ret=0;
ret=i_Com.ChangeLoginPin(LBL_USERCERT,oldpin,newpin);
if(!ret)
{
alert("修改PIN码不成功 ");
WellhopeNewKeyLogout(i_Com);
WellhopeNewKeyEnd(i_Com);
return -1;
}
return ret;
}
function ChangePinGDCAKey(i_Com,oldpin,newpin)
{
var ret;
ret = i_Com.GDCA_ChangePin(2,oldpin,newpin);
if(ret != 0)
{
alert("修改PIN码不成功"+ret);
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
}
return ret;
}
function GDCAChangePin(i_Com,KeyType,oldpin,newpin)
{
var ret;
switch(parseInt(KeyType))
{
case 0 : ret = ChangePinWellhopeOldKey(i_Com,oldpin,newpin);
break;
case 1 : ret = ChangePinWellhopeNewKey(i_Com,oldpin,newpin);
break;
default : ret = ChangePinGDCAKey(i_Com,oldpin,newpin)
}
return ret;
}
//**************************************修改PIN码END********************************************
//*******************************Base64编码************************************************
function WellhopeOldKeyB64Encode(i_Com,inData,outData)
{
var ret;
ret = i_Com.OpkiB64Encode(inData,inData.length);
if(ret!=0)
{
alert("BASE64编码失败:"+ret);
WellhopeOldKeyLogout(i_Com);
WellhopeOldKeyEnd(i_Com);
return ret;
}else
{
outData[0] = i_Com.outData;
i_Com.CleanOutData();
}
return ret;
}
function WellhopeNewKeyB64Encode(i_Com,inData,outData)
{
var ret=0;
outData[0] = i_Com.Base64Encode(inData);
if(outData[0]=="")
{
ret = -2001;
alert("BASE64编码失败:"+ret);
WellhopeNewKeyLogout(i_Com);
WellhopeNewKeyEnd(i_Com);
return ret;
}
return ret;
}
function GDCAKeyB64Encode(i_Com,inData,outData)
{
var ret=0;
outData[0] = i_Com.GDCA_Base64Encode(inData);
ret = i_Com.GetError();
if(ret != 0)
{
alert("BASE64编码失败:"+ret);
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
return ret;
}
return ret;
}
function GDCABase64Encode(i_Com,KeyType,inData,outData)
{
var ret=0;
switch(parseInt(KeyType))
{
case 0 : ret = WellhopeOldKeyB64Encode(i_Com,inData,outData);
break;
case 1 : ret = WellhopeNewKeyB64Encode(i_Com,inData,outData);
break;
default : ret = GDCAKeyB64Encode(i_Com,inData,outData);
}
return ret;
}
//*******************************Base64编码END************************************************
//*******************************Base64解码*************************************************
function WellhopeOldKeyB64Decode(i_Com,inData,outData)
{
var ret=0;
ret = i_Com.OpkiB64Decode(inData);
if(ret != 0)
{
alert("Base64解码失败:"+ret);
WellhopeOldKeyLogout(i_Com);
WellhopeOldKeyEnd(i_Com);
return ret;
}else
{
outData[0] = i_Com.outData;
i_Com.CleanOutData();
}
return ret;
}
function WellhopeNewKeyB64Decode(i_Com,inData,outData)
{
var ret=0;
outData[0] = i_Com.Base64Decode(inData);
if(outData[0] == "")
{
ret = -2002;
alert("解码失败:"+ret);
WellhopeNewKeyLogout(i_Com);
WellhopeNewKeyEnd(i_Com);
return ret;
}
return ret;
}
function GDCAKeyB64Decode(i_Com,inData,outData)
{
var ret=0;
// alert("inData="+inData);
outData[0] = i_Com.GDCA_Base64Decode(inData);
ret = i_Com.GetError();
if(ret != 0)
{
alert("解码失败:"+ret);
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
return ret;
}
return ret;
}
function GDCABase64Decode(i_Com,KeyType,inData,outData)
{
var ret=0;
// alert("inData="+inData);
switch(parseInt(KeyType))
{
case 0 : ret = WellhopeOldKeyB64Decode(i_Com,inData,outData);
break;
case 1 : ret = WellhopeNewKeyB64Decode(i_Com,inData,outData);
break;
default : ret = GDCAKeyB64Decode(i_Com,inData,outData);
}
return ret;
}
//***********************************Base64解码END***********************************
//***********************************生成随机数**************************************
function WellhopeOldKeyGenRandom(i_Com,size,outData)
{
var ret;
ret=i_Com.OpkiGenerateRandom(size);
if(ret!=0)
{
alert("生成随机数失败:"+ret);
WellhopeOldKeyLogout(i_Com);
WellhopeOldKeyEnd(i_Com);
return ret;
}else
{
outData[0] = i_Com.outData;
i_Com.CleanOutData();
}
return ret;
}
function WellhopeNewKeyGenRandom(i_Com,size,outData)
{
var ret=0;
outData[0] = i_Com.GenRandom(size);
if(outData[0] == "")
{
ret = -2003;
alert("生成随机数失败:"+ret);
WellhopeNewKeyLogout(i_Com);
WellhopeNewKeyEnd(i_Com);
return ret;
}
return ret;
}
function GDCAKeyGenRandom(i_Com,size,outData)
{
var ret;
outData[0] = i_Com.GDCA_OpkiGenerateRandom(size);
ret = i_Com.GetError();
if(ret != 0)
{
alert("生成随机数失败:"+ret);
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
return ret;
}
return ret;
}
function GDCAGenRandom(i_Com,KeyType,size,outData)
{
var ret=0;
switch(parseInt(KeyType))
{
case 0 : ret = WellhopeOldKeyGenRandom(i_Com,size,outData)
break;
case 1 : ret = WellhopeNewKeyGenRandom(i_Com,size,outData);
break;
default : ret = GDCAKeyGenRandom(i_Com,size,outData);
}
return ret;
}
//***********************************生成随机数END***********************************
//***********************************哈希算法****************************************
function WellhopeOldKeyHashData(i_Com,HashAlgo,inData,outData)
{
var ret;
ret = i_Com.OpkiHashData(HashAlgo,inData,inData.length);
if(ret != 0)
{
alert("哈希数据失败:"+ret);
WellhopeOldKeyLogout(i_Com);
WellhopeOldKeyEnd(i_Com);
return ret;
}else
{
outData[0] = i_Com.outData;
i_Com.CleanOutData();
}
return ret;
}
function WellhopeNewKeyHashData(i_Com,HashAlgo,inData,outData)
{
var ret=0;
outData[0]=i_Com.HashData(HashAlgo,inData);
if(outData[0] == "")
{
ret = -2004;
alert("哈希数据失败:"+ret);
WellhopeNewKeyLogout(i_Com);
WellhopeNewKeyEnd(i_Com);
return ret;
}
return ret;
}
function GDCAOpkiHash(i_Com,hashAlgo,hashData,outData)
{
var base64plain = "";
var ret,hashedData = "";
base64plain = i_Com.GDCA_Base64Encode(hashData);
ret = i_Com.GetError();
if(ret != 0)
{
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
return ret;
}
hashedData = i_Com.GDCA_OpkiHashData(hashAlgo,base64plain);
ret = i_Com.GetError();
if(ret != 0)
{
alert("哈希数据失败:"+ret);
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
return ret;
}
outData[0] = hashedData;
return ret;
}
function GDCAKeyHashData(i_Com,HashAlgo,inData,outData)
{
var ret;
ret = GDCAOpkiHash(i_Com,HashAlgo,inData,outData);
return ret;
}
function GDCAGenHashData(i_Com,KeyType,HashAlgo,inData,outData)
{
var ret=0;
var Algo;
if(HashAlgo == "GDCA_ALGO_SHA1")
Algo=32772;
else if(HashAlgo == "GDCA_ALGO_MD5")
Algo=32771;
switch(parseInt(KeyType))
{
case 0 : ret = WellhopeOldKeyHashData(i_Com,Algo,inData,outData);
break;
case 1 : ret = WellhopeNewKeyHashData(i_Com,Algo,inData,outData);
break;
default : ret = GDCAKeyHashData(i_Com,Algo,inData,outData);
}
return ret;
}
//***********************************哈希算法END****************************************
//**********************************对称加密********************************************
function WellhopeOldKeySymm(i_Com,isEncryption,i_algo,keyString,inData,outData)
{
var ret;
ret=i_Com.OpkiRWKCryptData(isEncryption,i_algo,keyString,inData,inData.length);
if(ret != 0)
{
alert("对称运算错误:"+ret);
WellhopeOldKeyLogout(i_Com);
WellhopeOldKeyEnd(i_Com);
return ret;
}else
{
outData[0] = i_Com.outData;
i_Com.CleanOutData();
}
return ret;
}
function WellhopeNewKeySymmEncrypt(i_Com,i_algo,keyString,inData,outData)
{
var ret=0;
outData[0] = i_Com.SymmEncrypt(i_algo,keyString,inData);
if(outData[0]=="")
{
ret = -2005;
alert("对称加密不成功:"+ret);
WellhopeNewKeyLogout(i_Com);
WellhopeNewKeyEnd(i_Com);
return ret;
}
return ret;
}
function GDCACreateSymmKeyObj(i_Com,isEncryption,i_algo,keyString)
{
var SymmKeyObj ;
var base64iv="";
var ret;
var Algo = 101;
//long GDCA_CreateSymmKeyObj(long algorithmType,long encOrDec,BSTR key, BSTR iv,long cryptoMode)
//ECB模式 encOrDec = 1 为加密
SymmKeyObj = i_Com.GDCA_CreateSymmKeyObj(Algo,isEncryption,keyString,base64iv,GDCA_MODE_ECB);
ret = i_Com.GetError();
if (ret != 0 || SymmKeyObj < 1)
{
alert("CreateSymmKeyObj Error:"+ret);
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
return ret;
}
return SymmKeyObj;
}
function GDCADestroySymmKeyObj(i_Com,SymmKeyObj)
{
var ret;
ret = i_Com.GDCA_DestroySymmKeyObj(SymmKeyObj);
if (ret != 0)
{
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
alert("DestroySymmKeyObj Error:"+ret);
return ret;
}
return ret;
}
function OpkiSymmCryptData(i_Com,isEncryption,symmAlgoType,symmKey,inData,outData)
{
var base64plain,base64Key;
var CryptedMsg = "";
if (isEncryption == 1)
{
ret = GDCAKeyB64Encode(i_Com,inData,outData);
base64plain = outData[0];
if (ret != 0)
{
alert("对称加密,数据编码错误:"+ret);
return ret;
}
}
else
{
base64plain = inData;
}
ret = GDCAKeyB64Encode(i_Com,symmKey,outData);
base64Key = outData[0];
if (ret != 0)
{
alert("对称密钥编码错误:"+ret);
return ret;
}
CryptedMsg = i_Com.GDCA_OpkiSymmCryptData(isEncryption,symmAlgoType,base64Key,base64plain);
ret = i_Com.GetError();
if (ret != 0)
{
alert("对称运算错误:"+ret);
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
return ret;
}
outData[0] = CryptedMsg;
return ret;
}
function GDCAKeySymmEncrypt(i_Com,i_algo,keyString,inData,outData)
{
var ret1,ret;
var SymmKeyObj = 0;
//加密
ret = OpkiSymmCryptData(i_Com,1,i_algo,keyString,inData,outData);
/*
SymmKeyObj = GDCACreateSymmKeyObj(i_Com,1,i_algo,keyString);
if (SymmKeyObj < 1)
{
return SymmKeyObj;
}
var CryptTxt = i_Com.GDCA_SymmEncrypt(SymmKeyObj,inData);
ret = i_Com.GetError();
outData[0] = CryptTxt;
ret1 = GDCADestroySymmKeyObj(i_Com,SymmKeyObj);
if (ret1 != 0)
{
return ret1;
}
//alert(CryptTxt);
if (ret != 0 || CryptTxt == "")
{
alert("SymmEncrypt Error:"+ret);
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
return ret;
}
*/
return ret;
}
function GDCASymmEncrypt(i_Com,KeyType,keyString,algorithmType,inData,outData)
{
var ret=0;
var Algo;
if(algorithmType == "GDCA_ALGO_3DES")
Algo=26115;
else if(HashAlgo == "GDCA_ALGO_RC4")
Algo=26625;
else if(HashAlgo == "GDCA_ALGO_SSF33")
Algo=9;
else {
alert("算法类型错误");
return -2006;
}
switch(parseInt(KeyType))
{
case 0 : ret = WellhopeOldKeySymm(i_Com,1,1,keyString,inData,outData);
break;
case 1 : ret = WellhopeNewKeySymmEncrypt(i_Com,Algo,keyString,inData,outData)
break;
default : ret = GDCAKeySymmEncrypt(i_Com,Algo,keyString,inData,outData);
}
return ret;
}
//**********************************对称加密END********************************************
//**********************************对称解密***********************************************
function WellhopeNewKeySymmDecrypt(i_Com,i_algo,keyString,inData,outData)
{
var ret=0;
outData[0] = i_Com.SymmDecrypt(i_algo,keyString,inData);
if(outData[0]=="")
{
ret = -2005;
alert("对称解密不成功:"+ret);
WellhopeNewKeyLogout(i_Com);
WellhopeNewKeyEnd(i_Com);
return ret;
}
return ret;
}
function GDCAKeySymmDecrypt(i_Com,i_algo,keyString,inData,outData)
{
var ret1,ret;
var SymmKeyObj = 0;
//0:解密
ret = OpkiSymmCryptData(i_Com,0,i_algo,keyString,inData,outData);
/*
SymmKeyObj = GDCACreateSymmKeyObj(i_Com,0,i_algo,keyString);
if (SymmKeyObj < 1)
{
return SymmKeyObj;
}
var CryptTxt = i_Com.GDCA_SymmDecrypt(SymmKeyObj,inData);
ret = i_Com.GetError();
outData[0] = CryptTxt;
ret1 = GDCADestroySymmKeyObj(i_Com,SymmKeyObj);
if (ret1 != 0)
{
return ret1;
}
//alert(CryptTxt);
if (ret != 0 || CryptTxt == "")
{
alert("SymmEncrypt Error:"+ret);
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
return ret;
}
*/
return ret;
}
function GDCASymmDecrypt(i_Com,KeyType,keyString,algorithmType,inData,outData)
{
var ret=0;
var Algo;
if(algorithmType == "GDCA_ALGO_3DES")
Algo=26115;
else if(HashAlgo == "GDCA_ALGO_RC4")
Algo=26625;
else if(HashAlgo == "GDCA_ALGO_SSF33")
Algo=9;
else {
alert("算法类型错误");
return -2007;
}
switch(parseInt(KeyType))
{
case 0 : ret = WellhopeOldKeySymm(i_Com,0,1,keyString,inData,outData);
break;
case 1 : ret = WellhopeNewKeySymmDecrypt(i_Com,Algo,keyString,inData,outData)
break;
default : ret = GDCAKeySymmDecrypt(i_Com,Algo,keyString,inData,outData)
}
return ret;
}
//**********************************对称解密END********************************************
//*********************************数字信封加密******************************************
function WellhopeOldKeySealEnvelope(i_Com,EncrytCert,i_algo,inData,outData)
{
var ret;
ret=i_Com.OpkiSealEnvelope(EncrytCert,1,inData,inData.length);
if(ret!=0)
{
alert("数字信封加密出错:"+ret);
WellhopeOldKeyLogout(i_Com);
WellhopeOldKeyEnd(i_Com);
return ret;
}else
{
outData[0] = i_Com.outData;
i_Com.CleanOutData();
}
return ret;
}
function WellhopeNewKeySealEnvelope(i_Com,EncrytCert,i_algo,inData,outData)
{
var ret=0;
outData[0] = i_Com.SealEnvelope(EncrytCert,i_algo,inData);
if(outData[0] == "")
{
ret = -2009;
alert("数字信封加密出错:"+ret);
WellhopeNewKeyLogout(i_Com);
WellhopeNewKeyEnd(i_Com);
return ret;
}
return ret;
}
function GDCAKeySealEnvelope(i_Com,EncrytCert,i_algo,inData,outData)
{
var ret;
var Base64Data = new Array;
ret = GDCAKeyB64Encode(i_Com,inData,Base64Data);
if(ret != 0)
{
alert("编码出错:"+ret);
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
return ret;
}
outData[0] = i_Com.GDCA_OpkiSealEnvelope(EncrytCert,Base64Data[0],i_algo);
ret = i_Com.GetError();
if(ret != 0)
{
alert("加密出错:"+ret);
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
return ret;
}
return ret;
}
function GDCASealEnvelope(i_Com,KeyType,EncrytCert,EncryptAlgo,inData,outData)
{
var ret=0,Algo,EncrytData;
if(EncryptAlgo == "GDCA_ALGO_3DES")
Algo=26115;
else if(EncryptAlgo == "GDCA_ALGO_RC4")
Algo=26625;
else if(EncryptAlgo == "GDCA_ALGO_SSF33")
Algo=9;
else
{
alert("算法类型错误");
return -2008;
}
switch(parseInt(KeyType))
{
case 0 : ret = WellhopeOldKeySealEnvelope(i_Com,EncrytCert,Algo,inData,outData);
break;
case 1 : ret = WellhopeNewKeySealEnvelope(i_Com,EncrytCert,Algo,inData,outData);
break;
default : ret = GDCAKeySealEnvelope(i_Com,EncrytCert,Algo,inData,outData);
}
return ret;
}
//*********************************数字信封加解密END******************************************
//*********************************数字信封解密******************************************
function WellhopeOldKeyOpenEnvelope(i_Com,UserPin,inData,outData)
{
var ret;
if(UserPin == "" || UserPin.length < 0)
{
alert("用户PIN错误,不能为空");
ret = -2011;
WellhopeOldKeyLogout(i_Com);
WellhopeOldKeyEnd(i_Com);
return ret;
}
//解密私钥的标签、解密私钥的保护口令、编码过的信封数据
ret=i_Com.OpkiOpenEnvelope(LBL_USERCERT,UserPin,inData);
if(ret!=0)
{
alert("数字信封解密出错:"+ret);
WellhopeOldKeyLogout(i_Com);
WellhopeOldKeyEnd(i_Com);
return ret;
}else
{
outData[0] = i_Com.outData;
i_Com.CleanOutData();
}
return ret;
}
function WellhopeNewKeyOpenEnvelope(i_Com,inData,outData)
{
var ret=0;
outData[0] = i_Com.OpenEnvelope(inData);
if(outData[0] == "")
{
ret = -2010;
alert("数字信封解密出错:"+ret);
WellhopeNewKeyLogout(i_Com);
WellhopeNewKeyEnd(i_Com);
return ret;
}
return ret;
}
function GDCAKeyOpenEnvelope(i_Com,inData,outData)
{
var ret=0;
var middleText1="";
middleText1 = i_Com.GDCA_OpkiOpenEnvelope(LBL_USERCERT_ENC,GDCA_LBL_ENCKEY,inData);
if(outData[0] == "")
{
alert("数字信封解密出错:"+ret);
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
return ret;
}
ret = GDCAKeyB64Decode(i_Com,middleText1,outData);
if(ret != 0)
{
alert("解码明文错误:"+ret);
return ret;
}
return ret;
}
function GDCAOpenEnvelope(i_Com,KeyType,UserPin,inData,outData)
{
var ret=0;
switch(parseInt(KeyType))
{
case 0 : ret = WellhopeOldKeyOpenEnvelope(i_Com,UserPin,inData,outData);
break;
case 1 : ret = WellhopeNewKeyOpenEnvelope(i_Com,inData,outData);
break;
default : ret = GDCAKeyOpenEnvelope(i_Com,inData,outData);
}
return ret;
}
//*********************************数字信封解密END******************************************
//*********************************数字签名*************************************************
function WellhopeOldKeySignData(i_Com,UserPin,inData,outData)
{
var ret;
if(UserPin == "" || UserPin.length < 0)
{
alert("用户PIN错误,不能为空");
ret = -2012;
WellhopeOldKeyLogout(i_Com);
WellhopeOldKeyEnd(i_Com);
return ret;
}
ret=i_Com.OpkiSignData(LBL_USERCERT,UserPin,inData,inData.length);
if(ret!=0)
{
alert("签名失败,请检查!"+ret);
WellhopeOldKeyLogout(i_Com);
WellhopeOldKeyEnd(i_Com);
return ret;
}else
{
outData[0] = i_Com.outData;
i_Com.CleanOutData();
}
return ret;
}
function WellhopeNewKeySignData(i_Com,hashAlgo,inData,outData)
{
var ret=0;
outData[0] = i_Com.SignData(inData,hashAlgo,0);
if(outData[0] == "")
{
WellhopeNewKeyLogout(i_Com);
WellhopeNewKeyEnd(i_Com);
ret=-2013;
alert("签名失败,请检查!"+ret);
return ret;
}
return ret;
}
function GDCAKeySignData(i_Com,ClientSignCert,Algo,inData,outData)
{
var ret;
var Base64Data = new Array;
ret = GDCAKeyB64Encode(i_Com,inData,Base64Data);
if(ret != 0)
{
alert("编码出错:"+ret);
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
return ret;
}
outData[0] = i_Com.GDCA_OpkiSignData(LBL_USERCERT_SIG,GDCA_LBL_SIGNKEY,ClientSignCert,Base64Data[0],Algo,0);
ret = i_Com.GetError();
if(ret != 0)
{
alert("数字签名出错:"+ret);
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
return ret;
}
return ret;
}
function GDCASignData(i_Com,KeyType,ClientSignCert,UserPin,inData,hashAlgo,outData)
{
var ret=0,Algo,ClientSignData;
var Base64OutData = new Array;
if(hashAlgo == "GDCA_ALGO_SHA1")
Algo=32772;
else if(hashAlgo == "GDCA_ALGO_MD5")
Algo=32771;
switch(parseInt(KeyType))
{
case 0 : ret = WellhopeOldKeySignData(i_Com,UserPin,inData,outData);
break;
case 1 : ret = WellhopeNewKeySignData(i_Com,Algo,inData,outData);
break;
default : ret = GDCAKeySignData(i_Com,ClientSignCert,Algo,inData,outData);
}
return ret;
}
//*********************************数字签名END*************************************************
//*********************************验证签名****************************************************
function WellhopeOldKeyVerifySignData(i_Com,ClientSignCert,originalData,signedData)
{
var ret=0;
ret = i_Com.OpkiVerifyData(ClientSignCert,originalData,0,signedData);
if(ret!=0)
{
alert("验证签名失败,请检查:"+ret);
WellhopeOldKeyLogout(i_Com);
WellhopeOldKeyEnd(i_Com);
return ret;
}
return ret;
}
function WellhopeNewKeyVerifySignData(i_Com,ClientSignCert,Algo,originalData,signedData)
{
var ret=0;
ret = i_Com.VerifySign(ClientSignCert,originalData,signedData,Algo,0);
if(!ret)
{
ret = -2014;
alert("客户端验证签名失败,请检查!:"+ret);
WellhopeNewKeyLogout(i_Com);
WellhopeNewKeyEnd(i_Com);
return ret;
}else ret =0;
return ret;
}
function GDCAKeyVerifySignData(i_Com,ClientSignCert,Algo,originalData,signedData)
{
var ret;
var Base64Data = new Array;
alert(originalData);
alert(signedData);
ret = GDCAKeyB64Encode(i_Com,originalData,Base64Data);
if(ret != 0)
{
alert("编码出错:"+ret);
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
return ret;
}
ret = i_Com.GDCA_OpkiVerifyData(ClientSignCert,Base64Data[0],signedData,Algo,0);
//ret = i_Com.GDCA_OpkiVerifyData(ClientSignCert,originalData,signedData,Algo,0);
errorCode = i_Com.GetError();
if(errorCode != 0)
{
alert("客户端验证签名失败,请检查:"+errorCode);
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
return ret;
}
else ret = 0;
return ret;
}
function GDCAVerifySignData(i_Com,KeyType,ClientSignCert,originalData,signedData,hashAlgo)
{
var ret,Algo,inData;
var outData = new Array;
if(hashAlgo == "GDCA_ALGO_SHA1")
Algo=32772;
else if(hashAlgo == "GDCA_ALGO_MD5")
Algo=32771;
else Algo=0;
switch(parseInt(KeyType))
{
case 0 : ret = WellhopeOldKeyVerifySignData(i_Com,ClientSignCert,originalData,signedData);
break;
case 1 : ret = WellhopeNewKeyVerifySignData(i_Com,ClientSignCert,Algo,originalData,signedData);
//case 1 : ret =GDCAKeyVerifySignData(GDCACom,ClientSignCert,Algo,originalData,signedData);
break;
default : ret = GDCAKeyVerifySignData(i_Com,ClientSignCert,Algo,originalData,signedData);
break;
}
return ret;
}
//*********************************验证签名END*****************************************************
//*********************************读取证书********************************************************
function WhOldKeyReadCert(i_Com,CertType,CertData)
{
var ret=0;
if(CertType != 3)
{
ret=i_Com.OpkiReadLabel(LBL_USERCERT,1);
}else if(CertType==3)
{
ret=i_Com.OpkiReadLabel(LBL_ROOTCACERT,1);
}
if(ret!=0)
{
alert("取证书失败,请检查:"+ret);
WellhopeOldKeyLogout(i_Com);
WellhopeOldKeyEnd(i_Com);
return ret;
}else
{
CertData[0] = i_Com.outData;
var tDataLen=i_Com.outDataLen;
i_Com.CleanOutData();
}
return ret;
}
function WhNewKeyReadCert(i_Com,CertType,CertData)
{
var ret;
CertData[0] = i_Com.GetCert(CertType);
if(CertData[0] == "")
{
ret = -2015;
var curStatus=i_Com.CurStatus;
alert("读取证书错误:"+curStatus);
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
return ret;
}else
ret = 0;
return ret;
}
function GDCAReadLabel(i_Com,labelName,labelType,outData)
{
var ret;
var ReadOutData;
// alert("labelName="+labelName +" labelType="+labelType);
ReadOutData = i_Com.GDCA_ReadLabel(labelName,labelType);
ret = i_Com.GetError();
if(ret != 0)
{
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
return ret;
}
// ret = GDCABase64Decode(i_Com,KeyType,out_data[0],outData);
// alert("GDCABase64Decode ret ="+ret);
outData[0] = ReadOutData;
return ret;
}
function GDCAKeyGetCert(i_Com,CertType,CertData)
{
var ret;
// alert("CertType="+CertType);
switch(parseInt(CertType))
{
case 1 : // alert("读加密证书");
ret = GDCAReadLabel(i_Com,LBL_USERCERT_ENC,GDCA_LBL_ENCCERT,CertData);
if(ret !=0)
{
alert("读加密证书出错:"+ret);
return ret;
}
break;
case 2 : // alert("读签名证书");
ret = GDCAReadLabel(i_Com,LBL_USERCERT_SIG,GDCA_LBL_SIGNCERT,CertData);
if(ret !=0)
{
alert("读签名证书出错:"+ret);
return ret;
}
break;
case 3 : // alert("读CA证书")
ret = GDCAReadLabel(i_Com,LBL_CACERT,GDCA_LBL_CACERT,CertData);
if(ret !=0)
{
alert("读CA证书出错:"+ret);
return ret;
}
// alert("LBL_CACERT="+CertData[0]);
break;
default : alert("无此证书类型");
ret = -2016;
return ret;
}
// alert("CertData1="+CertData[0]);
return ret;
}
function GDCAReadCert(i_Com,KeyType,CertType,CertData)
{
var ret;
// alert("KeyType="+KeyType);
//alert("CertType="+CertType);
switch(parseInt(KeyType))
{
case 0 : ret = WhOldKeyReadCert(i_Com,CertType,CertData);
break;
case 1 : if(CertType!=3 && CertType!=4)
{
ret = WhNewKeyReadCert(i_Com,CertType,CertData);
}else ret = 0;
break;
default : ret = GDCAKeyGetCert(i_Com,CertType,CertData);
}
// alert("CertData2="+CertData[0]);
return ret;
}
//*********************************读取证书END********************************************************
//*********************************读取证书信息*******************************************************
function WhOldKeyGetCertInfo(i_Com,CertData,outData)
{
var ret,CertInfo="";
ret=i_Com.OpkiGetCertInfo(CertData);
if(ret!=0)
{
alert("获取证书信息错误!!!");
WellhopeOldKeyLogout(i_Com);
WellhopeOldKeyEnd(i_Com);
return ret;
}
//测试OpkiGetCertInfo 获取证书信息
var serialnum=""+i_Com.SserialNumber+"";
var issuer=""+i_Com.SIdnc+""+i_Com.SIdns+""+i_Com.SIdnl+""+i_Com.SIdno+""+i_Com.SIdnou+""+i_Com.SIdncn1+""+i_Com.SIdncn2+""+i_Com.SIdncn3+"";
var validity=""+i_Com.SbeginTime+""+i_Com.SendTime+"";
var subject="CN"+i_Com.SSdns+""+i_Com.SSdnl+""+i_Com.SSdno+""+i_Com.SSdnou+""+i_Com.SIdncn1+""+i_Com.SIdncn2+""+i_Com.SIdncn3+"";
CertInfo = "3"+serialnum+"SHA1RSA"+issuer+validity+subject+"";
outData[0] = CertInfo;
return ret;
}
function WhNewKeyGetCertInfo(i_Com,CertData,outData)
{
var ret;
outData[0] = i_Com.GetCertInfo(CertData);
if(outData[0] == "")
{
ret = -2018;
alert("读取证书信息错误:"+ret);
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
return ret;
}else
ret = 0;
return ret;
}
function GDCAKeyGetCertInfo(i_Com,CertData,outData)
{
var errorCode;
var InfoValue;
outData[0] = i_Com.GDCA_GetCertificateInfo(CertData,GDCA_GET_CERT_INFO);
errorCode = i_Com.GetError();
if(errorCode != 0)
{
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
return errorCode;
}
return errorCode;
}
function GDCAGetCertInfo(i_Com,KeyType,CertData,outData)
{
var ret;
// alert("KeyType="+KeyType);
//alert("CertType="+CertType);
switch(parseInt(KeyType))
{
case 0 : ret = WhOldKeyGetCertInfo(i_Com,CertData,outData);
break;
case 1 : ret = WhNewKeyGetCertInfo(i_Com,CertData,outData);
break;
default : ret = GDCAKeyGetCertInfo(i_Com,CertData,outData);
}
// alert("CertData2="+CertData[0]);
return ret;
}
//*********************************读取证书信息END*******************************************************
//*********************************验证证书**************************************************************
function WhOldKeyCheckCert(i_Com,inCertData,trustCertData,certsChainData,crlData)
{
var ret;
//描述:验证证书的有效性。
// long CPkiComCtrl::OpkiCheckCert(
// LPCTSTR inCertData, //编码过的待验证的证书
// LPCTSTR trustCertData, //编码过的用来验证的信任证书
// LPCTSTR certsChainData, //编码过的验证的证书路径
// LPCTSTR crlData //编码过的用来验证的黑名单
// )
ret = i_Com.OpkiCheckCert(inCertData,trustCertData,certsChainData,crlData);
if(ret!=0)
{
alert("客户端对服务端证书不信任,请检查:"+ret);
WellhopeOldKeyLogout(i_Com);
WellhopeOldKeyEnd(i_Com);
return ret;
}
return ret;
}
function WhNewKeyCheckCert(i_Com,inCertData)
{
var flag=false,ret;
flag=i_Com.CheckCert(inCertData);
if(!flag)
{
ret = -2017;
// alert("OCSP服务启动");
alert("客户端对服务端证书不信任,请检查:"+ret);
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
return flag;
}else ret = 0;
return ret;
}
function GDCAKeyCheckCert(i_Com,inCertData,caCert,crlData)
{
var ret;
// alert("GDCAKeyCheckCert Start");
ret = i_Com.GDCA_VerifyCert(inCertData,caCert);
if(ret != 0)
{
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
alert("用户证书非法:"+ret);
return ret;
}
// alert("GDCA_VerifyCert end");
ret = i_Com.GDCA_VerifyCrl(crlData,caCert);
if(ret != 0)
{
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
alert("撤销列表非法:"+ret);
return ret;
}
ret = i_Com.GDCA_CheckCertByCrl(inCertData,crlData);
if(ret != 0)
{
GDCAKeyLogout(i_Com);
GDCAKeyEnd(i_Com);
alert("该证书已被撤销:"+ret);
return ret;
}
return ret;
}
function GDCACheckCert(i_Com,KeyType,inCertData,UserRootCert,crlData)
{
var ret;
switch(parseInt(KeyType))
{
case 0 : ret = WhOldKeyCheckCert(i_Com,inCertData,UserRootCert,"","");
break;
case 1 : //ret = WhNewKeyCheckCert(i_Com,inCertData);
ret = 0;
break;
default : //ret = GDCAKeyCheckCert(i_Com,inCertData,UserRootCert,crlData);
ret = 0;
}
return ret;
}
//*********************************验证证书END**************************************************************
//*************************************读取硬件介质ID*******************************************************
function WhOldKeyGetDisaid(i_Com,outData)
{
var ret;
ret=i_Com.OpkiReadLabel0(LBL_DISAID,3);
if(ret!=0)
{
alert("读取DISAID 出错:"+ret);
WellhopeOldKeyLogout(i_Com);
WellhopeOldKeyEnd(i_Com);
return ret;
}else
{
outData[0] = i_Com.outData;
i_Com.CleanOutData();
}
return ret;
}
/*
function WhNewKeyGetDisaid(i_Com,outData)
{
var ret;
outData[0] = i_Com.GetKeyID();
if(outData[0]=="")
{
ret = i_Com.CurStatus;
alert("读取证书信息出错:"+ret);
return ret;
}
return ret;
}
*/
function WhNewKeyGetDisaid(i_Com,outData,ClientCert)
{
var ret;
var ClientCertInfo = i_Com.GetCertInfo(ClientCert);
if(ClientCertInfo == "")
{
ret = i_Com.CurStatus;
alert("读取证书信息出错:"+ret);
return ret;
}else ret =0;
var indx1 = ClientCertInfo.indexOf("");
var indx2 = ClientCertInfo.indexOf("");
outData[0] = ClientCertInfo.substring(indx1+11,indx2);
return ret;
}
function GDCAKeyGetDisaid(i_Com,outData)
{
var ret;
var KeyID = new Array;
ret = GDCAReadLabel(i_Com,LBL_DISAID,GDCA_LBL_EXDATA,KeyID);
if(ret != 0)
{
alert("读取KeyID失败:"+ret);
return ret;
}
ret = GDCAKeyB64Decode(i_Com,KeyID[0],outData);
if(ret != 0)
{
alert("解码KeyID失败:"+ret);
return ret;
}
return ret;
}
function GDCAGetKeyID(i_Com,KeyType,KeyID,CertData)
{
var ret=0;
switch(parseInt(KeyType))
{
case 0 : ret = WhOldKeyGetDisaid(i_Com,KeyID);
break;
case 1 : ret = WhNewKeyGetDisaid(i_Com,KeyID,CertData);
break;
default : ret = GDCAKeyGetDisaid(i_Com,KeyID);
}
return ret;
}
//*************************************读取硬件介质ID END*******************************************************
//************************************读写文件******************************************************************
function WhOldKeyReadFile(i_Com,filename1,outData)
{
var ret;
// alert("ReadFile Start");
ret=i_Com.ReadFile(filename1);
// alert("ReadFile end");
if(ret!=0)
{
alert("读取文件出错:"+ret);
// WellhopeOldKeyLogout(i_Com);
// WellhopeOldKeyEnd(i_Com);
return ret;
}else
{
outData[0] = i_Com.outData;
i_Com.CleanOutData();
}
return ret;
}
function WhNewKeyReadFile(i_Com,filename1,outData)
{
var ret;
outData[0] = i_Com.ReadFromFile(filename1);
if(outData[0] == "")
{
alert("文件读取失败!");
return -2020;
}else ret = 0;
return ret;
}
function GDCAKeyReadFile(i_Com,filename1,outData)
{
var ret=0;
outData[0] = i_Com.GDCA_ReadFile(0,filename1,1);
ret = i_Com.GetError();
if(ret != 0)
{
alert("文件读取失败:"+ret);
return ret;
}
return ret;
}
function GDCAReadFile(i_Com,KeyType,filename1,outData)
{
var ret = 0;
switch(parseInt(KeyType))
{
case 0 : ret = WhOldKeyReadFile(i_Com,filename1,outData);
break;
case 1 : ret = WhNewKeyReadFile(i_Com,filename1,outData);
break;
default : ret = GDCAKeyReadFile(i_Com,filename1,outData);
}
return ret;
}
function WhOldKeyWriteFile(i_Com,filename1,inData)
{
var ret;
ret = i_Com.WriteFile(filename1,inData,inData.length);
if(ret != 0)
{
alert("写文件失败:"+ret);
return ret;
}
return ret;
}
function WhNewKeyWriteFile(i_Com,filename1,inData)
{
var ret;
flag=i_Com.WriteToFile(filename1,inData);
if(flag)
{
alert("保存文件成功!");
}
else
{
alert("文件保存出现异常错误!错误代码");
}
return flag;
}
function GDCAKeyWriteFile(i_Com,filename1,inData)
{
var ret;
ret = i_Com.GDCA_WriteFile(filename1,0,inData);
ret = i_Com.GetError();
if(ret != 0)
{
alert("保存文件失败:"+ret);
return ret;
}
return ret;
}
function GDCAWriteFile(i_Com,KeyType,filename1,inData)
{
var ret;
switch(parseInt(KeyType))
{
case 0 : ret = WhOldKeyWriteFile(i_Com,filename1,inData);
break;
case 1 : ret = WhNewKeyWriteFile(i_Com,filename1,inData);
break;
default : ret = GDCAKeyWriteFile(i_Com,filename1,inData);
}
return ret;
}
//************************************读写文件END*****************************************************************