Использование libsodium.crypto_pwhash (Argon2) в узле

У меня возникли проблемы с работой crypto_pwhash_str в моем проекте Node. Я правильно импортировал библиотеки libsodium-wrappers-sumo и libsodium-sumo и могу успешно вызывать другие функции. Мой вызов проблемной функции выглядит так:

sodium.crypto_pwhash_str(password, 3, 4096, 'text')

В этом случае пароль — это просто строковый объект с буквой «а».

Когда я запускаю отладчик и пытаюсь понять, что происходит не так, я получаю этот внутренний блок кода:

if ((libsodium._crypto_pwhash_str(hashed_password_address, password_address, password_length, 0, opsLimit, 0, memLimit) | 0) === 0) {
  var ret = libsodium.Pointer_stringify(hashed_password_address);
  _free_all(address_pool);
  return ret;
}
_free_and_throw_error(address_pool);

Ему не удается войти в цикл for, и вызов _crypto_pwhash_str() по какой-то причине оценивается как -1.

Кто-нибудь имеет опыт работы с этой библиотекой или может помочь мне понять, что я делаю неправильно. Довольно новичок в Node, поэтому я совершенно потерян.


person TovrikTheThird    schedule 13.12.2016    source источник


Ответы (1)


Догадаться. Я (по какой-то глупой причине) думал, что memlimit, который я установил на 4096, измеряется в МБ. Судя по всему, он измеряется в килобайтах и ​​имеет МИНИМАЛЬНОЕ допустимое значение 32768 (32 МБ). Теперь это работает!

person TovrikTheThird    schedule 13.12.2016