1// ---------------------------- Start WEP functions
2var lastkeypressed;
3var keyTooBig = false;
4var keyTooBig_an = false;
5var mustbeHEX = false;
6var keysize;
7var keysize_an;
8var lastObj;
9if (document.layers) document.captureEvents(Event.KEYPRESS);
10    document.onkeypress = checkKey;
11
12function checkKey(evt)
13{
14    evt = (evt) ? evt : ((window.event) ? window.event : null);
15    if (evt)
16        lastkeypressed = (evt.keyCode) ? evt.keyCode : (evt.which ) ? evt.which : null;
17    if ((lastkeypressed != 13) && (lastkeypressed != 8) && ( keyTooBig ))
18    {
19        keyTooBig = false;
20        alert("<%1149%> " + keysize + " <%1150%>");
21        chkSize(lastObj); // for NS 6/7
22        return false;
23    }
24    else if ((lastkeypressed != 13) && (lastkeypressed != 8) && ( keyTooBig_an ))
25    {
26        keyTooBig_an = false;
27        alert("<%1149%> " + keysize_an + " <%1150%>");
28        chkSize_an(lastObj); // for NS 6/7
29        return false;
30    }
31    else if (mustbeHEX) // not used here, don't know which input is being used
32    {
33        mustbeHEX = false;
34        if ( ((lastkeypressed > 47) && (lastkeypressed < 58 ))
35            || ((lastkeypressed > 96) && (lastkeypressed < 103))
36            || ((lastkeypressed > 64) && (lastkeypressed < 71 ))
37            || (lastkeypressed == 8)
38            || (lastkeypressed == 13) )
39            return true; // OK
40        else
41            return false;
42    }
43    return true;
44}
45function chkSize(fobj)
46{
47    if(fobj.value.length > keysize)
48        fobj.value = fobj.value.substr(0,keysize);
49}
50function chkSize_an(fobj)
51{
52    if(fobj.value.length > keysize_an)
53        fobj.value = fobj.value.substr(0,keysize_an);
54}
55function keyCheck(fobj)
56{
57    lastObj = fobj;
58    keyTooBig = (fobj.value.length >= keysize ) ? true : false;
59}
60function keyCheck_an(fobj)
61{
62    lastObj = fobj;
63    keyTooBig_an = (fobj.value.length >= keysize_an) ? true : false;
64}
65function calcPassphrase(F)
66{
67    if(F.passphraseStr.value.length == 0)
68        return;
69    switch(F.wepenc.selectedIndex)
70    {
71        case 0:
72            PassPhrase40(F);
73            break;
74        case 1:
75            PassPhrase104(F);
76            break;
77        default:
78            break;
79    }
80}
81function PassPhrase40(F)
82{
83    var seed = 0;
84    var pseed = new Array(0, 0, 0, 0);
85    var pkey = new Array(4);
86    var asciiObj = new Array(4);
87    Length = F.passphraseStr.value.length;
88    if(Length != 0)
89    {
90        for (i=0; i<Length; i++ )
91            pseed[i%4] ^= F.passphraseStr.value.charCodeAt(i);
92        seed = pseed[0];
93        seed += pseed[1] << 8;
94        seed += pseed[2] << 16;
95        seed += pseed[3] << 24;
96    }
97    F.KEY1.value = F.KEY2.value = "";
98    F.KEY3.value = F.KEY4.value = "";
99    pkey[0] = F.KEY1;
100    pkey[1] = F.KEY2;
101    pkey[2] = F.KEY3;
102    pkey[3] = F.KEY4;
103    for(j=0; j<4; j++)
104    {
105        for (i=0; i<5 ;i++ )
106        {
107            seed = (214013 * seed) & 0xffffffff;
108            if(seed & 0x80000000)
109                seed = (seed & 0x7fffffff) + 0x80000000 + 0x269ec3;
110            else
111                seed = (seed & 0x7fffffff) + 0x269ec3;
112            temp = ((seed >> 16) & 0xff);
113            if(temp < 0x10)
114                pkey[j].value += "0" + temp.toString(16).toUpperCase();
115            else
116                pkey[j].value += temp.toString(16).toUpperCase();
117        }
118    }
119    F.wep_key_no[0].checked = true;
120}
121function PassPhrase104(F)
122{
123    var pseed2 = "";
124    Length2 = F.passphraseStr.value.length;
125    var asciiObj = "";
126    for(p=0; p<64; p++)
127    {
128        tempCount = p % Length2;
129        pseed2 += F.passphraseStr.value.substring(tempCount, tempCount+1);
130    }
131    md5Str = calcMD5(pseed2);
132    F.KEY1.value = md5Str.substring(0, 26).toUpperCase();
133    F.KEY2.value = F.KEY1.value;
134    F.KEY3.value = F.KEY1.value;
135    F.KEY4.value = F.KEY1.value;
136    F.wep_key_no[0].checked = true;
137}
138function calcPassphrase_an(F)
139{
140    if(F.passphraseStr_an.value.length == 0)
141        return;
142    switch(F.wepenc_an.selectedIndex)
143    {
144        case 0:
145            PassPhrase40_an(F);
146            break;
147        case 1:
148            PassPhrase104_an(F);
149            break;
150        default:
151            break;
152    }
153}
154function PassPhrase40_an(F)
155{
156    var seed = 0;
157    var pseed = new Array(0, 0, 0, 0);
158    var pkey = new Array(4);
159    var asciiObj = new Array(4);
160    Length = F.passphraseStr_an.value.length;
161    if(Length != 0)
162    {
163        for (i=0; i<Length; i++ )
164            pseed[i%4] ^= F.passphraseStr_an.value.charCodeAt(i);
165        seed = pseed[0];
166        seed += pseed[1] << 8;
167        seed += pseed[2] << 16;
168        seed += pseed[3] << 24;
169    }
170    F.KEY1_an.value = F.KEY2_an.value = "";
171    F.KEY3_an.value = F.KEY4_an.value = "";
172    pkey[0] = F.KEY1_an;
173    pkey[1] = F.KEY2_an;
174    pkey[2] = F.KEY3_an;
175    pkey[3] = F.KEY4_an;
176    for(j=0; j<4; j++)
177    {
178        for (i=0; i<5 ;i++ )
179        {
180            seed = (214013 * seed) & 0xffffffff;
181            if(seed & 0x80000000)
182                seed = (seed & 0x7fffffff) + 0x80000000 + 0x269ec3;
183            else
184                seed = (seed & 0x7fffffff) + 0x269ec3;
185            temp = ((seed >> 16) & 0xff);
186            if(temp < 0x10)
187                pkey[j].value += "0" + temp.toString(16).toUpperCase();
188            else
189                pkey[j].value += temp.toString(16).toUpperCase();
190        }
191    }
192    F.wep_key_no_an[0].checked = true;
193}
194function PassPhrase104_an(F)
195{
196    var pseed2 = "";
197    Length2 = F.passphraseStr_an.value.length;
198    var asciiObj = "";
199    for(p=0; p<64; p++)
200    {
201        tempCount = p % Length2;
202        pseed2 += F.passphraseStr_an.value.substring(tempCount, tempCount+1);
203    }
204    md5Str = calcMD5(pseed2);
205    F.KEY1_an.value = md5Str.substring(0, 26).toUpperCase();
206    F.KEY2_an.value = F.KEY1_an.value;
207    F.KEY3_an.value = F.KEY1_an.value;
208    F.KEY4_an.value = F.KEY1_an.value;
209    F.wep_key_no_an[0].checked = true;
210}
211