save all
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -0,0 +1,65 @@
|
||||
function stringToHex(str){
|
||||
var val = "";
|
||||
for (var i = 0; i < str.length; i++) {
|
||||
var v = str.charCodeAt(i).toString(16);
|
||||
if ( v.length < 2 ) {
|
||||
v = "0" + v;
|
||||
}
|
||||
val += v;
|
||||
}
|
||||
return val
|
||||
}
|
||||
|
||||
|
||||
function hexToStr(hex,encoding) {
|
||||
var trimedStr = hex.trim();
|
||||
var rawStr = trimedStr.substr(0, 2).toLowerCase() === "0x" ? trimedStr.substr(2) : trimedStr;
|
||||
var len = rawStr.length;
|
||||
if (len % 2 !== 0) {
|
||||
alert("Illegal Format ASCII Code!");
|
||||
return "";
|
||||
}
|
||||
var curCharCode;
|
||||
var resultStr = [];
|
||||
for (var i = 0; i < len; i = i + 2) {
|
||||
curCharCode = parseInt(rawStr.substr(i, 2), 16);
|
||||
resultStr.push(curCharCode);
|
||||
}
|
||||
// encoding为空时默认为utf-8
|
||||
var bytesView = new Uint8Array(resultStr);
|
||||
var str = new TextDecoder(encoding).decode(bytesView);
|
||||
return str;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 输入 json 格式的授信信息
|
||||
* 返回 hex 格式的登录信息
|
||||
*/
|
||||
function auth( info ){
|
||||
var str = "";
|
||||
var manufactor = info.manufactor + " ";
|
||||
manufactor.substr(0, 8);
|
||||
var system = info.system + " ";
|
||||
system.substr(0, 8);
|
||||
var customer = info.customer;
|
||||
str = manufactor + system + customer
|
||||
return stringToHex( str )
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 测试
|
||||
var test = {
|
||||
"manufactor": "sunyard",
|
||||
"system": "hsm",
|
||||
"customer": "ICBC"
|
||||
}
|
||||
|
||||
console.log( auth(test) )
|
||||
|
||||
|
||||
console.log("hexToStr=" + hexToStr("73756e796172642068736d202020202049434243", "UTF-8"))
|
||||
|
||||
// 73756e79617264202020202020202068736d202020202020202049434243
|
||||
// 73756e796172642068736d202020202049434243
|
||||
@@ -50,6 +50,7 @@
|
||||
<div class="container">
|
||||
|
||||
|
||||
|
||||
<div class="group" style="width: 100%; ">
|
||||
<select id="ukeys" style="height: 1.5rem; width: 308px">
|
||||
</select>
|
||||
@@ -72,6 +73,10 @@
|
||||
<a href="#" name="tab_file">文件操作</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="#" name="tab_sign">签名</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="#" name="tab_pin">PIN 管理</a>
|
||||
</li>
|
||||
@@ -129,6 +134,17 @@
|
||||
></textarea>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="tab tab_sign">
|
||||
|
||||
|
||||
<textarea id="inData" style="display: block; margin: 1rem 0; width: 375px; height: 100px;" placeholder="输入签名文本"></textarea>
|
||||
<button id="btn_sign" style="margin-right: 1rem">签  名</button>
|
||||
|
||||
<textarea id="outData" style="display: block; margin: 1rem 0; width: 375px; height: 100px;" readonly></textarea>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="tab tab_pin">
|
||||
@@ -178,6 +194,7 @@
|
||||
<script type="text/javascript" src="./fiseckey.js"></script>
|
||||
<script type="text/javascript" src="./ukey.js"></script>
|
||||
|
||||
<script type="application/javascript" src="./gmhelper.js"></script>
|
||||
|
||||
<!-- 演示程序 -->
|
||||
<script type="text/javascript" src="./tabs.js"></script>
|
||||
@@ -404,6 +421,29 @@
|
||||
})
|
||||
|
||||
|
||||
$("#btn_sign").click(function () {
|
||||
var inData = $("#inData").val()
|
||||
|
||||
// 公钥
|
||||
var pk = window.UKey.exportPk();
|
||||
|
||||
var s = window.gmhelper.getHashAsBase64( inData, pk )
|
||||
|
||||
|
||||
|
||||
var outData = pk
|
||||
|
||||
outData += "\r\n\r\nz=" + s.z
|
||||
|
||||
outData += "\r\n\r\nhash=" + s.hashHex
|
||||
|
||||
var sign = window.UKey.sign( s.hashBase64 )
|
||||
outData += "\r\n\r\nsign=" + sign
|
||||
|
||||
$("#outData").text(outData)
|
||||
})
|
||||
|
||||
|
||||
$("#reset").click(function () {
|
||||
alert("暂不开放")
|
||||
})
|
||||
|
||||
+13
-1
@@ -80,6 +80,8 @@
|
||||
|
||||
FISECKEY.FILE_CreateFile(hDevice, DIR, "name", fileSize, 0);
|
||||
|
||||
FISECKEY.GenECCKeypair(hDevice, 0, 256, 1);
|
||||
|
||||
var data = JSON.stringify(info)
|
||||
|
||||
writeFile(DIR, "name", data)
|
||||
@@ -291,6 +293,14 @@
|
||||
FISECKEY.USER_ChangePin(hDevice, 1, oldpin, newpin);
|
||||
}
|
||||
|
||||
function exportPk(){
|
||||
return FISECKEY.ExportECCKeypair(hDevice, 1);
|
||||
}
|
||||
|
||||
function sign(vInbuf){
|
||||
return FISECKEY.ECCSign(hDevice, 1, 1, vInbuf);
|
||||
}
|
||||
|
||||
root.UKey = {
|
||||
release: release,
|
||||
catRelease : catRelease,
|
||||
@@ -306,6 +316,8 @@
|
||||
saveLMK : saveLMK,
|
||||
loadLMK : loadLMK,
|
||||
saveAuth : saveAuth,
|
||||
loadAuth : loadAuth
|
||||
loadAuth : loadAuth,
|
||||
exportPk : exportPk,
|
||||
sign : sign
|
||||
}
|
||||
})( window )
|
||||
|
||||
Reference in New Issue
Block a user