Procházet zdrojové kódy

Sanitize the hash generated on mobile

Vishnu Mohandas před 4 roky
rodič
revize
d7ed746658
1 změnil soubory, kde provedl 13 přidání a 6 odebrání
  1. 13 6
      src/utils/crypto/libsodium.ts

+ 13 - 6
src/utils/crypto/libsodium.ts

@@ -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�';
-    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,
     );
 }