Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 4f8eecb565eb2344d6e27d89b207e299b7f7cdf8
https://github.com/WebKit/WebKit/commit/4f8eecb565eb2344d6e27d89b207e299b7f7cdf8
Author: Darin Adler <[email protected]>
Date: 2025-07-13 (Sun, 13 Jul 2025)
Changed paths:
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
A Source/WebCore/crypto/SerializedCryptoKeyWrap.cpp
M Source/WebCore/crypto/SerializedCryptoKeyWrap.h
M Source/WebCore/crypto/algorithms/CryptoAlgorithmAESCFB.cpp
M Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.cpp
M Source/WebCore/crypto/cocoa/CryptoAlgorithmRSA_PSSMac.cpp
M Source/WebCore/crypto/gcrypt/CryptoAlgorithmEd25519GCrypt.cpp
M Source/WebKit/UIProcess/API/C/WKPage.cpp
M Source/WebKit/UIProcess/Cocoa/NavigationState.mm
M Source/WebKit/UIProcess/WebProcessProxy.cpp
Log Message:
-----------
Avoidable hangs in WebCore::defaultWebCryptoMasterKey
https://bugs.webkit.org/show_bug.cgi?id=295844
rdar://151058747
Reviewed by Sam Weinig.
The code in WebCore::defaultWebCryptoMasterKey does work that on typical
platforms should
not be done in the main thread or work queue. And in fact, clients of WebKit
like Safari
on iOS implement this asynchronously. But on platforms like Mac where the
implementation
inside WebKit is used, we were doing the work synchronously. We've seen hang
reports from
Mac Safari that show us this is a problem for some users in practice. The fix
is to use
a separate work queue for this, analogous to what clients were already doing.
* Source/WebCore/Sources.txt: Added SerializedCryptoKeyWrap.cpp.
* Source/WebCore/WebCore.xcodeproj/project.pbxproj: Ditto.
* Source/WebCore/crypto/SerializedCryptoKeyWrap.cpp: Added.
(WebCore::getDefaultWebCryptoMasterKey): Added. Calls defaultWebCryptoMasterKey
on
a dedicated work queue and then marshals the result back to the main work queue.
* Source/WebCore/crypto/SerializedCryptoKeyWrap.h: Added
getDefaultWebCryptoMasterKey.
* Source/WebCore/crypto/algorithms/CryptoAlgorithmAESCFB.cpp: Added missing
include,
needed due to unified source differences.
* Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.cpp: Ditto.
* Source/WebCore/crypto/cocoa/CryptoAlgorithmRSA_PSSMac.cpp: Ditto.
* Source/WebCore/crypto/gcrypt/CryptoAlgorithmEd25519GCrypt.cpp: Ditto.
* Source/WebCore/crypto/gcrypt/CryptoAlgorithmEd25519GCrypt.cpp:
* Source/WebKit/UIProcess/API/C/WKPage.cpp:
(WKPageSetPageNavigationClient): Use getDefaultWebCryptoMasterKey.
* Source/WebKit/UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::legacyWebCryptoMasterKey): Ditto.
* Source/WebKit/UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::getWebCryptoMasterKey): Ditto.
Canonical link: https://commits.webkit.org/297317@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes