Skip to content

Commit

Permalink
cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
iamcal authored and felixge committed Sep 2, 2010
1 parent 7c06248 commit 45a240a
Showing 1 changed file with 15 additions and 57 deletions.
72 changes: 15 additions & 57 deletions lib/mysql/auth.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,19 +50,7 @@ exports.hashPassword = function(password) {

// nr^= (((nr & 63)+add)*c)+ (nr << 8);
// nr = xor(nr, add(mul(add(and(nr, 63), add), c), shl(nr, 8)))
nr = this.xor32(
nr,
this.add32(
this.mul32(
this.add32(
this.and32(nr, [0,63]),
[0,add]
),
[0,c]
),
this.shl32(nr, 8)
)
);
nr = this.xor32(nr, this.add32(this.mul32(this.add32(this.and32(nr, [0,63]), [0,add]), [0,c]), this.shl32(nr, 8)));

// nr2+=(nr2 << 8) ^ nr;
// nr2 = add(nr2, xor(shl(nr2, 8), nr))
Expand All @@ -72,8 +60,8 @@ exports.hashPassword = function(password) {
add += c;
}

this.int32Write2(result, nr, 0);
this.int32Write2(result, nr2, 4);
this.int31Write(result, nr, 0);
this.int31Write(result, nr2, 4);

return result;
}
Expand All @@ -96,34 +84,17 @@ exports.xor32 = function(a,b){
}

exports.add32 = function(a,b){

var low = a[1] + b[1];
var rem = (low & 0xFFFF0000) >> 16;
var high = a[0] + b[0] + rem;

return [high & 0xFFFF, low & 0xFFFF];
var w1 = a[1] + b[1];
var w2 = a[0] + b[0] + ((w1 & 0xFFFF0000) >> 16);
return [w2 & 0xFFFF, w1 & 0xFFFF];
}

exports.mul32 = function(a,b){

var x = a[1] * b[1];
var y = a[0] * b[1];
var z = a[1] * b[0];
var w = a[0] * b[0];

var col1 = x & 0xFFFF;
var col2 = ((x >> 16) & 0xFFFF) + (y & 0xFFFF) + (z & 0xFFFF);
var col3 = ((y >> 16) & 0xFFFF) + ((z >> 16) & 0xFFFF) + (w & 0xFFFF);
var col4 = ((w >> 16) & 0xFFFF);

var w1 = col1;
var w2 = col2 & 0xFFFF;
var col2_over = ((col2 >> 16) & 0xFFFF);
var w3 = (col3 + col2_over) & 0xFFFF;
var col3_over = ((w3 >> 16) & 0xFFFF);
var w4 = (col4 + col3_over) & 0xFFFF;

return [w2, w1];
// based on this example of multiplying 32b ints using 16b
// http://www.dsprelated.com/showmessage/89790/1.php
var w1 = a[1] * b[1];
var w2 = (((a[1] * b[1]) >> 16) & 0xFFFF) + ((a[0] * b[1]) & 0xFFFF) + (a[1] * b[0] & 0xFFFF);
return [w2 & 0xFFFF, w1 & 0xFFFF];
}

exports.and32 = function(a,b){
Expand All @@ -132,22 +103,9 @@ exports.and32 = function(a,b){

exports.shl32 = function(a,b){
// assume b is 16 or less
var low = a[1] << b;
var rem = (low & 0xFFFF0000) >> 16;
var high = (a[0] << b) | rem;

return [high & 0xFFFF, low & 0xFFFF];
}



// Provided by Herbert Vojčík, needed to deal with float point precision problems in JS
exports.multiply = function(a, b) {
var a1 = a >>> 16,
a2 = a & 0xffff;
// Precondition: b is in 32bit range

return ((a1 * b << 16) + a2 * b) >>> 0;
var w1 = a[1] << b;
var w2 = (a[0] << b) | ((w1 & 0xFFFF0000) >> 16);
return [w2 & 0xFFFF, w1 & 0xFFFF];
}

exports.int32Write = function(buffer, number, offset) {
Expand All @@ -161,7 +119,7 @@ exports.int32Write = function(buffer, number, offset) {
buffer[offset + 3] = Math.floor(unsigned);
};

exports.int32Write2 = function(buffer, number, offset) {
exports.int31Write = function(buffer, number, offset) {
buffer[offset] = (number[0] >> 8) & 0x7F;
buffer[offset+1] = (number[0]) & 0xFF;
buffer[offset+2] = (number[1] >> 8) & 0xFF;
Expand Down

0 comments on commit 45a240a

Please sign in to comment.