[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] r14773: Commit alternate way of writing certs to disk. This one outr (torbutton/trunk/src/chrome/content)
Author: mikeperry
Date: 2008-05-28 07:06:30 -0400 (Wed, 28 May 2008)
New Revision: 14773
Modified:
torbutton/trunk/src/chrome/content/torbutton.js
Log:
Commit alternate way of writing certs to disk. This one
outright crashes firefox, so it's also no good (and less good
than what we had). But I want a record of it in SVN.
Modified: torbutton/trunk/src/chrome/content/torbutton.js
===================================================================
--- torbutton/trunk/src/chrome/content/torbutton.js 2008-05-28 10:31:20 UTC (rev 14772)
+++ torbutton/trunk/src/chrome/content/torbutton.js 2008-05-28 11:06:30 UTC (rev 14773)
@@ -1100,62 +1100,24 @@
outFile.append("certs-"+name+".tor");
}
- // this prompts for a password..
- //certdb.exportPKCS12File(null, outFile, outList.length, outList);
if(outFile.exists()) {
outFile.remove(false);
}
if(outList.length) {
- outFile.create(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0600);
-
- var stream = Components.classes["@mozilla.org/network/file-output-stream;1"]
- .createInstance(Components.interfaces.nsIFileOutputStream);
- stream.init(outFile, 0x04 | 0x08 | 0x20, 0600, 0); // write, create, truncate
-
- var bstream = Components.classes["@mozilla.org/binaryoutputstream;1"]
- .createInstance(Components.interfaces.nsIBinaryOutputStream);
- bstream.setOutputStream(stream);
-
- var binaryCerts = [];
- var bitList = [];
-
+ torbutton_log(2, "Writing certificates to "+outFile.path);
+
+ // this prompts for a password..
+ certdb.exportPKCS12File(null, outFile, outList.length, outList);
+ torbutton_log(2, "Wrote certificates to "+outFile.path);
for(var i = outList.length-1; i>=0; i--) {
if(outList[i]) {
- var len = new Object();
- var data = outList[i].getRawDER(len);
- //torbutton_log(2, "Delete: "+certdb.deleteCertificate(outList[i]));
- torbutton_log(2, "Delete: "+outList[i].organization+" "+outList[i].tokenName);
- // Need to save trustbits somehow.. They are not saved.
- var bits = 0;
- if(certdb.isCertTrusted(outList[i], type, certdb.TRUSTED_SSL)) {
- bits |= certdb.TRUSTED_SSL;
- }
- if(certdb.isCertTrusted(outList[i], type, certdb.TRUSTED_EMAIL)) {
- bits |= certdb.TRUSTED_EMAIL;
- }
- if(certdb.isCertTrusted(outList[i], type, certdb.TRUSTED_OBJSIGN)) {
- bits |= certdb.TRUSTED_OBJSIGN;
- }
-
treeView.removeCert(outIndexList[i]);
certdb.deleteCertificate(outList[i]);
-
- bitList.push(bits);
- binaryCerts.push(data);
}
}
- bstream.write32(binaryCerts.length);
- for(var i = 0; i < binaryCerts.length; i++) {
- bstream.write32(binaryCerts[i].length);
- bstream.write32(bitList[i]);
- bstream.writeByteArray(binaryCerts[i], binaryCerts[i].length);
- }
-
- bstream.close();
- stream.close();
}
torbutton_log(2, "Wrote "+outList.length+" "+name+" certificates to "+outFile.path);
@@ -1197,69 +1159,9 @@
}
torbutton_log(2, "Reading certificates from "+inFile.path);
- var istream = Components.classes["@mozilla.org/network/file-input-stream;1"]
- .createInstance(Components.interfaces.nsIFileInputStream);
- istream.init(inFile, -1, -1, false);
+ certdb.importPKCS12File(null, inFile);
- var bstream = Components.classes["@mozilla.org/binaryinputstream;1"]
- .createInstance(Components.interfaces.nsIBinaryInputStream);
- bstream.setInputStream(istream);
-
- if(bstream.available()) {
- var certs = bstream.read32();
-
- if(type == Components.interfaces.nsIX509Cert.CA_CERT) {
- m_tb_prefs.setBoolPref("extensions.torbutton.block_cert_dialogs",
- true);
- }
-
- for(var i = 0; i < certs; i++) {
- var len = bstream.read32();
- var trustBits = bstream.read32();
- var bytes = bstream.readByteArray(len);
-
- // This just for the trustBits, which seem to be lost
- // in the BER translation. sucks..
- var base64 = window.btoa(torbutton_bytearray_to_string(bytes));
- var checkCert = certdb.constructX509FromBase64(base64);
- torbutton_log(2, "Made Cert: "+checkCert.organization);
-
- try {
- switch(type) {
- case Components.interfaces.nsIX509Cert.EMAIL_CERT:
- certdb.importEmailCertificate(bytes, bytes.length, null);
- break;
- case Components.interfaces.nsIX509Cert.SERVER_CERT:
- certdb.importServerCertificate(bytes, bytes.length, null);
- break;
- case Components.interfaces.nsIX509Cert.USER_CERT:
- certdb.importUserCertificate(bytes, bytes.length, null);
- break;
- case Components.interfaces.nsIX509Cert.CA_CERT:
- certdb.importCertificates(bytes, bytes.length, type, null);
- break;
- }
-
- certdb.setCertTrust(checkCert, type, trustBits);
-
- } catch(e) {
- torbutton_log(5, "Failed to import cert: "+checkCert.organization+": "+e);
- }
-
- unjared_certs++;
- }
- if(type == Components.interfaces.nsIX509Cert.CA_CERT) {
- m_tb_prefs.setBoolPref("extensions.torbutton.block_cert_dialogs",
- false);
- }
-
- torbutton_log(2, "Read "+unjared_certs+" "+name+" certificates from "+inFile.path);
- }
-
- bstream.close();
- istream.close();
-
- return unjared_certs;
+ return 1;
}
function torbutton_jar_certs(mode) {