mirror of
https://github.com/sstent/node.git
synced 2026-01-27 07:33:13 +00:00
119 lines
3.1 KiB
JavaScript
119 lines
3.1 KiB
JavaScript
var common = require('./common');
|
|
var auth = require(common.dir.lib + '/auth');
|
|
|
|
function test(test) {
|
|
gently = new Gently();
|
|
test();
|
|
gently.verify(test.name);
|
|
}
|
|
|
|
test(function sha1() {
|
|
assert.deepEqual(
|
|
auth.sha1('root'),
|
|
new Buffer([
|
|
220, 118, 233, 240, 192,
|
|
0, 110, 143, 145, 158,
|
|
12, 81, 92, 102, 219,
|
|
186, 57, 130, 247, 133
|
|
]).toString('binary')
|
|
);
|
|
});
|
|
|
|
test(function xor() {
|
|
var a = new Buffer([170, 220]), // 10101010 11011100
|
|
b = new Buffer([220, 170]), // 11011100 10101010
|
|
expected = new Buffer([118, 118]); // 01110110 01110110
|
|
|
|
assert.deepEqual(auth.xor(a.toString('binary'), b.toString('binary')), expected);
|
|
});
|
|
|
|
test(function token() {
|
|
var SCRAMBLE = new Buffer([0, 1, 2, 3, 4, 5]);
|
|
|
|
(function testRegular() {
|
|
var PASS = 'root',
|
|
STAGE_1 = auth.sha1(PASS),
|
|
TOKEN = auth.xor(
|
|
auth.sha1(new Buffer(SCRAMBLE + auth.sha1(STAGE_1), 'binary')),
|
|
STAGE_1
|
|
);
|
|
|
|
assert.deepEqual(auth.token('root', SCRAMBLE), TOKEN);
|
|
})();
|
|
|
|
(function testNoPassword() {
|
|
assert.deepEqual(auth.token(null, SCRAMBLE), new Buffer(0));
|
|
})();
|
|
});
|
|
|
|
test(function hashPassword() {
|
|
function verify(password, bytes){
|
|
var expected = new Buffer(bytes);
|
|
var actual = auth.hashPassword(password);
|
|
|
|
assert.deepEqual(actual, expected);
|
|
}
|
|
|
|
verify('root', [0x67, 0x45, 0x7E, 0x22, 0x6a, 0x1a, 0x15, 0xbd]);
|
|
verify('long password test', [0x6c, 0x24, 0x68, 0x41, 0x2c, 0xa6, 0x86, 0x56]);
|
|
verify('saf789yasfbsd89f', [0x6c, 0x9b, 0x2f, 0x07, 0x17, 0xeb, 0x95, 0xc6]);
|
|
});
|
|
|
|
|
|
test(function randomInit() {
|
|
function verify(in1, in2, out1, out2){
|
|
var r = auth.randomInit(in1, in2);
|
|
assert.equal(out1, r.seed1);
|
|
assert.equal(out2, r.seed2);
|
|
}
|
|
|
|
verify(0x00000000, 0x00000000, 0x00000000, 0x00000000);
|
|
verify(0x0000FFFF, 0x0000FFFF, 0x0000ffff, 0x0000ffff);
|
|
verify(0x50000000, 0x50000000, 0x10000001, 0x10000001);
|
|
verify(0xFFFFFFFF, 0xFFFFFFFF, 0x00000003, 0x00000003);
|
|
verify(3252345, 7149734, 0x0031a079, 0x006d18a6);
|
|
});
|
|
|
|
test(function myRnd() {
|
|
function verifySequence(seed1, seed2, expected){
|
|
var r = auth.randomInit(seed1, seed2);
|
|
for (var i = 0; i < expected.length; i++){
|
|
var n = auth.myRnd(r);
|
|
|
|
// we will test to 14 digits, since
|
|
// we only ever use this function mutliplied
|
|
// by small numbers anyway
|
|
|
|
var a = ':'+n;
|
|
var b = ':'+expected[i];
|
|
|
|
assert.equal(a.substr(1, 16), b.substr(1, 16));
|
|
}
|
|
}
|
|
|
|
verifySequence(3252345, 7149734, [
|
|
0.0157456556481734,
|
|
0.0696413620092360,
|
|
0.3009698738353047,
|
|
0.2959253138824602,
|
|
0.5767169786400320,
|
|
0.9958089822864243,
|
|
0.2488940062456708,
|
|
0.2570431151027261,
|
|
0.5385335875102631,
|
|
0.9215386229767824,
|
|
]);
|
|
});
|
|
|
|
test(function scramble323() {
|
|
function verify(message, password, bytes){
|
|
var expected = new Buffer(bytes);
|
|
var actual = auth.scramble323(new Buffer(message), password);
|
|
|
|
assert.deepEqual(actual, expected);
|
|
}
|
|
|
|
verify('8bytesofstuff', 'root', [0x5a, 0x4d, 0x46, 0x47, 0x43, 0x53, 0x58, 0x5f]);
|
|
verify('e8cf00cec9ec825af22', 'saf789yasfbsd', [0x4d, 0x54, 0x5b, 0x47, 0x5f, 0x52, 0x4d, 0x45]);
|
|
});
|