~ubuntu-branches/ubuntu/precise/nss/precise-security

« back to all changes in this revision

Viewing changes to nss/cmd/certcgi/index.html

  • Committer: Package Import Robot
  • Author(s): Marc Deslauriers
  • Date: 2013-11-14 14:58:07 UTC
  • mfrom: (1.1.19)
  • Revision ID: package-import@ubuntu.com-20131114145807-ay302kimn72ovt88
Tags: 3.15.3-0ubuntu0.12.04.1
* SECURITY UPDATE: New upstream release to fix multiple security issues
  and add TLSv1.2 support.
  - CVE-2013-1739
  - CVE-2013-1741
  - CVE-2013-5605
  - CVE-2013-5606
* Adjusted packaging for 3.15.3:
  - debian/patches/*: refreshed.
  - debian/patches/lower-dhe-priority.patch: removed, no longer needed,
    was a workaround for an old version of firefox.
  - debian/libnss3.symbols: added new symbols.
  - debian/rules: updated for new source layout.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<HTML>  <!-- -*- Mode: Java; tab-width: 8 -*- -->
 
2
<!-- This Source Code Form is subject to the terms of the Mozilla Public
 
3
   - License, v. 2.0. If a copy of the MPL was not distributed with this
 
4
   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
5
<HEAD>
 
6
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
 
7
<SCRIPT LANGUAGE="JavaScript1.2">
 
8
 
 
9
script_url = 'http://interzone.mcom.com/cgi-bin/certomatic/bin/certcgi.cgi'
 
10
 
 
11
ext_page_ver1 =
 
12
  make_page_intro('Version 1 extensions', "#FFFFFF") +
 
13
  '<IFRAME WIDTH="100%" HEIGHT="100%" FRAMEBORDER=0 ID="ext1">' +
 
14
  'Version 1 X.509 certs do not support extensions' +
 
15
  '</IFRAME>' +
 
16
  '</body></html>';
 
17
 
 
18
num_ca = 0;
 
19
 
 
20
your_certificate_index_label       = 'Your Certificate';
 
21
netscape_extensions_index_label    = 'Netscape X.509 Extensions';
 
22
standard_extensions_index_label    = 'Standard X.509 Extensions';
 
23
certifying_authorities_index_label = 'Certifying Authorities';
 
24
add_sub_alt_name_index_label       = 'Add Subject Alternative Name';
 
25
 
 
26
index_list = 
 
27
  '0, your_certificate_index_label,' +
 
28
  '0, netscape_extensions_index_label,' +
 
29
  '0, standard_extensions_index_label,' +
 
30
  '0, certifying_authorities_index_label';
 
31
 
 
32
add_index_list = '';
 
33
 
 
34
ver = 3
 
35
 
 
36
max_pages = 13;
 
37
cur_page = 1;
 
38
 
 
39
ext_page_array = new Array(max_pages);
 
40
 
 
41
index_label = 'Options';
 
42
 
 
43
var main_page = 
 
44
  make_page_intro('Your Key', "#FFFFFF") +
 
45
  '<IFRAME WIDTH="100%" HEIGHT="100%" FRAMEBORDER=0 ID="main" SRC="main.html">' +
 
46
  '</IFRAME>' +
 
47
  '</body></html>' ;
 
48
 
 
49
function setSubAltNameType(form)
 
50
{
 
51
  with(form) {
 
52
    if (SubAltNameRadio[0].checked) {
 
53
      return true;
 
54
    }
 
55
    if (SubAltNameRadio[3].checked || SubAltNameRadio[5].checked) {
 
56
      SubAltNameDataType.checked = true;
 
57
      return true;
 
58
    }
 
59
    if (SubAltNameRadio[1].checked || SubAltNameRadio[2].checked ||
 
60
        SubAltNameRadio[4].checked || SubAltNameRadio[6].checked ||
 
61
        SubAltNameRadio[7].checked || SubAltNameRadio[8].checked) {
 
62
      SubAltNameDataType.checked = false;
 
63
      return true;
 
64
    }
 
65
  }
 
66
  return true;
 
67
}
 
68
 
 
69
function setIssuerAltNameType(form)
 
70
{
 
71
  with(form) {
 
72
    if (IssuerAltNameRadio[0].checked) {
 
73
      return true;
 
74
    }
 
75
    if (IssuerAltNameRadio[3].checked || IssuerAltNameRadio[5].checked) {
 
76
      IssuerAltNameDataType.checked = true;
 
77
      return true;
 
78
    }
 
79
    if (IssuerAltNameRadio[1].checked || IssuerAltNameRadio[2].checked ||
 
80
        IssuerAltNameRadio[4].checked || IssuerAltNameRadio[6].checked ||
 
81
        IssuerAltNameRadio[7].checked || IssuerAltNameRadio[8].checked) {
 
82
      IssuerAltNameDataType.checked = false;
 
83
      return true;
 
84
    }
 
85
  }
 
86
  return true;
 
87
}
 
88
 
 
89
 
 
90
function setNameConstraintNameType(form)
 
91
{
 
92
  with(form) {
 
93
    if (NameConstraintRadio[0].checked) {
 
94
      return true;
 
95
    }
 
96
    if (NameConstraintRadio[3].checked || NameConstraintRadio[5].checked) {
 
97
      NameConstraintNameDataType.checked = true;
 
98
      return true;
 
99
    }
 
100
    if (NameConstraintRadio[1].checked || NameConstraintRadio[2].checked ||
 
101
        NameConstraintRadio[4].checked || NameConstraintRadio[6].checked ||
 
102
        NameConstraintRadio[7].checked || NameConstraintRadio[8].checked) {
 
103
      NameConstraintNameDataType.checked = false;
 
104
      return true;
 
105
    }
 
106
  }
 
107
  return true;
 
108
}
 
109
 
 
110
 
 
111
function addSubAltName(form)
 
112
{
 
113
  with(form) {
 
114
    var len = SubAltNameSelect.length;
 
115
    var value;
 
116
    var i = 0;
 
117
    while(!(i == (SubAltNameRadio.length - 1)) & 
 
118
          !(SubAltNameRadio[i].checked == true)) {
 
119
      i++;
 
120
    }
 
121
    if (i != 0) {
 
122
      value = SubAltNameText.value + " - " + (i + 1);
 
123
    } else {
 
124
      value = SubAltNameText.value + " - " + 
 
125
              SubAltNameOtherNameOID.value + " - ";
 
126
      if (SubAltNameDataType.checked) {
 
127
        value += "1 - ";
 
128
      } else {
 
129
        value += "0 - ";
 
130
      }
 
131
      value += (i + 1);
 
132
      if (SubAltNameOtherNameOID.value == "") {
 
133
        alert("Other names must include an OID");
 
134
        return false;
 
135
      }
 
136
    }
 
137
 
 
138
    if ((SubAltNameText.value == "") | (SubAltNameRadio[i].checked != true)) {
 
139
      alert("Alternative Names must include values for name and name type.");
 
140
    } else {
 
141
      SubAltNameSelect.options[len] = new Option(value, value);
 
142
    }
 
143
  }
 
144
  return true;
 
145
}
 
146
 
 
147
function deleteSubAltName(form)
 
148
{
 
149
  with(form) {
 
150
    while (SubAltNameSelect.selectedIndex >= 0) {
 
151
      SubAltNameSelect[SubAltNameSelect.selectedIndex] = null;
 
152
    }
 
153
  }
 
154
}
 
155
  
 
156
function addIssuerAltName(form)
 
157
{
 
158
  with(form)
 
159
  {
 
160
    var len = IssuerAltNameSelect.length;
 
161
    var value;
 
162
    var i = 0;
 
163
 
 
164
    while(!(i == (IssuerAltNameRadio.length -1)) & 
 
165
          !(IssuerAltNameRadio[i].checked == true)) {
 
166
      i++;
 
167
    }
 
168
    if (i != 0) {
 
169
      value = IssuerAltNameText.value + " - " + (i + 1);
 
170
    } else {
 
171
      value = IssuerAltNameText.value + " - " + 
 
172
              IssuerAltNameOtherNameOID.value + " - ";
 
173
      if (IssuerAltNameDataType.checked) {
 
174
        value += "1 - ";
 
175
      } else {
 
176
        value += "0 - ";
 
177
      }
 
178
      value += (i + 1);
 
179
      if (IssuerAltNameOtherNameOID.value == "") {
 
180
          alert("Other names must include an OID");
 
181
          return false;
 
182
      }
 
183
    }
 
184
    if ((IssuerAltNameText.value == "") | 
 
185
        (IssuerAltNameRadio[i].checked != true)) {
 
186
      alert("Alternative Names must include values for name and name type.")
 
187
    } else {
 
188
      IssuerAltNameSelect.options[len] = new Option(value, value);
 
189
    }
 
190
  }
 
191
  return true;
 
192
}
 
193
 
 
194
function deleteIssuerAltName(form)
 
195
{
 
196
  with(form) {
 
197
    while (IssuerAltNameSelect.selectedIndex >= 0) {
 
198
      IssuerAltNameSelect[IssuerAltNameSelect.selectedIndex] = null;
 
199
    }
 
200
  }
 
201
}
 
202
 
 
203
 
 
204
 
 
205
function addNameConstraint(form)
 
206
{
 
207
  with(form) {
 
208
    var len = NameConstraintSelect.length;
 
209
    var value;
 
210
    var i = 0;
 
211
    var min = NameConstraintMin.value;
 
212
    var max = NameConstraintMax.value;
 
213
 
 
214
    while(!(i == (NameConstraintRadio.length - 1) ) & 
 
215
          !(NameConstraintRadio[i].checked == true)) {
 
216
      i++;
 
217
    }
 
218
    value = NameConstraintText.value + " - ";
 
219
    if (i == 0) {
 
220
      value += NameConstraintOtherNameOID.value + " - ";
 
221
      if (NameConstraintNameDataType.checked) {
 
222
        value += "1 - ";
 
223
      } else {
 
224
        value += "0 - ";
 
225
      }
 
226
      if (NameConstraintOtherNameOID.value == "") {
 
227
        alert("Other names must include an OID");
 
228
        return false;
 
229
      }
 
230
    }
 
231
    value += (i + 1) + " - ";
 
232
    if (NameConstraintTypeRadio[0].checked == true) {
 
233
      value += "p - ";
 
234
    } else {
 
235
      value += "e - ";
 
236
    }
 
237
    value += min + " - " + max;
 
238
    if ((min == "") | (NameConstraintText.value == "") | 
 
239
        (NameConstraintRadio[i].checked != true)) {
 
240
      alert("Name Constraints must include values for minimum, name, and name type.")
 
241
    } else {
 
242
      NameConstraintSelect.options[len] = new Option(value, value);
 
243
    }
 
244
  }
 
245
  return true;
 
246
}
 
247
 
 
248
function deleteNameConstraint(form)
 
249
{
 
250
  with(form) {
 
251
    while (NameConstraintSelect.selectedIndex >= 0) {
 
252
      NameConstraintSelect[NameConstraintSelect.selectedIndex] = null;
 
253
    }
 
254
  }
 
255
}
 
256
 
 
257
 
 
258
function submit_it()
 
259
{
 
260
  save_cur_page(cur_page);
 
261
 
 
262
  var ver1 = (ver == 1);
 
263
  var ver3 = (ver == 3);
 
264
  var array_string;
 
265
  var serial        = ext_page_array[0][10][0];
 
266
  var serial_number = ext_page_array[0][12][0];
 
267
  var manValidity   = ext_page_array[0][19][0];
 
268
  var notBefore     = ext_page_array[0][20][0];
 
269
  var notAfter      = ext_page_array[0][21][0];
 
270
  var subject       = ext_page_array[0][22][0];
 
271
 
 
272
  if (subject == "") {
 
273
    alert("The DN field must contain some data");
 
274
    return false;
 
275
  }
 
276
  if (!serial & serial_number == "") {
 
277
    alert("No serial number specified");
 
278
    return false;
 
279
  }
 
280
  if (ext_page_array[0][15][0]) {
 
281
    var keygen = "<keygen name=\"key\" challenge=\"foo\">";
 
282
  } else {
 
283
    switch (ext_page_array[0][17][0]) {
 
284
      case 2:
 
285
        var keygen = "<keygen keytype=\"dsa\" pqg=\"MIGdAkEAjfKklEkidqo9JXWbsGhpy+rA2Dr7jQz3y7gyTw14guXQdi/FtyEOr8Lprawyq3qsSWk9+/g3JMLsBzbuMcgCkQIVAMdzIYxzfsjumTtPLe0w9I7azpFfAkEAYm0CeDnqChNBMWOlW0y1ACmdVSKVbO/LO/8Q85nOLC5xy53l+iS6v1jlt5UhklycxC6fb0ZLCIzFcq9T5teIAg==\" name=\"key\" challenge=\"foo\">";
 
286
        break;
 
287
      case 1:
 
288
        var keygen = "<keygen keytype=\"dsa\" pqg=\"MIHaAmDCboVgX0+6pEeMlbwsasWDVBcJNHPKMzkq9kbCRK2U3k+tE15n+Dc2g3ZjDYr1um51e2iLC34/BwAAAAAAAAAAAAAAAAAAAAAAAAABbBhnlFN5Djmt0Mk8cdEBY5H8iPMCFMhUnFtbpjn3EyfH2DjVg3ALh7FtAmA2zWzhpeCwvOTjYnQorlXiv0WcnSiWmaC79CRYkFt5i+UEfRxwP1eNGJBVB1T+CPW6JGd4WhgsqtSf53pn5DEtv++O7lNfXyOhWhb3KaWHYIx8fuAXtioIWkWmpfEIVZA=\" name=\"key\" challenge=\"foo\">";
 
289
        break;
 
290
      case 0:
 
291
        var keygen = "<keygen keytype=\"dsa\" pqg=\"MIIBHAKBgId8SiiWrcdua5zbsBhPkKfFcnHBG7T/bQla7c6OixGjjmSSuq2fJLvMKa579CaxHxLZzZZXIHmAk9poRgWl2GUUkCJ68XSum8OQzDPXPsofcEdeANjw3mIAAAAAAAAAAAAAAAAAAAAAAAAIE+MkW5hguLIQqWvEVi9dMpbNu6OZAhTIA+y3TgyiwA0D8pt686ofaL1IOQKBgAiZQC6UCXztr2iXxJrAC+51gN5oX/R9Thilln9RGegsWnHrdxUOpcm5vAWp1LU8TOXtujE8kqkm3UxIRhUWQORe9IxLANAXmZJqkw9FEVHkxj6Cy9detwT2MyBzSwS6avsf7aLisgHmI/IHSeapJsQ3NQa3rikb6zRiqIV+TVa6\" name=\"key\" challenge=\"foo\">";
 
292
        break;
 
293
    }
 
294
  }
 
295
  array_string =  build_array_string();
 
296
  hiddens = "<input type=\"hidden\" name=\"subject\" value=\'" + subject + "\'> \n" +
 
297
            "<input type=\"hidden\" name=\"serial-auto\" value=\"" + serial + "\"> \n" +
 
298
            "<input type=\"hidden\" name=\"serial_value\" value=\"" + serial_number + "\"> \n" +
 
299
            "<input type=\"hidden\" name=\"ver-1\" value=\"" + ver1 + "\"> \n" +
 
300
            "<input type=\"hidden\" name=\"ver-3\" value=\"" + ver3 + "\"> \n" +
 
301
            "<input type=\"hidden\" name=\"notBefore\" value=\"" + notBefore + "\"> \n" +
 
302
            "<input type=\"hidden\" name=\"notAfter\" value=\"" + notAfter + "\"> \n" +
 
303
            "<input type=\"hidden\" name=\"manValidity\" value=\"" + manValidity + "\"> \n" +
 
304
            array_string;
 
305
 
 
306
  var good_submit_page =
 
307
    '<html>' +
 
308
    '<BODY TEXT="#000000" LINK="#000000" VLINK="#000000" ALINK="#FF0000" BGCOLOR="#FFFFFF">' +
 
309
    '<form method="post" action="' + script_url + '">' +
 
310
    'Select size for your key:' + keygen + '</p>' +
 
311
    '<input type="submit"></p>' +
 
312
    hiddens +
 
313
    '</form>\n' +
 
314
    '</body>\n' +
 
315
    '</html>\n';
 
316
 
 
317
  window.frames['right'].document.write(good_submit_page);
 
318
  window.frames['right'].document.close();
 
319
  cur_page = max_pages + 1;
 
320
  make_left_frame(window);
 
321
  return false;
 
322
}
 
323
 
 
324
 
 
325
 
 
326
function build_array_string()
 
327
{
 
328
  var pg;
 
329
  var array_string = '';
 
330
  var pages;
 
331
 
 
332
  if ((ext_page_array[3][4][0] > 0) && ext_page_array[3][3][0]) {
 
333
    pages = 4 + parseInt(ext_page_array[3][4][0]);
 
334
  } else {
 
335
    pages = 4;
 
336
  }
 
337
  for (pg = 1; pg < pages; pg++) {
 
338
    if ((pg > 1 || (ver == 3)) && (ext_page_array[pg].length > 1)) {
 
339
      if (pg < 4) {
 
340
        for (i = 0; i < ext_page_array[pg].length; i++) {
 
341
          if (ext_page_array[pg][i][3].indexOf("radio") == -1) {
 
342
            if (ext_page_array[pg][i][3].indexOf("multiple") == -1) {
 
343
              array_string +=  '<input type=\"hidden\" name=\"' + 
 
344
                               ext_page_array[pg][i][1] + '\" value=\'' + 
 
345
                               ext_page_array[pg][i][0] + '\'> \n';
 
346
            } else {
 
347
              for (k = 0; k < ext_page_array[pg][i][0].length; k++) {
 
348
                array_string += '<input type=\"hidden\" name=\"' + 
 
349
                                ext_page_array[pg][i][1] + k + '\" value=\'' + 
 
350
                                ext_page_array[pg][i][0][k] + '\'> \n';
 
351
              }
 
352
            }
 
353
          } else {
 
354
            array_string += '<input type=\"hidden\" name=\"' + 
 
355
                            ext_page_array[pg][i][1] + '-' + 
 
356
                            ext_page_array[pg][i][2] + '\" value=\'' + 
 
357
                            ext_page_array[pg][i][0] + '\'> \n';
 
358
          }
 
359
        }
 
360
      } else {
 
361
        for (i = 0; i < ext_page_array[pg].length; i++) {
 
362
          if (ext_page_array[pg][i][3].indexOf("radio") == -1) {
 
363
            if (ext_page_array[pg][i][3].indexOf("multiple") == -1) {
 
364
              array_string += '<input type=\"hidden\" name=\"' + 
 
365
                              'CA#' + (pg - 3) + '-' + 
 
366
                              ext_page_array[pg][i][1] + '\" value=\'' + 
 
367
                              ext_page_array[pg][i][0] +'\'> \n';
 
368
            } else {
 
369
              for (k = 0; k < ext_page_array[pg][i][0].length; k++) {
 
370
                array_string += '<input type=\"hidden\" name=\"' + 
 
371
                                'CA#' + (pg - 3) + '-' + 
 
372
                                ext_page_array[pg][i][1] + k + '\" value=\'' + 
 
373
                                ext_page_array[pg][i][0][k] + '\'> \n';
 
374
              }
 
375
            }
 
376
          } else {
 
377
            array_string += '<input type=\"hidden\" name=\"' + 
 
378
                            'CA#' + (pg - 3) + '-' + 
 
379
                            ext_page_array[pg][i][1] + '-' + 
 
380
                            ext_page_array[pg][i][2] + '\" value=\'' + 
 
381
                            ext_page_array[pg][i][0] + '\'> \n';
 
382
          }
 
383
        }
 
384
      }
 
385
    }
 
386
  }
 
387
  return array_string;
 
388
}
 
389
 
 
390
 
 
391
 
 
392
function init_ext_page_array()
 
393
{
 
394
  for (i = 0; i < max_pages; i++) {
 
395
    ext_page_array[i] = '';
 
396
  }
 
397
}
 
398
 
 
399
function ca_num_change(n,ca_form)
 
400
{
 
401
  with(ca_form) {
 
402
    n = parseInt(n,10);
 
403
    if (caChoiceradio[2].checked) {
 
404
      if (n) {
 
405
        update_left_frame(n);
 
406
      } else {
 
407
        update_left_frame(0);
 
408
      }
 
409
    }
 
410
  }
 
411
}
 
412
 
 
413
function choice_change(ca_form)
 
414
{
 
415
  with(ca_form) {
 
416
    if (caChoiceradio[2].checked) {
 
417
      ca_num_change(manCAs.value,ca_form);
 
418
    } else {
 
419
      update_left_frame(0);
 
420
    }
 
421
  }
 
422
}
 
423
 
 
424
function update_left_frame(n)
 
425
{
 
426
  var add_string = '';
 
427
  for (var i = 0; i < n; i++) {
 
428
    var j = i + 1;
 
429
    add_string = add_string + ',1, \'CA #' + j + '\'';
 
430
  }
 
431
  top.add_index_list = add_string;
 
432
  num_ca = n;
 
433
  make_left_frame(window);
 
434
}
 
435
 
 
436
function set_ver1()
 
437
// redraws the extensions page for version 1 certificates
 
438
{
 
439
  ver = 1
 
440
  if (cur_page == 2 || cur_page == 3) {
 
441
    switch_right_frame(window, cur_page, cur_page);
 
442
  }
 
443
}
 
444
 
 
445
 
 
446
function set_ver3()
 
447
// redraws the extensions page for version 3 certificates
 
448
{
 
449
  ver = 3
 
450
  if (cur_page == 2) {
 
451
    switch_right_frame(window, 0, 2);
 
452
  } else if (cur_page == 3) {
 
453
    switch_right_frame(window, 0, 3);
 
454
  }
 
455
}
 
456
 
 
457
function reset_subject(marker, value, form)
 
458
// Updates the subject field from a subordinate field
 
459
{
 
460
  with(form) {
 
461
    var field_sep = '", ';
 
462
    var begin_index = subject.value.indexOf(marker);
 
463
    if (begin_index != 0 && subject.value[begin_index - 1] != ' ') {
 
464
      begin_index = subject.value.indexOf(marker, begin_index +1);
 
465
    }
 
466
    var end_index = subject.value.indexOf(field_sep, begin_index);
 
467
    if (begin_index > -1) {       // is it a delete/change?
 
468
      if (end_index == -1) {      // is it the last one (includes only one)?
 
469
        if (value.length > 0) {   // do I have to change it?
 
470
          if (begin_index == 0) { // is is the only one?
 
471
            subject.value = marker + '"' + value + '"';
 
472
          } else {                // it is the last of many
 
473
            subject.value = subject.value.substring(0,begin_index) + 
 
474
                            marker + '"' + value + '"';
 
475
          }
 
476
        } else {                  //  must be a delete
 
477
          if (begin_index == 0) { // is it the only one?
 
478
            begin_index += 2;
 
479
          }
 
480
          subject.value = subject.value.substring(0,(begin_index - 2));
 
481
        }
 
482
      } else {                    // it is the first of many or a middle one
 
483
        if (value.length >0) {    // do I have to change it?
 
484
          subject.value = 
 
485
                subject.value.substring(0,(begin_index + marker.length + 1)) + 
 
486
                value + subject.value.substring(end_index,subject.length);
 
487
        } else {                  // it is a delete
 
488
          subject.value = subject.value.substring(0,begin_index) + 
 
489
                subject.value.substring((end_index + 3),subject.length);
 
490
        }
 
491
      }
 
492
    } else {                      // It is either an insert or a do nothing
 
493
      if (value.length > 0) {     // is it an insert?
 
494
        if (subject.value.length == 0) {  // is subject currently empty?
 
495
          subject.value = marker + '"' + value + '"';
 
496
        } else {
 
497
          subject.value = subject.value + ', ' + marker + '"' + value + '"';
 
498
        }
 
499
      }
 
500
    }
 
501
  }
 
502
}
 
503
 
 
504
 
 
505
 
 
506
function reset_subjectFields(form)
 
507
// updates all the subordinate fields from the subject field of a form
 
508
// **** move the strings to global variables, to make maintentance easier ****
 
509
{
 
510
 
 
511
  update_subject_Field(form, 'CN=\"', form.name);
 
512
  update_subject_Field(form, 'MAIL=\"', form.email);
 
513
  update_subject_Field(form, 'O=\"', form.org);
 
514
  update_subject_Field(form, 'C=\"', form.country);
 
515
  update_subject_Field(form, ' L=\"', form.loc);
 
516
  update_subject_Field(form, 'ST=\"', form.state);
 
517
  update_subject_Field(form, 'E=\"', form.email);
 
518
  update_subject_Field(form, 'OU=\"', form.org_unit);
 
519
  update_subject_Field(form, 'UID=\"', form.uid);
 
520
}
 
521
 
 
522
function update_subject_Field(form, marker, update_field)
 
523
//updates a single subordinate field from the subject field of a form
 
524
// *** need to deal with the two types of e-mail addresses **************
 
525
{
 
526
  with(form) {
 
527
    var field_sep = '", ';
 
528
    var begin_index = subject.value.indexOf(marker) + marker.length;
 
529
    var end_index = subject.value.indexOf(field_sep, begin_index);
 
530
    if (end_index == -1) {
 
531
      end_index = subject.value.indexOf('"',begin_index);
 
532
    }
 
533
    if (begin_index != (-1 + marker.length) ) {
 
534
      update_field.value = subject.value.substring(begin_index, end_index);
 
535
    } else {
 
536
      update_field.value = '';
 
537
    }
 
538
  }
 
539
}
 
540
 
 
541
 
 
542
function switch_mail(form)
 
543
// **** Do I want to delete the other type of e-mail address ? ************
 
544
{
 
545
  if (form.email_type[0].checked) {
 
546
    var del = 'E=';
 
547
    var ins = 'MAIL=';
 
548
  } else {
 
549
    var del = 'MAIL=';
 
550
    var ins = 'E=';
 
551
  }
 
552
  reset_subject(del, '', form);
 
553
  reset_subject(ins, form.email.value, form);
 
554
}
 
555
 
 
556
function make_page_intro(title, bgcolor)
 
557
{
 
558
  var style = '<STYLE TYPE="text/css">BODY{' +
 
559
    'font-family: Geneva,MS Sans Serif,Arial,Lucida,Helvetica,sans-serif;' +
 
560
    'font-size: 10pt;' +
 
561
    '}' +
 
562
    'TD{' +
 
563
    'font-family: Geneva,MS Sans Serif,Arial,Lucida,Helvetica,sans-serif;' +
 
564
    'font-size: 10pt;}' +
 
565
    '</STYLE>';
 
566
 
 
567
  if (bgcolor == null) { bgcolor = "#C0C0C0"; }
 
568
  return '<HTML><HEAD>' +
 
569
    '<TITLE>' + title + '</TITLE>' +
 
570
    '</HEAD>' +
 
571
    '<BODY TEXT="#000000" LINK="#000000" VLINK="#000000" ALINK="#FF0000" ' +
 
572
          'BGCOLOR="' + bgcolor + '">';
 
573
}
 
574
 
 
575
 
 
576
function make_left_frame(window)
 
577
{
 
578
  with (window.frames['index']) {
 
579
    eval ('index_string = make_left_frame_page(cur_page, ' 
 
580
           + index_list + add_index_list + ' )');
 
581
    fool1 = make_page_intro(index_label, "#FFFFFF") +
 
582
      index_string + '</BODY></HTML>';
 
583
    document.write(fool1);
 
584
    document.close();
 
585
  }
 
586
}
 
587
 
 
588
 
 
589
function save_cur_page(page_number)
 
590
{
 
591
  var len;
 
592
  var pg = page_number - 1;
 
593
  if (window.frames['right'].document.forms.length != 0) {
 
594
    with (window.frames['right'].document) {
 
595
      if ((page_number != 2 && page_number != 3 && page_number <= max_pages) || 
 
596
          ver == 3) {
 
597
        ext_page_array[pg] = new Array(forms[0].elements.length);
 
598
        for (i = 0; i < forms[0].elements.length; i++) {
 
599
          ext_page_array[pg][i] = new Array(4);
 
600
          switch (forms[0].elements[i].type) {
 
601
          case 'radio': 
 
602
          case 'checkbox':
 
603
            ext_page_array[pg][i][0] = forms[0].elements[i].checked;
 
604
            break;
 
605
          case 'select-one':
 
606
            ext_page_array[pg][i][0] = forms[0].elements[i].selectedIndex;
 
607
            break;
 
608
          case 'select-multiple':
 
609
            len = forms[0].elements[i].options.length;
 
610
            ext_page_array[pg][i][0] = new Array(len);
 
611
            for(k = 0; k < len; k++) {
 
612
              ext_page_array[pg][i][0][k] = forms[0].elements[i].options[k].value;
 
613
            }
 
614
            break;
 
615
          default:
 
616
            ext_page_array[pg][i][0] = forms[0].elements[i].value;
 
617
          }
 
618
          ext_page_array[pg][i][1] = forms[0].elements[i].name;
 
619
          ext_page_array[pg][i][2] = forms[0].elements[i].value;
 
620
          ext_page_array[pg][i][3] = forms[0].elements[i].type;
 
621
        }
 
622
      }
 
623
    }
 
624
  }
 
625
}
 
626
 
 
627
function reload_form(page_number)
 
628
{
 
629
  var j = page_number - 1;
 
630
  with (window.frames['right'].document) {
 
631
    if (((page_number < 2 || page_number > 3) || ver == 3) 
 
632
        && page_number != 0 && (ext_page_array[j].length > 1)) {
 
633
      for (i = 0; i < ext_page_array[j].length; i++) {
 
634
        switch (forms[0].elements[i].type) {
 
635
        case 'radio': case 'checkbox':
 
636
          forms[0].elements[i].checked = ext_page_array[j][i][0];
 
637
          break;
 
638
        case 'select-one':
 
639
          forms[0].elements[i].selectedIndex = ext_page_array[j][i][0];
 
640
          break;
 
641
        case 'select-multiple':
 
642
          for (k = 0; k < ext_page_array[j][i][0].length; k++) {
 
643
            forms[0].elements[i].options[k] = 
 
644
                new Option(ext_page_array[j][i][0][k], 
 
645
                           ext_page_array[j][i][0][k]);
 
646
          }
 
647
          break;
 
648
        default:
 
649
          forms[0].elements[i].value = ext_page_array[j][i][0];
 
650
        }
 
651
      }
 
652
    }
 
653
  }
 
654
}
 
655
 
 
656
function switch_right_frame(top_window, old_pane, new_pane)
 
657
{
 
658
  var ext_page_stnd =
 
659
    make_page_intro(standard_extensions_index_label, "#FFFFFF") +
 
660
    '<IFRAME WIDTH="100%" HEIGHT="100%" FRAMEBORDER=0 ID="ext" ' +
 
661
    'SRC="stnd_ext_form.html">' +
 
662
    '</IFRAME></body></html>';
 
663
 
 
664
  var ext_page_nscp = 
 
665
    make_page_intro(netscape_extensions_index_label, "#FFFFFF") +
 
666
    '<IFRAME WIDTH="100%" HEIGHT="100%" FRAMEBORDER=0 ID="ext" ' +
 
667
    'SRC="nscp_ext_form.html">' +
 
668
    '</IFRAME></body></html>';
 
669
 
 
670
  var ext_page_ca =
 
671
    make_page_intro(certifying_authorities_index_label, "#FFFFFF") +
 
672
    '<IFRAME WIDTH="100%" HEIGHT="100%" FRAMEBORDER=0 ID="ext" ' +
 
673
    'SRC="ca.html">' +
 
674
    '</IFRAME></body</html>';
 
675
 
 
676
  var ext_page_ca_exp =
 
677
    make_page_intro('Certifying Authority Details', "#FFFFFF") +
 
678
    '<IFRAME WIDTH="100%" HEIGHT="100%" FRAMEBORDER=0 ID="ext" ' +
 
679
    'SRC="ca_form.html">' +
 
680
    '</IFRAME></body></html>';
 
681
 
 
682
 
 
683
  if (old_pane > 0 && cur_page <= max_pages) {
 
684
    save_cur_page(old_pane);
 
685
  }
 
686
  cur_page = new_pane;
 
687
  make_left_frame(top_window);
 
688
  if (new_pane == 2 || new_pane == 3) {
 
689
    if (ver == 1) {
 
690
      frames['right'].document.write(ext_page_ver1);
 
691
      frames['right'].document.close();
 
692
    } else if (new_pane == 2) {
 
693
      frames['right'].document.write(ext_page_nscp);
 
694
      frames['right'].document.close();
 
695
      reload_form(new_pane);
 
696
    } else {
 
697
      frames['right'].document.write(ext_page_stnd);
 
698
      frames['right'].document.close();
 
699
      reload_form(new_pane);
 
700
    }
 
701
  } else if (new_pane == 4) {
 
702
    frames['right'].document.write(ext_page_ca);
 
703
    frames['right'].document.close();
 
704
    reload_form(new_pane);
 
705
  } else if (new_pane == 1) {
 
706
    frames['right'].document.write(main_page);
 
707
    frames['right'].document.close();
 
708
    reload_form(new_pane);
 
709
  } else {
 
710
    frames['right'].document.write(ext_page_ca_exp);
 
711
    frames['right'].document.close();
 
712
    reload_form(new_pane);
 
713
  }
 
714
}
 
715
 
 
716
function make_left_frame_page(selected)
 
717
{
 
718
  var n_strings = ( make_left_frame_page.arguments.length - 1 ) / 2;
 
719
  var table_background;
 
720
  var command;
 
721
  var indent;
 
722
  var label;
 
723
  var ret_string = "";
 
724
    
 
725
  ret_string += '<TABLE CELLSPACING=4>';
 
726
  for ( var i = 1; i <= n_strings; i++ ) {
 
727
    if ( i == selected ) {
 
728
      table_background = 'BGCOLOR=#BBCCBB';
 
729
    } else {
 
730
      table_background = '';
 
731
    }
 
732
        
 
733
    indent = make_left_frame_page.arguments[(i*2) - 1];
 
734
    label =  make_left_frame_page.arguments[(i*2)];
 
735
 
 
736
    if ( indent == 0 ) {
 
737
      ret_string += ('<TR><TD COLSPAN=2 ' + table_background + '>');
 
738
    } else {
 
739
      ret_string += ('<TR><TD>&nbsp;&nbsp;</TD><TD ' + table_background + '>');
 
740
    }
 
741
 
 
742
    command = "'parent.switch_right_frame(parent," + selected + "," + i + ")'";
 
743
    ret_string += ('<A HREF="javascript:void setTimeout(' + command + ',0)">');
 
744
    if ( indent == 0 ) { ret_string += "<B>"; }
 
745
    ret_string += label;
 
746
    if ( indent == 0 ) { ret_string += "</B>"; }
 
747
    ret_string += '</A></TD></TR>';
 
748
  }
 
749
  if (selected == (max_pages + 1)) {
 
750
    table_background = 'BGCOLOR=#BBCCBB';
 
751
  } else {
 
752
    table_background = '';
 
753
  }
 
754
  ret_string +=
 
755
    '<TR><TD COLSPAN=2 ' + table_background + 
 
756
    '><b><A HREF="javascript:void setTimeout(\'top.submit_it()\', 0)">Finish</A></b>' +
 
757
    '</TD></TR>' +
 
758
    '<input type="submit"></form>' + 
 
759
    '</TABLE>';
 
760
  return(ret_string);
 
761
}
 
762
 
 
763
 
 
764
function make_page(window)
 
765
// Draws the initial page setup
 
766
{
 
767
  selected = cur_page
 
768
  init_ext_page_array()
 
769
 
 
770
  with (window.frames['right']) {
 
771
    location="main.html";
 
772
//  document.write(main_page);
 
773
//  document.close();
 
774
  }
 
775
 
 
776
  make_left_frame(window);
 
777
 
 
778
}
 
779
</script>
 
780
 
 
781
</HEAD>
 
782
<title>Cert-O-Matic</title>
 
783
  <FRAMESET cols="150,*" BORDER=3 ONLOAD="make_page(window)">
 
784
      <FRAME SRC="about:blank" ID="index" NAME="index"
 
785
           MARGINWIDTH=15 MARGINHEIGHT=10 BORDER=3>
 
786
      <FRAME SRC="about:blank" ID="right" NAME="right"
 
787
           MARGINWIDTH=15 MARGINHEIGHT=10 BORDER=3>
 
788
  </FRAMESET>
 
789
</HTML>