1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/security/manager/pki/resources/content/certManager.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,588 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.7 + 1.8 +const nsIFilePicker = Components.interfaces.nsIFilePicker; 1.9 +const nsFilePicker = "@mozilla.org/filepicker;1"; 1.10 +const nsIX509CertDB = Components.interfaces.nsIX509CertDB; 1.11 +const nsX509CertDB = "@mozilla.org/security/x509certdb;1"; 1.12 +const nsIX509Cert = Components.interfaces.nsIX509Cert; 1.13 +const nsICertTree = Components.interfaces.nsICertTree; 1.14 +const nsCertTree = "@mozilla.org/security/nsCertTree;1"; 1.15 +const nsIDialogParamBlock = Components.interfaces.nsIDialogParamBlock; 1.16 +const nsDialogParamBlock = "@mozilla.org/embedcomp/dialogparam;1"; 1.17 +const nsIPKIParamBlock = Components.interfaces.nsIPKIParamBlock; 1.18 +const nsPKIParamBlock = "@mozilla.org/security/pkiparamblock;1"; 1.19 +const nsINSSCertCache = Components.interfaces.nsINSSCertCache; 1.20 +const nsNSSCertCache = "@mozilla.org/security/nsscertcache;1"; 1.21 + 1.22 +var key; 1.23 + 1.24 +var selected_certs = []; 1.25 +var selected_tree_items = []; 1.26 +var selected_index = []; 1.27 +var certdb; 1.28 + 1.29 +var caTreeView; 1.30 +var serverTreeView; 1.31 +var emailTreeView; 1.32 +var userTreeView; 1.33 +var orphanTreeView; 1.34 + 1.35 +function LoadCerts() 1.36 +{ 1.37 + window.crypto.enableSmartCardEvents = true; 1.38 + document.addEventListener("smartcard-insert", onSmartCardChange, false); 1.39 + document.addEventListener("smartcard-remove", onSmartCardChange, false); 1.40 + 1.41 + certdb = Components.classes[nsX509CertDB].getService(nsIX509CertDB); 1.42 + var certcache = Components.classes[nsNSSCertCache].createInstance(nsINSSCertCache); 1.43 + 1.44 + certcache.cacheAllCerts(); 1.45 + 1.46 + caTreeView = Components.classes[nsCertTree] 1.47 + .createInstance(nsICertTree); 1.48 + caTreeView.loadCertsFromCache(certcache, nsIX509Cert.CA_CERT); 1.49 + document.getElementById('ca-tree') 1.50 + .treeBoxObject.view = caTreeView; 1.51 + 1.52 + serverTreeView = Components.classes[nsCertTree] 1.53 + .createInstance(nsICertTree); 1.54 + serverTreeView.loadCertsFromCache(certcache, nsIX509Cert.SERVER_CERT); 1.55 + document.getElementById('server-tree') 1.56 + .treeBoxObject.view = serverTreeView; 1.57 + 1.58 + emailTreeView = Components.classes[nsCertTree] 1.59 + .createInstance(nsICertTree); 1.60 + emailTreeView.loadCertsFromCache(certcache, nsIX509Cert.EMAIL_CERT); 1.61 + document.getElementById('email-tree') 1.62 + .treeBoxObject.view = emailTreeView; 1.63 + 1.64 + userTreeView = Components.classes[nsCertTree] 1.65 + .createInstance(nsICertTree); 1.66 + userTreeView.loadCertsFromCache(certcache, nsIX509Cert.USER_CERT); 1.67 + document.getElementById('user-tree') 1.68 + .treeBoxObject.view = userTreeView; 1.69 + 1.70 + orphanTreeView = Components.classes[nsCertTree] 1.71 + .createInstance(nsICertTree); 1.72 + orphanTreeView.loadCertsFromCache(certcache, nsIX509Cert.UNKNOWN_CERT); 1.73 + document.getElementById('orphan-tree') 1.74 + .treeBoxObject.view = orphanTreeView; 1.75 + 1.76 + enableBackupAllButton(); 1.77 +} 1.78 + 1.79 +function enableBackupAllButton() 1.80 +{ 1.81 + var rowCnt = userTreeView.rowCount; 1.82 + var backupAllButton=document.getElementById('mine_backupAllButton'); 1.83 + backupAllButton.disabled = (rowCnt < 1); 1.84 +} 1.85 + 1.86 +function getSelectedCerts() 1.87 +{ 1.88 + var ca_tab = document.getElementById("ca_tab"); 1.89 + var mine_tab = document.getElementById("mine_tab"); 1.90 + var others_tab = document.getElementById("others_tab"); 1.91 + var websites_tab = document.getElementById("websites_tab"); 1.92 + var orphan_tab = document.getElementById("orphan_tab"); 1.93 + var items = null; 1.94 + if (ca_tab.selected) { 1.95 + items = caTreeView.selection; 1.96 + } else if (mine_tab.selected) { 1.97 + items = userTreeView.selection; 1.98 + } else if (others_tab.selected) { 1.99 + items = emailTreeView.selection; 1.100 + } else if (websites_tab.selected) { 1.101 + items = serverTreeView.selection; 1.102 + } else if (orphan_tab.selected) { 1.103 + items = orphanTreeView.selection; 1.104 + } 1.105 + selected_certs = []; 1.106 + var cert = null; 1.107 + var nr = 0; 1.108 + if (items != null) nr = items.getRangeCount(); 1.109 + if (nr > 0) { 1.110 + for (var i=0; i<nr; i++) { 1.111 + var o1 = {}; 1.112 + var o2 = {}; 1.113 + items.getRangeAt(i, o1, o2); 1.114 + var min = o1.value; 1.115 + var max = o2.value; 1.116 + for (var j=min; j<=max; j++) { 1.117 + if (ca_tab.selected) { 1.118 + cert = caTreeView.getCert(j); 1.119 + } else if (mine_tab.selected) { 1.120 + cert = userTreeView.getCert(j); 1.121 + } else if (others_tab.selected) { 1.122 + cert = emailTreeView.getCert(j); 1.123 + } else if (websites_tab.selected) { 1.124 + cert = serverTreeView.getCert(j); 1.125 + } else if (orphan_tab.selected) { 1.126 + cert = orphanTreeView.getCert(j); 1.127 + } 1.128 + if (cert) { 1.129 + var sc = selected_certs.length; 1.130 + selected_certs[sc] = cert; 1.131 + selected_index[sc] = j; 1.132 + } 1.133 + } 1.134 + } 1.135 + } 1.136 +} 1.137 + 1.138 +function getSelectedTreeItems() 1.139 +{ 1.140 + var ca_tab = document.getElementById("ca_tab"); 1.141 + var mine_tab = document.getElementById("mine_tab"); 1.142 + var others_tab = document.getElementById("others_tab"); 1.143 + var websites_tab = document.getElementById("websites_tab"); 1.144 + var orphan_tab = document.getElementById("orphan_tab"); 1.145 + var items = null; 1.146 + if (ca_tab.selected) { 1.147 + items = caTreeView.selection; 1.148 + } else if (mine_tab.selected) { 1.149 + items = userTreeView.selection; 1.150 + } else if (others_tab.selected) { 1.151 + items = emailTreeView.selection; 1.152 + } else if (websites_tab.selected) { 1.153 + items = serverTreeView.selection; 1.154 + } else if (orphan_tab.selected) { 1.155 + items = orphanTreeView.selection; 1.156 + } 1.157 + selected_certs = []; 1.158 + selected_tree_items = []; 1.159 + selected_index = []; 1.160 + var tree_item = null; 1.161 + var nr = 0; 1.162 + if (items != null) nr = items.getRangeCount(); 1.163 + if (nr > 0) { 1.164 + for (var i=0; i<nr; i++) { 1.165 + var o1 = {}; 1.166 + var o2 = {}; 1.167 + items.getRangeAt(i, o1, o2); 1.168 + var min = o1.value; 1.169 + var max = o2.value; 1.170 + for (var j=min; j<=max; j++) { 1.171 + if (ca_tab.selected) { 1.172 + tree_item = caTreeView.getTreeItem(j); 1.173 + } else if (mine_tab.selected) { 1.174 + tree_item = userTreeView.getTreeItem(j); 1.175 + } else if (others_tab.selected) { 1.176 + tree_item = emailTreeView.getTreeItem(j); 1.177 + } else if (websites_tab.selected) { 1.178 + tree_item = serverTreeView.getTreeItem(j); 1.179 + } else if (orphan_tab.selected) { 1.180 + tree_item = orphanTreeView.getTreeItem(j); 1.181 + } 1.182 + if (tree_item) { 1.183 + var sc = selected_tree_items.length; 1.184 + selected_tree_items[sc] = tree_item; 1.185 + selected_index[sc] = j; 1.186 + } 1.187 + } 1.188 + } 1.189 + } 1.190 +} 1.191 + 1.192 +function ca_enableButtons() 1.193 +{ 1.194 + var items = caTreeView.selection; 1.195 + var nr = items.getRangeCount(); 1.196 + var toggle="false"; 1.197 + if (nr == 0) { 1.198 + toggle="true"; 1.199 + } 1.200 + var edit_toggle=toggle; 1.201 +/* 1.202 + var edit_toggle="true"; 1.203 + if (nr > 0) { 1.204 + for (var i=0; i<nr; i++) { 1.205 + var o1 = {}; 1.206 + var o2 = {}; 1.207 + items.getRangeAt(i, o1, o2); 1.208 + var min = o1.value; 1.209 + var max = o2.value; 1.210 + var stop = false; 1.211 + for (var j=min; j<=max; j++) { 1.212 + var tokenName = items.tree.view.getCellText(j, "tokencol"); 1.213 + if (tokenName == "Builtin Object Token") { stop = true; } break; 1.214 + } 1.215 + if (stop) break; 1.216 + } 1.217 + if (i == nr) { 1.218 + edit_toggle="false"; 1.219 + } 1.220 + } 1.221 +*/ 1.222 + var enableViewButton=document.getElementById('ca_viewButton'); 1.223 + enableViewButton.setAttribute("disabled",toggle); 1.224 + var enableEditButton=document.getElementById('ca_editButton'); 1.225 + enableEditButton.setAttribute("disabled",edit_toggle); 1.226 + var enableExportButton=document.getElementById('ca_exportButton'); 1.227 + enableExportButton.setAttribute("disabled",toggle); 1.228 + var enableDeleteButton=document.getElementById('ca_deleteButton'); 1.229 + enableDeleteButton.setAttribute("disabled",toggle); 1.230 +} 1.231 + 1.232 +function mine_enableButtons() 1.233 +{ 1.234 + var items = userTreeView.selection; 1.235 + var toggle="false"; 1.236 + if (items.getRangeCount() == 0) { 1.237 + toggle="true"; 1.238 + } 1.239 + var enableViewButton=document.getElementById('mine_viewButton'); 1.240 + enableViewButton.setAttribute("disabled",toggle); 1.241 + var enableBackupButton=document.getElementById('mine_backupButton'); 1.242 + enableBackupButton.setAttribute("disabled",toggle); 1.243 + var enableDeleteButton=document.getElementById('mine_deleteButton'); 1.244 + enableDeleteButton.setAttribute("disabled",toggle); 1.245 +} 1.246 + 1.247 +function websites_enableButtons() 1.248 +{ 1.249 + var items = serverTreeView.selection; 1.250 + var count_ranges = items.getRangeCount(); 1.251 + 1.252 + var enable_delete = false; 1.253 + var enable_view = false; 1.254 + 1.255 + if (count_ranges > 0) { 1.256 + enable_delete = true; 1.257 + } 1.258 + 1.259 + if (count_ranges == 1) { 1.260 + var o1 = {}; 1.261 + var o2 = {}; 1.262 + items.getRangeAt(0, o1, o2); // the first range 1.263 + if (o1.value == o2.value) { 1.264 + // only a single item is selected 1.265 + try { 1.266 + var ti = serverTreeView.getTreeItem(o1.value); 1.267 + if (ti) { 1.268 + if (ti.cert) { 1.269 + enable_view = true; 1.270 + } 1.271 + } 1.272 + } 1.273 + catch (e) { 1.274 + } 1.275 + } 1.276 + } 1.277 + 1.278 + var enableViewButton=document.getElementById('websites_viewButton'); 1.279 + enableViewButton.setAttribute("disabled", !enable_view); 1.280 + var enableExportButton=document.getElementById('websites_exportButton'); 1.281 + enableExportButton.setAttribute("disabled", !enable_view); 1.282 + var enableDeleteButton=document.getElementById('websites_deleteButton'); 1.283 + enableDeleteButton.setAttribute("disabled", !enable_delete); 1.284 +} 1.285 + 1.286 +function email_enableButtons() 1.287 +{ 1.288 + var items = emailTreeView.selection; 1.289 + var toggle="false"; 1.290 + if (items.getRangeCount() == 0) { 1.291 + toggle="true"; 1.292 + } 1.293 + var enableViewButton=document.getElementById('email_viewButton'); 1.294 + enableViewButton.setAttribute("disabled",toggle); 1.295 + var enableEditButton=document.getElementById('email_editButton'); 1.296 + enableEditButton.setAttribute("disabled",toggle); 1.297 + var enableExportButton=document.getElementById('email_exportButton'); 1.298 + enableExportButton.setAttribute("disabled",toggle); 1.299 + var enableDeleteButton=document.getElementById('email_deleteButton'); 1.300 + enableDeleteButton.setAttribute("disabled",toggle); 1.301 +} 1.302 + 1.303 +function orphan_enableButtons() 1.304 +{ 1.305 + var items = orphanTreeView.selection; 1.306 + var toggle="false"; 1.307 + if (items.getRangeCount() == 0) { 1.308 + toggle="true"; 1.309 + } 1.310 + var enableViewButton=document.getElementById('orphan_viewButton'); 1.311 + enableViewButton.setAttribute("disabled",toggle); 1.312 + var enableExportButton=document.getElementById('orphan_exportButton'); 1.313 + enableExportButton.setAttribute("disabled",toggle); 1.314 + var enableDeleteButton=document.getElementById('orphan_deleteButton'); 1.315 + enableDeleteButton.setAttribute("disabled",toggle); 1.316 +} 1.317 + 1.318 +function backupCerts() 1.319 +{ 1.320 + getSelectedCerts(); 1.321 + var numcerts = selected_certs.length; 1.322 + if (!numcerts) 1.323 + return; 1.324 + var bundle = document.getElementById("pippki_bundle"); 1.325 + var fp = Components.classes[nsFilePicker].createInstance(nsIFilePicker); 1.326 + fp.init(window, 1.327 + bundle.getString("chooseP12BackupFileDialog"), 1.328 + nsIFilePicker.modeSave); 1.329 + fp.appendFilter(bundle.getString("file_browse_PKCS12_spec"), 1.330 + "*.p12"); 1.331 + fp.appendFilters(nsIFilePicker.filterAll); 1.332 + var rv = fp.show(); 1.333 + if (rv == nsIFilePicker.returnOK || rv == nsIFilePicker.returnReplace) { 1.334 + certdb.exportPKCS12File(null, fp.file, 1.335 + selected_certs.length, selected_certs); 1.336 + } 1.337 +} 1.338 + 1.339 +function backupAllCerts() 1.340 +{ 1.341 + // Select all rows, then call doBackup() 1.342 + var items = userTreeView.selection.selectAll(); 1.343 + backupCerts(); 1.344 +} 1.345 + 1.346 +function editCerts() 1.347 +{ 1.348 + getSelectedCerts(); 1.349 + var numcerts = selected_certs.length; 1.350 + if (!numcerts) 1.351 + return; 1.352 + for (var t=0; t<numcerts; t++) { 1.353 + var cert = selected_certs[t]; 1.354 + var certkey = cert.dbKey; 1.355 + if (document.getElementById("ca_tab").selected) { 1.356 + window.openDialog('chrome://pippki/content/editcacert.xul', certkey, 1.357 + 'chrome,centerscreen,modal'); 1.358 + } else if (document.getElementById("others_tab").selected) { 1.359 + window.openDialog('chrome://pippki/content/editemailcert.xul', certkey, 1.360 + 'chrome,centerscreen,modal'); 1.361 + } 1.362 + } 1.363 +} 1.364 + 1.365 +function restoreCerts() 1.366 +{ 1.367 + var bundle = document.getElementById("pippki_bundle"); 1.368 + var fp = Components.classes[nsFilePicker].createInstance(nsIFilePicker); 1.369 + fp.init(window, 1.370 + bundle.getString("chooseP12RestoreFileDialog2"), 1.371 + nsIFilePicker.modeOpen); 1.372 + fp.appendFilter(bundle.getString("file_browse_PKCS12_spec"), 1.373 + "*.p12; *.pfx"); 1.374 + fp.appendFilters(nsIFilePicker.filterAll); 1.375 + if (fp.show() == nsIFilePicker.returnOK) { 1.376 + certdb.importPKCS12File(null, fp.file); 1.377 + 1.378 + var certcache = Components.classes[nsNSSCertCache].createInstance(nsINSSCertCache); 1.379 + certcache.cacheAllCerts(); 1.380 + userTreeView.loadCertsFromCache(certcache, nsIX509Cert.USER_CERT); 1.381 + userTreeView.selection.clearSelection(); 1.382 + caTreeView.loadCertsFromCache(certcache, nsIX509Cert.CA_CERT); 1.383 + caTreeView.selection.clearSelection(); 1.384 + enableBackupAllButton(); 1.385 + } 1.386 +} 1.387 + 1.388 +function exportCerts() 1.389 +{ 1.390 + getSelectedCerts(); 1.391 + var numcerts = selected_certs.length; 1.392 + if (!numcerts) 1.393 + return; 1.394 + 1.395 + for (var t=0; t<numcerts; t++) { 1.396 + exportToFile(window, selected_certs[t]); 1.397 + } 1.398 +} 1.399 + 1.400 +function deleteCerts() 1.401 +{ 1.402 + getSelectedTreeItems(); 1.403 + var numcerts = selected_tree_items.length; 1.404 + if (!numcerts) 1.405 + return; 1.406 + 1.407 + var params = Components.classes[nsDialogParamBlock].createInstance(nsIDialogParamBlock); 1.408 + 1.409 + var selTab = document.getElementById('certMgrTabbox').selectedItem; 1.410 + var selTabID = selTab.getAttribute('id'); 1.411 + var t; 1.412 + 1.413 + params.SetNumberStrings(numcerts+1); 1.414 + 1.415 + if (selTabID == 'mine_tab') 1.416 + { 1.417 + params.SetString(0, selTabID); 1.418 + } 1.419 + else if (selTabID == "websites_tab") 1.420 + { 1.421 + params.SetString(0, selTabID); 1.422 + } 1.423 + else if (selTabID == "ca_tab") 1.424 + { 1.425 + params.SetString(0, selTabID); 1.426 + } 1.427 + else if (selTabID == "others_tab") 1.428 + { 1.429 + params.SetString(0, selTabID); 1.430 + } 1.431 + else if (selTabID == "orphan_tab") 1.432 + { 1.433 + params.SetString(0, selTabID); 1.434 + } 1.435 + else 1.436 + { 1.437 + return; 1.438 + } 1.439 + 1.440 + params.SetInt(0,numcerts); 1.441 + for (t=0; t<numcerts; t++) 1.442 + { 1.443 + var tree_item = selected_tree_items[t]; 1.444 + var c = tree_item.cert; 1.445 + if (!c) { 1.446 + params.SetString(t+1, tree_item.hostPort); 1.447 + } 1.448 + else { 1.449 + params.SetString(t+1, c.commonName); 1.450 + } 1.451 + 1.452 + } 1.453 + 1.454 + window.openDialog('chrome://pippki/content/deletecert.xul', "", 1.455 + 'chrome,centerscreen,modal', params); 1.456 + 1.457 + if (params.GetInt(1) == 1) { 1.458 + // user closed dialog with OK 1.459 + var treeView = null; 1.460 + var loadParam = null; 1.461 + 1.462 + selTab = document.getElementById('certMgrTabbox').selectedItem; 1.463 + selTabID = selTab.getAttribute('id'); 1.464 + if (selTabID == 'mine_tab') { 1.465 + treeView = userTreeView; 1.466 + } else if (selTabID == "others_tab") { 1.467 + treeView = emailTreeView; 1.468 + } else if (selTabID == "websites_tab") { 1.469 + treeView = serverTreeView; 1.470 + } else if (selTabID == "ca_tab") { 1.471 + treeView = caTreeView; 1.472 + } else if (selTabID == "orphan_tab") { 1.473 + treeView = orphanTreeView; 1.474 + } 1.475 + 1.476 + for (t=numcerts-1; t>=0; t--) 1.477 + { 1.478 + treeView.deleteEntryObject(selected_index[t]); 1.479 + } 1.480 + 1.481 + selected_tree_items = []; 1.482 + selected_index = []; 1.483 + treeView.selection.clearSelection(); 1.484 + if (selTabID == 'mine_tab') { 1.485 + enableBackupAllButton(); 1.486 + } 1.487 + } 1.488 +} 1.489 + 1.490 +function viewCerts() 1.491 +{ 1.492 + getSelectedCerts(); 1.493 + var numcerts = selected_certs.length; 1.494 + if (!numcerts) 1.495 + return; 1.496 + 1.497 + for (var t=0; t<numcerts; t++) { 1.498 + viewCertHelper(window, selected_certs[t]); 1.499 + } 1.500 +} 1.501 + 1.502 +function addCACerts() 1.503 +{ 1.504 + var bundle = document.getElementById("pippki_bundle"); 1.505 + var fp = Components.classes[nsFilePicker].createInstance(nsIFilePicker); 1.506 + fp.init(window, 1.507 + bundle.getString("importCACertsPrompt"), 1.508 + nsIFilePicker.modeOpen); 1.509 + fp.appendFilter(bundle.getString("file_browse_Certificate_spec"), 1.510 + "*.crt; *.cert; *.cer; *.pem; *.der"); 1.511 + fp.appendFilters(nsIFilePicker.filterAll); 1.512 + if (fp.show() == nsIFilePicker.returnOK) { 1.513 + certdb.importCertsFromFile(null, fp.file, nsIX509Cert.CA_CERT); 1.514 + caTreeView.loadCerts(nsIX509Cert.CA_CERT); 1.515 + caTreeView.selection.clearSelection(); 1.516 + } 1.517 +} 1.518 + 1.519 +function onSmartCardChange() 1.520 +{ 1.521 + var certcache = Components.classes[nsNSSCertCache].createInstance(nsINSSCertCache); 1.522 + // We've change the state of the smart cards inserted or removed 1.523 + // that means the available certs may have changed. Update the display 1.524 + certcache.cacheAllCerts(); 1.525 + userTreeView.loadCertsFromCache(certcache, nsIX509Cert.USER_CERT); 1.526 + userTreeView.selection.clearSelection(); 1.527 + caTreeView.loadCertsFromCache(certcache, nsIX509Cert.CA_CERT); 1.528 + caTreeView.selection.clearSelection(); 1.529 + serverTreeView.loadCertsFromCache(certcache, nsIX509Cert.SERVER_CERT); 1.530 + serverTreeView.selection.clearSelection(); 1.531 + emailTreeView.loadCertsFromCache(certcache, nsIX509Cert.EMAIL_CERT); 1.532 + emailTreeView.selection.clearSelection(); 1.533 + orphanTreeView.loadCertsFromCache(certcache, nsIX509Cert.UNKNOWN_CERT); 1.534 + orphanTreeView.selection.clearSelection(); 1.535 +} 1.536 + 1.537 +function addEmailCert() 1.538 +{ 1.539 + var bundle = document.getElementById("pippki_bundle"); 1.540 + var fp = Components.classes[nsFilePicker].createInstance(nsIFilePicker); 1.541 + fp.init(window, 1.542 + bundle.getString("importEmailCertPrompt"), 1.543 + nsIFilePicker.modeOpen); 1.544 + fp.appendFilter(bundle.getString("file_browse_Certificate_spec"), 1.545 + "*.crt; *.cert; *.cer; *.pem; *.der"); 1.546 + fp.appendFilters(nsIFilePicker.filterAll); 1.547 + if (fp.show() == nsIFilePicker.returnOK) { 1.548 + certdb.importCertsFromFile(null, fp.file, nsIX509Cert.EMAIL_CERT); 1.549 + var certcache = Components.classes[nsNSSCertCache].createInstance(nsINSSCertCache); 1.550 + certcache.cacheAllCerts(); 1.551 + emailTreeView.loadCertsFromCache(certcache, nsIX509Cert.EMAIL_CERT); 1.552 + emailTreeView.selection.clearSelection(); 1.553 + caTreeView.loadCertsFromCache(certcache, nsIX509Cert.CA_CERT); 1.554 + caTreeView.selection.clearSelection(); 1.555 + } 1.556 +} 1.557 + 1.558 +function addWebSiteCert() 1.559 +{ 1.560 + var bundle = document.getElementById("pippki_bundle"); 1.561 + var fp = Components.classes[nsFilePicker].createInstance(nsIFilePicker); 1.562 + fp.init(window, 1.563 + bundle.getString("importServerCertPrompt"), 1.564 + nsIFilePicker.modeOpen); 1.565 + fp.appendFilter(bundle.getString("file_browse_Certificate_spec"), 1.566 + "*.crt; *.cert; *.cer; *.pem; *.der"); 1.567 + fp.appendFilters(nsIFilePicker.filterAll); 1.568 + if (fp.show() == nsIFilePicker.returnOK) { 1.569 + certdb.importCertsFromFile(null, fp.file, nsIX509Cert.SERVER_CERT); 1.570 + 1.571 + var certcache = Components.classes[nsNSSCertCache].createInstance(nsINSSCertCache); 1.572 + certcache.cacheAllCerts(); 1.573 + serverTreeView.loadCertsFromCache(certcache, nsIX509Cert.SERVER_CERT); 1.574 + serverTreeView.selection.clearSelection(); 1.575 + caTreeView.loadCertsFromCache(certcache, nsIX509Cert.CA_CERT); 1.576 + caTreeView.selection.clearSelection(); 1.577 + } 1.578 +} 1.579 + 1.580 +function addException() 1.581 +{ 1.582 + window.openDialog('chrome://pippki/content/exceptionDialog.xul', "", 1.583 + 'chrome,centerscreen,modal'); 1.584 + var certcache = Components.classes[nsNSSCertCache].createInstance(nsINSSCertCache); 1.585 + certcache.cacheAllCerts(); 1.586 + serverTreeView.loadCertsFromCache(certcache, nsIX509Cert.SERVER_CERT); 1.587 + serverTreeView.selection.clearSelection(); 1.588 + orphanTreeView.loadCertsFromCache(certcache, nsIX509Cert.UNKNOWN_CERT); 1.589 + orphanTreeView.selection.clearSelection(); 1.590 +} 1.591 +