Hi,
I also think writing passphrase to temporary files is really not secure.
Ipc could be a solution, but it is quite complicated (they are binary components, and you have to provide one different for each platform).
In my opinion, a temporary fix would be to call gpg with arguments --passphrase mypassphrase (instead of writting passphrase to a file and calling --passphrase-file).
I sent a patch to firegpg a few weeks ago but I had no feedbacks. (ok, I also made a few others proposals, and my patch was quite messy, may be that's the reason why it was not included).
main part of it was :
function runChromeCommand(chromePath, args) {
var ioService = Components.classes[NS_IOSERVICE_CONTRACTID].getService(Components.interfaces.nsIIOService);
var uri = ioService.newURI(chromePath, null, null);
var realPath = Cc["@mozilla.org/chrome/chrome-registry;1"].
getService(Ci.nsIChromeRegistry).
convertChromeURL(uri);
var file=Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
file.initWithPath(realPath.path);
var process = Cc["@mozilla.org/process/util;1"].
createInstance(Ci.nsIProcess);
process.init(file);
process.run(true, args, args.length);
}
const FIREGPG_UNIX_SCRIPT = "chrome://firegpg/content/run.sh
var args = [].concat(this.getGPGCommand(), tmpStdOut,
"--quiet", "--no-use-agent", "--no-tty", "--no-verbose", "--status-fd", "1", "--armor", "--batch",
"--default-key", keyID,
"--output", tmpOutput,
"--passphrase", password,
getGPGCommentArgument(),
"--clearsign", tmpInput);
try { runChromeCommand(FIREGPG_UNIX_SCRIPT, args); } catch (e) { }
It works fine, at least on my linux laptop.