Use wrappers for get and set prefs
Fix some syntax issues in hmac.js
This commit is contained in:
		@@ -22,19 +22,21 @@ var {Cc, Ci} = require("chrome");
 | 
			
		||||
var hmac = Cc["@mozilla.org/security/hmac;1"]
 | 
			
		||||
    .createInstance(Ci.nsICryptoHMAC);
 | 
			
		||||
 | 
			
		||||
function hmac_init(key) {
 | 
			
		||||
    var keyObject = Cc["@mozilla.org/security/keyobjectfactory;1"]
 | 
			
		||||
                .getService(Ci.nsIKeyObjectFactory)
 | 
			
		||||
                .keyFromString(Ci.nsIKeyObject.HMAC, key);
 | 
			
		||||
    hmac.init(hmac.SHA256, keyObject);
 | 
			
		||||
}
 | 
			
		||||
exports.hmac = {
 | 
			
		||||
    hmac_init : function (key) {
 | 
			
		||||
	var keyObject = Cc["@mozilla.org/security/keyobjectfactory;1"]
 | 
			
		||||
            .getService(Ci.nsIKeyObjectFactory)
 | 
			
		||||
            .keyFromString(Ci.nsIKeyObject.HMAC, key);
 | 
			
		||||
	hmac.init(hmac.SHA256, keyObject);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
function hmac_digest(message) {
 | 
			
		||||
    var data = new Uint8Array(message.length);
 | 
			
		||||
    for(i=0; i<message.length; i++)
 | 
			
		||||
	data[i] = message.charCodeAt(i);
 | 
			
		||||
    hmac.update(data, data.length);
 | 
			
		||||
    res = hmac.finish(false);
 | 
			
		||||
    hmac.reset();
 | 
			
		||||
    return res;
 | 
			
		||||
}
 | 
			
		||||
    hmac_digest : function (message) {
 | 
			
		||||
	var data = new Uint8Array(message.length);
 | 
			
		||||
	for(i=0; i<message.length; i++)
 | 
			
		||||
	    data[i] = message.charCodeAt(i);
 | 
			
		||||
	hmac.update(data, data.length);
 | 
			
		||||
	res = hmac.finish(false);
 | 
			
		||||
	hmac.reset();
 | 
			
		||||
	return res;
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -25,9 +25,9 @@ var aes = require("jsaes").aes;
 | 
			
		||||
var parseURI = require("parseuri").parseURI;
 | 
			
		||||
var prefSet = require("sdk/simple-prefs");
 | 
			
		||||
var DEBUG = false;
 | 
			
		||||
var pkdbf2_level = prefSet.prefs.pkdbf2_level;
 | 
			
		||||
var pkdbf2_level = getPref("pkdbf2_level");
 | 
			
		||||
var protocol_version = 3;
 | 
			
		||||
SERVER = { OK : 0, FAILED : 1, RESTART_REQUEST : 2};
 | 
			
		||||
SERVER = {OK : 0, FAILED : 1, RESTART_REQUEST : 2};
 | 
			
		||||
 | 
			
		||||
// http://stackoverflow.com/questions/3745666/how-to-convert-from-hex-to-ascii-in-javascript
 | 
			
		||||
function hex2a(hex) {
 | 
			
		||||
@@ -63,6 +63,16 @@ function notify(text, data)
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function getPref(key)
 | 
			
		||||
{
 | 
			
		||||
    return prefSet.prefs[key];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function setPref(key, value)
 | 
			
		||||
{
 | 
			
		||||
    prefSet.prefs[key] = value;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function generate_request(domain, login, mkey)
 | 
			
		||||
{
 | 
			
		||||
    var v = "@@" + domain + ";" + login;
 | 
			
		||||
@@ -171,7 +181,7 @@ function ask_server(form, field, logins, domain, wdomain, mkey, salt, submit)
 | 
			
		||||
		{
 | 
			
		||||
		    debug("New pkdbf2 level " + server_pkdbf2_level);
 | 
			
		||||
		    pkdbf2_level = server_pkdbf2_level;
 | 
			
		||||
		    prefSet.prefs.pkdbf2_level = server_pkdbf2_level;
 | 
			
		||||
		    setPref("pkdbf2_level", pkdbf2_level);
 | 
			
		||||
		    ret = SERVER.RESTART_REQUEST;
 | 
			
		||||
		}
 | 
			
		||||
		break;
 | 
			
		||||
@@ -228,8 +238,8 @@ function ask_server(form, field, logins, domain, wdomain, mkey, salt, submit)
 | 
			
		||||
	notify("Error",
 | 
			
		||||
	       "Error");
 | 
			
		||||
    }, false);
 | 
			
		||||
    debug("connect to " + prefSet.prefs.account_url);
 | 
			
		||||
    gPassRequest.open("POST", prefSet.prefs.account_url, true);
 | 
			
		||||
    debug("connect to " + getPref("account_url"));
 | 
			
		||||
    gPassRequest.open("POST", getPref("account_url"), true);
 | 
			
		||||
    gPassRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
 | 
			
		||||
    gPassRequest.send(keys);
 | 
			
		||||
 | 
			
		||||
@@ -268,7 +278,7 @@ function on_sumbit(e)
 | 
			
		||||
    domain = domain["host"];
 | 
			
		||||
    var wdomain = wildcard_domain(domain);
 | 
			
		||||
 | 
			
		||||
    var salt = parseURI.parseUri(prefSet.prefs.account_url);
 | 
			
		||||
    var salt = parseURI.parseUri(getPref("account_url"));
 | 
			
		||||
    salt = salt["host"] + salt["path"];
 | 
			
		||||
 | 
			
		||||
    debug("salt " + salt);
 | 
			
		||||
 
 | 
			
		||||
@@ -17,7 +17,7 @@
 | 
			
		||||
  along with gPass.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
require("hmac.js");
 | 
			
		||||
var hmac = require("hmac.js").hmac;
 | 
			
		||||
 | 
			
		||||
exports.pkdbf2 = {
 | 
			
		||||
    
 | 
			
		||||
@@ -28,10 +28,10 @@ exports.pkdbf2 = {
 | 
			
		||||
	var temp_res = "";
 | 
			
		||||
	var temp_res2 = "";
 | 
			
		||||
	    
 | 
			
		||||
	hmac_init(password);
 | 
			
		||||
	hmac.hmac_init(password);
 | 
			
		||||
	for (i=1; result.length < outlen; i++)
 | 
			
		||||
	{
 | 
			
		||||
	    temp = hmac_digest(salt + 
 | 
			
		||||
	    temp = hmac.hmac_digest(salt + 
 | 
			
		||||
	    		       String.fromCharCode((i & 0xff000000) >> 24) +
 | 
			
		||||
	    		       String.fromCharCode((i & 0x00ff0000) >> 16) +
 | 
			
		||||
	    		       String.fromCharCode((i & 0x0000ff00) >>  8) +
 | 
			
		||||
@@ -41,7 +41,7 @@ exports.pkdbf2 = {
 | 
			
		||||
	    
 | 
			
		||||
	    for(a=1; a<iterations; a++)
 | 
			
		||||
	    {
 | 
			
		||||
		temp2 = hmac_digest(temp);
 | 
			
		||||
		temp2 = hmac.hmac_digest(temp);
 | 
			
		||||
		temp_res2 = "";
 | 
			
		||||
		for(b = 0; b<temp_res.length; b++)
 | 
			
		||||
		    temp_res2 += String.fromCharCode(temp_res.charCodeAt(b) ^ temp2.charCodeAt(b));
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user