Fix javascript require problem

This commit is contained in:
Gregory Soutade 2013-10-16 07:55:13 +02:00
parent bf961944ce
commit 89d668df76
5 changed files with 58 additions and 67 deletions

View File

@ -32,8 +32,10 @@ $user = (isset($_POST['user'])) ? $_POST['user'] : "";
<head> <head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" > <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
<link rel="stylesheet" type="text/css" href="ressources/gpass.css" /> <link rel="stylesheet" type="text/css" href="ressources/gpass.css" />
<script src="ressources/gpass.js"></script>
<script src="ressources/jssha256.js"></script> <script src="ressources/jssha256.js"></script>
<script src="ressources/hmac.js"></script>
<script src="ressources/pkdbf2.js"></script>
<script src="ressources/gpass.js"></script>
<?php <?php
global $user; global $user;
if ($user == "") if ($user == "")
@ -103,7 +105,8 @@ else
} }
} }
echo "</select>\n"; echo "</select>\n";
echo ' <b>Master key </b> <input id="see_password" type="password" name="mkey"/> <input name="see" type="submit" value="See" onclick="a=document.getElementById("selected_user") ; return derive_mkey(a.options[a.selectedIndex].value, "see_password") ;"/>' . "\n"; echo ' <b>Master key </b> <input id="see_password" type="password" name="mkey"/>';
echo "<input name=\"see\" type=\"submit\" value=\"See\" onclick=\"a=document.getElementById('selected_user') ; return derive_mkey(a.options[a.selectedIndex].value, 'see_password') ;\"/>" . "\n";
} }
?> ?>
</form> </form>
@ -168,7 +171,7 @@ if ($user != "")
echo 'password <input id="new_password" type="text" name="pwd"/>'; echo 'password <input id="new_password" type="text" name="pwd"/>';
echo 'master key <input id="new_mkey" type="password" name="mkey"/>'; echo 'master key <input id="new_mkey" type="password" name="mkey"/>';
echo '<input type="button" value="Generate password" onClick="generate_password();"/>'; echo '<input type="button" value="Generate password" onClick="generate_password();"/>';
echo "<input type=\"submit\" name=\"add\" value=\"Add\" onclick=\"a = document.getElementById('new_url') ; a.value = url_domain(a.value); return derive_mkey($user, 'new_mkey') ;\"/>"; echo "<input type=\"submit\" name=\"add\" value=\"Add\" onclick=\"a = document.getElementById('new_url') ; a.value = url_domain(a.value); return derive_mkey('$user', 'new_mkey') ;\"/>";
echo '</form>' . "\n"; echo '</form>' . "\n";
} }
?> ?>

View File

@ -73,8 +73,6 @@ function a2hex(str) {
return hex; return hex;
} }
var pkdbf2 = require("pkdbf2").pkdbf2;
function derive_mkey(user, mkey_target) function derive_mkey(user, mkey_target)
{ {
mkey_target = document.getElementById(mkey_target) ; mkey_target = document.getElementById(mkey_target) ;
@ -88,7 +86,7 @@ function derive_mkey(user, mkey_target)
url = url_domain(document.URL) + "/" + user; url = url_domain(document.URL) + "/" + user;
mkey = a2hex(pkdbf2.pkdbf2(mkey, url, 1000, 256/8)); mkey = a2hex(pkdbf2(mkey, url, 1000, 256/8));
mkey_target.value = mkey; mkey_target.value = mkey;
return true; return true;

View File

@ -17,26 +17,22 @@
along with gPass. If not, see <http://www.gnu.org/licenses/>. along with gPass. If not, see <http://www.gnu.org/licenses/>.
*/ */
var sha256 = require("jssha256").sha256; function hmac256(key, message) {
var ipad = "";
var opad = "";
exports.hmac = { for(i=0; i<key.length; i++)
hmac : function(key, message) { {
var ipad = ""; ipad += String.fromCharCode(key.charCodeAt(i) ^ 0x36);
var opad = ""; opad += String.fromCharCode(key.charCodeAt(i) ^ 0x5c);
for(i=0; i<key.length; i++)
{
ipad += String.fromCharCode(key.charCodeAt(i) ^ 0x36);
opad += String.fromCharCode(key.charCodeAt(i) ^ 0x5c);
}
while (ipad.length < 512/8)
{
ipad += String.fromCharCode(0x36);
opad += String.fromCharCode(0x5c);
}
result = sha256.digest(opad + sha256.digest(ipad + message));
return result;
} }
}; while (ipad.length < 512/8)
{
ipad += String.fromCharCode(0x36);
opad += String.fromCharCode(0x5c);
}
result = digest256(opad + digest256(ipad + message));
return result;
}

View File

@ -232,15 +232,13 @@ function sha256_encode_hex() {
} }
/* Main function: returns a hex string representing the SHA256 value of the /* Main function: returns a hex string representing the SHA256 value of the
given data */ given data */
exports.sha256 = { function digest256 (data) {
digest : function (data) { sha256_init();
sha256_init(); sha256_update(data, data.length);
sha256_update(data, data.length); sha256_final();
sha256_final(); return sha256_encode_hex();
return sha256_encode_hex(); }
}
};
/* test if the JS-interpreter is working properly */ /* test if the JS-interpreter is working properly */
function sha256_self_test() function sha256_self_test()

View File

@ -17,8 +17,6 @@
along with gPass. If not, see <http://www.gnu.org/licenses/>. along with gPass. If not, see <http://www.gnu.org/licenses/>.
*/ */
var hmac256 = require("hmac").hmac;
// http://stackoverflow.com/questions/3745666/how-to-convert-from-hex-to-ascii-in-javascript // http://stackoverflow.com/questions/3745666/how-to-convert-from-hex-to-ascii-in-javascript
function hex2a(hex) { function hex2a(hex) {
var str = ''; var str = '';
@ -27,37 +25,35 @@ function hex2a(hex) {
return str; return str;
} }
exports.pkdbf2 = { function pkdbf2 (password, salt, iterations, outlen) {
pkdbf2 : function(password, salt, iterations, outlen) { var result = "";
var result = ""; var temp = "";
var temp = ""; var temp2 = "";
var temp2 = ""; var temp_res = "";
var temp_res = ""; var temp_res2 = "";
var temp_res2 = "";
for (i=1; result.length < outlen; i++) for (i=1; result.length < outlen; i++)
{
temp = hex2a(hmac256(salt +
String.fromCharCode((i & 0xff000000) >> 24) +
String.fromCharCode((i & 0x00ff0000) >> 16) +
String.fromCharCode((i & 0x0000ff00) >> 8) +
String.fromCharCode((i & 0x000000ff) >> 0),
password));
temp_res = temp;
for(a=1; a<iterations; a++)
{ {
temp = hex2a(hmac256.hmac(salt + temp2 = hex2a(hmac256(temp, password));
String.fromCharCode((i & 0xff000000) >> 24) + temp_res2 = "";
String.fromCharCode((i & 0x00ff0000) >> 16) + for(b = 0; b<temp_res.length; b++)
String.fromCharCode((i & 0x0000ff00) >> 8) + temp_res2 += String.fromCharCode(temp_res.charCodeAt(b) ^ temp2.charCodeAt(b));
String.fromCharCode((i & 0x000000ff) >> 0), temp_res = temp_res2;
password)); temp = temp2;
temp_res = temp;
for(a=1; a<iterations; a++)
{
temp2 = hex2a(hmac256.hmac(temp, password));
temp_res2 = "";
for(b = 0; b<temp_res.length; b++)
temp_res2 += String.fromCharCode(temp_res.charCodeAt(b) ^ temp2.charCodeAt(b));
temp_res = temp_res2;
temp = temp2;
}
result += temp_res;
} }
return result.substr(0, outlen); result += temp_res;
} }
};
return result.substr(0, outlen);
}