Skip to content

Commit

Permalink
Remove WebCertificateInfo
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=245997
<rdar://100742393>

Reviewed by Chris Dumez.

* Source/WebKit/Shared/API/c/WKCertificateInfo.cpp:
(WKCertificateInfoGetTypeID):
* Source/WebKit/Shared/API/c/WKCertificateInfo.h:
* Source/WebKit/Shared/API/c/WKSharedAPICast.h:
* Source/WebKit/Shared/UserData.cpp:
(WebKit::UserData::encode):
(WebKit::UserData::decode):
* Source/WebKit/Shared/WebCertificateInfo.h: Removed.
* Source/WebKit/SourcesCocoa.txt:
* Source/WebKit/UIProcess/API/C/WKAuthenticationChallenge.cpp:
* Source/WebKit/UIProcess/API/C/WKContext.cpp:
* Source/WebKit/UIProcess/API/C/WKCredential.cpp:
* Source/WebKit/UIProcess/API/C/mac/WKFrameMac.cpp:
(WKFrameGetServerTrust):
* Source/WebKit/UIProcess/API/C/mac/WKPagePrivateMac.mm:
(-[WKObservablePageState serverTrust]):
* Source/WebKit/UIProcess/API/Cocoa/WKBrowsingContextController.mm:
(-[WKBrowsingContextController certificateChain]):
* Source/WebKit/UIProcess/API/Cocoa/WKNSURLAuthenticationChallenge.mm:
* Source/WebKit/UIProcess/API/Cocoa/WKProcessGroup.mm:
* Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView serverTrust]):
(-[WKWebView _certificateChain]):
(-[WKWebView certificateChain]):
* Source/WebKit/UIProcess/Authentication/AuthenticationChallengeProxy.cpp:
* Source/WebKit/UIProcess/Authentication/AuthenticationDecisionListener.cpp:
* Source/WebKit/UIProcess/Authentication/WebCredential.cpp:
* Source/WebKit/UIProcess/Authentication/WebCredential.h:
(WebKit::WebCredential::create):
* Source/WebKit/UIProcess/Authentication/mac/WebCredentialMac.mm: Removed.
* Source/WebKit/UIProcess/PageLoadState.cpp:
(WebKit::PageLoadState::commitChanges):
(WebKit::PageLoadState::didCommitLoad):
* Source/WebKit/UIProcess/PageLoadState.h:
(WebKit::PageLoadState::certificateInfo const):
* Source/WebKit/UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::didCommitLoad):
* Source/WebKit/UIProcess/WebFrameProxy.h:
(WebKit::WebFrameProxy::certificateInfo const):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didCommitLoadForFrame):
* Source/WebKit/UIProcess/WebProcessPool.cpp:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/InjectedBundle/InjectedBundle.h:

Canonical link: https://commits.webkit.org/255206@main
  • Loading branch information
Alex Christensen authored and achristensen07 committed Oct 6, 2022
1 parent 9bf02c2 commit 30bdacb
Show file tree
Hide file tree
Showing 39 changed files with 66 additions and 290 deletions.
10 changes: 10 additions & 0 deletions Source/WebCore/platform/network/cf/CertificateInfo.h
Expand Up @@ -73,6 +73,16 @@ class CertificateInfo {
#endif
}

bool operator==(const CertificateInfo& other) const
{
#if PLATFORM(COCOA)
return trust() == other.trust();
#elif PLATFORM(WIN)
return certificateChain() == other.certificateChain();
#endif
}
bool operator!=(const CertificateInfo& other) const { return !(*this == other); }

#if PLATFORM(COCOA)
WEBCORE_EXPORT static RetainPtr<CFArrayRef> certificateChainFromSecTrust(SecTrustRef);
WEBCORE_EXPORT static RetainPtr<SecTrustRef> secTrustFromCertificateChain(CFArrayRef);
Expand Down
12 changes: 7 additions & 5 deletions Source/WebCore/platform/network/curl/CertificateInfo.h
Expand Up @@ -57,14 +57,16 @@ class CertificateInfo {

static Certificate makeCertificate(const uint8_t*, size_t);

bool operator==(const CertificateInfo& other) const
{
return verificationError() == other.verificationError()
&& certificateChain() == other.certificateChain();
}
bool operator!=(const CertificateInfo& other) const { return !(*this == other); }

private:
int m_verificationError { 0 };
CertificateChain m_certificateChain;
};

inline bool operator==(const CertificateInfo& a, const CertificateInfo& b)
{
return a.verificationError() == b.verificationError() && a.certificateChain() == b.certificateChain();
}

} // namespace WebCore
7 changes: 7 additions & 0 deletions Source/WebCore/platform/network/soup/CertificateInfo.h
Expand Up @@ -61,6 +61,13 @@ class CertificateInfo {

bool isEmpty() const { return !m_certificate; }

bool operator==(const CertificateInfo& other) const
{
return g_tls_certificate_is_same(certificate(), other.certificate())
&& tlsErrors() == other.tlsErrors();
}
bool operator!=(const CertificateInfo& other) const { return !(*this == other); }

private:
GRefPtr<GTlsCertificate> m_certificate;
GTlsCertificateFlags m_tlsErrors;
Expand Down
5 changes: 1 addition & 4 deletions Source/WebKit/Shared/API/c/WKCertificateInfo.cpp
Expand Up @@ -26,10 +26,7 @@
#include "config.h"
#include "WKCertificateInfo.h"

#include "WebCertificateInfo.h"
#include "WKAPICast.h"

WKTypeID WKCertificateInfoGetTypeID()
{
return WebKit::toAPI(WebKit::WebCertificateInfo::APIType);
return 0;
}
3 changes: 2 additions & 1 deletion Source/WebKit/Shared/API/c/WKCertificateInfo.h
Expand Up @@ -27,12 +27,13 @@
#define WKCertificateInfo_h

#include <WebKit/WKBase.h>
#include <WebKit/WKDeprecated.h>

#ifdef __cplusplus
extern "C" {
#endif

WK_EXPORT WKTypeID WKCertificateInfoGetTypeID();
WK_EXPORT WKTypeID WKCertificateInfoGetTypeID() WK_C_API_DEPRECATED;

#ifdef __cplusplus
}
Expand Down
2 changes: 0 additions & 2 deletions Source/WebKit/Shared/API/c/WKSharedAPICast.h
Expand Up @@ -77,7 +77,6 @@ class WebArchiveResource;
namespace WebKit {

class ObjCObjectGraph;
class WebCertificateInfo;
class WebConnection;
class WebContextMenuItem;
class WebImage;
Expand All @@ -91,7 +90,6 @@ template<typename ImplType> struct ImplTypeInfo;

WK_ADD_API_MAPPING(WKArrayRef, API::Array)
WK_ADD_API_MAPPING(WKBooleanRef, API::Boolean)
WK_ADD_API_MAPPING(WKCertificateInfoRef, WebCertificateInfo)
WK_ADD_API_MAPPING(WKConnectionRef, WebConnection)
WK_ADD_API_MAPPING(WKContextMenuItemRef, WebContextMenuItem)
WK_ADD_API_MAPPING(WKDataRef, API::Data)
Expand Down
24 changes: 5 additions & 19 deletions Source/WebKit/Shared/API/c/curl/WKCertificateInfoCurl.cpp
Expand Up @@ -30,7 +30,6 @@
#include "WKAPICast.h"
#include "WKArray.h"
#include "WKData.h"
#include "WebCertificateInfo.h"

#include <WebCore/CertificateInfo.h>

Expand All @@ -39,38 +38,25 @@ using CertificateChain = Vector<Certificate>;

WKCertificateInfoRef WKCertificateInfoCreateWithCertficateChain(WKArrayRef certificateChainRef)
{
CertificateChain certificateChain;
for (int i = 0, count = WKArrayGetSize(certificateChainRef); i < count; i++) {
auto data = reinterpret_cast<WKDataRef>(WKArrayGetItemAtIndex(certificateChainRef, i));
auto certificate = WebCore::CertificateInfo::makeCertificate(WKDataGetBytes(data), WKDataGetSize(data));
certificateChain.append(WTFMove(certificate));
}

WebCore::CertificateInfo certificateInfo { 0, WTFMove(certificateChain) };
RefPtr<WebKit::WebCertificateInfo> certificateInfoRef = WebKit::WebCertificateInfo::create(certificateInfo);
return WebKit::toAPI(certificateInfoRef.leakRef());
return nullptr;
}

int WKCertificateInfoGetVerificationError(WKCertificateInfoRef certificateInfoRef)
{
return WebKit::toImpl(certificateInfoRef)->certificateInfo().verificationError();
return 0;
}

WKStringRef WKCertificateInfoCopyVerificationErrorDescription(WKCertificateInfoRef certificateInfoRef)
{
return WebKit::toCopiedAPI(WebKit::toImpl(certificateInfoRef)->certificateInfo().verificationErrorDescription());
return nullptr;
}

size_t WKCertificateInfoGetCertificateChainSize(WKCertificateInfoRef certificateInfoRef)
{
return WebKit::toImpl(certificateInfoRef)->certificateInfo().certificateChain().size();
return 0;
}

WKDataRef WKCertificateInfoCopyCertificateAtIndex(WKCertificateInfoRef certificateInfoRef, size_t index)
{
if (WebKit::toImpl(certificateInfoRef)->certificateInfo().certificateChain().size() <= index)
return WebKit::toAPI(&API::Data::create(nullptr, 0).leakRef());

const auto& certificate = WebKit::toImpl(certificateInfoRef)->certificateInfo().certificateChain().at(index);
return WebKit::toAPI(&API::Data::create(reinterpret_cast<const unsigned char*>(certificate.data()), certificate.size()).leakRef());
return nullptr;
}
11 changes: 6 additions & 5 deletions Source/WebKit/Shared/API/c/curl/WKCertificateInfoCurl.h
Expand Up @@ -26,17 +26,18 @@
#pragma once

#include <WebKit/WKBase.h>
#include <WebKit/WKDeprecated.h>

#ifdef __cplusplus
extern "C" {
#endif

WK_EXPORT WKCertificateInfoRef WKCertificateInfoCreateWithCertficateChain(WKArrayRef);
WK_EXPORT WKCertificateInfoRef WKCertificateInfoCreateWithCertficateChain(WKArrayRef) WK_C_API_DEPRECATED;

WK_EXPORT int WKCertificateInfoGetVerificationError(WKCertificateInfoRef);
WK_EXPORT WKStringRef WKCertificateInfoCopyVerificationErrorDescription(WKCertificateInfoRef);
WK_EXPORT size_t WKCertificateInfoGetCertificateChainSize(WKCertificateInfoRef);
WK_EXPORT WKDataRef WKCertificateInfoCopyCertificateAtIndex(WKCertificateInfoRef, size_t);
WK_EXPORT int WKCertificateInfoGetVerificationError(WKCertificateInfoRef) WK_C_API_DEPRECATED;
WK_EXPORT WKStringRef WKCertificateInfoCopyVerificationErrorDescription(WKCertificateInfoRef) WK_C_API_DEPRECATED;
WK_EXPORT size_t WKCertificateInfoGetCertificateChainSize(WKCertificateInfoRef) WK_C_API_DEPRECATED;
WK_EXPORT WKDataRef WKCertificateInfoCopyCertificateAtIndex(WKCertificateInfoRef, size_t) WK_C_API_DEPRECATED;

#ifdef __cplusplus
}
Expand Down
16 changes: 0 additions & 16 deletions Source/WebKit/Shared/UserData.cpp
Expand Up @@ -43,7 +43,6 @@
#include "ArgumentCoders.h"
#include "Encoder.h"
#include "ShareableBitmap.h"
#include "WebCertificateInfo.h"
#include "WebCoreArgumentCoders.h"
#include "WebImage.h"
#include <wtf/CheckedArithmetic.h>
Expand Down Expand Up @@ -174,12 +173,6 @@ void UserData::encode(IPC::Encoder& encoder, const API::Object& object)
static_cast<const API::Boolean&>(object).encode(encoder);
break;

case API::Object::Type::CertificateInfo: {
const auto& certificateInfo = static_cast<const WebCertificateInfo&>(object);
encoder << certificateInfo.certificateInfo();
break;
}

case API::Object::Type::Data:
static_cast<const API::Data&>(object).encode(encoder);
break;
Expand Down Expand Up @@ -325,15 +318,6 @@ bool UserData::decode(IPC::Decoder& decoder, RefPtr<API::Object>& result)
return false;
break;

case API::Object::Type::CertificateInfo: {
std::optional<WebCore::CertificateInfo> certificateInfo;
decoder >> certificateInfo;
if (!certificateInfo)
return false;
result = WebCertificateInfo::create(*certificateInfo);
break;
}

case API::Object::Type::Data:
if (!API::Data::decode(decoder, result))
return false;
Expand Down
55 changes: 0 additions & 55 deletions Source/WebKit/Shared/WebCertificateInfo.h

This file was deleted.

2 changes: 0 additions & 2 deletions Source/WebKit/SourcesCocoa.txt
Expand Up @@ -362,8 +362,6 @@ UIProcess/API/mac/WKWebViewTestingMac.mm
UIProcess/Authentication/cocoa/AuthenticationChallengeProxyCocoa.mm
UIProcess/Authentication/cocoa/SecKeyProxyStore.mm

UIProcess/Authentication/mac/WebCredentialMac.mm

UIProcess/Automation/cocoa/WebAutomationSessionCocoa.mm

UIProcess/Automation/ios/WebAutomationSessionIOS.mm
Expand Down
Expand Up @@ -29,7 +29,6 @@
#include "AuthenticationChallengeProxy.h"
#include "AuthenticationDecisionListener.h"
#include "WKAPICast.h"
#include "WebCertificateInfo.h"
#include "WebCredential.h"
#include "WebProtectionSpace.h"

Expand Down
1 change: 0 additions & 1 deletion Source/WebKit/UIProcess/API/C/WKContext.cpp
Expand Up @@ -43,7 +43,6 @@
#include "WKRetainPtr.h"
#include "WKString.h"
#include "WKWebsiteDataStoreRef.h"
#include "WebCertificateInfo.h"
#include "WebContextInjectedBundleClient.h"
#include "WebPageProxy.h"
#include "WebProcessPool.h"
Expand Down
1 change: 0 additions & 1 deletion Source/WebKit/UIProcess/API/C/WKCredential.cpp
Expand Up @@ -27,7 +27,6 @@
#include "WKCredential.h"

#include "APIString.h"
#include "WebCertificateInfo.h"
#include "WebCredential.h"
#include "WKAPICast.h"

Expand Down
4 changes: 1 addition & 3 deletions Source/WebKit/UIProcess/API/C/curl/WKProtectionSpaceCurl.cpp
Expand Up @@ -27,14 +27,12 @@
#include "WKProtectionSpaceCurl.h"

#include "WKAPICast.h"
#include "WebCertificateInfo.h"
#include "WebCredential.h"
#include "WebProtectionSpace.h"

using namespace WebKit;

WKCertificateInfoRef WKProtectionSpaceCopyCertificateInfo(WKProtectionSpaceRef protectionSpaceRef)
{
RefPtr<WebCertificateInfo> certificateInfo = WebCertificateInfo::create(toImpl(protectionSpaceRef)->protectionSpace().certificateInfo());
return toAPI(certificateInfo.leakRef());
return nullptr;
}
3 changes: 2 additions & 1 deletion Source/WebKit/UIProcess/API/C/curl/WKProtectionSpaceCurl.h
Expand Up @@ -26,12 +26,13 @@
#pragma once

#include <WebKit/WKBase.h>
#include <WebKit/WKDeprecated.h>

#ifdef __cplusplus
extern "C" {
#endif

WK_EXPORT WKCertificateInfoRef WKProtectionSpaceCopyCertificateInfo(WKProtectionSpaceRef);
WK_EXPORT WKCertificateInfoRef WKProtectionSpaceCopyCertificateInfo(WKProtectionSpaceRef) WK_C_API_DEPRECATED;

#ifdef __cplusplus
}
Expand Down
5 changes: 1 addition & 4 deletions Source/WebKit/UIProcess/API/C/mac/WKFrameMac.cpp
Expand Up @@ -31,8 +31,5 @@

SecTrustRef WKFrameGetServerTrust(WKFrameRef frame)
{
auto* certificateInfo = WebKit::toImpl(frame)->certificateInfo();
if (!certificateInfo)
return nullptr;
return certificateInfo->certificateInfo().trust();
return WebKit::toImpl(frame)->certificateInfo().trust();
}
6 changes: 1 addition & 5 deletions Source/WebKit/UIProcess/API/C/mac/WKPagePrivateMac.mm
Expand Up @@ -108,11 +108,7 @@ - (NSURL *)unreachableURL

- (SecTrustRef)serverTrust
{
auto certificateInfo = _page->pageLoadState().certificateInfo();
if (!certificateInfo)
return nil;

return certificateInfo->certificateInfo().trust();
return _page->pageLoadState().certificateInfo().trust();
}

@end
Expand Down
Expand Up @@ -51,7 +51,6 @@
#import "WKURLRequestNS.h"
#import "WKURLResponseNS.h"
#import "WKViewInternal.h"
#import "WebCertificateInfo.h"
#import "WebPageProxy.h"
#import "WebProcessPool.h"
#import "WebProtectionSpace.h"
Expand Down Expand Up @@ -313,7 +312,7 @@ - (NSString *)title
- (NSArray *)certificateChain
{
if (WebKit::WebFrameProxy* mainFrame = _page->mainFrame())
return mainFrame->certificateInfo() ? (__bridge NSArray *)WebCore::CertificateInfo::certificateChainFromSecTrust(mainFrame->certificateInfo()->certificateInfo().trust()).autorelease() : nil;
return (__bridge NSArray *)WebCore::CertificateInfo::certificateChainFromSecTrust(mainFrame->certificateInfo().trust()).autorelease();

return nil;
}
Expand Down
Expand Up @@ -28,7 +28,6 @@

#import "AuthenticationChallengeDisposition.h"
#import "AuthenticationDecisionListener.h"
#import "WebCertificateInfo.h"
#import "WebCredential.h"
#import <WebCore/AuthenticationMac.h>

Expand Down
1 change: 0 additions & 1 deletion Source/WebKit/UIProcess/API/Cocoa/WKProcessGroup.mm
Expand Up @@ -38,7 +38,6 @@
#import "WKNavigationDataInternal.h"
#import "WKRetainPtr.h"
#import "WKStringCF.h"
#import "WebCertificateInfo.h"
#import "WebFrameProxy.h"
#import "WebProcessPool.h"
#import <wtf/RetainPtr.h>
Expand Down
1 change: 0 additions & 1 deletion Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm
Expand Up @@ -39,7 +39,6 @@
#import "WKWebViewInternal.h"
#import "WKWebsiteDataStoreInternal.h"
#import "WebBackForwardCache.h"
#import "WebCertificateInfo.h"
#import "WebNotificationManagerProxy.h"
#import "WebProcessCache.h"
#import "WebProcessMessages.h"
Expand Down

0 comments on commit 30bdacb

Please sign in to comment.