1/* for WPS 2.0 checking */
2var show_wep_or_wps_msg = false;
3var wps_version = "<%49%>";
4var show_tkip_or_wps_v20_msg = false;
5var show_ssid_bc_or_wps_v20_msg = false;
6var show_open_or_wps_v20_msg = false;
7var needGrayOutWPS = 0;
8
9// ---------------------------- Start of  WEP functions ----------------------------
10var lastkeypressed;
11var keyTooBig = false;
12var mustbeHEX = false;
13var keysize;
14var lastObj;
15
16if (document.layers) document.captureEvents(Event.KEYPRESS);
17    document.onkeypress = checkKey;
18function checkKey(evt)
19{
20    evt = (evt) ? evt : ((window.event) ? window.event : null);
21    if (evt)
22        lastkeypressed = (evt.keyCode) ? evt.keyCode : (evt.which ) ? evt.which : null;
23    if ((lastkeypressed != 13) && (lastkeypressed != 8) && ( keyTooBig ))
24    {
25        keyTooBig = false;
26        alert("<%1578%> " + keysize + " <%1579%>");
27        chkSize(lastObj); // for NS 6/7
28        return false;
29    }
30    else if (mustbeHEX) // not used here, don't know which input is being used
31    {
32        mustbeHEX = false;
33        if ( ((lastkeypressed > 47) && (lastkeypressed < 58 ))
34            || ((lastkeypressed > 96) && (lastkeypressed < 103))
35            || ((lastkeypressed > 64) && (lastkeypressed < 71 ))
36            || (lastkeypressed == 8)
37            || (lastkeypressed == 13) )
38            return true; // OK
39        else
40            return false;
41    }
42    return true;
43}
44function chkSize(fobj)
45{
46    if(fobj.value.length > keysize)
47        fobj.value = fobj.value.substr(0,keysize);
48}
49
50function CheckData_NONE()
51{
52	if (wps_version == "2.0")
53	{
54		if (!show_open_or_wps_v20_msg) {
55			if (!confirm("<%57%>")){
56				return false;
57			}
58		}
59		show_open_or_wps_v20_msg = true;
60	}
61	return true;
62}
63function CheckData_WEP(wepenc, wep_key_no, key, key1, key2, key3, key4)
64{
65    var msg_key64_type = "<%47%>";
66    var msg_key128_type = "<%48%>";
67
68    var cf = document.forms[0];
69    var msg = ""; var blankFlag = false; var sizeOK = false; var i;
70    var len = (wepenc.selectedIndex==0)?10:((wepenc.selectedIndex==1)?26:32);
71
72    for (i = 1; i < 5; i++ )
73    {
74        msg = "";
75        blankFlag = ! (eval(wep_key_no[i-1].checked)); // default key
76        if( (blankFlag) && (eval("(cf." + key + i + ".value.length == 0)")) )
77            continue; // blank ok
78        sizeOK = ((eval("isHex(cf." + key + i +".value)")) && (eval("(cf." + key + i + ".value.length == len)")));
79        if (!sizeOK)
80        {
81            msg += (len == 10)?msg_key64_type:msg_key128_type;
82            alertR(msg);
83            if (i==1)
84                key1.focus();
85            else if (i==2)
86                key2.focus();
87            else if (i==3)
88                key3.focus();
89            else if (i==4)
90                key4.focus();
91            return false;
92        }
93    }
94
95	if (wps_version == "2.0")
96	{
97		if (!show_tkip_or_wps_v20_msg) {
98			if (!confirm("<%1690%>")){
99				return false;
100			}
101		}
102		show_tkip_or_wps_v20_msg = true;
103		needGrayOutWPS = 1;
104	}
105    return true;
106}
107
108
109function keyCheck(fobj)
110{
111    lastObj = fobj;
112    keyTooBig = (fobj.value.length >= keysize ) ? true : false;
113}
114
115function calcPassphrase(wepenc, passphraseStr, wep_key_no, key1, key2, key3, key4)
116{
117    if(passphraseStr.value.length == 0)
118        return;
119    switch(wepenc.selectedIndex)
120    {
121        case 0:
122            PassPhrase40(passphraseStr, wep_key_no, key1, key2, key3, key4);
123            break;
124        case 1:
125            PassPhrase104(passphraseStr, wep_key_no, key1, key2, key3, key4);
126            break;
127        default:
128            break;
129    }
130}
131
132function PassPhrase40(passphraseStr, wep_key_no, key1, key2, key3, key4)
133{
134    var seed = 0;
135    var pseed = new Array(0, 0, 0, 0);
136    var pkey = new Array(4);
137    var asciiObj = new Array(4);
138    Length = passphraseStr.value.length;
139    if(Length != 0)
140    {
141        for (i=0; i<Length; i++ )
142            pseed[i%4] ^= passphraseStr.value.charCodeAt(i);
143        seed = pseed[0];
144        seed += pseed[1] << 8;
145        seed += pseed[2] << 16;
146        seed += pseed[3] << 24;
147    }
148    key1.value = key2.value = "";
149    key3.value = key4.value = "";
150    pkey[0] = key1;
151    pkey[1] = key2;
152    pkey[2] = key3;
153    pkey[3] = key4;
154    for(j=0; j<4; j++)
155    {
156        for (i=0; i<5 ;i++ )
157        {
158            seed = (214013 * seed) & 0xffffffff;
159            if(seed & 0x80000000)
160                seed = (seed & 0x7fffffff) + 0x80000000 + 0x269ec3;
161            else
162                seed = (seed & 0x7fffffff) + 0x269ec3;
163            temp = ((seed >> 16) & 0xff);
164            if(temp < 0x10)
165                pkey[j].value += "0" + temp.toString(16).toUpperCase();
166            else
167                pkey[j].value += temp.toString(16).toUpperCase();
168        }
169    }
170    wep_key_no[0].checked = true;
171}
172
173function PassPhrase104(passphraseStr, wep_key_no, key1, key2, key3, key4)
174{
175    var pseed2 = "";
176    Length2 = passphraseStr.value.length;
177    var asciiObj = "";
178    for(p=0; p<64; p++)
179    {
180        tempCount = p % Length2;
181        pseed2 += passphraseStr.value.substring(tempCount, tempCount+1);
182    }
183    md5Str = calcMD5(pseed2);
184    key1.value = md5Str.substring(0, 26).toUpperCase();
185    key2.value = key1.value;
186    key3.value = key1.value;
187    key4.value = key1.value;
188    wep_key_no[0].checked = true;
189    //F.KEY2.disabled = F.KEY3.disabled = F.KEY4.disabled = true;
190}
191
192function setKeys(wepenc, key1, key2, key3, key4)
193{
194    key1.disabled = key2.disabled = key3.disabled = key4.disabled = false;
195    if (wepenc.selectedIndex == 0)
196    {
197        keysize = 10;
198        key1.size = key2.size = key3.size = key4.size = keysize + 2 ; // extra for Mac
199        if (key1.value.length>10)
200            key1.value = key1.value.substring(0,10);
201        if (key2.value.length>10)
202            key2.value = key2.value.substring(0,10);
203        if (key3.value.length>10)
204            key3.value = key3.value.substring(0,10);
205        if (key4.value.length>10)
206            key4.value = key4.value.substring(0,10);
207    }
208    else if(wepenc.selectedIndex == 1)
209    {
210        keysize = 26;
211        key1.size = key2.size = key3.size = key4.size = keysize + 2; // extra for Mac
212        if (key1.value.length>26)
213            key1.value = key1.value.substring(0,26);
214        if (key2.value.length>26)
215            key2.value = key2.value.substring(0,26);
216        if (key3.value.length>26)
217            key3.value = key3.value.substring(0,26);
218        if (key4.value.length>26)
219            key4.value = key.value.substring(0,26);
220    }
221    else if(wepenc.selectedIndex == 2)
222    {
223        keysize = 32;
224        key1.size = key2.size = key3.size = key4.size = keysize + 2; // extra for Mac
225    }
226    //auto_disable();
227}
228// ---------------------------- End of  WEP functions ----------------------------
229
230function CheckData_WPA(passphrase, sec_type)
231{
232	if (wps_version == "2.0")
233	{
234		if (sec_type == "WPA-PSK")
235		{
236			if (!show_tkip_or_wps_v20_msg) {
237				if (!confirm("<%1690%>")){
238					return false;
239				}
240			}
241			show_tkip_or_wps_v20_msg = true;
242			needGrayOutWPS = 1;
243		}
244	}
245    if(passphrase.value.length < 8)
246    {
247        alert("<%4259%>");
248        passphrase.focus();
249        return false;
250    }
251    if(passphrase.value.length > 63)
252    {
253        if ( isHex(passphrase.value) == false)
254        {
255            alert("<%4259%>");
256            passphrase.value = "";
257            passphrase.focus();
258            return false;
259        }
260    }
261
262    if (passphrase.value.match( /[^\x20-\x7E]/ ))
263    {
264        alert("<%61%>");
265        passphrase.focus();
266        return false;
267    }
268
269    return true;
270}
271
272function CheckData_Manual(ssid, security_type, passphrase, wepenc, wep_key_no, key, key1, key2, key3, key4)
273{
274    var msg_key64_type = "<%47%>";
275    var msg_key128_type = "<%48%>";
276
277    var security_type_value = security_type.value;
278    var msg = "";
279
280    if (ssid.value == "")
281    {
282        alert("<%53%>");
283        ssid.focus();
284        return false;
285    }
286
287    if (ssid.value.match( /[^\x20-\x7E]/ ))
288    {
289        alert("<%54%>");
290        ssid.focus();
291        return false;
292    }
293
294    if (security_type_value == -1) // not selected
295    {
296        alert("<%4260%>");
297        security_type.focus();
298        return false;
299    }
300    else if (security_type_value == 1) // WEP
301    {
302        return CheckData_WEP(wepenc, wep_key_no, key, key1, key2, key3, key4);
303    }
304    else if (security_type_value == 2 || security_type_value == 3 || security_type_value == 4) //WPA-PSK/WPA2-PSK
305    {
306        return CheckData_WPA(passphrase);
307    }
308    return true;
309}
310
311