<?xml version="1.0"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:install-manifest">
<em:id>cert-manager@oernii.sk</em:id>
<em:type>2</em:type>
<em:name>Cert Manager</em:name>
<em:version>1.7</em:version>
<em:description>This addon allow you to import a CA certificate (*.pem) and a user certificate with key (pkcs12 *.p12). That is all. No deletion/modification for now.</em:description>
<em:creator>Ernest Beinrohr</em:creator>
<!-- <em:contributor></em:contributor> -->
<!-- <em:iconURL></em:iconURL> -->
<!-- <em:optionsURL>chrome://cert-manager/options.xul</em:optionsURL> -->
<!-- Mobile -->
<em:targetApplication>
<Description>
<em:id>{a23983c0-fd0e-11dc-95ff-0800200c9a66}</em:id>
<em:minVersion>9.0</em:minVersion>
<em:maxVersion>13.0</em:maxVersion>
</Description>
</em:targetApplication>
<!-- Native -->
<em:targetApplication>
<Description>
<em:id>{aa3c5121-dab2-40e2-81ca-7ea25febc110}</em:id>
<em:minVersion>9.0</em:minVersion>
<em:maxVersion>18.0</em:maxVersion>
</Description>
</em:targetApplication>
</Description>
</RDF>
<?xml version="1.0"?>
<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<setting title="Import CA certificate" type="control">
CA certificate in PEM format
<button id="myaddon-button" label="Select PEM file" oncommand="CertManager.importCAcert();"/>
</setting>
<setting title="Import USER certificate" type="control">
Must be PKCS12 (*.p12)
<button id="myaddon-button" label="Select pkcs12 file" oncommand="CertManager.importUSERcert();"/>
</setting>
</vbox>
bootstrap.js (this is a test only. it was in XUL context.xul before_
const nsX509CertDB = "@mozilla.org/security/x509certdb;1";
const nsIX509CertDB = Components.interfaces.nsIX509CertDB;
const nsIX509Cert = Components.interfaces.nsIX509Cert;
const nsIFilePicker = Components.interfaces.nsIFilePicker;
// Main code for add-on
var CertManager = {
onLoad : function(aEvent) {
//dump(aEvent);
},
onUIReady : function(aEvent) {
//dump(aEvent);
},
onUIReadyDelayed : function(aEvent) {
//dump(aEvent);
},
test: function() {
alert('test OK');
},
getCertNumber2: function() {
var moz_x509certdb2 = Components.classes['@mozilla.org/security/x509certdb;1']
.getService(Components.interfaces.nsIX509CertDB2);
var allCertificates = moz_x509certdb2.getCerts();
var enumCertificates = allCertificates.getEnumerator();
var counter = 0;
while (enumCertificates.hasMoreElements())
{
var thisElement = enumCertificates.getNext();
var thisCertificate = thisElement.QueryInterface(Components.interfaces.nsIX509Cert);
var DER = thisCertificate.getRawDER({});
//dump('CN:' + thisCertificate.commonName + ', org:' + thisCertificate.organization + '\n' );
console.debug(thisCertificate);
counter++;
}
return counter;
},
getCertNumber: function() {
var moz_x509certdb2 = Components.classes['@mozilla.org/security/x509certdb;1']
.getService(Components.interfaces.nsIX509CertDB2);
var allCertificates = moz_x509certdb2.getCerts();
var enumCertificates = allCertificates.getEnumerator();
var counter = 0;
while (enumCertificates.hasMoreElements())
{
var thisElement = enumCertificates.getNext();
var thisCertificate = thisElement.QueryInterface(Components.interfaces.nsIX509Cert);
var DER = thisCertificate.getRawDER({});
/*
this.writeCertificateFile(DER, DER.length, fp.file.path,
counter+1,
thisCertificate.commonName,
thisCertificate.organization);
*/
dump('CN:' + thisCertificate.commonName + ', org:' + thisCertificate.organization + '\n' );
console.debug(thisCertificate);
counter++;
}
return counter;
},
importCAcert: function() {
//alert ( Services.prefs.getCharPref("extensions.cert-manager.importfile") );
certdb = Components.classes[nsX509CertDB].getService(nsIX509CertDB);
//certdb.importCertsFromFile(null, Services.prefs.getCharPref("extensions.cert-manager.importfile"), nsIX509Cert.CA_CERT);
var filePicker = Components.classes[ "@mozilla.org/filepicker;1" ].createInstance( nsIFilePicker );
filePicker.init( window, "Import Certificate", nsIFilePicker.modeOpen );
filePicker.appendFilter( "Certificates",
"*.crt; *.cert; *.cer; *.pem; *.der" );
filePicker.appendFilters(nsIFilePicker.filterAll);
var result = filePicker.show();
if (result == nsIFilePicker.returnOK) {
var theFile = filePicker.file;
var certDB = Components.classes[ "@mozilla.org/security/x509certdb;1" ]
.getService( nsIX509CertDB );
certdb.importCertsFromFile(null, theFile, nsIX509Cert.CA_CERT);
}
return;
},
importUSERcert: function() {
certdb = Components.classes[nsX509CertDB].getService(nsIX509CertDB);
var filePicker = Components.classes[ "@mozilla.org/filepicker;1" ].createInstance( nsIFilePicker );
filePicker.init( window, "Import Certificate", nsIFilePicker.modeOpen );
filePicker.appendFilter( "Certificates",
"*.crt; *.cert; *.cer; *.pem; *.der" );
filePicker.appendFilters(nsIFilePicker.filterAll);
var result = filePicker.show();
if (result == nsIFilePicker.returnOK) {
var theFile = filePicker.file;
var certDB = Components.classes[ "@mozilla.org/security/x509certdb;1" ]
.getService( nsIX509CertDB );
//certdb.importCertsFromFile(null, theFile, nsIX509Cert.CA_CERT);
certdb.importPKCS12File(null, theFile);
}
return;
},
};
/*
*/
// Setup the main event listeners
window.addEventListener("load", function(e) {
CertManager.onLoad(e);
}, false);
window.addEventListener("UIReady", function(e) {
CertManager.onUIReady(e);
}, false);
window.addEventListener("UIReadyDelayed", function(e) {
CertManager.onUIReadyDelayed(e);
}, false);