Sanitize the hash generated on mobile

This commit is contained in:
Vishnu Mohandas 2020-10-01 17:18:11 +05:30
parent 906e3cfc4a
commit d7ed746658

View file

@ -44,20 +44,27 @@ export async function decrypt(data: Uint8Array, nonce: Uint8Array, key: Uint8Arr
return sodium.crypto_secretbox_open_easy(data, nonce, key);
}
// TODO(https://github.com/firstfloorsoftware/flutter_sodium/issues/46)
export async function verifyHash(hash: string, input: Uint8Array) {
// hash =
// '$argon2id$v=19$m=262144,t=4,p=1$WxOZeKEfky2PulhotYHn2Q$JzOaXBmxDkAmFyK+HJZfgvEEHYE41Awk53In8BK2cCE<43>';
console.log(hash);
var sanitizedHash = "";
for (var index = 0; index < hash.length; index++) {
if (hash.charCodeAt(index) == 0) {
sanitizedHash += "\uFFFD";
break;
} else {
sanitizedHash += hash.charAt(index);
}
}
await sodium.ready;
return (sodium.crypto_pwhash_str_verify(hash, input) == 0);
return (sodium.crypto_pwhash_str_verify(sanitizedHash, input) == 0);
}
export async function hash(input: string | Uint8Array) {
await sodium.ready;
return sodium.crypto_pwhash_str(
input,
sodium.crypto_pwhash_MEMLIMIT_SENSITIVE,
sodium.crypto_pwhash_MEMLIMIT_SENSITIVE,
sodium.crypto_pwhash_OPSLIMIT_SENSITIVE,
sodium.crypto_pwhash_MEMLIMIT_MODERATE,
);
}