Compare commits

...

3 Commits

3 changed files with 26 additions and 2 deletions

View File

@ -39,7 +39,6 @@ function random_string (len = 8) {
throw new Error ('invalid length');
return crypto.randomBytes (Math.ceil (len * 3 / 4))
.toString ('base64')
.replace (/[=]+$/u, '')
.substr (0, len);
}

View File

@ -2,7 +2,7 @@ module.exports = function(config) {
config.set({
mutator: "javascript",
packageManager: "yarn",
reporters: ["clear-text"],
reporters: ["clear-text", "progress"],
testRunner: "command",
transpilers: [],
coverageAnalysis: "all",

View File

@ -29,6 +29,13 @@ test ('random_hex should refuse lenght smaller 1', (t) => {
t.is(error.message, 'invalid length');
});
test ('random_hex should always return correct length', (t)=>{
for (let i = 1; i < 32; i++) {
const hex = crypto.random_hex (i);
t.is (hex.length, i);
}
});
test ('random_string', (t) => {
const str = crypto.random_string (16);
t.is (str.length, 16);
@ -46,6 +53,14 @@ test ('random_string should refuse lenght smaller 1', (t) => {
t.is(error.message, 'invalid length');
});
test ('random_string should always return correct length', (t)=>{
for (let i = 1; i < 32; i++) {
const str = crypto.random_string (i);
t.is (str.length, i);
}
});
test ('hash_sha512', (t) => {
const hash = crypto.hash_sha512 ('a', 'b');
t.is (
@ -92,6 +107,16 @@ test ('verify_signature', (t) => {
t.deepEqual (obj, dec);
});
test ('do not fail verification if timeout unspecified', async (t) => {
const obj = { foo: 'bar' };
const str = crypto.sign_object (obj, 'baz');
await new Promise ((res) => {
setTimeout (res, 10);
});
const dec = crypto.verify_signature (str, 'baz');
t.deepEqual (obj, dec);
});
test ('reject tampered signatures', (t) => {
const obj = { foo: 'bar' };
const str = crypto.sign_object (obj, 'baz');