Index for new crypto scheme was badly computed in webextension
This commit is contained in:
		@@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
  Copyright (C) 2013-2016 Grégory Soutadé
 | 
			
		||||
  Copyright (C) 2013-2017 Grégory Soutadé
 | 
			
		||||
  
 | 
			
		||||
  This file is part of gPass.
 | 
			
		||||
  
 | 
			
		||||
@@ -19,6 +19,8 @@
 | 
			
		||||
 | 
			
		||||
var DEBUG = true;
 | 
			
		||||
var protocol_version = 4;
 | 
			
		||||
var account_url = null;
 | 
			
		||||
var crypto_v2_logins_size=0;
 | 
			
		||||
 | 
			
		||||
SERVER = {OK : 0, FAILED : 1, RESTART_REQUEST : 2};
 | 
			
		||||
 | 
			
		||||
@@ -71,6 +73,7 @@ async function generate_request(domain, login, mkey, iv, old)
 | 
			
		||||
async function ask_server(form, field, logins, domain, wdomain, mkey, submit)
 | 
			
		||||
{
 | 
			
		||||
    account_url = await getPref("account_url");
 | 
			
		||||
 | 
			
		||||
    var salt = parseURI.parseUri(account_url);
 | 
			
		||||
    salt = salt["host"] + salt["path"];
 | 
			
		||||
 | 
			
		||||
@@ -101,6 +104,7 @@ async function ask_server(form, field, logins, domain, wdomain, mkey, submit)
 | 
			
		||||
 | 
			
		||||
    if (await getPref("crypto_v1_compatible"))
 | 
			
		||||
    {
 | 
			
		||||
	crypto_v2_logins_size = key_index;
 | 
			
		||||
	for(a=0; a<logins.length; a++, key_index++)
 | 
			
		||||
	{
 | 
			
		||||
	    enc = await generate_request(domain, logins[a], mkey, global_iv, 1);
 | 
			
		||||
@@ -211,12 +215,14 @@ async function ask_server(form, field, logins, domain, wdomain, mkey, submit)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (ret != SERVER.OK)
 | 
			
		||||
	{
 | 
			
		||||
	    return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (ciphered_password != "")
 | 
			
		||||
	{
 | 
			
		||||
	    debug("Ciphered password : " + ciphered_password);
 | 
			
		||||
	    if (matched_key >= logins.logins || server_protocol_version < 4)
 | 
			
		||||
	    if (matched_key >= crypto_v2_logins_size || server_protocol_version < 4)
 | 
			
		||||
		// Crypto v1
 | 
			
		||||
	    {
 | 
			
		||||
		clear_password = await decrypt_ecb(mkey, hex2a(ciphered_password));
 | 
			
		||||
@@ -260,8 +266,8 @@ async function ask_server(form, field, logins, domain, wdomain, mkey, submit)
 | 
			
		||||
	notify("Error",
 | 
			
		||||
	       "Error");
 | 
			
		||||
    }, false);
 | 
			
		||||
    debug("connect to " + await getPref("account_url"));
 | 
			
		||||
    gPassRequest.open("POST", await getPref("account_url"), true);
 | 
			
		||||
    debug("connect to " + account_url);
 | 
			
		||||
    gPassRequest.open("POST", account_url, true);
 | 
			
		||||
    gPassRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
 | 
			
		||||
    gPassRequest.send(keys);
 | 
			
		||||
 | 
			
		||||
@@ -434,4 +440,4 @@ async function self_test()
 | 
			
		||||
    	console.log("Self test OK !");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
self_test();
 | 
			
		||||
//self_test();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user