Changeset 238387 in webkit


Ignore:
Timestamp:
Nov 19, 2018 6:02:36 PM (5 years ago)
Author:
basuke.suzuki@sony.com
Message:

[Curl] Add API for CertificateInfo.
https://bugs.webkit.org/show_bug.cgi?id=191647

Reviewed by Alex Christensen.

Source/WebCore:

Minor changes for WebKit API.

Tests: TestWebKitAPI/Tests/WebKit/curl/Certificates.cpp

  • platform/network/curl/CertificateInfo.h:
  • platform/network/curl/CertificateInfoCurl.cpp:

(WebCore::CertificateInfo::CertificateInfo):
(WebCore::CertificateInfo::makeCertificate):

  • platform/network/curl/CurlSSLVerifier.cpp:

(WebCore::BIOHolder::asCertificate):

Source/WebKit:

Added API for CertificateInfo to create, fetch contents.

Tests: TestWebKitAPI/Tests/WebKit/curl/Certificates.cpp

  • PlatformWin.cmake:
  • Shared/API/c/curl/WKCertificateInfoCurl.cpp: Added.

(WKCertificateInfoCreateWithCertficateChain):
(WKCertificateInfoGetVerificationError):
(WKCertificateInfoGetCertificateChainSize):
(WKCertificateInfoCopyCertificateAtIndex):

  • Shared/API/c/curl/WKCertificateInfoCurl.h: Copied from Source/WebCore/platform/network/curl/CertificateInfoCurl.cpp.
  • Shared/curl/WebCoreArgumentCodersCurl.cpp:

(IPC::ArgumentCoder<CertificateInfo>::encode):
(IPC::ArgumentCoder<CertificateInfo>::decode):

Tools:

Added test for new WKCertificateInfo API.

  • TestWebKitAPI/PlatformWin.cmake:
  • TestWebKitAPI/Tests/WebKit/curl/Certificates.cpp: Added.

(TestWebKitAPI::Curl::makeCertificateInfo):
(TestWebKitAPI::Curl::isSamePEM):
(TestWebKitAPI::Curl::TEST):

Location:
trunk
Files:
4 added
9 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r238382 r238387  
     12018-11-19  Basuke Suzuki  <basuke.suzuki@sony.com>
     2
     3        [Curl] Add API for CertificateInfo.
     4        https://bugs.webkit.org/show_bug.cgi?id=191647
     5
     6        Reviewed by Alex Christensen.
     7
     8        Minor changes for WebKit API.
     9
     10        Tests: TestWebKitAPI/Tests/WebKit/curl/Certificates.cpp
     11
     12        * platform/network/curl/CertificateInfo.h:
     13        * platform/network/curl/CertificateInfoCurl.cpp:
     14        (WebCore::CertificateInfo::CertificateInfo):
     15        (WebCore::CertificateInfo::makeCertificate):
     16        * platform/network/curl/CurlSSLVerifier.cpp:
     17        (WebCore::BIOHolder::asCertificate):
     18
    1192018-11-19  Justin Fan  <justin_fan@apple.com>
    220
  • trunk/Source/WebCore/platform/network/curl/CertificateInfo.h

    r238350 r238387  
    3838public:
    3939    using Certificate = Vector<uint8_t>;
     40    using CertificateChain = Vector<Certificate>;
    4041
    4142    CertificateInfo() = default;
    42     WEBCORE_EXPORT CertificateInfo(int verificationError, Vector<Certificate>&&);
     43    WEBCORE_EXPORT CertificateInfo(int verificationError, CertificateChain&&);
    4344
    4445    WEBCORE_EXPORT CertificateInfo isolatedCopy() const;
     
    5354    bool isEmpty() const { return m_certificateChain.isEmpty(); }
    5455
    55     static Certificate makeCertificate(const char*, size_t);
     56    static Certificate makeCertificate(const uint8_t*, size_t);
    5657
    5758private:
    5859    int m_verificationError { 0 };
    59     Vector<Certificate> m_certificateChain;
     60    CertificateChain m_certificateChain;
    6061};
    6162
  • trunk/Source/WebCore/platform/network/curl/CertificateInfoCurl.cpp

    r238122 r238387  
    3333namespace WebCore {
    3434
    35 CertificateInfo::CertificateInfo(int verificationError, Vector<Certificate>&& certificateChain)
     35CertificateInfo::CertificateInfo(int verificationError, CertificateChain&& certificateChain)
    3636    : m_verificationError(verificationError)
    3737    , m_certificateChain(WTFMove(certificateChain))
     
    4444}
    4545
    46 CertificateInfo::Certificate CertificateInfo::makeCertificate(const char* buffer, size_t size)
     46CertificateInfo::Certificate CertificateInfo::makeCertificate(const uint8_t* buffer, size_t size)
    4747{
    4848    Certificate certificate;
  • trunk/Source/WebCore/platform/network/curl/CurlSSLVerifier.cpp

    r233919 r238387  
    118118    CertificateInfo::Certificate asCertificate()
    119119    {
    120         char* data;
     120        uint8_t* data;
    121121        long length = BIO_get_mem_data(m_bio, &data);
    122122        if (length < 0)
  • trunk/Source/WebKit/ChangeLog

    r238384 r238387  
     12018-11-19  Basuke Suzuki  <basuke.suzuki@sony.com>
     2
     3        [Curl] Add API for CertificateInfo.
     4        https://bugs.webkit.org/show_bug.cgi?id=191647
     5
     6        Reviewed by Alex Christensen.
     7
     8        Added API for CertificateInfo to create, fetch contents.
     9
     10        Tests: TestWebKitAPI/Tests/WebKit/curl/Certificates.cpp
     11
     12        * PlatformWin.cmake:
     13        * Shared/API/c/curl/WKCertificateInfoCurl.cpp: Added.
     14        (WKCertificateInfoCreateWithCertficateChain):
     15        (WKCertificateInfoGetVerificationError):
     16        (WKCertificateInfoGetCertificateChainSize):
     17        (WKCertificateInfoCopyCertificateAtIndex):
     18        * Shared/API/c/curl/WKCertificateInfoCurl.h: Copied from Source/WebCore/platform/network/curl/CertificateInfoCurl.cpp.
     19        * Shared/curl/WebCoreArgumentCodersCurl.cpp:
     20        (IPC::ArgumentCoder<CertificateInfo>::encode):
     21        (IPC::ArgumentCoder<CertificateInfo>::decode):
     22
    1232018-11-19  Don Olmstead  <don.olmstead@sony.com>
    224
  • trunk/Source/WebKit/PlatformWin.cmake

    r238350 r238387  
    1919    Platform/win/ModuleWin.cpp
    2020    Platform/win/SharedMemoryWin.cpp
     21
     22    Shared/API/c/curl/WKCertificateInfoCurl.cpp
    2123
    2224    Shared/Plugins/Netscape/NetscapePluginModuleNone.cpp
     
    202204    UIProcess/API/cpp
    203205
    204     UIProcess/API/C/curl
    205206    UIProcess/API/C/win
    206207
    207208    WebProcess/InjectedBundle/API/c
    208209)
     210
     211if (${WTF_PLATFORM_WIN_CAIRO})
     212    list(APPEND WebKit_FORWARDING_HEADERS_DIRECTORIES
     213        Shared/API/c/curl
     214
     215        UIProcess/API/C/curl
     216    )
     217endif ()
    209218
    210219WEBKIT_MAKE_FORWARDING_HEADERS(WebKit
  • trunk/Source/WebKit/Shared/API/c/curl/WKCertificateInfoCurl.h

    r238386 r238387  
    2424 */
    2525
    26 #include "config.h"
    27 #include "CertificateInfo.h"
     26#pragma once
    2827
    29 #include <wtf/CrossThreadCopier.h>
     28#include <WebKit/WKBase.h>
    3029
    31 #if USE(CURL)
     30#ifdef __cplusplus
     31extern "C" {
     32#endif
    3233
    33 namespace WebCore {
     34WK_EXPORT WKCertificateInfoRef WKCertificateInfoCreateWithCertficateChain(WKArrayRef);
    3435
    35 CertificateInfo::CertificateInfo(int verificationError, Vector<Certificate>&& certificateChain)
    36     : m_verificationError(verificationError)
    37     , m_certificateChain(WTFMove(certificateChain))
    38 {
     36WK_EXPORT int WKCertificateInfoGetVerificationError(WKCertificateInfoRef);
     37WK_EXPORT size_t WKCertificateInfoGetCertificateChainSize(WKCertificateInfoRef);
     38WK_EXPORT WKDataRef WKCertificateInfoCopyCertificateAtIndex(WKCertificateInfoRef, size_t);
     39
     40#ifdef __cplusplus
    3941}
    40 
    41 CertificateInfo CertificateInfo::isolatedCopy() const
    42 {
    43     return { m_verificationError, crossThreadCopy(m_certificateChain) };
    44 }
    45 
    46 CertificateInfo::Certificate CertificateInfo::makeCertificate(const char* buffer, size_t size)
    47 {
    48     Certificate certificate;
    49     certificate.append(buffer, size);
    50     return certificate;
    51 }
    52 
    53 }
    54 
    5542#endif
  • trunk/Source/WebKit/Shared/curl/WebCoreArgumentCodersCurl.cpp

    r238051 r238387  
    4949}
    5050
    51 void ArgumentCoder<CertificateInfo>::encode(Encoder&, const CertificateInfo&)
     51void ArgumentCoder<CertificateInfo>::encode(Encoder& encoder, const CertificateInfo& certificateInfo)
    5252{
     53    encoder << certificateInfo.verificationError();
     54    encoder << certificateInfo.certificateChain().size();
     55
     56    for (auto certificate : certificateInfo.certificateChain())
     57        encoder << certificate;
    5358}
    5459
    55 bool ArgumentCoder<CertificateInfo>::decode(Decoder&, CertificateInfo&)
     60bool ArgumentCoder<CertificateInfo>::decode(Decoder& decoder, CertificateInfo& certificateInfo)
    5661{
     62    int verificationError;
     63    if (!decoder.decode(verificationError))
     64        return false;
     65
     66    size_t certificateChainSize;
     67    if (!decoder.decode(certificateChainSize))
     68        return false;
     69
     70    CertificateInfo::CertificateChain certificateChain;
     71    for (size_t i = 0; i < certificateChainSize; i++) {
     72        CertificateInfo::Certificate certificate;
     73        if (!decoder.decode(certificate))
     74            return false;
     75
     76        certificateChain.append(certificate);
     77    }
     78
     79    certificateInfo = CertificateInfo { verificationError, WTFMove(certificateChain) };
     80
    5781    return true;
    5882}
  • trunk/Tools/ChangeLog

    r238383 r238387  
     12018-11-19  Basuke Suzuki  <basuke.suzuki@sony.com>
     2
     3        [Curl] Add API for CertificateInfo.
     4        https://bugs.webkit.org/show_bug.cgi?id=191647
     5
     6        Reviewed by Alex Christensen.
     7
     8        Added test for new WKCertificateInfo API.
     9
     10        * TestWebKitAPI/PlatformWin.cmake:
     11        * TestWebKitAPI/Tests/WebKit/curl/Certificates.cpp: Added.
     12        (TestWebKitAPI::Curl::makeCertificateInfo):
     13        (TestWebKitAPI::Curl::isSamePEM):
     14        (TestWebKitAPI::Curl::TEST):
     15
    1162018-11-19  Wenson Hsieh  <wenson_hsieh@apple.com>
    217
  • trunk/Tools/TestWebKitAPI/PlatformWin.cmake

    r238111 r238387  
    190190    )
    191191
     192    if (${WTF_PLATFORM_WIN_CAIRO})
     193        list(APPEND test_webkit_api_SOURCES
     194            ${TESTWEBKITAPI_DIR}/Tests/WebKit/curl/Certificates.cpp
     195        )
     196    endif ()
     197
    192198    add_library(TestWebKitLib SHARED
    193199        ${TESTWEBKITAPI_DIR}/win/main.cpp
Note: See TracChangeset for help on using the changeset viewer.