/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ const nsIFilePicker = Components.interfaces.nsIFilePicker; const nsFilePicker = "@mozilla.org/filepicker;1"; const nsIX509CertDB = Components.interfaces.nsIX509CertDB; const nsX509CertDB = "@mozilla.org/security/x509certdb;1"; const nsIX509Cert = Components.interfaces.nsIX509Cert; const nsICertTree = Components.interfaces.nsICertTree; const nsCertTree = "@mozilla.org/security/nsCertTree;1"; const nsIDialogParamBlock = Components.interfaces.nsIDialogParamBlock; const nsDialogParamBlock = "@mozilla.org/embedcomp/dialogparam;1"; const gCertFileTypes = "*.p7b; *.crt; *.cert; *.cer; *.pem; *.der"; var { NetUtil } = Components.utils.import("resource://gre/modules/NetUtil.jsm", {}); var { Services } = Components.utils.import("resource://gre/modules/Services.jsm", {}); var key; var selected_certs = []; var selected_tree_items = []; var selected_index = []; var certdb; var caTreeView; var serverTreeView; var emailTreeView; var userTreeView; var orphanTreeView; var smartCardObserver = { observe: function() { onSmartCardChange(); } }; function DeregisterSmartCardObservers() { Services.obs.removeObserver(smartCardObserver, "smartcard-insert"); Services.obs.removeObserver(smartCardObserver, "smartcard-remove"); } function LoadCerts() { Services.obs.addObserver(smartCardObserver, "smartcard-insert", false); Services.obs.addObserver(smartCardObserver, "smartcard-remove", false); certdb = Components.classes[nsX509CertDB].getService(nsIX509CertDB); var certcache = certdb.getCerts(); caTreeView = Components.classes[nsCertTree] .createInstance(nsICertTree); caTreeView.loadCertsFromCache(certcache, nsIX509Cert.CA_CERT); document.getElementById('ca-tree').view = caTreeView; serverTreeView = Components.classes[nsCertTree] .createInstance(nsICertTree); serverTreeView.loadCertsFromCache(certcache, nsIX509Cert.SERVER_CERT); document.getElementById('server-tree').view = serverTreeView; emailTreeView = Components.classes[nsCertTree] .createInstance(nsICertTree); emailTreeView.loadCertsFromCache(certcache, nsIX509Cert.EMAIL_CERT); document.getElementById('email-tree').view = emailTreeView; userTreeView = Components.classes[nsCertTree] .createInstance(nsICertTree); userTreeView.loadCertsFromCache(certcache, nsIX509Cert.USER_CERT); document.getElementById('user-tree').view = userTreeView; orphanTreeView = Components.classes[nsCertTree] .createInstance(nsICertTree); orphanTreeView.loadCertsFromCache(certcache, nsIX509Cert.UNKNOWN_CERT); document.getElementById('orphan-tree').view = orphanTreeView; enableBackupAllButton(); } function enableBackupAllButton() { var rowCnt = userTreeView.rowCount; var backupAllButton=document.getElementById('mine_backupAllButton'); backupAllButton.disabled = (rowCnt < 1); } function getSelectedCerts() { var ca_tab = document.getElementById("ca_tab"); var mine_tab = document.getElementById("mine_tab"); var others_tab = document.getElementById("others_tab"); var websites_tab = document.getElementById("websites_tab"); var orphan_tab = document.getElementById("orphan_tab"); var items = null; if (ca_tab.selected) { items = caTreeView.selection; } else if (mine_tab.selected) { items = userTreeView.selection; } else if (others_tab.selected) { items = emailTreeView.selection; } else if (websites_tab.selected) { items = serverTreeView.selection; } else if (orphan_tab.selected) { items = orphanTreeView.selection; } selected_certs = []; var cert = null; var nr = 0; if (items != null) nr = items.getRangeCount(); if (nr > 0) { for (var i=0; i 0) { for (var i=0; i=0; t--) { treeView.deleteEntryObject(selected_index[t]); } selected_tree_items = []; selected_index = []; treeView.selection.clearSelection(); if (selTabID == 'mine_tab') { enableBackupAllButton(); } } } function viewCerts() { getSelectedCerts(); var numcerts = selected_certs.length; if (!numcerts) return; for (var t=0; t