This commit is contained in:
cheney
2023-08-09 13:57:49 +08:00
parent 300afb65e0
commit dd6405ff4d
111 changed files with 23270 additions and 556 deletions
File diff suppressed because one or more lines are too long
+65
View File
@@ -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
+40
View File
@@ -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">签&emsp;&emsp;名</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
View File
@@ -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 )