Я создаю форму с хэшированием внешнего пароля:
<form action='login.php' method='post' onsubmit='hash(this)'>
Password: <input type='password' name='password'><br>
<input type='hidden' name='shapassword'>
<input type='submit'>
</form>
Моя хеш-функция использует веб-API SubtleCrypto. Вызывается digest()
функция, которая возвращает Promise:
function hash(form) {
const buff = new TextEncoder().encode(form.password.value);
p1 = crypto.subtle.digest('SHA-512', buff).then(param => {
form.shapassword.value = new TextDecoder().decode(param);
});
}
Однако shapassword не передается в скрипт, который получает данные из формы. Я полагаю, hash()
возвращается до выполнения Обещания, я прав? Как предотвратить выход из функции hash()
или доступ к объекту form
из функции then
?