libsignal-protocol-javascript/test/KeyHelperTest.js
2016-06-14 17:36:31 -07:00

59 lines
2.2 KiB
JavaScript

describe('KeyHelper', function() {
function validateKeyPair(keyPair) {
assert.isDefined(keyPair.pubKey);
assert.isDefined(keyPair.privKey);
assert.strictEqual(keyPair.privKey.byteLength, 32);
assert.strictEqual(keyPair.pubKey.byteLength, 33);
assert.strictEqual(new Uint8Array(keyPair.pubKey)[0], 5);
}
describe('generateIdentityKeyPair', function() {
it ('works', function() {
libsignal.KeyHelper.generateIdentityKeyPair().then(function(keyPair) {
validateKeyPair(keyPair);
});
});
});
describe('generateRegistrationId', function() {
it('generates a 14-bit integer', function() {
var registrationId = libsignal.KeyHelper.generateRegistrationId();
assert.isNumber(registrationId);
assert(registrationId >= 0);
assert(registrationId < 16384);
assert.strictEqual(registrationId, Math.round(registrationId)); // integer
});
});
describe("generatePreKey", function() {
it('generates a preKey', function(done) {
libsignal.KeyHelper.generatePreKey(1337).then(function(result) {
validateKeyPair(result.keyPair);
assert.strictEqual(result.keyId, 1337);
}).then(done, done);
});
it('throws on bad keyId', function() {
assert.throws(function(done) {
libsignal.KeyHelper.generatePreKey('bad');
}, TypeError);
});
});
describe("generateSignedPreKey", function() {
it('generates a preKey', function(done) {
libsignal.KeyHelper.generateIdentityKeyPair().then(function(identityKey) {
libsignal.KeyHelper.generateSignedPreKey(identityKey, 1337).then(function(result) {
validateKeyPair(result.keyPair);
assert.strictEqual(result.keyId, 1337);
//todo: validate result.signature
});
}).then(done, done);
});
it('throws on bad keyId', function() {
assert.throws(function(done) {
libsignal.KeyHelper.generateSignedPreKey('bad');
}, TypeError);
});
});
});