mirror of
https://codeberg.org/streams/streams.git
synced 2024-09-20 07:35:14 +00:00
53 lines
No EOL
1.8 KiB
JavaScript
53 lines
No EOL
1.8 KiB
JavaScript
const assert = require('assert');
|
|
const { describe, it } = require('mocha');
|
|
const { expect } = require('chai');
|
|
const { SodiumPlus } = require('../index');
|
|
const VERBOSE = false;
|
|
|
|
let sodium;
|
|
|
|
(async () => {
|
|
if (!sodium) sodium = await SodiumPlus.auto();
|
|
if (VERBOSE) {
|
|
console.log({
|
|
'libsodium-wrappers': sodium.isLibsodiumWrappers(),
|
|
'sodium-native': sodium.isSodiumNative()
|
|
});
|
|
}
|
|
})();
|
|
|
|
describe('SodiumPlus', () => {
|
|
it('SodiumPlus.crypto_pwhash_str', async function () {
|
|
this.timeout(0);
|
|
if (!sodium) sodium = await SodiumPlus.auto();
|
|
let password = 'correct horse battery staple';
|
|
let hashed = await sodium.crypto_pwhash_str(
|
|
password,
|
|
sodium.CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,
|
|
sodium.CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
|
|
);
|
|
assert(hashed);
|
|
assert(await sodium.crypto_pwhash_str_verify(password, hashed));
|
|
assert(await sodium.crypto_pwhash_str_verify('incorrect password', hashed) === false);
|
|
|
|
let needs;
|
|
needs = await sodium.crypto_pwhash_str_needs_rehash(
|
|
hashed,
|
|
sodium.CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,
|
|
sodium.CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
|
|
);
|
|
expect(needs).to.be.equals(false);
|
|
needs = await sodium.crypto_pwhash_str_needs_rehash(
|
|
hashed,
|
|
sodium.CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE + 1,
|
|
sodium.CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
|
|
);
|
|
expect(needs).to.be.equals(true);
|
|
needs = await sodium.crypto_pwhash_str_needs_rehash(
|
|
hashed,
|
|
sodium.CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,
|
|
sodium.CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE << 1
|
|
);
|
|
expect(needs).to.be.equals(true);
|
|
});
|
|
}); |