sodium-prebuilt
Version:
Prebuilds for Lib Sodium port for node.js
140 lines (113 loc) • 3.44 kB
JavaScript
/**
* Created by bmf on 10/31/13.
*/
;
var should = require('should');
var crypto = require('crypto');
var sodium = require('../build/Release/sodium');
describe('Auth', function() {
it('should return a token', function(done) {
var buf = new Buffer(100);
buf.fill(1);
var key = new Buffer(sodium.crypto_auth_KEYBYTES);
key.fill(0);
key[0] = 9;
key[1] = 9;
var r = sodium.crypto_auth(buf, key);
var token = r.toString('hex');
token.should.eql("22b4c0615f736278655b8e8e7f63bda982f2c96c661c7d34e1d63488bd6c9df9");
done();
});
it('should validate', function(done) {
var buf = crypto.randomBytes(256);
var key = crypto.randomBytes(sodium.crypto_auth_KEYBYTES);
var token = sodium.crypto_auth(buf, key);
var r = sodium.crypto_auth_verify(token, buf, key);
r.should.eql(0);
done();
});
});
describe('crypto_auth check paramters', function() {
var buf = crypto.randomBytes(256);
var key = crypto.randomBytes(sodium.crypto_auth_KEYBYTES);
it('check param 1', function(done) {
var b = "buf";
var k = key;
(function() {
var token = sodium.crypto_auth(b, k);
}).should.throw();
b = 5;
(function() {
var token = sodium.crypto_auth(b, k);
}).should.throw();
done();
});
it('check param 2', function(done) {
var b = buf;
var k = "key";
(function() {
var token = sodium.crypto_auth(b, k);
}).should.throw();
k = new Buffer(5);
(function() {
var token = sodium.crypto_auth(b, k);
}).should.throw();
k = 5;
(function() {
var token = sodium.crypto_auth(b, k);
}).should.throw();
done();
});
});
describe('crypto_auth_verify check paramters', function() {
var buf = crypto.randomBytes(256);
var key = crypto.randomBytes(sodium.crypto_auth_KEYBYTES);
var token = sodium.crypto_auth(buf, key);
it('check param 1', function(done) {
var t = "token";
var b = buf;
var k = key;
(function() {
var r = sodium.crypto_auth_verify(t, b, k);
}).should.throw();
t = new Buffer(5);
(function() {
var r = sodium.crypto_auth_verify(t, b, k);
}).should.throw();
t = 5;
(function() {
var r = sodium.crypto_auth_verify(t, b, k);
}).should.throw();
done();
});
it('check param 2', function(done) {
var t = token;
var b = "buf";
var k = key;
(function() {
var r = sodium.crypto_auth_verify(t, b, k);
}).should.throw();
b = 5;
(function() {
var r = sodium.crypto_auth_verify(t, b, k);
}).should.throw();
done();
});
it('check param 3', function(done) {
var t = token;
var b = buf;
var k = "key";
(function() {
var r = sodium.crypto_auth_verify(t, b, k);
}).should.throw();
k = new Buffer(5);
(function() {
var r = sodium.crypto_auth_verify(t, b, k);
}).should.throw();
k = 5;
(function() {
var r = sodium.crypto_auth_verify(t, b, k);
}).should.throw();
done();
});
});