Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3dfdbed8e4f07513f241af3aa56fac6a3d2b7810
      
https://github.com/WebKit/WebKit/commit/3dfdbed8e4f07513f241af3aa56fac6a3d2b7810
  Author: Alex Christensen <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M Source/WTF/wtf/spi/cocoa/SecuritySPI.h
    M Source/WebCore/html/LinkRelAttribute.cpp
    M Source/WebCore/html/LinkRelAttribute.h
    M Source/WebKit/Configurations/AllowedSPI.toml
    M Source/WebKit/NetworkProcess/NetworkLoadParameters.h
    M Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp
    M Source/WebKit/NetworkProcess/NetworkResourceLoader.h
    M Source/WebKit/NetworkProcess/NetworkSession.cpp
    M Source/WebKit/NetworkProcess/NetworkSession.h
    M Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h
    M 
Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.serialization.in
    A Source/WebKit/NetworkProcess/QualifiedServerTrustFetch.cpp
    A Source/WebKit/NetworkProcess/QualifiedServerTrustFetch.h
    A Source/WebKit/NetworkProcess/cocoa/SecuritySoftLink.h
    A Source/WebKit/NetworkProcess/cocoa/SecuritySoftLink.mm
    M Source/WebKit/PlatformCocoa.cmake
    M Source/WebKit/Sources.txt
    M Source/WebKit/SourcesCMakeCocoa.txt
    M Source/WebKit/UIProcess/API/Cocoa/WKWebView.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm
    M Source/WebKit/UIProcess/API/Swift/WebPage.swift
    M Source/WebKit/UIProcess/Cocoa/NavigationState.h
    M Source/WebKit/UIProcess/Cocoa/NavigationState.mm
    M Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
    M Source/WebKit/UIProcess/Network/NetworkProcessProxy.h
    M Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in
    M Source/WebKit/UIProcess/PageLoadState.cpp
    M Source/WebKit/UIProcess/PageLoadState.h
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Tools/TestWebKitAPI/Helpers/cocoa/HTTPServer.h
    M Tools/TestWebKitAPI/Helpers/cocoa/HTTPServer.swift
    M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebViewServerTrustKVC.mm
    M Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebPageTests.swift

  Log Message:
  -----------
  Implement 2-QWAC fetching
https://bugs.webkit.org/show_bug.cgi?id=320945
rdar://166719636

Reviewed by Brady Eidson.

This is the beginning of the implementation of 2-QWACs.
See 
https://www.etsi.org/deliver/etsi_ts/119400_119499/11941105/02.01.01_60/ts_11941105v020101p.pdf
This inspects the link header fields of the response to a main resource request,
and if there's a URL with a rel value of tls-certificate-binding we fetch it 
and evaluate the response.
If the resposne is valid, we will populate WKWebView.qualifiedServerTrust.
Since the validity check isn't implemented yet, we just reuse the TLS trust for 
now when testing, but as a
follow-up we'll need to do the check and populate 
WKWebView.qualifiedServerTrust with a trust from the
fetched response data when testing.

Test: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebViewServerTrustKVC.mm

* Source/WTF/wtf/spi/cocoa/SecuritySPI.h:
* Source/WebCore/html/LinkRelAttribute.cpp:
(WebCore::LinkRelAttribute::LinkRelAttribute):
(WebCore::LinkRelAttribute::isSupported):
* Source/WebCore/html/LinkRelAttribute.h:
* Source/WebKit/Configurations/AllowedSPI.toml:
* Source/WebKit/NetworkProcess/NetworkLoadParameters.h:
* Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::didFinishLoading):
(WebKit::NetworkResourceLoader::checkForQualifiedServerTrust):
* Source/WebKit/NetworkProcess/NetworkResourceLoader.h:
* Source/WebKit/NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::NetworkSession):
* Source/WebKit/NetworkProcess/NetworkSession.h:
(WebKit::NetworkSession::qualifiedServerTrustDebugEnabledForTesting const):
* Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h:
* 
Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.serialization.in:
* Source/WebKit/NetworkProcess/QualifiedServerTrustFetch.cpp: Added.
(WebKit::globalQualifiedServerTrustFetchMap):
(WebKit::QualifiedServerTrustFetch::keepAliveUntilCompletion):
(WebKit::QualifiedServerTrustFetch::didReachCompletion):
(WebKit::qualifiedServerTrustParameters):
(WebKit::QualifiedServerTrustFetch::QualifiedServerTrustFetch):
(WebKit::QualifiedServerTrustFetch::willSendRedirectedRequest):
(WebKit::QualifiedServerTrustFetch::didReceiveResponse):
(WebKit::QualifiedServerTrustFetch::didReceiveBuffer):
(WebKit::QualifiedServerTrustFetch::didFinishLoading):
(WebKit::QualifiedServerTrustFetch::didFailLoading):
(WebKit::QualifiedServerTrustFetch::cancel):
(WebKit::QualifiedServerTrustFetch::didSendData):
* Source/WebKit/NetworkProcess/QualifiedServerTrustFetch.h: Added.
* Source/WebKit/NetworkProcess/cocoa/SecuritySoftLink.h: Added.
* Source/WebKit/NetworkProcess/cocoa/SecuritySoftLink.mm: Added.
* Source/WebKit/PlatformCocoa.cmake:
* Source/WebKit/Sources.txt:
* Source/WebKit/SourcesCMakeCocoa.txt:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView valueForUndefinedKey:]):
(-[WKWebView qualifiedServerTrust]):
* Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
(-[_WKWebsiteDataStoreConfiguration 
qualifiedServerTrustDebugEnabledForTesting]):
(-[_WKWebsiteDataStoreConfiguration 
setQualifiedServerTrustDebugEnabledForTesting:]):
* Source/WebKit/UIProcess/API/Swift/WebPage.swift:
(qualifiedServerTrust):
* Source/WebKit/UIProcess/Cocoa/NavigationState.h:
* Source/WebKit/UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::willChangeQualifiedServerTrust):
(WebKit::NavigationState::didChangeQualifiedServerTrust):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::receivedQualifiedServerTrust):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in:
* Source/WebKit/UIProcess/PageLoadState.cpp:
(WebKit::PageLoadState::commitChanges):
(WebKit::PageLoadState::didCommitLoad):
(WebKit::PageLoadState::receivedQualifiedServerTrust):
* Source/WebKit/UIProcess/PageLoadState.h:
(WebKit::PageLoadStateObserverBase::willChangeQualifiedServerTrust):
(WebKit::PageLoadStateObserverBase::didChangeQualifiedServerTrust):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::receivedQualifiedServerTrust):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::parameters):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:
(WebKit::WebsiteDataStoreConfiguration::copy const):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:
(WebKit::WebsiteDataStoreConfiguration::qualifiedServerTrustDebugEnabledForTesting
 const):
(WebKit::WebsiteDataStoreConfiguration::setQualifiedServerTrustDebugEnabledForTesting):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Helpers/cocoa/HTTPServer.h:
(TestWebKitAPI::HTTPResponse::setHeaderField):
* Tools/TestWebKitAPI/Helpers/cocoa/HTTPServer.swift:
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebViewServerTrustKVC.mm:
(-[QualifiedServerTrustObserver 
observeValueForKeyPath:ofObject:change:context:]):
(-[QualifiedServerTrustObserver waitUntilQualifiedServerTrustChanged]):
(TEST(WKWebView, QualifiedServerTrustKVC)):
* Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebPageTests.swift:
(WebPageTests.observableProperties):
(WebPageTests.qualifiedServerTrust):

Canonical link: https://commits.webkit.org/319551@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to