Make Argon2 WebAssembly module unload after use (#5072)

This commit is contained in:
Bernd Schoolmann 2023-07-03 14:12:42 +02:00 committed by GitHub
parent 3185c0a61b
commit f5c329030d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 10 deletions

View File

@ -69,6 +69,7 @@ export class WebCryptoFunctionService implements CryptoFunctionService {
hashLen: 32, hashLen: 32,
type: argon2.ArgonType.Argon2id, type: argon2.ArgonType.Argon2id,
}); });
argon2.unloadRuntime();
return result.hash; return result.hash;
} }

View File

@ -1,5 +1,5 @@
diff --git a/node_modules/argon2-browser/lib/argon2.js b/node_modules/argon2-browser/lib/argon2.js diff --git a/node_modules/argon2-browser/lib/argon2.js b/node_modules/argon2-browser/lib/argon2.js
index ffa77a5..b498e2d 100644 index ffa77a5..98b2f13 100644
--- a/node_modules/argon2-browser/lib/argon2.js --- a/node_modules/argon2-browser/lib/argon2.js
+++ b/node_modules/argon2-browser/lib/argon2.js +++ b/node_modules/argon2-browser/lib/argon2.js
@@ -78,16 +78,27 @@ @@ -78,16 +78,27 @@
@ -36,10 +36,16 @@ index ffa77a5..b498e2d 100644
return fetch(wasmPath) return fetch(wasmPath)
.then((response) => response.arrayBuffer()) .then((response) => response.arrayBuffer())
.then((ab) => new Uint8Array(ab)); .then((ab) => new Uint8Array(ab));
@@ -354,6 +365,24 @@ @@ -351,7 +362,28 @@
} loadModule._module.unloadRuntime();
} delete loadModule._promise;
delete loadModule._module;
+ if (typeof require !== 'undefined') {
+ delete require.cache[require.resolve('../dist/argon2.js')]
+ }
+ }
+ }
+
+ // ref: https://stackoverflow.com/a/47880734/1090359 + // ref: https://stackoverflow.com/a/47880734/1090359
+ // ref: https://github.com/GoogleChromeLabs/wasm-feature-detect/blob/main/src/detectors/simd/module.wat (translated with wat2wasm) + // ref: https://github.com/GoogleChromeLabs/wasm-feature-detect/blob/main/src/detectors/simd/module.wat (translated with wat2wasm)
+ function checkIfSIMDSupported() { + function checkIfSIMDSupported() {
@ -54,10 +60,8 @@ index ffa77a5..b498e2d 100644
+ } + }
+ } catch { + } catch {
+ return false; + return false;
+ } }
+ return false; + return false;
+ } }
+
return { return {
ArgonType,
hash: argon2Hash,