aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA256.cpp
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2023-07-28 01:33:00 -0700
committerGravatar GitHub <noreply@github.com> 2023-07-28 01:33:00 -0700
commite110ccf84d8d9034e82a79bf7abf1fa92b2370be (patch)
treea4be8d322c2c61b767abce74ad670eeb65620b2e /src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA256.cpp
parentc2a744f0cc1af080b2803e8b3b678bdaa4a1d14f (diff)
downloadbun-e110ccf84d8d9034e82a79bf7abf1fa92b2370be.tar.gz
bun-e110ccf84d8d9034e82a79bf7abf1fa92b2370be.tar.zst
bun-e110ccf84d8d9034e82a79bf7abf1fa92b2370be.zip
Fixes #3795 (#3856)
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Diffstat (limited to 'src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA256.cpp')
-rw-r--r--src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA256.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA256.cpp b/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA256.cpp
index 216eccb5d..c9bad917b 100644
--- a/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA256.cpp
+++ b/src/bun.js/bindings/webcrypto/CryptoAlgorithmSHA256.cpp
@@ -51,10 +51,21 @@ void CryptoAlgorithmSHA256::digest(Vector<uint8_t>&& message, VectorCallback&& c
return;
}
+ if (message.size() < 64) {
+ auto moved = WTFMove(message);
+ digest->addBytes(moved.data(), moved.size());
+ auto result = digest->computeHash();
+ ScriptExecutionContext::postTaskTo(context.identifier(), [callback = WTFMove(callback), result = WTFMove(result)](auto&) {
+ callback(result);
+ });
+ return;
+ }
+ context.refEventLoop();
workQueue.dispatch([digest = WTFMove(digest), message = WTFMove(message), callback = WTFMove(callback), contextIdentifier = context.identifier()]() mutable {
digest->addBytes(message.data(), message.size());
auto result = digest->computeHash();
- ScriptExecutionContext::postTaskTo(contextIdentifier, [callback = WTFMove(callback), result = WTFMove(result)](auto&) {
+ ScriptExecutionContext::postTaskTo(contextIdentifier, [callback = WTFMove(callback), result = WTFMove(result)](auto& context) {
+ context.unrefEventLoop();
callback(result);
});
});