Changeset 200816 in webkit


Ignore:
Timestamp:
May 12, 2016, 11:37:09 PM (9 years ago)
Author:
bshafiei@apple.com
Message:

Roll out r200463. rdar://problem/26260800

Location:
branches/safari-602.1.32-branch/Source
Files:
19 edited

Legend:

Unmodified
Added
Removed
  • branches/safari-602.1.32-branch/Source/WTF/ChangeLog

    r200568 r200816  
     12016-05-12  Babak Shafiei  <bshafiei@apple.com>
     2
     3        Roll out r200463.
     4
    152016-05-08  Chris Dumez  <cdumez@apple.com>
    26
  • branches/safari-602.1.32-branch/Source/WTF/wtf/Platform.h

    r200568 r200816  
    11471147#endif
    11481148
    1149 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101200) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 100000)
    1150 #define HAVE_SEC_TRUST_SERIALIZATION 1
    1151 #endif
    11521149
    11531150#if !defined(WTF_DEFAULT_EVENT_LOOP)
  • branches/safari-602.1.32-branch/Source/WTF/wtf/spi/cocoa/SecuritySPI.h

    r200463 r200816  
    3131#include <Security/SecCertificatePriv.h>
    3232#include <Security/SecTask.h>
    33 #include <Security/SecTrustPriv.h>
    3433
    3534#else
     
    5958EXTERN_C CFTypeRef SecTaskCopyValueForEntitlement(SecTaskRef, CFStringRef entitlement, CFErrorRef *);
    6059
    61 #if HAVE(SEC_TRUST_SERIALIZATION)
    62 EXTERN_C CF_RETURNS_RETAINED CFDataRef SecTrustSerialize(SecTrustRef, CFErrorRef *);
    63 EXTERN_C CF_RETURNS_RETAINED SecTrustRef SecTrustDeserialize(CFDataRef serializedTrust, CFErrorRef *);
    64 #endif
    65 
    6660#endif // SecuritySPI_h
  • branches/safari-602.1.32-branch/Source/WebCore/ChangeLog

    r200815 r200816  
     12016-05-12  Babak Shafiei  <bshafiei@apple.com>
     2
     3        Roll out r200463.
     4
    152016-05-12  Babak Shafiei  <bshafiei@apple.com>
    26
  • branches/safari-602.1.32-branch/Source/WebCore/platform/network/cf/CertificateInfo.h

    r200815 r200816  
    3030#include <wtf/RetainPtr.h>
    3131
    32 #if HAVE(SEC_TRUST_SERIALIZATION)
    33 #include <Security/SecTrust.h>
    34 #endif
    35 
    3632namespace WebCore {
    3733
    3834class CertificateInfo {
    3935public:
    40      CertificateInfo() = default;
    41  
    42     enum class Type {
    43         None,
    44         CertificateChain,
    45 #if HAVE(SEC_TRUST_SERIALIZATION)
    46         Trust,
    47 #endif
    48     };
     36    CertificateInfo() { }
     37    CertificateInfo(RetainPtr<CFArrayRef> certificateChain)
     38        : m_certificateChain(certificateChain)
     39    { }
    4940
    50 #if HAVE(SEC_TRUST_SERIALIZATION)
    51     explicit CertificateInfo(RetainPtr<SecTrustRef>&& trust)
    52         : m_trust(WTFMove(trust))
    53     {
    54     }
    55  
    56     SecTrustRef trust() const { return m_trust.get(); }
    57 #endif
     41    void setCertificateChain(CFArrayRef certificateChain) { m_certificateChain = certificateChain; }
     42    CFArrayRef certificateChain() const { return m_certificateChain.get(); }
    5843
    59     CertificateInfo(RetainPtr<CFArrayRef>&& certificateChain)
    60         : m_certificateChain(WTFMove(certificateChain))
    61     {
    62     }
    63 
    64     WEBCORE_EXPORT CFArrayRef certificateChain() const;
    65 
    66     WEBCORE_EXPORT Type type() const;
    6744    WEBCORE_EXPORT bool containsNonRootSHA1SignedCertificate() const;
    68 
    69     bool isEmpty() const { return type() == Type::None; }
    70 
    71 #if PLATFORM(COCOA)
    72     static RetainPtr<CFArrayRef> certificateChainFromSecTrust(SecTrustRef);
    73 #endif
    7445
    7546#ifndef NDEBUG
     
    7849
    7950private:
    80 #if HAVE(SEC_TRUST_SERIALIZATION)
    81     RetainPtr<SecTrustRef> m_trust;
    82 #endif
    83     mutable RetainPtr<CFArrayRef> m_certificateChain;
     51    RetainPtr<CFArrayRef> m_certificateChain;
    8452};
    8553
    8654}
     55
    8756#endif
  • branches/safari-602.1.32-branch/Source/WebCore/platform/network/cocoa/ResourceResponseCocoa.mm

    r200463 r200816  
    100100    }
    101101
    102 #if HAVE(SEC_TRUST_SERIALIZATION)
    103     return CertificateInfo(trust);
    104 #else
    105     return CertificateInfo(CertificateInfo::certificateChainFromSecTrust(trust));
    106 #endif
     102    CFIndex count = SecTrustGetCertificateCount(trust);
     103    auto certificateChain = CFArrayCreateMutable(0, count, &kCFTypeArrayCallBacks);
     104    for (CFIndex i = 0; i < count; i++)
     105        CFArrayAppendValue(certificateChain, SecTrustGetCertificateAtIndex(trust, i));
     106
     107    return CertificateInfo(adoptCF(certificateChain));
    107108}
    108109
  • branches/safari-602.1.32-branch/Source/WebCore/platform/network/mac/CertificateInfoMac.mm

    r200463 r200816  
    3232namespace WebCore {
    3333
    34 #if PLATFORM(COCOA)
    35 RetainPtr<CFArrayRef> CertificateInfo::certificateChainFromSecTrust(SecTrustRef trust)
    36 {
    37     auto count = SecTrustGetCertificateCount(trust);
    38     auto certificateChain = CFArrayCreateMutable(0, count, &kCFTypeArrayCallBacks);
    39     for (CFIndex i = 0; i < count; i++)
    40         CFArrayAppendValue(certificateChain, SecTrustGetCertificateAtIndex(trust, i));
    41     return adoptCF((CFArrayRef)certificateChain);
    42 }
    43 #endif
    44 
    45 CertificateInfo::Type CertificateInfo::type() const
    46 {
    47 #if HAVE(SEC_TRUST_SERIALIZATION)
    48     if (m_trust)
    49         return Type::Trust;
    50 #endif
    51     if (m_certificateChain)
    52         return Type::CertificateChain;
    53     return Type::None;
    54 }
    55 
    56 CFArrayRef CertificateInfo::certificateChain() const
    57 {
    58 #if HAVE(SEC_TRUST_SERIALIZATION)
    59     if (m_certificateChain)
    60         return m_certificateChain.get();
    61 
    62     if (m_trust)
    63         m_certificateChain = CertificateInfo::certificateChainFromSecTrust(m_trust.get());
    64 #endif
    65 
    66     return m_certificateChain.get();
    67 }
    68 
    6934bool CertificateInfo::containsNonRootSHA1SignedCertificate() const
    7035{
    71 #if HAVE(SEC_TRUST_SERIALIZATION)
    72     if (m_trust) {
    73         // Allow only the root certificate (the last in the chain) to be SHA1.
    74         for (CFIndex i = 0, size = SecTrustGetCertificateCount(trust()) - 1; i < size; ++i) {
    75             auto certificate = SecTrustGetCertificateAtIndex(trust(), i);
    76             if (SecCertificateGetSignatureHashAlgorithm(certificate) == kSecSignatureHashAlgorithmSHA1)
    77                 return true;
    78         }
     36#if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100) || PLATFORM(IOS)
     37    if (!m_certificateChain)
     38        return false;
    7939
    80         return false;
     40    for (CFIndex i = 0, size = CFArrayGetCount(m_certificateChain.get()) - 1; i < size; ++i) {
     41        SecCertificateRef certificate = (SecCertificateRef)CFArrayGetValueAtIndex(m_certificateChain.get(), i);
     42        if (SecCertificateGetSignatureHashAlgorithm(certificate) == kSecSignatureHashAlgorithmSHA1)
     43            return true;
    8144    }
    82 #endif
    83 
    84 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100) || PLATFORM(IOS)
    85     if (m_certificateChain) {
    86         // Allow only the root certificate (the last in the chain) to be SHA1.
    87         for (CFIndex i = 0, size = CFArrayGetCount(m_certificateChain.get()) - 1; i < size; ++i) {
    88             auto certificate = (SecCertificateRef)CFArrayGetValueAtIndex(m_certificateChain.get(), i);
    89             if (SecCertificateGetSignatureHashAlgorithm(certificate) == kSecSignatureHashAlgorithmSHA1)
    90                 return true;
    91         }
    92         return false;
    93     }
     45    return false;
    9446#else
    9547    notImplemented();
     48    return false;
    9649#endif
    97 
    98     return false;
    9950}
    10051
     
    10253void CertificateInfo::dump() const
    10354{
    104 #if HAVE(SEC_TRUST_SERIALIZATION)
    105     if (m_trust) {
    106         CFIndex entries = SecTrustGetCertificateCount(trust());
     55    unsigned entries = m_certificateChain ? CFArrayGetCount(m_certificateChain.get()) : 0;
    10756
    108         NSLog(@"CertificateInfo SecTrust\n");
    109         NSLog(@"  Entries: %ld\n", entries);
    110         for (CFIndex i = 0; i < entries; ++i) {
    111             RetainPtr<CFStringRef> summary = adoptCF(SecCertificateCopySubjectSummary(SecTrustGetCertificateAtIndex(trust(), i)));
    112             NSLog(@"  %@", (NSString *)summary.get());
    113         }
    114 
    115         return;
     57    NSLog(@"CertificateInfo\n");
     58    NSLog(@"  Entries: %d\n", entries);
     59    for (unsigned i = 0; i < entries; ++i) {
     60        RetainPtr<CFStringRef> summary = adoptCF(SecCertificateCopySubjectSummary((SecCertificateRef)CFArrayGetValueAtIndex(m_certificateChain.get(), i)));
     61        NSLog(@"  %@", (NSString *)summary.get());
    11662    }
    117 #endif
    118     if (m_certificateChain) {
    119         CFIndex entries = CFArrayGetCount(m_certificateChain.get());
    120 
    121         NSLog(@"CertificateInfo (Certificate Chain)\n");
    122         NSLog(@"  Entries: %ld\n", entries);
    123         for (CFIndex i = 0; i < entries; ++i) {
    124             RetainPtr<CFStringRef> summary = adoptCF(SecCertificateCopySubjectSummary((SecCertificateRef)CFArrayGetValueAtIndex(m_certificateChain.get(), i)));
    125             NSLog(@"  %@", (NSString *)summary.get());
    126         }
    127 
    128         return;
    129     }
    130    
    131     NSLog(@"CertificateInfo (Empty)\n");
    13263}
    13364#endif
  • branches/safari-602.1.32-branch/Source/WebKit2/ChangeLog

    r200591 r200816  
     12016-05-12  Babak Shafiei  <bshafiei@apple.com>
     2
     3        Roll out r200463.
     4
    152016-05-09  Anders Carlsson  <andersca@apple.com>
    26
  • branches/safari-602.1.32-branch/Source/WebKit2/Shared/API/c/mac/WKCertificateInfoMac.h

    r200463 r200816  
    2828
    2929#include <CoreFoundation/CoreFoundation.h>
    30 #include <Security/SecTrust.h>
    3130#include <WebKit/WKBase.h>
    3231
     
    3635
    3736WK_EXPORT WKCertificateInfoRef WKCertificateInfoCreateWithCertficateChain(CFArrayRef certificateChain);
    38 WK_EXPORT SecTrustRef WKCertificateInfoGetServerTrust(WKCertificateInfoRef certificateInfo);
    39 
    40 // Deprecated
    4137WK_EXPORT CFArrayRef WKCertificateInfoGetCertificateChain(WKCertificateInfoRef certificateInfo);
    4238
  • branches/safari-602.1.32-branch/Source/WebKit2/Shared/API/c/mac/WKCertificateInfoMac.mm

    r200463 r200816  
    4343    return toImpl(certificateInfoRef)->certificateInfo().certificateChain();
    4444}
    45 
    46 SecTrustRef WKCertificateInfoGetServerTrust(WKCertificateInfoRef certificateInfoRef)
    47 {
    48 #if HAVE(SEC_TRUST_SERIALIZATION)
    49     return toImpl(certificateInfoRef)->certificateInfo().trust();
    50 #else
    51     return nullptr;
    52 #endif
    53 }
  • branches/safari-602.1.32-branch/Source/WebKit2/Shared/Authentication/mac/AuthenticationManager.mac.mm

    r200463 r200816  
    3737namespace WebKit {
    3838
    39 static SecCertificateRef leafCertificate(const CertificateInfo& certificateInfo)
    40 {
    41 #if HAVE(SEC_TRUST_SERIALIZATION)
    42     return SecTrustGetCertificateAtIndex(certificateInfo.trust(), 0);
    43 #else
    44     ASSERT(CFArrayGetCount(certificateInfo.certificateChain()));
    45     return (SecCertificateRef)CFArrayGetValueAtIndex(certificateInfo.certificateChain(), 0);
    46 #endif
    47 }
    48 
    49 static NSArray *chain(const CertificateInfo& certificateInfo)
    50 {
    51 #if HAVE(SEC_TRUST_SERIALIZATION)
    52     CFIndex count = SecTrustGetCertificateCount(certificateInfo.trust());
    53     if (count < 2)
    54         return nil;
    55 
    56     NSMutableArray *array = [NSMutableArray array];
    57     for (CFIndex i = 1; i < count; ++i)
    58         [array addObject:(id)SecTrustGetCertificateAtIndex(certificateInfo.trust(), i)];
    59        
    60     return array;
    61 #else
    62     CFIndex chainCount = CFArrayGetCount(certificateInfo.certificateChain());
    63     return chainCount > 1 ? [(NSArray *)certificateInfo.certificateChain() subarrayWithRange:NSMakeRange(1, chainCount - 1)] : nil;
    64 #endif
    65 }
    66 
    67 
    6839// FIXME: This function creates an identity from a certificate, which should not be needed. We should pass an identity over IPC (as we do on iOS).
    6940bool AuthenticationManager::tryUseCertificateInfoForChallenge(const AuthenticationChallenge& challenge, const CertificateInfo& certificateInfo, ChallengeCompletionHandler completionHandler)
    7041{
    71     if (certificateInfo.isEmpty())
     42    CFArrayRef chain = certificateInfo.certificateChain();
     43    if (!chain)
    7244        return false;
     45       
     46    ASSERT(CFArrayGetCount(chain));
    7347
    7448    // The passed-in certificate chain includes the identity certificate at index 0, and additional certificates starting at index 1.
    7549    SecIdentityRef identity;
    76     OSStatus result = SecIdentityCreateWithCertificate(NULL, leafCertificate(certificateInfo), &identity);
     50    OSStatus result = SecIdentityCreateWithCertificate(NULL, (SecCertificateRef)CFArrayGetValueAtIndex(chain, 0), &identity);
    7751    if (result != errSecSuccess) {
    7852        LOG_ERROR("Unable to create SecIdentityRef with certificate - %i", result);
     
    8458    }
    8559
    86     NSURLCredential *credential = [NSURLCredential credentialWithIdentity:identity certificates:chain(certificateInfo) persistence:NSURLCredentialPersistenceNone];
     60    CFIndex chainCount = CFArrayGetCount(chain);
     61    NSArray *nsChain = chainCount > 1 ? [(NSArray *)chain subarrayWithRange:NSMakeRange(1, chainCount - 1)] : nil;
     62
     63    NSURLCredential *credential = [NSURLCredential credentialWithIdentity:identity
     64                                                             certificates:nsChain
     65                                                              persistence:NSURLCredentialPersistenceNone];
     66
    8767    if (completionHandler)
    8868        completionHandler(AuthenticationChallengeDisposition::UseCredential, Credential(credential));
  • branches/safari-602.1.32-branch/Source/WebKit2/Shared/cf/ArgumentCodersCF.cpp

    r200463 r200816  
    3232#include <WebCore/CFURLExtras.h>
    3333#include <wtf/Vector.h>
    34 #include <wtf/spi/cocoa/SecuritySPI.h>
    3534
    3635#if USE(FOUNDATION)
     
    8887#if HAVE(SEC_ACCESS_CONTROL)
    8988    SecAccessControl,
    90 #endif
    91 #if HAVE(SEC_TRUST_SERIALIZATION)
    92     SecTrust,
    9389#endif
    9490    Null,
     
    134130        return SecAccessControl;
    135131#endif
    136 #if HAVE(SEC_TRUST_SERIALIZATION)
    137     if (typeID == SecTrustGetTypeID())
    138         return SecTrust;
    139 #endif
    140132
    141133    ASSERT_NOT_REACHED();
     
    189181    case SecAccessControl:
    190182        encode(encoder, (SecAccessControlRef)typeRef);
    191         return;
    192 #endif
    193 #if HAVE(SEC_TRUST_SERIALIZATION)
    194     case SecTrust:
    195         encode(encoder, (SecTrustRef)typeRef);
    196183        return;
    197184#endif
     
    300287            return false;
    301288        result = adoptCF(accessControl.leakRef());
    302         return true;
    303     }
    304 #endif
    305 #if HAVE(SEC_TRUST_SERIALIZATION)
    306     case SecTrust: {
    307         RetainPtr<SecTrustRef> trust;
    308         if (!decode(decoder, trust))
    309             return false;
    310         result = adoptCF(trust.leakRef());
    311289        return true;
    312290    }
     
    764742    return true;
    765743}
    766 #endif
    767 
    768 #if HAVE(SEC_TRUST_SERIALIZATION)
    769 void encode(ArgumentEncoder& encoder, SecTrustRef trust)
    770 {
    771     auto data = adoptCF(SecTrustSerialize(trust, nullptr));
    772     if (!data) {
    773         encoder << false;
    774         return;
    775     }
    776 
    777     encoder << true;
    778     IPC::encode(encoder, data.get());
    779 }
    780 
    781 bool decode(ArgumentDecoder& decoder, RetainPtr<SecTrustRef>& result)
    782 {
    783     bool hasTrust;
    784     if (!decoder.decode(hasTrust))
    785         return false;
    786 
    787     if (!hasTrust)
    788         return true;
    789 
    790     RetainPtr<CFDataRef> trustData;
    791     if (!IPC::decode(decoder, trustData))
    792         return false;
    793 
    794     auto trust = adoptCF(SecTrustDeserialize(trustData.get(), nullptr));
    795     if (!trust)
    796         return false;
    797 
    798     result = WTFMove(trust);
    799     return true;
    800 }
     744
    801745#endif
    802746
  • branches/safari-602.1.32-branch/Source/WebKit2/Shared/cf/ArgumentCodersCF.h

    r200463 r200816  
    2828
    2929#include <Security/SecCertificate.h>
    30 #include <Security/SecTrust.h>
    3130#include <wtf/RetainPtr.h>
    3231
     
    9695#endif
    9796
    98 #if HAVE(SEC_TRUST_SERIALIZATION)
    99 // SecTrustRef
    100 void encode(ArgumentEncoder&, SecTrustRef);
    101 bool decode(ArgumentDecoder&, RetainPtr<SecTrustRef>&);
    102 #endif
    103 
    10497#if PLATFORM(IOS)
    10598void setAllowsDecodingSecKeyRef(bool);
  • branches/safari-602.1.32-branch/Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm

    r200463 r200816  
    164164void ArgumentCoder<CertificateInfo>::encode(ArgumentEncoder& encoder, const CertificateInfo& certificateInfo)
    165165{
    166     encoder.encodeEnum(certificateInfo.type());
    167 
    168     switch (certificateInfo.type()) {
    169 #if HAVE(SEC_TRUST_SERIALIZATION)
    170     case CertificateInfo::Type::Trust:
    171         IPC::encode(encoder, certificateInfo.trust());
    172         break;
    173 #endif
    174     case CertificateInfo::Type::CertificateChain:
    175         IPC::encode(encoder, certificateInfo.certificateChain());
    176         break;
    177     case CertificateInfo::Type::None:
    178         // Do nothing.
    179         break;
    180     }
     166    CFArrayRef certificateChain = certificateInfo.certificateChain();
     167    if (!certificateChain) {
     168        encoder << false;
     169        return;
     170    }
     171
     172    encoder << true;
     173    IPC::encode(encoder, certificateChain);
    181174}
    182175
    183176bool ArgumentCoder<CertificateInfo>::decode(ArgumentDecoder& decoder, CertificateInfo& certificateInfo)
    184177{
    185     CertificateInfo::Type certificateInfoType;
    186     if (!decoder.decodeEnum(certificateInfoType))
    187         return false;
    188 
    189     switch (certificateInfoType) {
    190 #if HAVE(SEC_TRUST_SERIALIZATION)
    191     case CertificateInfo::Type::Trust: {
    192         RetainPtr<SecTrustRef> trust;
    193         if (!IPC::decode(decoder, trust))
    194             return false;
    195 
    196         certificateInfo = CertificateInfo(WTFMove(trust));
     178    bool hasCertificateChain;
     179    if (!decoder.decode(hasCertificateChain))
     180        return false;
     181
     182    if (!hasCertificateChain)
    197183        return true;
    198     }
    199 #endif
    200     case CertificateInfo::Type::CertificateChain: {
    201         RetainPtr<CFArrayRef> certificateChain;
    202         if (!IPC::decode(decoder, certificateChain))
    203             return false;
    204 
    205         certificateInfo = CertificateInfo(WTFMove(certificateChain));
    206         return true;
    207     }   
    208     case CertificateInfo::Type::None:
    209         // Do nothing.
    210         break;
    211     }
     184
     185    RetainPtr<CFArrayRef> certificateChain;
     186    if (!IPC::decode(decoder, certificateChain))
     187        return false;
     188
     189    certificateInfo.setCertificateChain(certificateChain.get());
    212190
    213191    return true;
     
    242220
    243221        CFDictionarySetValue(filteredUserInfo.get(), @"NSErrorClientCertificateChainKey", clientIdentityAndCertificates);
    244     }
     222    };
     223
     224    IPC::encode(encoder, filteredUserInfo.get());
    245225
    246226    id peerCertificateChain = [userInfo objectForKey:@"NSErrorPeerCertificateChainKey"];
     
    254234    }
    255235    ASSERT(!peerCertificateChain || [peerCertificateChain isKindOfClass:[NSArray class]]);
    256     if (peerCertificateChain)
    257         CFDictionarySetValue(filteredUserInfo.get(), @"NSErrorPeerCertificateChainKey", peerCertificateChain);
    258 
    259 #if HAVE(SEC_TRUST_SERIALIZATION)
    260     if (SecTrustRef peerTrust = (SecTrustRef)[userInfo objectForKey:NSURLErrorFailingURLPeerTrustErrorKey])
    261         CFDictionarySetValue(filteredUserInfo.get(), NSURLErrorFailingURLPeerTrustErrorKey, peerTrust);
    262 #endif
    263 
    264     IPC::encode(encoder, filteredUserInfo.get());
     236    encoder << CertificateInfo((CFArrayRef)peerCertificateChain);
    265237
    266238    if (id underlyingError = [userInfo objectForKey:NSUnderlyingErrorKey]) {
     
    297269    if (!IPC::decode(decoder, userInfo))
    298270        return false;
     271
     272    CertificateInfo certificate;
     273    if (!decoder.decode(certificate))
     274        return false;
     275
     276    if (certificate.certificateChain()) {
     277        userInfo = adoptCF(CFDictionaryCreateMutableCopy(kCFAllocatorDefault, CFDictionaryGetCount(userInfo.get()) + 1, userInfo.get()));
     278        CFDictionarySetValue((CFMutableDictionaryRef)userInfo.get(), CFSTR("NSErrorPeerCertificateChainKey"), (CFArrayRef)certificate.certificateChain());
     279    }
    299280
    300281    bool hasUnderlyingError = false;
  • branches/safari-602.1.32-branch/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.h

    r200463 r200816  
    165165@property (nonatomic, readonly) BOOL hasOnlySecureContent;
    166166
    167 /*! @abstract A SecTrustRef for the currently committed navigation.
    168  @discussion @link WKWebView @/link is key-value observing (KVO) compliant
    169  for this property.
    170  */
    171 @property (nonatomic, readonly, nullable) SecTrustRef serverTrust WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
     167/*! @abstract An array of SecCertificateRef objects forming the certificate
     168 chain for the currently committed navigation.
     169 @discussion The certificates are ordered from leaf (at index 0) to anchor.
     170 @link WKWebView @/link is key-value observing (KVO) compliant for this property.
     171 */
     172@property (nonatomic, readonly, copy) NSArray *certificateChain WK_AVAILABLE(10_11, 9_0);
    172173
    173174/*! @abstract A Boolean value indicating whether there is a back item in
     
    305306#endif
    306307
    307 @interface WKWebView (WKDeprecated)
    308 
    309 @property (nonatomic, readonly, copy) NSArray *certificateChain WK_DEPRECATED(10_11, WK_MAC_TBA, 9_0, WK_IOS_TBA, "Please use serverTrust");
    310 
    311 @end
    312 
    313308NS_ASSUME_NONNULL_END
    314309
  • branches/safari-602.1.32-branch/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm

    r200470 r200816  
    725725}
    726726
    727 - (SecTrustRef)serverTrust
    728 {
    729 #if HAVE(SEC_TRUST_SERIALIZATION)
     727- (NSArray *)certificateChain
     728{
    730729    auto certificateInfo = _page->pageLoadState().certificateInfo();
    731730    if (!certificateInfo)
    732         return nil;
    733 
    734     return certificateInfo->certificateInfo().trust();
    735 #else
    736     return nil;
    737 #endif
     731        return @[ ];
     732
     733    return (NSArray *)certificateInfo->certificateInfo().certificateChain() ?: @[ ];
    738734}
    739735
     
    45774573#endif
    45784574
    4579 @implementation WKWebView (WKDeprecated)
    4580 
    4581 - (NSArray *)certificateChain
    4582 {
    4583     auto certificateInfo = _page->pageLoadState().certificateInfo();
    4584     if (!certificateInfo)
    4585         return @[ ];
    4586 
    4587     return (NSArray *)certificateInfo->certificateInfo().certificateChain() ?: @[ ];
    4588 }
    4589 
    4590 @end
    4591 
    45924575#if PLATFORM(IOS) && USE(APPLE_INTERNAL_SDK)
    45934576#import <WebKitAdditions/WKWebViewAdditions.mm>
  • branches/safari-602.1.32-branch/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm

    r200463 r200816  
    903903void NavigationState::willChangeCertificateInfo()
    904904{
    905     [m_webView willChangeValueForKey:@"serverTrust"];
    906905    [m_webView willChangeValueForKey:@"certificateChain"];
    907906}
     
    910909{
    911910    [m_webView didChangeValueForKey:@"certificateChain"];
    912     [m_webView didChangeValueForKey:@"serverTrust"];
    913911}
    914912
  • branches/safari-602.1.32-branch/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm

    r200591 r200816  
    150150}
    151151
    152 - (SecTrustRef)_serverTrust
    153 {
    154 #if HAVE(SEC_TRUST_SERIALIZATION)
    155     return _frame->certificateInfo().trust();
    156 #else
    157     return nil;
    158 #endif
    159 }
    160 
    161152- (NSURL *)_provisionalURL
    162153{
  • branches/safari-602.1.32-branch/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFramePrivate.h

    r200463 r200816  
    3838@property (nonatomic, readonly) BOOL _hasCustomContentProvider;
    3939@property (nonatomic, readonly) NSArray *_certificateChain;
    40 @property (nonatomic, readonly) SecTrustRef _serverTrust;
    4140@property (nonatomic, readonly) NSURL *_provisionalURL;
    4241
Note: See TracChangeset for help on using the changeset viewer.