You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

661 lines
31 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<html lang="zh_CN.utf8" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>XTXAppCOM异步调用方式</title>
<style type="text/css">
.TopDIV {position:absolute;left:10px;top:10px; height:70px;background-color:#BCCE98;text-align:center;}
.MenuDIV {position:absolute;left:10px;top:85px; background-color:#DAE9BC;width:250px;float:left;overflow:auto;}
.MainTopDIV {position:absolute;left:265px;top:85px; background-color:#EEEEEE;height:130px;float:left;overflow:auto;}
.MainContentDIV {position:absolute;bottom:30px;left:265px;top:240px; background-color:#EEEEEE;float:left;overflow:auto;}
.BottomDIV {position:fixed;bottom:0px;left:10px;height:30px;background-color:#BCCE98;clear:both;text-align:center;overflow:auto;}
h2 {margin-bottom:2;font-size:18px;}
li {font-size:15px;}
.customers {font-family:"Trebuchet MS", Arial, Helvetica, sans-serif; width:100%; border-collapse:collapse;}
.customers td, .customers th {font-size:1em; border:1px solid #98bf21; padding:3px 7px 2px 7px;text-align: center;}
.customers th {font-size:1em; border:1px solid #98bf21; padding:3px 7px 2px 7px;text-align:center; background-color:#98bf21;color:#ffffff;}
.customers td.right {text-align: right;width:20%}
.customers td.left {text-align: left;width:80%}
.StandardWidth {width:500px; box-sizing:border-box;}
</style>
<script src="/js/CA/xtxasyn.js"></script>"
</head>
<script>
////////////////////////////////////// 页面布局本身的JS脚本开始 ///////////////////////////////////
// 存放所有测试的DIV ID
// 每个DIV对应一个左侧菜单
var kDivArray = new Array();
var divArrayIndex = 0;
// 应用接口测试菜单对应的div名称列表
kDivArray[divArrayIndex++] = "div_app_setuserconfig";
kDivArray[divArrayIndex++] = "div_app_export_cert";
kDivArray[divArrayIndex++] = "div_app_login_out";
kDivArray[divArrayIndex++] = "div_app_change_pin";
kDivArray[divArrayIndex++] = "div_app_pv_cert"; // Parse and Validate
kDivArray[divArrayIndex++] = "div_app_plain_sign_vfy";
kDivArray[divArrayIndex++] = "div_app_hash_sign_vfy";
kDivArray[divArrayIndex++] = "div_app_pkcs7_sign_vfy";
kDivArray[divArrayIndex++] = "div_app_pkcs7_sign_hash_vfy";
kDivArray[divArrayIndex++] = "div_app_xml_sign_vfy";
kDivArray[divArrayIndex++] = "div_app_asym_enc_dec";
kDivArray[divArrayIndex++] = "div_app_symm_enc_dec";
kDivArray[divArrayIndex++] = "div_app_pkcs7_envlope";
kDivArray[divArrayIndex++] = "div_app_pkcs7_sign_envlope";
kDivArray[divArrayIndex++] = "div_app_crypto";
kDivArray[divArrayIndex++] = "div_app_base64";
kDivArray[divArrayIndex++] = "div_app_secret_seg";
kDivArray[divArrayIndex++] = "div_app_file_enc_dec";
// 其他接口
function showSelectDiv(id) {
for (var i = 0; i < kDivArray.length; i++) {
var objDiv = document.getElementById(kDivArray[i]);
if (objDiv == undefined) {
continue;
}
var objHref = document.getElementById("id_" + kDivArray[i]);
var pos = -1;
if (objHref) {
pos = objHref.innerText.indexOf('-->');
}
if (pos != -1) {
objHref.innerText = objHref.innerText.substring(0, pos);
}
objHref.style.backgroundColor = '#DAE9BC';
if (id == kDivArray[i]) {
objDiv.style.display = 'block';
objHref.innerText = objHref.innerText + "-->";
objHref.style.backgroundColor = 'yellow'
} else {
objDiv.style.display = 'none';
}
}
return;
}
function SetDIVPostion() {
//Top的宽度是整个页面的宽度
var objTopDiv = document.getElementById("Top");
if (objTopDiv != undefined) {
objTopDiv.style.width = document.body.clientWidth - 10;
}
//Menu的宽度是固定宽度 250 + 15(滚动条的宽度)
var objMenu = document.getElementById("Menu");
if (objMenu != undefined) {
objMenu.style.height = document.body.clientHeight - 100;
}
//Content DIV的宽度
var objContentTopDiv = document.getElementById("MainTop");
if (objContentTopDiv != undefined) {
objContentTopDiv.style.width = document.body.clientWidth - 265;
objContentTopDiv.style.height = document.body.clientHeight - 100;
}
var i;
for (i = 0; i < kDivArray.length; i++) {
var objDiv = document.getElementById(kDivArray[i]);
if (objDiv != undefined) {
objDiv.style.width = document.body.clientWidth - 265;
}
}
//Bottom DIV的宽度
var objBottomDiv = document.getElementById("Bottom");
if (objBottomDiv != undefined) {
objBottomDiv.style.width = document.body.clientWidth - 10;
}
}
function select_cert(value) {
form_xtx.id_selected_cert_id.value = value;
}
function select_device(value) {
form_xtx.id_selected_device_sn.value = value;
}
</script>
<body onresize="SetDIVPostion();" onLoad="SetDIVPostion(); showSelectDiv('div_app_setuserconfig');">
<form id="form_xtx" name="form_xtx" >
<!-- 页头部 -->
<div id="Top" class="TopDIV">
<br />
<b><font size="6" color="#0000FF">ukey登录</font></b>
<br /> <br />
</div>
<!-- 菜单 -->
<div id="Menu" class="MenuDIV">
<!-- <h4>应用接口测试</h4>-->
<ul>
<li><A href="javascript:onClick=showSelectDiv('div_app_setuserconfig')" id='id_div_app_setuserconfig'>证书参数</A></li>
<li><A href="javascript:onClick=showSelectDiv('div_app_export_cert')" id='id_div_app_export_cert'>导出证书</A></li>
<li><A href="javascript:onClick=showSelectDiv('div_app_login_out')" id='id_div_app_login_out'>登录登出</A></li>
<li><A href="javascript:onClick=showSelectDiv('div_app_change_pin')" id='id_div_app_change_pin'>修改密码</A></li>
<li><A href="/login.jsp" id='id_div_app_change_pin2'>返回登录</A></li>
</ul>
</div>
<!-- 测试内容头部 显示证书列表 设备列表 -->
<div id="MainTop" class="MainTopDIV">
<table class="customers">
<tr>
<td class="right"> 组件版本号: </td>
<td class="left">
<input type="text" class="StandardWidth" id="id_xtx_version" readonly="readonly">
</td>
</tr>
<tr>
<td class="right"> 请选择证书: </td>
<td class="left">
<select class="StandardWidth" id="id_cert_list" method= "post" onchange="select_cert(this.value)" enctype="multipart/form-data" action="submit">
</select>
</td>
</tr>
<tr>
<td class="right"> 选择的证书ID: </td>
<td class="left">
<input type="text" class="StandardWidth" method= "post" id="id_selected_cert_id" name="certid" enctype="multipart/form-data">
</td>
</tr>
<tr>
<td class="right"> 选择设备序列号: </td>
<td class="left">
<select class="StandardWidth" id="id_device_list" onchange="select_device(this.value)">
</select>
</td>
</tr>
<tr>
<td class="right"> 设备序列号: </td>
<td class="left">
<input type="text" class="StandardWidth" id="id_selected_device_sn">
</td>
</tr>
</table>
</div>
<!-- //////////////////////////////////////////////////////////////////////////////////////////////////////// -->
<div id="div_app_setuserconfig" class="MainContentDIV" style="display:none">
<script>
function clear_div_app_setuserconfig_res() {
form_xtx.id_get_sign_method_res.value = '';
form_xtx.id_get_encrypt_method_res.value = '';
form_xtx.id_set_userconfig_param.value = '';
return;
}
function test_SOF_GetSignMethod() {
SOF_GetSignMethod(function(retObj) {
var algor = Number(retObj.retVal);
form_xtx.id_get_sign_method_res.value = "0x" + algor.toString(16);
});
}
function test_SOF_SetSignMethod() {
var algor = parseInt(form_xtx.id_set_sign_method_algor.value);
SOF_SetSignMethod(algor, function(retObj) {
if (retObj.retVal == 0) {
alert("设置签名算法成功");
} else {
alert("设置签名算法失败,返回值[" + retObj.retVal + "]!!!");
}
});
}
function test_SOF_GetEncryptMethod() {
SOF_GetEncryptMethod(function(retObj) {
var algor = Number(retObj.retVal);
form_xtx.id_get_encrypt_method_res.value = "0x" + algor.toString(16);
//form_xtx.id_get_encrypt_method_res.value = retObj.retVal;
});
}
function test_SOF_SetEncryptMethod() {
var algor = parseInt(form_xtx.id_set_encrypt_method_algor.value);
SOF_SetEncryptMethod(algor, function(retObj) {
if (retObj.retVal == 0) {
alert("设置加密算法成功");
} else {
alert("设置加密算法失败,返回值[" + retObj.retVal + "]!!!");
}
});
}
function test_SetUserConfig() {
var type = parseInt(form_xtx.id_set_userconfig_type.value);
var value = form_xtx.id_set_userconfig_param.value;
SetUserConfig(type, value, function(retObj) {
if (retObj.retVal) {
alert("SetUserConfig成功");
} else {
alert("SetUserConfig失败返回值[" + retObj.retVal + "]!!!");
}
});
}
</script>
<table class="customers">
</table>
</div>
<!-- //////////////////////////////////////////////////////////////////////////////////////////////////////// -->
<div id="div_app_export_cert" class="MainContentDIV" style="display:none">
<script>
function clear_div_app_export_cert_res() {
form_xtx.id_get_user_list_res.value = '';
form_xtx.id_export_user_cert_res.value = '';
form_xtx.id_export_exchange_user_cert_res.value = '';
return;
}
function test_SOF_GetUserList() {
SOF_GetUserList(function(retObj){
form_xtx.id_get_user_list_res.value = retObj.retVal;
});
}
function getSelectCertID() {
if (form_xtx.id_selected_cert_id.value == "") {
alert("请选择证书");
form_xtx.id_selected_cert_id.focus();
return "";
}
return form_xtx.id_selected_cert_id.value;
}
function test_SOF_ExportUserCert() {
var certId = getSelectCertID();
if (certId == "") {
return;
}
SOF_ExportUserCert(certId, function(retObj) {
form_xtx.id_export_user_cert_res.value = retObj.retVal;
});
}
function test_SOF_ExportExChangeUserCert() {
var certId = getSelectCertID();
if (certId == "") {
return;
}
SOF_ExportExChangeUserCert(certId, function(retObj) {
form_xtx.id_export_exchange_user_cert_res.value = retObj.retVal;
});
}
</script>
<table class="customers">
<tr>
<th colspan="2">导出证书&nbsp;&nbsp;
<input type="button" value="清空数据" onclick="return clear_div_app_export_cert_res()">
</th>
</tr>
<tr>
<td class="right"> 证书ID列表: </td>
<td class="left">
<textarea class="StandardWidth" id="id_get_user_list_res" rows="3"></textarea>&nbsp;&nbsp;
<input type="button" value="获取证书列表" onclick="return test_SOF_GetUserList()">
</td>
</tr>
<tr>
<td class="right"> 签名证书: </td>
<td class="left">
<textarea class="StandardWidth" id="id_export_user_cert_res" rows="5"></textarea>&nbsp;&nbsp;
<input type="button" value="导出签名证书" onclick="return test_SOF_ExportUserCert()">
</td>
</tr>
<tr>
<td class="right"> 加密证书: </td>
<td class="left">
<textarea class="StandardWidth" id="id_export_exchange_user_cert_res" rows="5"></textarea>&nbsp;&nbsp;
<input type="button" value="导出加密证书" onclick="return test_SOF_ExportExChangeUserCert()">
</td>
</tr>
</table>
</div>
<!-- //////////////////////////////////////////////////////////////////////////////////////////////////////// -->
<div id="div_app_login_out" class="MainContentDIV" style="display:none">
<script type="text/javascript">
function clear_div_app_login_out_res() {
form_xtx.id_login_passwd.value = '';
form_xtx.id_login_out_res.value = '';
form_xtx.id_islogin_res.value = '';
form_xtx.id_login_out_retry.value = '';
form_xtx.id_form_login_passwd.value = '';
form_xtx.id_form_login_res.value = '';
}
//异步调用sof_login回调函数
function test_login_callback(retObj) {
var certId = retObj.ctx.certId;
if (retObj.retVal) { //retObj.retVal表示sof_login结果true或false
//form_xtx.id_login_out_res.value = "证书登录成功";
form_xtx.id_login_out_res.value = "证书[" + certId + "]登录成功";
window.location.href = "/index.jsp";
// let value = document.getElementById("id_login_out_res").value;
// // 将值传到后端(这里假设使用Ajax发送请求)
// let xhr = new XMLHttpRequest();
// xhr.open("POST", "/login", true);
// xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
// xhr.send("value=" + encodeURIComponent(value));
} else {
form_xtx.id_login_out_res.value = "证书[" + certId + "]登录失败";
//当登录失败时调用SOF_GetLastError取错误码errcode为79时表示pin码复杂度不符合
SOF_GetLastError(function(retObj) {
var err = retObj.retVal;
if (err == 79) {
alert("请核对pin码复杂度是否符合要求!");
}
}, retObj.ctx);
}
var str_waring = "消耗时间" + (new Date() - retObj.ctx.begin) / 1000 + "秒";
alert(str_waring);
// 此处无论登录成功失败都调用了获取重试次数
// 实际情况可能仅在登录失败时获取一下重试次数做个提醒
SOF_GetPinRetryCount(certId, function(retObj) {
var certId = retObj.ctx.certId;
form_xtx.id_login_out_retry.value = "证书[" + certId + "]重试次数剩余:" + retObj.retVal + "次...";
}, retObj.ctx);
}
function test_SOF_Login() {
var certId = getSelectCertID();
if (certId == "") {
return;
}
var passwd = form_xtx.id_login_passwd.value;
if (passwd == "") {
alert("请输入用户密码");
form_xtx.id_login_passwd.focus();
return;
}
var time_begin = new Date();
if (form_xtx.id_login_with_cssupdate.checked) { //当勾选时进行证书更新
SOF_Login(certId, passwd, test_login_callback, {begin:time_begin, certId:certId});
//默认进行证书更新
} else {
var platform = navigator.platform.toLowerCase();
if (platform.indexOf("win") != -1){
//SOF_LoginEx第3个参数:登录成功后是否通过CSS控件进行证书更新操作1表示进行证书更新0表示不进行证书更新。
SOF_LoginEx(certId, passwd, 0, test_login_callback, {begin:time_begin, certId:certId});
}
else {
SOF_Login(certId, passwd, test_login_callback, {begin:time_begin, certId:certId});
}
}
}
function test_SOF_Logout() {
var certId = form_xtx.id_selected_cert_id.value;
if (form_xtx.id_logout_certid_all.checked) {
certId = "";
}
var strMsg;
if (certId != "") {
strMsg = certId;
} else {
strMsg = "全部";
}
SOF_Logout(certId, function(retObj) {
if (retObj.retVal) {
form_xtx.id_login_out_res.value = "证书[" + retObj.ctx.msgCertId + "]登出成功...";
} else {
form_xtx.id_login_out_res.value = "证书[" + retObj.ctx.msgCertId + "]登出失败!!!";
}
}, {msgCertId:strMsg});
}
function logout_all_click(id) {
if (id == 'id_logout_certid_cur') {
form_xtx.id_logout_certid_cur.checked = true;
form_xtx.id_logout_certid_all.checked = false;
} else if (id == 'id_logout_certid_all') {
form_xtx.id_logout_certid_cur.checked = false;
form_xtx.id_logout_certid_all.checked = true;
}
}
function test_SOF_IsLogin() {
var certId = getSelectCertID();
if (certId == "") {
return;
}
SOF_IsLogin(certId, function(retObj) {
var certId = retObj.ctx.certId;
if (retObj.retVal) {
form_xtx.id_islogin_res.value = "证书[" + certId + "]已登录...";
} else {
form_xtx.id_islogin_res.value = "证书[" + certId + "]未登录!!!";
}
}, {certId:certId});
}
function test_SOF_GetPinRetryCount() {
var certId = getSelectCertID();
if (certId == "") {
return;
}
SOF_GetPinRetryCount(certId, function(retObj) {
form_xtx.id_login_out_retry.value = "证书[" + certId + "]重试次数剩余:" + retObj.retVal + "次...";
});
}
var strServerSignedData = "FUy74vw8FOnzJl4MEKheNqPrOv2U/8/Wgrs2hxsV8AawIu7eKEboBNhLY+uzuYPKRhItrY+UkbRaUB2CVoi87owFn3FhitlTp4YbpBpqxdeddtvC/pMGVND4NQcbEw+qqIRq6L3kI5/ZGicz+DhehQC1oWNMWMe/h1hAPjzZXDE=";
var strServerRan = "CV3w40tGbz/E6xdEy4h2+gjcLXONfBWM";
var strServerCert = "MIIE+DCCA+CgAwIBAgIKGzAAAAAAAFlKWzANBgkqhkiG9w0BAQUFADBSMQswCQYDVQQGEwJDTjENMAsGA1UECgwEQkpDQTEYMBYGA1UECwwPUHVibGljIFRydXN0IENBMRowGAYDVQQDDBFQdWJsaWMgVHJ1c3QgQ0EtMTAeFw0yMDA1MjUxNjAwMDBaFw0yMTA2MjUxNTU5NTlaMEsxCzAJBgNVBAYTAkNOMRIwEAYDVQQDDAnotbXmsLjnnIExKDAmBgkqhkiG9w0BCQEWGXpoYW95b25nc2hlbmdAYmpjYS5vcmcuY24wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALgaT9lsB6duKSsmVbhotgAB2nsTZMKPLPBdLO+Nchvcj7C0ZrePd/m0KzbXWpwk0ZOTa6XsUmGZhHo4FUZr5i9a1GblX3UAY/cu1cIk02IvvoCL/Dh7GAH9eCZAlyXLKhUB1wspBpPkGwIiB5l0f2/ds6C8sR3NOojG3Sx2i9xrAgMBAAGjggJZMIICVTAfBgNVHSMEGDAWgBSsO+yvDKNQDu+vr7RPbDvb0VfSiTAdBgNVHQ4EFgQUWsU79eTB2d2qdLouBzQn7WbBNdowCwYDVR0PBAQDAgbAMIGvBgNVHR8EgacwgaQwbaBroGmkZzBlMQswCQYDVQQGEwJDTjENMAsGA1UECgwEQkpDQTEYMBYGA1UECwwPUHVibGljIFRydXN0IENBMRowGAYDVQQDDBFQdWJsaWMgVHJ1c3QgQ0EtMTERMA8GA1UEAxMIY2EzY3JsMzAwM6AxoC+GLWh0dHA6Ly9sZGFwLmJqY2Eub3JnLmNuL2NybC9wdGNhL2NhM2NybDMwLmNybDAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIA/zAdBgUqVgsHAQQUU0YzNzI1MjYxOTgyMTIwMjY2NzkwHQYFKlYLBwgEFFNGMzcyNTI2MTk4MjEyMDI2Njc5MCAGCGCGSAGG+EQCBBRTRjM3MjUyNjE5ODIxMjAyNjY3OTAbBggqVoZIAYEwAQQPMTAyMDgwMDA2OTAzMzAwMCUGCiqBHIbvMgIBBAEEFzhDQFNGMzcyNTI2MTk4MjEyMDI2Njc5MCoGC2CGSAFlAwIBMAkKBBtodHRwOi8vYmpjYS5vcmcuY24vYmpjYS5jcnQwDwYFKlYVAQEEBjEwMDA4MDBABgNVHSAEOTA3MDUGCSqBHIbvMgICATAoMCYGCCsGAQUFBwIBFhpodHRwOi8vd3d3LmJqY2Eub3JnLmNuL2NwczATBgoqgRyG7zICAQEeBAUMAzUyMDANBgkqhkiG9w0BAQUFAAOCAQEAaFIE1vKWRqZudqnTPuY/QRYo8R1itRg5OIDcQ51AKBtaxqcMCzXqZwP/zMU36fOT96tCbeIte6jFeJaM3J3Zp5gFZcP4TKxLnQ/FGRMQaKyrJ0Lvi7zNfk48iQzKjKmRAn8XOajA195kX5tJ2YMNamAYVmMgtRrK5YcHg7P9SZC9bqT3IYxAoebQcv666l8nyNQyWnP8pvbPNOvs6xZZzyXMPaHvQK8vV1kSm1VIqazQNvPWRNoE0CETS3g2jwmW4O34/jzrMbG0sXQToDEOkYZVSLCT70RnGrKzJ/F3hsy4G2yPY7B0jRkCzVO1+tSzN7iMDUC/SM7B9Jhl9jCzVQ==";
function test_FormLogin() {
var certId = getSelectCertID();
if (certId == "") {
return;
}
var passwd = form_xtx.id_form_login_passwd.value;
Login("form_xtx", certId, passwd, "", function(ret) {
if (ret) {
form_xtx.id_form_login_res.value = "表单登录成功...";
} else {
form_xtx.id_form_login_res.value = "表单登录失败!";
}
});
}
</script>
<table class="customers">
<tr>
<th colspan="2">登录登出&nbsp;&nbsp;
<input type="button" value="清空数据" onclick="return clear_div_app_login_out_res()">
</th>
</tr>
<tr>
<td class="right"> 密码: </td>
<td class="left">
<input type="password" class="StandardWidth" id="id_login_passwd">&nbsp;&nbsp;
<!-- <input type="button" value="登录" onclick="sendResultToBackend()">-->
<input type="button" value="登录" onclick="return test_SOF_Login()">
<input type="checkbox" id="id_login_with_cssupdate">是否通过CSS更新证书
</td>
</tr>
<tr>
<td class="right"> 登录结果: </td>
<td class="left">
<input type="text" class="StandardWidth" name="id_login_out_res">
<input type="button" value="登出" onclick="return test_SOF_Logout()">
<input type="checkbox" name="name_logout_all" id="id_logout_certid_cur" onclick="logout_all_click('id_logout_certid_cur');" checked=true />登出当前证书
<input type="checkbox" name="name_logout_all" id="id_logout_certid_all" onclick="logout_all_click('id_logout_certid_all');" />登出全部证书
</td>
</tr>
<tr>
<td class="right"> 检查是否登录的结果: </td>
<td class="left">
<input type="text" class="StandardWidth" name="id_islogin_res">&nbsp;&nbsp;
<input type="button" value="检查是否登录" onclick="return test_SOF_IsLogin()">
</td>
</tr>
<tr>
<td class="right"> 密码重试次数: </td>
<td class="left">
<input type="text" class="StandardWidth" name="id_login_out_retry">&nbsp;&nbsp;
<input type="button" value="获取密码重试次数" onclick="return test_SOF_GetPinRetryCount()">
</td>
</tr>
</table>
</div>
<!-- //////////////////////////////////////////////////////////////////////////////////////////////////////// -->
<div id="div_app_change_pin" class="MainContentDIV" style="display:none">
<script>
function clear_div_app_change_pin_res() {
form_xtx.id_change_user_passwd_old.value = '';
form_xtx.id_change_user_passwd_new_1.value = '';
form_xtx.id_change_user_passwd_new_2.value = '';
form_xtx.id_change_user_passwd_res.value = '';
form_xtx.id_change_user_passwd_retry.value = '';
}
function test_SOF_ChangePassWd()
{
var certId = getSelectCertID();
if (certId == "") {
return;
}
var oldpin = form_xtx.id_change_user_passwd_old.value;
var newpin1 = form_xtx.id_change_user_passwd_new_1.value;
var newpin2 = form_xtx.id_change_user_passwd_new_2.value;
if (oldpin == "") {
alert("请输入原密码");
form_xtx.id_change_user_passwd_old.focus();
return;
}
if (newpin1 == "") {
alert("请输入新密码");
form_xtx.id_change_user_passwd_new_1.focus();
return;
}
if (newpin2 == "") {
alert("请输入新密码");
form_xtx.id_change_user_passwd_new_2.focus();
return;
}
if (newpin1 != newpin2) {
alert("两次输入的新密码不一致");
form_xtx.id_change_user_passwd_new_2.focus();
return;
}
SOF_ChangePassWd(certId, oldpin, newpin1, function(retObj) {
if (retObj.retVal) {
form_xtx.id_change_user_passwd_res.value = "修改证书密码成功";
} else {
form_xtx.id_change_user_passwd_res.value = "修改证书密码失败";
}
});
// 此处无论修改密码成功失败都调用了获取重试次数
// 实际情况可能仅在修改失败时获取一下重试次数做个提醒
SOF_GetPinRetryCount(certId, function(retObj) {
form_xtx.id_change_user_passwd_retry.value = "证书[" + certId + "]重试次数剩余:" + retObj.retVal + "次...";
});
}
function test_SOF_GetRetryCount()
{
var certId = getSelectCertID();
if (certId == "") {
return;
}
SOF_GetPinRetryCount(certId, function(retObj) {
form_xtx.id_change_user_passwd_retry.value = "证书[" + certId + "]重试次数剩余:" + retObj.retVal + "次...";
});
}
</script>
<table class="customers">
<tr>
<th colspan="2">修改密码&nbsp;&nbsp;
<input type="button" value="清空数据" onclick="return clear_div_app_change_pin_res()">
</th>
</tr>
<tr>
<td class="right"> 原密码: </td>
<td class="left">
<input type="password" class="StandardWidth" id="id_change_user_passwd_old">
</td>
</tr>
<tr>
<td class="right"> 新密码: </td>
<td class="left">
<input type="password" class="StandardWidth" id="id_change_user_passwd_new_1">
</td>
</tr>
<tr>
<td class="right"> 新密码确认: </td>
<td class="left">
<input type="password" class="StandardWidth" id="id_change_user_passwd_new_2">&nbsp;&nbsp;
<input type="button" value="修改密码" onclick="return test_SOF_ChangePassWd()">
</td>
</tr>
<tr>
<td class="right"> 修改结果: </td>
<td class="left">
<input type="text" class="StandardWidth" id="id_change_user_passwd_res">
</td>
</tr>
<tr>
<td class="right"> 密码重试次数: </td>
<td class="left">
<input type="text" class="StandardWidth" id="id_change_user_passwd_retry">&nbsp;&nbsp;
<input type="button" value="获取密码重试次数" onclick="return test_SOF_GetRetryCount()">
</td>
</tr>
</table>
</div>
</form>
</body>
<script>
function customFireEvent(objId, eventName) {
var obj = document.getElementById(objId);
if (obj == undefined) {
return;
}
if (obj.fireEvent) {
obj.fireEvent("on" + eventName);
} else if (obj.dispatchEvent) {
var e = document.createEvent('HTMLEvents');
e.initEvent(eventName, false, false);
obj.dispatchEvent(e);
}
}
function FillDeviceList() {
GetAllDeviceSN(function(retObj){
var obj = document.getElementById("id_device_list");
if (obj == undefined) {
return;
}
var i, n = obj.length;
for (i = 0; i < n; i++) {
obj.remove(0);
}
var strDeviceList = retObj.retVal;
while (true) {
var pos = strDeviceList.indexOf(";");
if (pos <= 0 ) {
break;
}
var strOneDevice = strDeviceList.substring(0, pos);
var objItem = new Option(strOneDevice, strOneDevice);
obj.options.add(objItem);
var len = strDeviceList.length;
strDeviceList = strDeviceList.substring(pos + 1, len);
}
customFireEvent('id_cert_list', 'change');
customFireEvent('id_device_list', 'change');
});
}
function test_SOF_GetVersion() {
SOF_GetVersion(function(retObj) {
form_xtx.id_xtx_version.value = retObj.retVal;
});
}
test_SOF_GetVersion();
SetUserCertList("id_cert_list");
FillDeviceList();
SetOnUsbKeyChangeCallBack(FillDeviceList);
</script>
</html>