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

Reply via email to