Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jul 20th, 2012  |  syntax: JavaScript  |  size: 6.68 KB  |  hits: 21  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. <?xml version="1.0"?>
  2. <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
  3.  
  4.     <Description about="urn:mozilla:install-manifest">
  5.         <em:id>cert-manager@oernii.sk</em:id>
  6.         <em:type>2</em:type>
  7.         <em:name>Cert Manager</em:name>
  8.         <em:version>1.7</em:version>
  9.         <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>
  10.         <em:creator>Ernest Beinrohr</em:creator>
  11.         <!-- <em:contributor></em:contributor> -->
  12.         <!-- <em:iconURL></em:iconURL> -->
  13.         <!-- <em:optionsURL>chrome://cert-manager/options.xul</em:optionsURL> -->
  14.  
  15.         <!-- Mobile -->
  16.         <em:targetApplication>
  17.             <Description>
  18.                 <em:id>{a23983c0-fd0e-11dc-95ff-0800200c9a66}</em:id>
  19.                 <em:minVersion>9.0</em:minVersion>
  20.                 <em:maxVersion>13.0</em:maxVersion>
  21.             </Description>
  22.         </em:targetApplication>
  23.  
  24.         <!-- Native -->
  25.         <em:targetApplication>
  26.             <Description>
  27.                 <em:id>{aa3c5121-dab2-40e2-81ca-7ea25febc110}</em:id>
  28.                 <em:minVersion>9.0</em:minVersion>
  29.                 <em:maxVersion>18.0</em:maxVersion>
  30.             </Description>
  31.         </em:targetApplication>
  32.  
  33.     </Description>
  34. </RDF>
  35.  
  36.  
  37. <?xml version="1.0"?>
  38.  
  39. <vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  40.  
  41.     <setting title="Import CA certificate" type="control">
  42.         CA certificate in PEM format
  43.       <button id="myaddon-button" label="Select PEM file" oncommand="CertManager.importCAcert();"/>
  44.     </setting>
  45.  
  46.     <setting title="Import USER certificate" type="control">
  47.         Must be PKCS12 (*.p12)
  48.       <button id="myaddon-button" label="Select pkcs12 file" oncommand="CertManager.importUSERcert();"/>
  49.     </setting>
  50.  
  51. </vbox>
  52.  
  53. bootstrap.js (this is a test only. it was in XUL context.xul before_
  54. const nsX509CertDB = "@mozilla.org/security/x509certdb;1";
  55. const nsIX509CertDB = Components.interfaces.nsIX509CertDB;
  56. const nsIX509Cert = Components.interfaces.nsIX509Cert;
  57. const nsIFilePicker = Components.interfaces.nsIFilePicker;
  58.  
  59. // Main code for add-on
  60. var CertManager = {
  61.   onLoad : function(aEvent) {
  62.         //dump(aEvent);
  63.   },
  64.  
  65.   onUIReady : function(aEvent) {
  66.         //dump(aEvent);
  67.   },
  68.  
  69.   onUIReadyDelayed : function(aEvent) {
  70.         //dump(aEvent);
  71.   },
  72.  
  73.   test: function() {
  74.         alert('test OK');
  75.   },
  76.  
  77.   getCertNumber2: function() {
  78.       var moz_x509certdb2 = Components.classes['@mozilla.org/security/x509certdb;1']
  79.                             .getService(Components.interfaces.nsIX509CertDB2);
  80.       var allCertificates = moz_x509certdb2.getCerts();
  81.       var enumCertificates = allCertificates.getEnumerator();
  82.  
  83.       var counter = 0;
  84.  
  85.       while (enumCertificates.hasMoreElements())
  86.       {
  87.         var thisElement = enumCertificates.getNext();
  88.         var thisCertificate = thisElement.QueryInterface(Components.interfaces.nsIX509Cert);
  89.  
  90.         var DER = thisCertificate.getRawDER({});
  91.         //dump('CN:' + thisCertificate.commonName + ', org:' + thisCertificate.organization + '\n' );
  92.         console.debug(thisCertificate);
  93.         counter++;
  94.       }
  95.       return counter;
  96.   },
  97.  
  98.   getCertNumber: function() {
  99.       var moz_x509certdb2 = Components.classes['@mozilla.org/security/x509certdb;1']
  100.                             .getService(Components.interfaces.nsIX509CertDB2);
  101.       var allCertificates = moz_x509certdb2.getCerts();
  102.       var enumCertificates = allCertificates.getEnumerator();
  103.  
  104.       var counter = 0;
  105.  
  106.       while (enumCertificates.hasMoreElements())
  107.       {
  108.         var thisElement = enumCertificates.getNext();
  109.         var thisCertificate = thisElement.QueryInterface(Components.interfaces.nsIX509Cert);
  110.  
  111.         var DER = thisCertificate.getRawDER({});
  112.         /*
  113.         this.writeCertificateFile(DER, DER.length, fp.file.path,
  114.                                     counter+1,
  115.                                     thisCertificate.commonName,
  116.                                     thisCertificate.organization);
  117.         */
  118.         dump('CN:' + thisCertificate.commonName + ', org:' + thisCertificate.organization + '\n' );
  119.         console.debug(thisCertificate);
  120.         counter++;
  121.       }
  122.       return counter;
  123.   },
  124.  
  125.   importCAcert: function() {
  126.         //alert ( Services.prefs.getCharPref("extensions.cert-manager.importfile") );
  127.         certdb = Components.classes[nsX509CertDB].getService(nsIX509CertDB);
  128.         //certdb.importCertsFromFile(null, Services.prefs.getCharPref("extensions.cert-manager.importfile"), nsIX509Cert.CA_CERT);
  129.  
  130.         var filePicker = Components.classes[ "@mozilla.org/filepicker;1" ].createInstance( nsIFilePicker );
  131.         filePicker.init( window, "Import Certificate",  nsIFilePicker.modeOpen );
  132.         filePicker.appendFilter( "Certificates",
  133.                            "*.crt; *.cert; *.cer; *.pem; *.der" );
  134.         filePicker.appendFilters(nsIFilePicker.filterAll);
  135.         var result = filePicker.show();
  136.  
  137.         if (result == nsIFilePicker.returnOK) {
  138.            var theFile = filePicker.file;
  139.            var certDB = Components.classes[ "@mozilla.org/security/x509certdb;1" ]
  140.                      .getService( nsIX509CertDB );
  141.  
  142.            certdb.importCertsFromFile(null, theFile, nsIX509Cert.CA_CERT);
  143.         }
  144.         return;
  145.   },
  146.  
  147.   importUSERcert: function() {
  148.         certdb = Components.classes[nsX509CertDB].getService(nsIX509CertDB);
  149.  
  150.         var filePicker = Components.classes[ "@mozilla.org/filepicker;1" ].createInstance( nsIFilePicker );
  151.         filePicker.init( window, "Import Certificate",  nsIFilePicker.modeOpen );
  152.         filePicker.appendFilter( "Certificates",
  153.                            "*.crt; *.cert; *.cer; *.pem; *.der" );
  154.         filePicker.appendFilters(nsIFilePicker.filterAll);
  155.         var result = filePicker.show();
  156.  
  157.         if (result == nsIFilePicker.returnOK) {
  158.            var theFile = filePicker.file;
  159.            var certDB = Components.classes[ "@mozilla.org/security/x509certdb;1" ]
  160.                      .getService( nsIX509CertDB );
  161.  
  162.            //certdb.importCertsFromFile(null, theFile, nsIX509Cert.CA_CERT);
  163.            certdb.importPKCS12File(null, theFile);
  164.         }
  165.         return;
  166.   },
  167.  
  168. };
  169.  
  170. /*
  171. */
  172. // Setup the main event listeners
  173. window.addEventListener("load", function(e) {
  174.   CertManager.onLoad(e);
  175. }, false);
  176.  
  177. window.addEventListener("UIReady", function(e) {
  178.   CertManager.onUIReady(e);
  179. }, false);
  180.  
  181. window.addEventListener("UIReadyDelayed", function(e) {
  182.   CertManager.onUIReadyDelayed(e);
  183. }, false);