Skip to content

Commit 91df6a1

Browse files
authored
Create main.js
1 parent b61adfd commit 91df6a1

File tree

1 file changed

+183
-0
lines changed

1 file changed

+183
-0
lines changed

main.js

+183
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
function init() {
2+
var script = document.createElement("script");
3+
script.src = "https://fido.moi.gov.tw//pt/assets/ChtICToken.js";
4+
document.head.appendChild(script);
5+
var pkilogin = document.getElementsByClassName("pkilogin")[0];
6+
var newElementHTML = '<input type="button" id="hicos" value="HiCOS登入">';
7+
if (pkilogin) {
8+
pkilogin.insertAdjacentHTML('afterend', newElementHTML);
9+
document.getElementById("hicos").addEventListener("click", loginClicked);
10+
}
11+
12+
// register
13+
var registerHTML = '<input type="button" id="new-register" value="跨平台版卡號註冊">';
14+
var registerInputElem = document.querySelector("body > div > div.content.clear_pdTop > div > form > div.btn > div.left > input")
15+
if (registerInputElem) {
16+
registerInputElem.insertAdjacentHTML('afterend', registerHTML);
17+
document.getElementById("new-register").addEventListener("click", registerClicked);
18+
}
19+
}
20+
21+
function makerandomletter() {
22+
var a = "",
23+
b = new Uint32Array(1);
24+
window.crypto.getRandomValues(b);
25+
for (var c = 0; c < b.length; c++)
26+
a += b[c];
27+
return a
28+
}
29+
30+
function registerClicked() {
31+
loginClicked({mode: 'register'});
32+
}
33+
34+
35+
function loginClicked({mode = 'login'}) {
36+
var cardnum = "",
37+
tbs = "",
38+
B64Signature = "";
39+
var pkcs1 = "";
40+
var pkcs7 = "";
41+
let pin = prompt("請輸入PIN碼", "");
42+
makeSignature(pin);
43+
44+
function makeSignature(a) {
45+
tbs = batchsign2.random;
46+
getICToken().goodDay(SignDo)
47+
}
48+
49+
function CardNumMsg() {
50+
var l_oToken = getICToken();
51+
console.log(l_oToken.RetObj);
52+
if (l_oToken.RetObj.RCode == 0) {
53+
console.log(l_oToken.RetObj.RCode);
54+
cardnum = l_oToken.RetObj.CardID;
55+
} else {
56+
consoloe.log(l_oToken.RetObj.RMsg);
57+
//alert("簽章時發生錯誤,錯誤碼:" + l_oToken.RetObj.RCode+", 錯誤原因:" + l_oToken.RetObj.RMsg);
58+
}
59+
60+
var returnCode = l_oToken.RetObj.RCode;
61+
}
62+
63+
function SignDo() {
64+
var a = getICToken();
65+
if (0 == a.RetObj.RCode) {
66+
var b = btoa(tbs);
67+
//b = encodeURIComponent(b);
68+
a.getSmartCardID(CardNumMsg);
69+
a.sign(b, pin, "SHA1", SignRetMsg, "PKCS1");
70+
} else
71+
console.log(a.RetObj.RCode, a.RetObj.RMsg);
72+
}
73+
74+
function SignRetMsg() {
75+
var a = getICToken();
76+
var l_oToken = getICToken();
77+
if (l_oToken.RetObj.RCode == 0) {
78+
B64Signature = l_oToken.RetObj.B64Signature;
79+
pkcs1 = B64Signature;
80+
console.log("pkcs1: " +pkcs1);
81+
var b = btoa(tbs);
82+
//b = encodeURIComponent(b);
83+
a.getSmartCardID(CardNumMsg);
84+
if (mode === 'login') {
85+
a.sign(b, pin, "SHA1", SignRetMsg2, "PKCS7");
86+
} else {
87+
a.sign(b, pin, "SHA1", doRegister, "PKCS7");
88+
}
89+
} else {
90+
console.log(l_oToken.RetObj.RMsg);
91+
}
92+
}
93+
94+
function SignRetMsg2() {
95+
var a = getICToken();
96+
var l_oToken = getICToken();
97+
if (l_oToken.RetObj.RCode == 0) {
98+
B64Signature = l_oToken.RetObj.B64Signature;
99+
pkcs7 = B64Signature;
100+
console.log("pkcs7: " + pkcs7);
101+
const req = {
102+
method: 'POST',
103+
headers: {
104+
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
105+
},
106+
body: "action=checkLoginLock&f_id="
107+
};
108+
fetch('/iftop/ajax_server/ajax_login.server.php', req);
109+
110+
const requestOptions = {
111+
method: 'POST',
112+
headers: {
113+
'Content-Type': 'application/x-www-form-urlencoded'
114+
},
115+
body: new URLSearchParams({
116+
fun_name: "va_verify_p7",
117+
f_sysno: "EAS",
118+
p7: pkcs7 + pkcs1
119+
}).toString()
120+
};
121+
fetch('/iftop/ajax_server/ajax_pki.server.php', requestOptions)
122+
.then(response => response.json())
123+
.then(data => {
124+
console.log("data");
125+
console.log(data);
126+
if (data.flag) {
127+
window.location = "/eas/EA13R01.php?f_menuname=%E5%B7%A5%E4%BD%9C%E5%84%80%E8%A1%A8%E6%9D%BF";
128+
} else {
129+
alert(data.msg);
130+
}
131+
});
132+
133+
134+
} else {
135+
console.log(l_oToken.RetObj.RMsg);
136+
}
137+
}
138+
139+
function doRegister() {
140+
var a = getICToken();
141+
var l_oToken = getICToken();
142+
if (l_oToken.RetObj.RCode == 0) {
143+
B64Signature = l_oToken.RetObj.B64Signature;
144+
pkcs7 = B64Signature;
145+
console.log("pkcs7: " + pkcs7);
146+
147+
const requestOptions = {
148+
method: 'POST',
149+
headers: {
150+
'Content-Type': 'application/x-www-form-urlencoded'
151+
},
152+
body: new URLSearchParams({
153+
action: "register",
154+
organ_code: 'A29000000G', // TODO
155+
idcardno: document.querySelector('[name="f_idcardno"]').value, // TODO
156+
f_id: undefined,
157+
f_pw: undefined,
158+
cardno: a.SmrtCrdID[0],
159+
open_window: 'Y',
160+
mode: '1',
161+
p7: pkcs7 + pkcs1
162+
}).toString()
163+
};
164+
fetch('/iftop/ajax_server/OP16T22_ajax.php', requestOptions)
165+
.then(response => response.json())
166+
.then(data => {
167+
console.log("data");
168+
console.log(data);
169+
if (data.flag) {
170+
// window.location = "/eas/EA13R01.php?f_menuname=%E5%B7%A5%E4%BD%9C%E5%84%80%E8%A1%A8%E6%9D%BF";
171+
} else {
172+
alert(data.msg);
173+
}
174+
});
175+
176+
177+
} else {
178+
console.log(l_oToken.RetObj.RMsg);
179+
}
180+
}
181+
}
182+
183+
init();

0 commit comments

Comments
 (0)