123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- /**
- * Created by bmf on 10/31/13.
- */
- "use strict";
- var assert = require('assert');
- var sodium = require('../build/Release/sodium');
- var toBuffer = require('../lib/toBuffer');
- describe('PWHash scryptsalsa208sha256', function() {
- it('should verify the generated hash with same password', function(done) {
- var password = Buffer.from('this is a test password','utf8');
-
- var out = sodium.crypto_pwhash_scryptsalsa208sha256_str(
- password,
- sodium.crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE,
- sodium.crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE);
- assert(sodium.crypto_pwhash_scryptsalsa208sha256_str_verify(out, password));
-
- done();
- });
-
- it('should not verify the generated hash with different passwords', function(done) {
- var password = Buffer.from('this is a test password','utf8');
- var badPassword = Buffer.from('this is a bad password','utf8');
-
- var out = sodium.crypto_pwhash_scryptsalsa208sha256_str(
- password,
- sodium.crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE,
- sodium.crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE);
-
- assert(sodium.crypto_pwhash_scryptsalsa208sha256_str_verify(out, badPassword)==false);
-
- done();
- });
-
- it('should generate pwhash using low level scrypt API', function(done) {
- var password = Buffer.from("pleaseletmein",'utf8');
- var salt = Buffer.from('SodiumChloride','utf8');
-
- var result = toBuffer("7023bdcb3afd7348461c06cd81fd38ebfda8fbba904f8e3ea9b543f6545da1f2d5432955613f0fcf62d49705242a9af9e61e85dc0d651e40dfcf017b45575887");
-
- var N = 16384;
- var r = 8;
- var p = 1;
- var output = Buffer.allocUnsafe(64);
-
- sodium.crypto_pwhash_scryptsalsa208sha256_ll(password, salt, N, r, p, output);
- assert(sodium.compare(result,output)==0);
- done();
- });
- });
- describe('PWHash', function() {
- it('should verify the generated hash with same password', function(done) {
- var password = Buffer.from('this is a test password','utf8');
-
- var out = sodium.crypto_pwhash_str(
- password,
- sodium.crypto_pwhash_OPSLIMIT_INTERACTIVE,
- sodium.crypto_pwhash_MEMLIMIT_INTERACTIVE);
- var valid = sodium.crypto_pwhash_str_verify(out, password);
- assert(valid);
-
- done();
- });
-
- it('should not verify the generated hash with different passwords', function(done) {
- var password = Buffer.from('this is a test password','utf8');
- var badPassword = Buffer.from('this is a bad password','utf8');
-
- var out = sodium.crypto_pwhash_str(
- password,
- sodium.crypto_pwhash_OPSLIMIT_INTERACTIVE,
- sodium.crypto_pwhash_MEMLIMIT_INTERACTIVE);
-
- assert(sodium.crypto_pwhash_str_verify(out, badPassword)==false);
- done();
- });
- });
-
- describe('PWHash argon2i', function() {
- it('should verify the generated hash with same password', function(done) {
- var password = Buffer.from('this is a test password','utf8');
-
- var hash = sodium.crypto_pwhash_argon2i_str(
- password,
- sodium.crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE,
- sodium.crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE);
- var result = sodium.crypto_pwhash_argon2i_str_verify(hash, password);
- assert(result);
-
- done();
- });
-
- it('should not verify the generated hash with different passwords', function(done) {
- var password = Buffer.from('this is a test password','utf8');
- var badPassword = Buffer.from('this is a bad password','utf8');
-
- var out = sodium.crypto_pwhash_argon2i_str(
- password,
- sodium.crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE,
- sodium.crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE);
-
- assert(sodium.crypto_pwhash_argon2i_str_verify(out, badPassword)==false);
-
- done();
- });
- });
-
|