var $_$WebSocketConnectState = false;
/**
* 成功回调函数
*/
function ESeaL_OKRtnFunc(retVal, cb) {
if (typeof cb == "function") {
var retObj = {
retVal: retVal
};
cb(retObj);
}
return retVal;
}
/**
* 失败回调函数
*/
function ESeaL_ErrorRtnFunc(retVal, cb) {
if (typeof cb == "function") {
var retObj = {
retVal: retVal
};
cb(retObj);
}
return retVal;
}
/**
* 获取印章图片
*/
function ESeal_GetStampPic(cb) {
if ($_$WebSign_CurrentObj != null && $_$WebSign_CurrentObj.GetStampPicForAllBrowser != undefined) {
return $_$WebSign_CurrentObj.GetStampPicForAllBrowser(cb);
} else {
return ESeaL_ErrorRtnFunc($_$METHOD_NOT_EXIST, cb);
}
}
/**
* 获取印章图片宽高
*/
function ESeal_GetStampPicWH(cb) {
if ($_$WebSign_CurrentObj != null && $_$WebSign_CurrentObj.GetPicWidthPx != undefined) {
return $_$WebSign_CurrentObj.GetPicWidthPx(cb);
} else {
return ESeaL_ErrorRtnFunc($_$METHOD_NOT_EXIST, cb);
}
}
/**
* 获取签章算法
*/
function ESeal_GetSignMethod(cb) {
if ($_$WebSign_CurrentObj != null && $_$WebSign_CurrentObj.GetSignMethod != undefined) {
return $_$WebSign_CurrentObj.GetSignMethod(cb);
} else {
return ESeaL_ErrorRtnFunc($_$METHOD_NOT_EXIST, cb);
}
}
/**
* 设置签章类型和url(type可为空,url)
*/
function ESeaL_SetSignTypeAndURL(iType, webserviceUrl, cb) {
if(webserviceUrl == "" || webserviceUrl == null) {
return ESeaL_ErrorRtnFunc("", cb);
}
if ($_$WebSign_CurrentObj != null && $_$WebSign_CurrentObj.SetWebServiceURL != undefined) {
return $_$WebSign_CurrentObj.SetWebServiceURL(webserviceUrl, cb, null);
} else {
return ESeaL_ErrorRtnFunc($_$METHOD_NOT_EXIST, cb);
}
}
/**
* 签章
* @param orgData:原文
*/
function ESeaL_Sign(orgData, cb) {
if ($_$WebSign_CurrentObj != null && $_$WebSign_CurrentObj.SignForAllBrowser != undefined) {
return $_$WebSign_CurrentObj.SignForAllBrowser(orgData, cb);
} else {
return ESeaL_ErrorRtnFunc($_$METHOD_NOT_EXIST, cb);
}
}
/**
* 批量签章
* @param orgData:原文
*/
function ESeaL_BatchSign(orgData, cb) {
if ($_$WebSign_CurrentObj != null && $_$WebSign_CurrentObj.BatchSignForAllBrowser != undefined) {
return $_$WebSign_CurrentObj.BatchSignForAllBrowser(orgData, cb);
} else {
return ESeaL_ErrorRtnFunc($_$METHOD_NOT_EXIST, cb);
}
}
/**
* 验章
* @param org_data 原文
* @param signdata 签章值
*/
function ESeal_Verify(org_data, signdata, cb) {
if ($_$WebSign_CurrentObj != null && $_$WebSign_CurrentObj.Verify != undefined) {
return $_$WebSign_CurrentObj.Verify(org_data, signdata, cb);
} else {
return ESeaL_ErrorRtnFunc($_$METHOD_NOT_EXIST, cb);
}
}
/**
* 验章
*/
function ESeal_GetStampPicAfterVerified(cb) {
if ($_$WebSign_CurrentObj != null && $_$WebSign_CurrentObj.GetStampPicAfterVerified != undefined) {
return $_$WebSign_CurrentObj.GetStampPicAfterVerified(cb);
} else {
return ESeaL_ErrorRtnFunc($_$METHOD_NOT_EXIST, cb);
}
}
/**
* 验章
*/
function ESeal_GetStampPicAfterVerifiedEx(sVerify, sSignature, cb) {
if ($_$WebSign_CurrentObj != null && $_$WebSign_CurrentObj.GetStampPicAfterVerifiedEx != undefined) {
return $_$WebSign_CurrentObj.GetStampPicAfterVerifiedEx(sVerify, sSignature, cb);
} else {
return ESeaL_ErrorRtnFunc($_$METHOD_NOT_EXIST, cb);
}
}
/**
* 撤章
* @param signdata:签章值
*/
function ESeaL_CheckRemoveRight(signdata, cb) {
if ($_$WebSign_CurrentObj != null && $_$WebSign_CurrentObj.CheckRemoveRight != undefined) {
return $_$WebSign_CurrentObj.CheckRemoveRight(signdata, cb);
} else {
return ESeaL_ErrorRtnFunc($_$METHOD_NOT_EXIST, cb);
}
}
/**
* 显示证书信息
* @param signdata:原文
*/
function Eseal_ShowUserCerInfo(signdata, cb) {
if ($_$WebSign_CurrentObj != null && $_$WebSign_CurrentObj.ShowSignerCertInfoEx != undefined) {
return $_$WebSign_CurrentObj.ShowSignerCertInfoEx(signdata, cb);
} else {
return ESeaL_ErrorRtnFunc($_$METHOD_NOT_EXIST, cb);
}
}
/**
* 显示签章时间
* @param signdata:签章值
*/
function Eseal_ShowSignTime(signdata, cb) {
if ($_$WebSign_CurrentObj != null && $_$WebSign_CurrentObj.ShowSignTimeEx != undefined) {
return $_$WebSign_CurrentObj.ShowSignTimeEx(signdata, cb);
} else {
return ESeaL_ErrorRtnFunc($_$METHOD_NOT_EXIST, cb);
}
}
/**
* 撤销签章
* @param signdata:签章值
*/
function ESeaL_RemoveSeal(signdata, cb) {
if ($_$WebSign_CurrentObj != null && $_$WebSign_CurrentObj.CheckRemoveRight != undefined) {
return $_$WebSign_CurrentObj.CheckRemoveRight(signdata, cb);
} else {
return ESeaL_ErrorRtnFunc($_$METHOD_NOT_EXIST, cb);
}
}
/**
* 关于
*/
function ESeal_GetVersion(cb) {
if ($_$WebSign_CurrentObj != null && $_$WebSign_CurrentObj.GetVersion != undefined) {
return $_$WebSign_CurrentObj.GetVersion(cb);
} else {
return ESeaL_ErrorRtnFunc($_$METHOD_NOT_EXIST, cb);
}
}
/**
* 获取最近一次错误信息
*/
function ESeal_GetLastErrJS(cb) {
if ($_$WebSign_CurrentObj != null && $_$WebSign_CurrentObj.GetLastErr != undefined) {
return $_$WebSign_CurrentObj.GetLastErr(cb);
} else {
return ESeaL_ErrorRtnFunc($_$METHOD_NOT_EXIST, cb);
}
}
function $checkBrowserISIE() {
return !!window.ActiveXObject || "ActiveXObject" in window ? true : false;
}
/**
* IE11下注册监听函数
* @param strObjName 控件对象名称
* @param eventName 事件名称
* @param callbackFunName 回调方法名称
*/
function $AttachForIE11Event(strObjName, eventName, callbackFunName) {
var handler = document.createElement("script");
handler.setAttribute("for", strObjName);
handler.setAttribute("event", eventName);
handler.appendChild(document.createTextNode(callbackFunName));
document.body.appendChild(handler);
}
/**
* 加载一个控件
* @param CLSID 控件的CLSID
* @param ctlName 控件对象名称
* @param testFuncName 测试方法名称
* @param addEvent 是否增加回调函数
* @param OnSignCallbackFun 签章回调函数
* @param OnSignCallbackFunString 签章回调函数字符串
* @param OnVerifyCallbackFun 验章回调函数
* @param OnVerifyCallbackFunString 验章回调函数字符串
* @param OnSignRemovedCallbackFun 撤章回调函数
* @param OnSignRemovedCallbackFunString 撤章回调函数字符串
*/
function $LoadControl(
CLSID,
ctlName,
testFuncName,
addEvent,
OnSignCallbackFun,
OnSignCallbackFunString,
OnVerifyCallbackFun,
OnVerifyCallbackFunString,
OnSignRemovedCallbackFun,
OnSignRemovedCallbackFunString) {
var pluginDiv = document.getElementById("pluginDiv" + ctlName);
if (pluginDiv) {
//return true;
document.body.removeChild(pluginDiv);
pluginDiv.innerHTML = "";
pluginDiv = null;
}
pluginDiv = document.createElement("div");
pluginDiv.id = "pluginDiv" + ctlName;
document.body.appendChild(pluginDiv);
try {
if ($checkBrowserISIE()) {
// IE
if (window.navigator.platform == "Win32")
//codeBase="BJCAWebSign.CAB#version=4,1,0,0"
pluginDiv.innerHTML =
'';
else
pluginDiv.innerHTML =
'';
if (addEvent) {
var clt = eval(ctlName);
if (clt.attachEvent) {
clt.attachEvent("OnSign", OnSignCallbackFun);
clt.attachEvent("OnVerify", OnVerifyCallbackFun);
clt.attachEvent("OnSignRemoved", OnSignRemovedCallbackFun);
} else {
// IE11 not support attachEvent, and addEventListener do not work well, so addEvent ourself
$AttachForIE11Event(ctlName, "OnSign", OnSignCallbackFunString);
$AttachForIE11Event(ctlName, "OnVerify", OnVerifyCallbackFunString);
$AttachForIE11Event(ctlName, "OnSignRemoved", OnSignRemovedCallbackFunString);
//clt.addEventListener("OnUsbKeyChange", $OnUsbKeyChange, false);
}
}
} else {
//luoxing 不适用npapi调用
return false;
}
if (testFuncName != null && testFuncName != "") {
if (eval(ctlName + "." + testFuncName) == undefined) {
document.body.removeChild(pluginDiv);
pluginDiv.innerHTML = "";
pluginDiv = null;
return false;
}
}
return true;
} catch (e) {
document.body.removeChild(pluginDiv);
pluginDiv.innerHTML = "";
pluginDiv = null;
return false;
}
}
/**
* 创建网页签章控件对象,定义控件对象中的各个方法
* @param objectIDString 提示框显示的信息内容
* @param OnSignCallbackFun 签章回调函数
* @param OnSignCallbackFunString 签章回调函数字符串
* @param OnVerifyCallbackFun 验章回调函数
* @param OnVerifyCallbackFunString 验章回调函数字符串
* @param OnSignRemovedCallbackFun 撤章回调函数
* @param OnSignRemovedCallbackFunString 撤章回调函数字符串
*/
function CreateAppObject_WebSign(
objectIDString,
OnSignCallbackFun,
OnSignCallbackFunString,
OnVerifyCallbackFun,
OnVerifyCallbackFunString,
OnSignRemovedCallbackFun,
OnSignRemovedCallbackFunString) {
var bOK = $LoadControl(
"820390E5-1C07-483D-AEED-6A0EDF640AA2",
objectIDString,
null,
false,
OnSignCallbackFun,
OnSignCallbackFunString,
OnVerifyCallbackFun,
OnVerifyCallbackFunString,
OnSignRemovedCallbackFun,
OnSignRemovedCallbackFunString);
if (!bOK) {
return null;
}
console.log("CreateAppObject_WebSign ok");
$_$WebSocketConnectState = true;
var o = new Object();
var clt = eval(objectIDString);
o.Sign = function (plainstring, cb) {
var ret = clt.Sign(plainstring);
return ESeaL_OKRtnFunc(ret, cb);
};
o.Verify = function (plainstring, signDataString, cb) {
var ret = clt.Verify(plainstring, signDataString);
return ESeaL_OKRtnFunc(ret, cb);
};
/*
o.ConvertSampleSeal = function() {
return clt.RemoveSign();
};
*/
o.SetCtrlPos = function (x, y, cb) {
var ret = clt.SetCtrlPos(x, y);
return ESeaL_OKRtnFunc(ret, cb);
};
o.SetOffsetPos = function (posRelativeElementIDString, x, y, cb) {
var ret = clt.SetOffsetPos(posRelativeElementIDString, x, y);
return ESeaL_OKRtnFunc(ret, cb);
};
o.SetDisplayRect = function (left, top, width, height, cb) {
var ret = clt.SetDisplayRect(left, top, width, height);
return ESeaL_OKRtnFunc(ret, cb);
};
o.ShowLastVerifyResult = function (cb) {
var ret = clt.ShowLastVerifyResult();
return ESeaL_OKRtnFunc(ret, cb);
};
o.GetSignature = function (cb) {
var ret = clt.GetSignature();
return ESeaL_OKRtnFunc(ret, cb);
};
o.SetSignature = function (signValue, cb) {
var ret = clt.SetSignature(signValue);
return ESeaL_OKRtnFunc(ret, cb);
};
o.IsSigned = function (cb) {
var ret = clt.IsSigned();
return ESeaL_OKRtnFunc(ret, cb);
};
o.SetVisible = function (bVisible, cb) {
var ret = clt.SetVisible(bVisible);
return ESeaL_OKRtnFunc(ret, cb);
};
o.GetVisible = function (cb) {
var ret = clt.GetVisible();
return ESeaL_OKRtnFunc(ret, cb);
};
o.IsKeyReady = function (cb) {
var ret = clt.IsKeyReady();
return ESeaL_OKRtnFunc(ret, cb);
};
o.SignFormFields = function (formname, elementname, bsilence, cb) {
var ret = clt.SignFormFields(formname, elementname, bsilence);
return ESeaL_OKRtnFunc(ret, cb);
};
o.VerifyFormFields = function (cb) {
var ret = clt.VerifyFormFields();
return ESeaL_OKRtnFunc(ret, cb);
};
o.GetSignTime = function (cb) {
var ret = clt.GetSignTime();
return ESeaL_OKRtnFunc(ret, cb);
};
o.GetStampPicAfterVerified = function (cb) {
var ret = clt.GetStampPicAfterVerified();
return ESeaL_OKRtnFunc(ret, cb);
};
o.GetStampPicAfterVerifiedEx = function (sVerify, sSignature, cb) {
var ret = clt.GetStampPicAfterVerifiedEx(sVerify, sSignature);
return ESeaL_OKRtnFunc(ret, cb);
};
// liyuan for support online signature
o.SetWebServiceURL = function (url, cb) {
var ret = clt.SetWebServiceURL(url);
return ESeaL_OKRtnFunc(ret, cb);
};
o.ShowSignerCertInfo = function (cb) {
var ret = clt.ShowSignerCertInfo();
return ESeaL_OKRtnFunc(ret, cb);
};
o.RemoveESign = function (bAlertMsg, cb) {
var ret = clt.RemoveESign(bAlertMsg);
return ESeaL_OKRtnFunc(ret, cb);
};
o.ShowSignerCertInfoEx = function (strSignature, cb) {
var ret = clt.ShowSignerCertInfoEx(strSignature);
return ESeaL_OKRtnFunc(ret, cb);
};
o.AboutBox = function (cb) {
var ret = "";
clt.AboutBox();
return ESeaL_OKRtnFunc(ret, cb);
};
o.GetStampPicFromUKey = function (strCertID, cb) {
var ret = clt.GetStampPicFromUKey(strCertID);
return ESeaL_OKRtnFunc(ret, cb);
};
o.ShowSignTimeEx = function (strSignature, cb) {
var ret = clt.ShowSignTimeEx(strSignature);
return ESeaL_OKRtnFunc(ret, cb);
};
o.CheckRemoveRight = function (strSignature, cb) {
var ret = clt.CheckRemoveRight(strSignature);
return ESeaL_OKRtnFunc(ret, cb);
};
o.SignEx = function (strCertID, plainstring, bAlertMsg, cb) {
var ret = clt.SignEx(strCertID, plainstring, bAlertMsg);
return ESeaL_OKRtnFunc(ret, cb);
};
o.GetVersion = function (cb) {
var ret = clt.GetVersion();
return ESeaL_OKRtnFunc(ret, cb);
};
o.GetLastErr = function (cb) {
var ret = clt.GetLastErr();
return ESeaL_OKRtnFunc(ret, cb);
};
o.GetSignMethod = function (cb) {
var ret = clt.GetSignMethod();
return ESeaL_OKRtnFunc(ret, cb);
};
o.GetStampPicForAllBrowser = function (cb) {
var ret = clt.GetStampPicForAllBrowser();
return ESeaL_OKRtnFunc(ret, cb);
};
o.SignForAllBrowser = function (plainstring, cb) {
var ret = clt.SignForAllBrowser(plainstring);
return ESeaL_OKRtnFunc(ret, cb);
};
o.GetPicWidthPx = function (cb) {
var ret = clt.GetPicWidthPx();
return ESeaL_OKRtnFunc(ret, cb);
};
o.GetPicHeightPx = function (cb) {
var ret = clt.GetPicHeightPx();
return ESeaL_OKRtnFunc(ret, cb);
};
o.BatchSignForAllBrowser = function (plainstring, cb) {
var ret = clt.BatchSignForAllBrowser(plainstring);
return ESeaL_OKRtnFunc(ret, cb);
};
return o;
}
/**
* 创建网页签章webSocket对象
*/
//webSocket client class
function CreateWebSocketObject_WebSign() {
var o = new Object();
var config = {};
var config_index = 0;
//var socket;
o.socket = new WebSocket("ws://127.0.0.1:21051/websign/");
o.socket.onopen = function (evt) { $_$WebSocketConnectState = true; };
o.socket.onmessage = function (evt) {
var res = "";
if (evt.data != "") {
res = JSON.parse(evt.data);
}
var call_cmd_id = res['call_cmd_id'];
if (!call_cmd_id) {
// 低版本IE不支持日志,需要调试时自行打开
//console.error("server return error", evt.data);
return;
}
var callback = config[call_cmd_id];
if (callback && typeof callback == "function") {
callback(res);
}
delete config[call_cmd_id];
}
o.callMethod = function (strMethodName, callback, argsArray) {
config_index++;
if (callback) {
config[config_index] = callback;
}
var sendArray = {};
sendArray['xtx_func_name'] = strMethodName;
sendArray['call_cmd_id'] = config_index;
sendArray['ocx_id'] = "{820390E5-1C07-483D-AEED-6A0EDF640AA2}";
if (arguments.length > 1) {
sendArray["param"] = argsArray;
}
o.socket.send(JSON.stringify(sendArray));
}
o.Verify = function (sData, sSignature, callback) {
o.callMethod("Verify", callback, [sData, "BSTR", sSignature, "BSTR"]);
};
o.SetWebServiceURL = function (sWSURL, callback) {
o.callMethod("SetWebServiceURL", callback, [sWSURL, "BSTR"]);
};
o.GetStampPicAfterVerified = function (callback) {
o.callMethod("GetStampPicAfterVerified", callback);
};
o.GetStampPicAfterVerifiedEx = function (sVerify, sSignature, callback) {
o.callMethod("GetStampPicAfterVerifiedEx", callback, [sVerify, "BSTR", sSignature, "BSTR"]);
};
o.ShowSignerCertInfoEx = function (sSignature, callback) {
o.callMethod("ShowSignerCertInfoEx", callback, [sSignature, "BSTR"]);
};
o.ShowSignTimeEx = function (sSignature, callback) {
o.callMethod("ShowSignTimeEx", callback, [sSignature, "BSTR"]);
};
o.CheckRemoveRight = function (sSignature, callback) {
o.callMethod("CheckRemoveRight", callback, [sSignature, "BSTR"]);
};
//BSTR SignEx(BSTR sCertID, BSTR sData, boolean bAlertMsg);
o.SignEx = function (sCertID, sData, bAlertMsg, callback) {
o.callMethod("SignEx", callback, [sCertID, "BSTR", sData, "BSTR", bAlertMsg, "boolean"]);
};
//BSTR GetVersion();
o.GetVersion = function (callback) {
o.callMethod("GetVersion", callback);
};
//BSTR GetLastErr();
o.GetLastErr = function (callback) {
o.callMethod("GetLastErr", callback);
};
//BSTR GetSignMethod();
o.GetSignMethod = function (callback) {
o.callMethod("GetSignMethod", callback);
};
//long SetSignMethod(BSTR sSignMethod);
o.SetSignMethod = function (sSignMethod, callback) {
o.callMethod("SetSignMethod", callback, [sSignMethod, "BSTR"]);
};
// BSTR GetStampPicForAllBrowser();
o.GetStampPicForAllBrowser = function (callback) {
o.callMethod("GetStampPicForAllBrowser", callback);
};
// BSTR SignForAllBrowser(BSTR sData);
o.SignForAllBrowser = function (sData, callback) {
o.callMethod("SignForAllBrowser", callback, [sData, "BSTR"]);
};
o.GetPicWidthPx = function (callback) {
o.callMethod("GetPicWidthPx", callback);
};
o.GetPicHeightPx = function (callback) {
o.callMethod("GetPicHeightPx", callback);
};
o.BatchSignForAllBrowser = function (sData, callback) {
o.callMethod("BatchSignForAllBrowser", callback, [sData, "BSTR"]);
};
return o;
}
(function $onLoadFunc() {
// liyuan,优先按照IE加载控件的方式
// console.log("$onLoadFunc in");
$_$WebSign_AppObj = CreateAppObject_WebSign("SignObj", null, null, null, null, null, null);
if ($_$WebSign_AppObj != null) {
console.log("CreateAppObject_WebSign success");
$_$WebSign_CurrentObj = $_$WebSign_AppObj;
return;
}
// liyuan,如果按照IE加载控件的方式失败,则按照websocket方式加载控件
$_$WebSign_WebSocketObj = CreateWebSocketObject_WebSign();
if ($_$WebSign_WebSocketObj != null) {
// console.log(" CreateWebSocketObject_WebSign success");
$_$WebSign_CurrentObj = $_$WebSign_WebSocketObj;
return;
}
$_$WebSign_CurrentObj = null;
//$XTXAlert("检查签章核心服务出错!");
alert("初始化签章核心服务出错!");
return;
})();