security/nss/cmd/certcgi/index.html

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/security/nss/cmd/certcgi/index.html	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,789 @@
     1.4 +<HTML>	<!-- -*- Mode: Java; tab-width: 8 -*- -->
     1.5 +<!-- This Source Code Form is subject to the terms of the Mozilla Public
     1.6 +   - License, v. 2.0. If a copy of the MPL was not distributed with this
     1.7 +   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
     1.8 +<HEAD>
     1.9 +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    1.10 +<SCRIPT LANGUAGE="JavaScript1.2">
    1.11 +
    1.12 +script_url = 'http://interzone.mcom.com/cgi-bin/certomatic/bin/certcgi.cgi'
    1.13 +
    1.14 +ext_page_ver1 =
    1.15 +  make_page_intro('Version 1 extensions', "#FFFFFF") +
    1.16 +  '<IFRAME WIDTH="100%" HEIGHT="100%" FRAMEBORDER=0 ID="ext1">' +
    1.17 +  'Version 1 X.509 certs do not support extensions' +
    1.18 +  '</IFRAME>' +
    1.19 +  '</body></html>';
    1.20 +
    1.21 +num_ca = 0;
    1.22 +
    1.23 +your_certificate_index_label       = 'Your Certificate';
    1.24 +netscape_extensions_index_label    = 'Netscape X.509 Extensions';
    1.25 +standard_extensions_index_label    = 'Standard X.509 Extensions';
    1.26 +certifying_authorities_index_label = 'Certifying Authorities';
    1.27 +add_sub_alt_name_index_label       = 'Add Subject Alternative Name';
    1.28 +
    1.29 +index_list = 
    1.30 +  '0, your_certificate_index_label,' +
    1.31 +  '0, netscape_extensions_index_label,' +
    1.32 +  '0, standard_extensions_index_label,' +
    1.33 +  '0, certifying_authorities_index_label';
    1.34 +
    1.35 +add_index_list = '';
    1.36 +
    1.37 +ver = 3
    1.38 +
    1.39 +max_pages = 13;
    1.40 +cur_page = 1;
    1.41 +
    1.42 +ext_page_array = new Array(max_pages);
    1.43 +
    1.44 +index_label = 'Options';
    1.45 +
    1.46 +var main_page = 
    1.47 +  make_page_intro('Your Key', "#FFFFFF") +
    1.48 +  '<IFRAME WIDTH="100%" HEIGHT="100%" FRAMEBORDER=0 ID="main" SRC="main.html">' +
    1.49 +  '</IFRAME>' +
    1.50 +  '</body></html>' ;
    1.51 +
    1.52 +function setSubAltNameType(form)
    1.53 +{
    1.54 +  with(form) {
    1.55 +    if (SubAltNameRadio[0].checked) {
    1.56 +      return true;
    1.57 +    }
    1.58 +    if (SubAltNameRadio[3].checked || SubAltNameRadio[5].checked) {
    1.59 +      SubAltNameDataType.checked = true;
    1.60 +      return true;
    1.61 +    }
    1.62 +    if (SubAltNameRadio[1].checked || SubAltNameRadio[2].checked ||
    1.63 +	SubAltNameRadio[4].checked || SubAltNameRadio[6].checked ||
    1.64 +	SubAltNameRadio[7].checked || SubAltNameRadio[8].checked) {
    1.65 +      SubAltNameDataType.checked = false;
    1.66 +      return true;
    1.67 +    }
    1.68 +  }
    1.69 +  return true;
    1.70 +}
    1.71 +
    1.72 +function setIssuerAltNameType(form)
    1.73 +{
    1.74 +  with(form) {
    1.75 +    if (IssuerAltNameRadio[0].checked) {
    1.76 +      return true;
    1.77 +    }
    1.78 +    if (IssuerAltNameRadio[3].checked || IssuerAltNameRadio[5].checked) {
    1.79 +      IssuerAltNameDataType.checked = true;
    1.80 +      return true;
    1.81 +    }
    1.82 +    if (IssuerAltNameRadio[1].checked || IssuerAltNameRadio[2].checked ||
    1.83 +	IssuerAltNameRadio[4].checked || IssuerAltNameRadio[6].checked ||
    1.84 +	IssuerAltNameRadio[7].checked || IssuerAltNameRadio[8].checked) {
    1.85 +      IssuerAltNameDataType.checked = false;
    1.86 +      return true;
    1.87 +    }
    1.88 +  }
    1.89 +  return true;
    1.90 +}
    1.91 +
    1.92 +
    1.93 +function setNameConstraintNameType(form)
    1.94 +{
    1.95 +  with(form) {
    1.96 +    if (NameConstraintRadio[0].checked) {
    1.97 +      return true;
    1.98 +    }
    1.99 +    if (NameConstraintRadio[3].checked || NameConstraintRadio[5].checked) {
   1.100 +      NameConstraintNameDataType.checked = true;
   1.101 +      return true;
   1.102 +    }
   1.103 +    if (NameConstraintRadio[1].checked || NameConstraintRadio[2].checked ||
   1.104 +	NameConstraintRadio[4].checked || NameConstraintRadio[6].checked ||
   1.105 +	NameConstraintRadio[7].checked || NameConstraintRadio[8].checked) {
   1.106 +      NameConstraintNameDataType.checked = false;
   1.107 +      return true;
   1.108 +    }
   1.109 +  }
   1.110 +  return true;
   1.111 +}
   1.112 +
   1.113 +
   1.114 +function addSubAltName(form)
   1.115 +{
   1.116 +  with(form) {
   1.117 +    var len = SubAltNameSelect.length;
   1.118 +    var value;
   1.119 +    var i = 0;
   1.120 +    while(!(i == (SubAltNameRadio.length - 1)) & 
   1.121 +          !(SubAltNameRadio[i].checked == true)) {
   1.122 +      i++;
   1.123 +    }
   1.124 +    if (i != 0) {
   1.125 +      value = SubAltNameText.value + " - " + (i + 1);
   1.126 +    } else {
   1.127 +      value = SubAltNameText.value + " - " + 
   1.128 +              SubAltNameOtherNameOID.value + " - ";
   1.129 +      if (SubAltNameDataType.checked) {
   1.130 +	value += "1 - ";
   1.131 +      } else {
   1.132 +	value += "0 - ";
   1.133 +      }
   1.134 +      value += (i + 1);
   1.135 +      if (SubAltNameOtherNameOID.value == "") {
   1.136 +	alert("Other names must include an OID");
   1.137 +	return false;
   1.138 +      }
   1.139 +    }
   1.140 +
   1.141 +    if ((SubAltNameText.value == "") | (SubAltNameRadio[i].checked != true)) {
   1.142 +      alert("Alternative Names must include values for name and name type.");
   1.143 +    } else {
   1.144 +      SubAltNameSelect.options[len] = new Option(value, value);
   1.145 +    }
   1.146 +  }
   1.147 +  return true;
   1.148 +}
   1.149 +
   1.150 +function deleteSubAltName(form)
   1.151 +{
   1.152 +  with(form) {
   1.153 +    while (SubAltNameSelect.selectedIndex >= 0) {
   1.154 +      SubAltNameSelect[SubAltNameSelect.selectedIndex] = null;
   1.155 +    }
   1.156 +  }
   1.157 +}
   1.158 +  
   1.159 +function addIssuerAltName(form)
   1.160 +{
   1.161 +  with(form)
   1.162 +  {
   1.163 +    var len = IssuerAltNameSelect.length;
   1.164 +    var value;
   1.165 +    var i = 0;
   1.166 +
   1.167 +    while(!(i == (IssuerAltNameRadio.length -1)) & 
   1.168 +          !(IssuerAltNameRadio[i].checked == true)) {
   1.169 +      i++;
   1.170 +    }
   1.171 +    if (i != 0) {
   1.172 +      value = IssuerAltNameText.value + " - " + (i + 1);
   1.173 +    } else {
   1.174 +      value = IssuerAltNameText.value + " - " + 
   1.175 +              IssuerAltNameOtherNameOID.value + " - ";
   1.176 +      if (IssuerAltNameDataType.checked) {
   1.177 +	value += "1 - ";
   1.178 +      } else {
   1.179 +	value += "0 - ";
   1.180 +      }
   1.181 +      value += (i + 1);
   1.182 +      if (IssuerAltNameOtherNameOID.value == "") {
   1.183 +	  alert("Other names must include an OID");
   1.184 +	  return false;
   1.185 +      }
   1.186 +    }
   1.187 +    if ((IssuerAltNameText.value == "") | 
   1.188 +        (IssuerAltNameRadio[i].checked != true)) {
   1.189 +      alert("Alternative Names must include values for name and name type.")
   1.190 +    } else {
   1.191 +      IssuerAltNameSelect.options[len] = new Option(value, value);
   1.192 +    }
   1.193 +  }
   1.194 +  return true;
   1.195 +}
   1.196 +
   1.197 +function deleteIssuerAltName(form)
   1.198 +{
   1.199 +  with(form) {
   1.200 +    while (IssuerAltNameSelect.selectedIndex >= 0) {
   1.201 +      IssuerAltNameSelect[IssuerAltNameSelect.selectedIndex] = null;
   1.202 +    }
   1.203 +  }
   1.204 +}
   1.205 +
   1.206 +
   1.207 +
   1.208 +function addNameConstraint(form)
   1.209 +{
   1.210 +  with(form) {
   1.211 +    var len = NameConstraintSelect.length;
   1.212 +    var value;
   1.213 +    var i = 0;
   1.214 +    var min = NameConstraintMin.value;
   1.215 +    var max = NameConstraintMax.value;
   1.216 +
   1.217 +    while(!(i == (NameConstraintRadio.length - 1) ) & 
   1.218 +          !(NameConstraintRadio[i].checked == true)) {
   1.219 +      i++;
   1.220 +    }
   1.221 +    value = NameConstraintText.value + " - ";
   1.222 +    if (i == 0) {
   1.223 +      value += NameConstraintOtherNameOID.value + " - ";
   1.224 +      if (NameConstraintNameDataType.checked) {
   1.225 +	value += "1 - ";
   1.226 +      } else {
   1.227 +	value += "0 - ";
   1.228 +      }
   1.229 +      if (NameConstraintOtherNameOID.value == "") {
   1.230 +	alert("Other names must include an OID");
   1.231 +	return false;
   1.232 +      }
   1.233 +    }
   1.234 +    value += (i + 1) + " - ";
   1.235 +    if (NameConstraintTypeRadio[0].checked == true) {
   1.236 +      value += "p - ";
   1.237 +    } else {
   1.238 +      value += "e - ";
   1.239 +    }
   1.240 +    value += min + " - " + max;
   1.241 +    if ((min == "") | (NameConstraintText.value == "") | 
   1.242 +        (NameConstraintRadio[i].checked != true)) {
   1.243 +      alert("Name Constraints must include values for minimum, name, and name type.")
   1.244 +    } else {
   1.245 +      NameConstraintSelect.options[len] = new Option(value, value);
   1.246 +    }
   1.247 +  }
   1.248 +  return true;
   1.249 +}
   1.250 +
   1.251 +function deleteNameConstraint(form)
   1.252 +{
   1.253 +  with(form) {
   1.254 +    while (NameConstraintSelect.selectedIndex >= 0) {
   1.255 +      NameConstraintSelect[NameConstraintSelect.selectedIndex] = null;
   1.256 +    }
   1.257 +  }
   1.258 +}
   1.259 +
   1.260 +
   1.261 +function submit_it()
   1.262 +{
   1.263 +  save_cur_page(cur_page);
   1.264 +
   1.265 +  var ver1 = (ver == 1);
   1.266 +  var ver3 = (ver == 3);
   1.267 +  var array_string;
   1.268 +  var serial        = ext_page_array[0][10][0];
   1.269 +  var serial_number = ext_page_array[0][12][0];
   1.270 +  var manValidity   = ext_page_array[0][19][0];
   1.271 +  var notBefore     = ext_page_array[0][20][0];
   1.272 +  var notAfter      = ext_page_array[0][21][0];
   1.273 +  var subject       = ext_page_array[0][22][0];
   1.274 +
   1.275 +  if (subject == "") {
   1.276 +    alert("The DN field must contain some data");
   1.277 +    return false;
   1.278 +  }
   1.279 +  if (!serial & serial_number == "") {
   1.280 +    alert("No serial number specified");
   1.281 +    return false;
   1.282 +  }
   1.283 +  if (ext_page_array[0][15][0]) {
   1.284 +    var keygen = "<keygen name=\"key\" challenge=\"foo\">";
   1.285 +  } else {
   1.286 +    switch (ext_page_array[0][17][0]) {
   1.287 +      case 2:
   1.288 +        var keygen = "<keygen keytype=\"dsa\" pqg=\"MIGdAkEAjfKklEkidqo9JXWbsGhpy+rA2Dr7jQz3y7gyTw14guXQdi/FtyEOr8Lprawyq3qsSWk9+/g3JMLsBzbuMcgCkQIVAMdzIYxzfsjumTtPLe0w9I7azpFfAkEAYm0CeDnqChNBMWOlW0y1ACmdVSKVbO/LO/8Q85nOLC5xy53l+iS6v1jlt5UhklycxC6fb0ZLCIzFcq9T5teIAg==\" name=\"key\" challenge=\"foo\">";
   1.289 +	break;
   1.290 +      case 1:
   1.291 +        var keygen = "<keygen keytype=\"dsa\" pqg=\"MIHaAmDCboVgX0+6pEeMlbwsasWDVBcJNHPKMzkq9kbCRK2U3k+tE15n+Dc2g3ZjDYr1um51e2iLC34/BwAAAAAAAAAAAAAAAAAAAAAAAAABbBhnlFN5Djmt0Mk8cdEBY5H8iPMCFMhUnFtbpjn3EyfH2DjVg3ALh7FtAmA2zWzhpeCwvOTjYnQorlXiv0WcnSiWmaC79CRYkFt5i+UEfRxwP1eNGJBVB1T+CPW6JGd4WhgsqtSf53pn5DEtv++O7lNfXyOhWhb3KaWHYIx8fuAXtioIWkWmpfEIVZA=\" name=\"key\" challenge=\"foo\">";
   1.292 +	break;
   1.293 +      case 0:
   1.294 +        var keygen = "<keygen keytype=\"dsa\" pqg=\"MIIBHAKBgId8SiiWrcdua5zbsBhPkKfFcnHBG7T/bQla7c6OixGjjmSSuq2fJLvMKa579CaxHxLZzZZXIHmAk9poRgWl2GUUkCJ68XSum8OQzDPXPsofcEdeANjw3mIAAAAAAAAAAAAAAAAAAAAAAAAIE+MkW5hguLIQqWvEVi9dMpbNu6OZAhTIA+y3TgyiwA0D8pt686ofaL1IOQKBgAiZQC6UCXztr2iXxJrAC+51gN5oX/R9Thilln9RGegsWnHrdxUOpcm5vAWp1LU8TOXtujE8kqkm3UxIRhUWQORe9IxLANAXmZJqkw9FEVHkxj6Cy9detwT2MyBzSwS6avsf7aLisgHmI/IHSeapJsQ3NQa3rikb6zRiqIV+TVa6\" name=\"key\" challenge=\"foo\">";
   1.295 +        break;
   1.296 +    }
   1.297 +  }
   1.298 +  array_string =  build_array_string();
   1.299 +  hiddens = "<input type=\"hidden\" name=\"subject\" value=\'" + subject + "\'> \n" +
   1.300 +            "<input type=\"hidden\" name=\"serial-auto\" value=\"" + serial + "\"> \n" +
   1.301 +            "<input type=\"hidden\" name=\"serial_value\" value=\"" + serial_number + "\"> \n" +
   1.302 +            "<input type=\"hidden\" name=\"ver-1\" value=\"" + ver1 + "\"> \n" +
   1.303 +            "<input type=\"hidden\" name=\"ver-3\" value=\"" + ver3 + "\"> \n" +
   1.304 +            "<input type=\"hidden\" name=\"notBefore\" value=\"" + notBefore + "\"> \n" +
   1.305 +            "<input type=\"hidden\" name=\"notAfter\" value=\"" + notAfter + "\"> \n" +
   1.306 +            "<input type=\"hidden\" name=\"manValidity\" value=\"" + manValidity + "\"> \n" +
   1.307 +            array_string;
   1.308 +
   1.309 +  var good_submit_page =
   1.310 +    '<html>' +
   1.311 +    '<BODY TEXT="#000000" LINK="#000000" VLINK="#000000" ALINK="#FF0000" BGCOLOR="#FFFFFF">' +
   1.312 +    '<form method="post" action="' + script_url + '">' +
   1.313 +    'Select size for your key:' + keygen + '</p>' +
   1.314 +    '<input type="submit"></p>' +
   1.315 +    hiddens +
   1.316 +    '</form>\n' +
   1.317 +    '</body>\n' +
   1.318 +    '</html>\n';
   1.319 +
   1.320 +  window.frames['right'].document.write(good_submit_page);
   1.321 +  window.frames['right'].document.close();
   1.322 +  cur_page = max_pages + 1;
   1.323 +  make_left_frame(window);
   1.324 +  return false;
   1.325 +}
   1.326 +
   1.327 +
   1.328 +
   1.329 +function build_array_string()
   1.330 +{
   1.331 +  var pg;
   1.332 +  var array_string = '';
   1.333 +  var pages;
   1.334 +
   1.335 +  if ((ext_page_array[3][4][0] > 0) && ext_page_array[3][3][0]) {
   1.336 +    pages = 4 + parseInt(ext_page_array[3][4][0]);
   1.337 +  } else {
   1.338 +    pages = 4;
   1.339 +  }
   1.340 +  for (pg = 1; pg < pages; pg++) {
   1.341 +    if ((pg > 1 || (ver == 3)) && (ext_page_array[pg].length > 1)) {
   1.342 +      if (pg < 4) {
   1.343 +	for (i = 0; i < ext_page_array[pg].length; i++) {
   1.344 +	  if (ext_page_array[pg][i][3].indexOf("radio") == -1) {
   1.345 +	    if (ext_page_array[pg][i][3].indexOf("multiple") == -1) {
   1.346 +	      array_string +=  '<input type=\"hidden\" name=\"' + 
   1.347 +                               ext_page_array[pg][i][1] + '\" value=\'' + 
   1.348 +                               ext_page_array[pg][i][0] + '\'> \n';
   1.349 +	    } else {
   1.350 +	      for (k = 0; k < ext_page_array[pg][i][0].length; k++) {
   1.351 +		array_string += '<input type=\"hidden\" name=\"' + 
   1.352 +                                ext_page_array[pg][i][1] + k + '\" value=\'' + 
   1.353 +                                ext_page_array[pg][i][0][k] + '\'> \n';
   1.354 +	      }
   1.355 +	    }
   1.356 +	  } else {
   1.357 +	    array_string += '<input type=\"hidden\" name=\"' + 
   1.358 +                            ext_page_array[pg][i][1] + '-' + 
   1.359 +			    ext_page_array[pg][i][2] + '\" value=\'' + 
   1.360 +			    ext_page_array[pg][i][0] + '\'> \n';
   1.361 +	  }
   1.362 +	}
   1.363 +      } else {
   1.364 +	for (i = 0; i < ext_page_array[pg].length; i++) {
   1.365 +	  if (ext_page_array[pg][i][3].indexOf("radio") == -1) {
   1.366 +	    if (ext_page_array[pg][i][3].indexOf("multiple") == -1) {
   1.367 +	      array_string += '<input type=\"hidden\" name=\"' + 
   1.368 +	                      'CA#' + (pg - 3) + '-' + 
   1.369 +			      ext_page_array[pg][i][1] + '\" value=\'' + 
   1.370 +			      ext_page_array[pg][i][0] +'\'> \n';
   1.371 +	    } else {
   1.372 +	      for (k = 0; k < ext_page_array[pg][i][0].length; k++) {
   1.373 +		array_string += '<input type=\"hidden\" name=\"' + 
   1.374 +		                'CA#' + (pg - 3) + '-' + 
   1.375 +				ext_page_array[pg][i][1] + k + '\" value=\'' + 
   1.376 +				ext_page_array[pg][i][0][k] + '\'> \n';
   1.377 +	      }
   1.378 +	    }
   1.379 +	  } else {
   1.380 +	    array_string += '<input type=\"hidden\" name=\"' + 
   1.381 +	                    'CA#' + (pg - 3) + '-' + 
   1.382 +			    ext_page_array[pg][i][1] + '-' + 
   1.383 +			    ext_page_array[pg][i][2] + '\" value=\'' + 
   1.384 +			    ext_page_array[pg][i][0] + '\'> \n';
   1.385 +	  }
   1.386 +	}
   1.387 +      }
   1.388 +    }
   1.389 +  }
   1.390 +  return array_string;
   1.391 +}
   1.392 +
   1.393 +
   1.394 +
   1.395 +function init_ext_page_array()
   1.396 +{
   1.397 +  for (i = 0; i < max_pages; i++) {
   1.398 +    ext_page_array[i] = '';
   1.399 +  }
   1.400 +}
   1.401 +
   1.402 +function ca_num_change(n,ca_form)
   1.403 +{
   1.404 +  with(ca_form) {
   1.405 +    n = parseInt(n,10);
   1.406 +    if (caChoiceradio[2].checked) {
   1.407 +      if (n) {
   1.408 +	update_left_frame(n);
   1.409 +      } else {
   1.410 +	update_left_frame(0);
   1.411 +      }
   1.412 +    }
   1.413 +  }
   1.414 +}
   1.415 +
   1.416 +function choice_change(ca_form)
   1.417 +{
   1.418 +  with(ca_form) {
   1.419 +    if (caChoiceradio[2].checked) {
   1.420 +      ca_num_change(manCAs.value,ca_form);
   1.421 +    } else {
   1.422 +      update_left_frame(0);
   1.423 +    }
   1.424 +  }
   1.425 +}
   1.426 +
   1.427 +function update_left_frame(n)
   1.428 +{
   1.429 +  var add_string = '';
   1.430 +  for (var i = 0; i < n; i++) {
   1.431 +    var j = i + 1;
   1.432 +    add_string = add_string + ',1, \'CA #' + j + '\'';
   1.433 +  }
   1.434 +  top.add_index_list = add_string;
   1.435 +  num_ca = n;
   1.436 +  make_left_frame(window);
   1.437 +}
   1.438 +
   1.439 +function set_ver1()
   1.440 +// redraws the extensions page for version 1 certificates
   1.441 +{
   1.442 +  ver = 1
   1.443 +  if (cur_page == 2 || cur_page == 3) {
   1.444 +    switch_right_frame(window, cur_page, cur_page);
   1.445 +  }
   1.446 +}
   1.447 +
   1.448 +
   1.449 +function set_ver3()
   1.450 +// redraws the extensions page for version 3 certificates
   1.451 +{
   1.452 +  ver = 3
   1.453 +  if (cur_page == 2) {
   1.454 +    switch_right_frame(window, 0, 2);
   1.455 +  } else if (cur_page == 3) {
   1.456 +    switch_right_frame(window, 0, 3);
   1.457 +  }
   1.458 +}
   1.459 +
   1.460 +function reset_subject(marker, value, form)
   1.461 +// Updates the subject field from a subordinate field
   1.462 +{
   1.463 +  with(form) {
   1.464 +    var field_sep = '", ';
   1.465 +    var begin_index = subject.value.indexOf(marker);
   1.466 +    if (begin_index != 0 && subject.value[begin_index - 1] != ' ') {
   1.467 +      begin_index = subject.value.indexOf(marker, begin_index +1);
   1.468 +    }
   1.469 +    var end_index = subject.value.indexOf(field_sep, begin_index);
   1.470 +    if (begin_index > -1) {       // is it a delete/change?
   1.471 +      if (end_index == -1) {      // is it the last one (includes only one)?
   1.472 +        if (value.length > 0) {   // do I have to change it?
   1.473 +          if (begin_index == 0) { // is is the only one?
   1.474 +            subject.value = marker + '"' + value + '"';
   1.475 +          } else {                // it is the last of many
   1.476 +            subject.value = subject.value.substring(0,begin_index) + 
   1.477 +	                    marker + '"' + value + '"';
   1.478 +          }
   1.479 +        } else {                  //  must be a delete
   1.480 +          if (begin_index == 0) { // is it the only one?
   1.481 +            begin_index += 2;
   1.482 +          }
   1.483 +          subject.value = subject.value.substring(0,(begin_index - 2));
   1.484 +        }
   1.485 +      } else {                    // it is the first of many or a middle one
   1.486 +        if (value.length >0) {    // do I have to change it?
   1.487 +          subject.value = 
   1.488 +	  	subject.value.substring(0,(begin_index + marker.length + 1)) + 
   1.489 +		value + subject.value.substring(end_index,subject.length);
   1.490 +        } else {                  // it is a delete
   1.491 +          subject.value = subject.value.substring(0,begin_index) + 
   1.492 +	        subject.value.substring((end_index + 3),subject.length);
   1.493 +        }
   1.494 +      }
   1.495 +    } else {                      // It is either an insert or a do nothing
   1.496 +      if (value.length > 0) {     // is it an insert?
   1.497 +        if (subject.value.length == 0) {  // is subject currently empty?
   1.498 +          subject.value = marker + '"' + value + '"';
   1.499 +        } else {
   1.500 +          subject.value = subject.value + ', ' + marker + '"' + value + '"';
   1.501 +        }
   1.502 +      }
   1.503 +    }
   1.504 +  }
   1.505 +}
   1.506 +
   1.507 +
   1.508 +
   1.509 +function reset_subjectFields(form)
   1.510 +// updates all the subordinate fields from the subject field of a form
   1.511 +// **** move the strings to global variables, to make maintentance easier ****
   1.512 +{
   1.513 +
   1.514 +  update_subject_Field(form, 'CN=\"', form.name);
   1.515 +  update_subject_Field(form, 'MAIL=\"', form.email);
   1.516 +  update_subject_Field(form, 'O=\"', form.org);
   1.517 +  update_subject_Field(form, 'C=\"', form.country);
   1.518 +  update_subject_Field(form, ' L=\"', form.loc);
   1.519 +  update_subject_Field(form, 'ST=\"', form.state);
   1.520 +  update_subject_Field(form, 'E=\"', form.email);
   1.521 +  update_subject_Field(form, 'OU=\"', form.org_unit);
   1.522 +  update_subject_Field(form, 'UID=\"', form.uid);
   1.523 +}
   1.524 +
   1.525 +function update_subject_Field(form, marker, update_field)
   1.526 +//updates a single subordinate field from the subject field of a form
   1.527 +// *** need to deal with the two types of e-mail addresses **************
   1.528 +{
   1.529 +  with(form) {
   1.530 +    var field_sep = '", ';
   1.531 +    var begin_index = subject.value.indexOf(marker) + marker.length;
   1.532 +    var end_index = subject.value.indexOf(field_sep, begin_index);
   1.533 +    if (end_index == -1) {
   1.534 +      end_index = subject.value.indexOf('"',begin_index);
   1.535 +    }
   1.536 +    if (begin_index != (-1 + marker.length) ) {
   1.537 +      update_field.value = subject.value.substring(begin_index, end_index);
   1.538 +    } else {
   1.539 +      update_field.value = '';
   1.540 +    }
   1.541 +  }
   1.542 +}
   1.543 +
   1.544 +
   1.545 +function switch_mail(form)
   1.546 +// **** Do I want to delete the other type of e-mail address ? ************
   1.547 +{
   1.548 +  if (form.email_type[0].checked) {
   1.549 +    var del = 'E=';
   1.550 +    var ins = 'MAIL=';
   1.551 +  } else {
   1.552 +    var del = 'MAIL=';
   1.553 +    var ins = 'E=';
   1.554 +  }
   1.555 +  reset_subject(del, '', form);
   1.556 +  reset_subject(ins, form.email.value, form);
   1.557 +}
   1.558 +
   1.559 +function make_page_intro(title, bgcolor)
   1.560 +{
   1.561 +  var style = '<STYLE TYPE="text/css">BODY{' +
   1.562 +    'font-family: Geneva,MS Sans Serif,Arial,Lucida,Helvetica,sans-serif;' +
   1.563 +    'font-size: 10pt;' +
   1.564 +    '}' +
   1.565 +    'TD{' +
   1.566 +    'font-family: Geneva,MS Sans Serif,Arial,Lucida,Helvetica,sans-serif;' +
   1.567 +    'font-size: 10pt;}' +
   1.568 +    '</STYLE>';
   1.569 +
   1.570 +  if (bgcolor == null) { bgcolor = "#C0C0C0"; }
   1.571 +  return '<HTML><HEAD>' +
   1.572 +    '<TITLE>' + title + '</TITLE>' +
   1.573 +    '</HEAD>' +
   1.574 +    '<BODY TEXT="#000000" LINK="#000000" VLINK="#000000" ALINK="#FF0000" ' +
   1.575 +          'BGCOLOR="' + bgcolor + '">';
   1.576 +}
   1.577 +
   1.578 +
   1.579 +function make_left_frame(window)
   1.580 +{
   1.581 +  with (window.frames['index']) {
   1.582 +    eval ('index_string = make_left_frame_page(cur_page, ' 
   1.583 +           + index_list + add_index_list + ' )');
   1.584 +    fool1 = make_page_intro(index_label, "#FFFFFF") +
   1.585 +      index_string + '</BODY></HTML>';
   1.586 +    document.write(fool1);
   1.587 +    document.close();
   1.588 +  }
   1.589 +}
   1.590 +
   1.591 +
   1.592 +function save_cur_page(page_number)
   1.593 +{
   1.594 +  var len;
   1.595 +  var pg = page_number - 1;
   1.596 +  if (window.frames['right'].document.forms.length != 0) {
   1.597 +    with (window.frames['right'].document) {
   1.598 +      if ((page_number != 2 && page_number != 3 && page_number <= max_pages) || 
   1.599 +	  ver == 3) {
   1.600 +        ext_page_array[pg] = new Array(forms[0].elements.length);
   1.601 +        for (i = 0; i < forms[0].elements.length; i++) {
   1.602 +	  ext_page_array[pg][i] = new Array(4);
   1.603 +	  switch (forms[0].elements[i].type) {
   1.604 +	  case 'radio': 
   1.605 +          case 'checkbox':
   1.606 +	    ext_page_array[pg][i][0] = forms[0].elements[i].checked;
   1.607 +	    break;
   1.608 +	  case 'select-one':
   1.609 +	    ext_page_array[pg][i][0] = forms[0].elements[i].selectedIndex;
   1.610 +	    break;
   1.611 +	  case 'select-multiple':
   1.612 +	    len = forms[0].elements[i].options.length;
   1.613 +	    ext_page_array[pg][i][0] = new Array(len);
   1.614 +	    for(k = 0; k < len; k++) {
   1.615 +	      ext_page_array[pg][i][0][k] = forms[0].elements[i].options[k].value;
   1.616 +	    }
   1.617 +	    break;
   1.618 +	  default:
   1.619 +	    ext_page_array[pg][i][0] = forms[0].elements[i].value;
   1.620 +	  }
   1.621 +	  ext_page_array[pg][i][1] = forms[0].elements[i].name;
   1.622 +	  ext_page_array[pg][i][2] = forms[0].elements[i].value;
   1.623 +	  ext_page_array[pg][i][3] = forms[0].elements[i].type;
   1.624 +        }
   1.625 +      }
   1.626 +    }
   1.627 +  }
   1.628 +}
   1.629 +
   1.630 +function reload_form(page_number)
   1.631 +{
   1.632 +  var j = page_number - 1;
   1.633 +  with (window.frames['right'].document) {
   1.634 +    if (((page_number < 2 || page_number > 3) || ver == 3) 
   1.635 +	&& page_number != 0 && (ext_page_array[j].length > 1)) {
   1.636 +      for (i = 0; i < ext_page_array[j].length; i++) {
   1.637 +	switch (forms[0].elements[i].type) {
   1.638 +	case 'radio': case 'checkbox':
   1.639 +	  forms[0].elements[i].checked = ext_page_array[j][i][0];
   1.640 +	  break;
   1.641 +	case 'select-one':
   1.642 +	  forms[0].elements[i].selectedIndex = ext_page_array[j][i][0];
   1.643 +	  break;
   1.644 +	case 'select-multiple':
   1.645 +	  for (k = 0; k < ext_page_array[j][i][0].length; k++) {
   1.646 +	    forms[0].elements[i].options[k] = 
   1.647 +	        new Option(ext_page_array[j][i][0][k], 
   1.648 +			   ext_page_array[j][i][0][k]);
   1.649 +	  }
   1.650 +	  break;
   1.651 +	default:
   1.652 +	  forms[0].elements[i].value = ext_page_array[j][i][0];
   1.653 +	}
   1.654 +      }
   1.655 +    }
   1.656 +  }
   1.657 +}
   1.658 +
   1.659 +function switch_right_frame(top_window, old_pane, new_pane)
   1.660 +{
   1.661 +  var ext_page_stnd =
   1.662 +    make_page_intro(standard_extensions_index_label, "#FFFFFF") +
   1.663 +    '<IFRAME WIDTH="100%" HEIGHT="100%" FRAMEBORDER=0 ID="ext" ' +
   1.664 +    'SRC="stnd_ext_form.html">' +
   1.665 +    '</IFRAME></body></html>';
   1.666 +
   1.667 +  var ext_page_nscp = 
   1.668 +    make_page_intro(netscape_extensions_index_label, "#FFFFFF") +
   1.669 +    '<IFRAME WIDTH="100%" HEIGHT="100%" FRAMEBORDER=0 ID="ext" ' +
   1.670 +    'SRC="nscp_ext_form.html">' +
   1.671 +    '</IFRAME></body></html>';
   1.672 +
   1.673 +  var ext_page_ca =
   1.674 +    make_page_intro(certifying_authorities_index_label, "#FFFFFF") +
   1.675 +    '<IFRAME WIDTH="100%" HEIGHT="100%" FRAMEBORDER=0 ID="ext" ' +
   1.676 +    'SRC="ca.html">' +
   1.677 +    '</IFRAME></body</html>';
   1.678 +
   1.679 +  var ext_page_ca_exp =
   1.680 +    make_page_intro('Certifying Authority Details', "#FFFFFF") +
   1.681 +    '<IFRAME WIDTH="100%" HEIGHT="100%" FRAMEBORDER=0 ID="ext" ' +
   1.682 +    'SRC="ca_form.html">' +
   1.683 +    '</IFRAME></body></html>';
   1.684 +
   1.685 +
   1.686 +  if (old_pane > 0 && cur_page <= max_pages) {
   1.687 +    save_cur_page(old_pane);
   1.688 +  }
   1.689 +  cur_page = new_pane;
   1.690 +  make_left_frame(top_window);
   1.691 +  if (new_pane == 2 || new_pane == 3) {
   1.692 +    if (ver == 1) {
   1.693 +      frames['right'].document.write(ext_page_ver1);
   1.694 +      frames['right'].document.close();
   1.695 +    } else if (new_pane == 2) {
   1.696 +      frames['right'].document.write(ext_page_nscp);
   1.697 +      frames['right'].document.close();
   1.698 +      reload_form(new_pane);
   1.699 +    } else {
   1.700 +      frames['right'].document.write(ext_page_stnd);
   1.701 +      frames['right'].document.close();
   1.702 +      reload_form(new_pane);
   1.703 +    }
   1.704 +  } else if (new_pane == 4) {
   1.705 +    frames['right'].document.write(ext_page_ca);
   1.706 +    frames['right'].document.close();
   1.707 +    reload_form(new_pane);
   1.708 +  } else if (new_pane == 1) {
   1.709 +    frames['right'].document.write(main_page);
   1.710 +    frames['right'].document.close();
   1.711 +    reload_form(new_pane);
   1.712 +  } else {
   1.713 +    frames['right'].document.write(ext_page_ca_exp);
   1.714 +    frames['right'].document.close();
   1.715 +    reload_form(new_pane);
   1.716 +  }
   1.717 +}
   1.718 +
   1.719 +function make_left_frame_page(selected)
   1.720 +{
   1.721 +  var n_strings = ( make_left_frame_page.arguments.length - 1 ) / 2;
   1.722 +  var table_background;
   1.723 +  var command;
   1.724 +  var indent;
   1.725 +  var label;
   1.726 +  var ret_string = "";
   1.727 +    
   1.728 +  ret_string += '<TABLE CELLSPACING=4>';
   1.729 +  for ( var i = 1; i <= n_strings; i++ ) {
   1.730 +    if ( i == selected ) {
   1.731 +      table_background = 'BGCOLOR=#BBCCBB';
   1.732 +    } else {
   1.733 +      table_background = '';
   1.734 +    }
   1.735 +	
   1.736 +    indent = make_left_frame_page.arguments[(i*2) - 1];
   1.737 +    label =  make_left_frame_page.arguments[(i*2)];
   1.738 +
   1.739 +    if ( indent == 0 ) {
   1.740 +      ret_string += ('<TR><TD COLSPAN=2 ' + table_background + '>');
   1.741 +    } else {
   1.742 +      ret_string += ('<TR><TD>&nbsp;&nbsp;</TD><TD ' + table_background + '>');
   1.743 +    }
   1.744 +
   1.745 +    command = "'parent.switch_right_frame(parent," + selected + "," + i + ")'";
   1.746 +    ret_string += ('<A HREF="javascript:void setTimeout(' + command + ',0)">');
   1.747 +    if ( indent == 0 ) { ret_string += "<B>"; }
   1.748 +    ret_string += label;
   1.749 +    if ( indent == 0 ) { ret_string += "</B>"; }
   1.750 +    ret_string += '</A></TD></TR>';
   1.751 +  }
   1.752 +  if (selected == (max_pages + 1)) {
   1.753 +    table_background = 'BGCOLOR=#BBCCBB';
   1.754 +  } else {
   1.755 +    table_background = '';
   1.756 +  }
   1.757 +  ret_string +=
   1.758 +    '<TR><TD COLSPAN=2 ' + table_background + 
   1.759 +    '><b><A HREF="javascript:void setTimeout(\'top.submit_it()\', 0)">Finish</A></b>' +
   1.760 +    '</TD></TR>' +
   1.761 +    '<input type="submit"></form>' + 
   1.762 +    '</TABLE>';
   1.763 +  return(ret_string);
   1.764 +}
   1.765 +
   1.766 +
   1.767 +function make_page(window)
   1.768 +// Draws the initial page setup
   1.769 +{
   1.770 +  selected = cur_page
   1.771 +  init_ext_page_array()
   1.772 +
   1.773 +  with (window.frames['right']) {
   1.774 +    location="main.html";
   1.775 +//  document.write(main_page);
   1.776 +//  document.close();
   1.777 +  }
   1.778 +
   1.779 +  make_left_frame(window);
   1.780 +
   1.781 +}
   1.782 +</script>
   1.783 +
   1.784 +</HEAD>
   1.785 +<title>Cert-O-Matic</title>
   1.786 +  <FRAMESET cols="150,*" BORDER=3 ONLOAD="make_page(window)">
   1.787 +      <FRAME SRC="about:blank" ID="index" NAME="index"
   1.788 +           MARGINWIDTH=15 MARGINHEIGHT=10 BORDER=3>
   1.789 +      <FRAME SRC="about:blank" ID="right" NAME="right"
   1.790 +           MARGINWIDTH=15 MARGINHEIGHT=10 BORDER=3>
   1.791 +  </FRAMESET>
   1.792 +</HTML>

mercurial