/* Copyright (C) 2013-2014 Grégory Soutadé This file is part of gPass. gPass is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. gPass is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with gPass. If not, see . */ var {Cc, Ci} = require("chrome"); var notifications = require("sdk/notifications"); // http://www.timdown.co.uk/jshashtable/ var Hashtable = require("jshashtable-3.0").Hashtable; var pkdbf2 = require("pkdbf2").pkdbf2; var aes = require("jsaes").aes; var parseURI = require("parseuri").parseURI; var prefSet = require("simple-prefs"); var DEBUG = true; // http://stackoverflow.com/questions/3745666/how-to-convert-from-hex-to-ascii-in-javascript function hex2a(hex) { var str = ''; for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16)); return str; } function a2hex(str) { var hex = ''; for (var i = 0; i < str.length; i++) { c = str.charCodeAt(i).toString(16); if (c.length == 1) c = "0" + c; hex += c; } return hex; } function debug(s) { if (DEBUG) console.log(s); } function wildcard_domain(domain) { parts = domain.split("."); if (parts.length >= 3) { // Seems to be a two level root domain (ie zzz.xxx.co.uk ...) if (parts[parts.length-2].lenght <= 3) { if (parts.length > 3) return "*" + "." + parts[parts.length-3] + "." + parts[parts.length-2] + "." + parts[parts.length-1]; } // Standard root domain (zzz.xxx.com) else return "*" + "." + parts[parts.length-2] + "." + parts[parts.length-1]; } return ""; } function on_sumbit(e) { var form = this; var fields = form.getElementsByTagName("input"); var my_map = new Hashtable(); domain = parseURI.parseUri(form.ownerDocument.baseURI); domain = domain["host"]; wdomain = wildcard_domain(domain); salt = parseURI.parseUri(prefSet.prefs["account_url"]); salt = salt["host"] + salt["path"]; debug("salt " + salt); // Get all && for (i=0; i for (i=0; i