diff options
author | Steve Block <steveblock@google.com> | 2011-05-25 19:08:45 +0100 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2011-06-08 13:51:31 +0100 |
commit | 2bde8e466a4451c7319e3a072d118917957d6554 (patch) | |
tree | 28f4a1b869a513e565c7760d0e6a06e7cf1fe95a /Source/WebKit2/Shared/mac/PlatformCertificateInfo.mm | |
parent | 6939c99b71d9372d14a0c74a772108052e8c48c8 (diff) | |
download | external_webkit-2bde8e466a4451c7319e3a072d118917957d6554.zip external_webkit-2bde8e466a4451c7319e3a072d118917957d6554.tar.gz external_webkit-2bde8e466a4451c7319e3a072d118917957d6554.tar.bz2 |
Merge WebKit at r82507: Initial merge by git
Change-Id: I60ce9d780725b58b45e54165733a8ffee23b683e
Diffstat (limited to 'Source/WebKit2/Shared/mac/PlatformCertificateInfo.mm')
-rw-r--r-- | Source/WebKit2/Shared/mac/PlatformCertificateInfo.mm | 41 |
1 files changed, 14 insertions, 27 deletions
diff --git a/Source/WebKit2/Shared/mac/PlatformCertificateInfo.mm b/Source/WebKit2/Shared/mac/PlatformCertificateInfo.mm index 0c0b737..5ae772c 100644 --- a/Source/WebKit2/Shared/mac/PlatformCertificateInfo.mm +++ b/Source/WebKit2/Shared/mac/PlatformCertificateInfo.mm @@ -26,10 +26,10 @@ #import "config.h" #import "PlatformCertificateInfo.h" +#import "ArgumentCodersCF.h" #import "ArgumentDecoder.h" #import "ArgumentEncoder.h" #import <WebKitSystemInterface.h> -#import <Security/Security.h> using namespace WebCore; @@ -44,47 +44,34 @@ PlatformCertificateInfo::PlatformCertificateInfo(const ResourceResponse& respons { } +PlatformCertificateInfo::PlatformCertificateInfo(CFArrayRef certificateChain) + : m_certificateChain(certificateChain) +{ +} + void PlatformCertificateInfo::encode(CoreIPC::ArgumentEncoder* encoder) const { - // Special case no certificates, if (!m_certificateChain) { - encoder->encodeUInt64(std::numeric_limits<uint64_t>::max()); + encoder->encodeBool(false); return; } - uint64_t length = CFArrayGetCount(m_certificateChain.get()); - encoder->encodeUInt64(length); - - for (size_t i = 0; i < length; ++i) { - RetainPtr<CFDataRef> data(AdoptCF, SecCertificateCopyData((SecCertificateRef)CFArrayGetValueAtIndex(m_certificateChain.get(), i))); - encoder->encodeBytes(CFDataGetBytePtr(data.get()), CFDataGetLength(data.get())); - } + encoder->encodeBool(true); + CoreIPC::encode(encoder, m_certificateChain.get()); } bool PlatformCertificateInfo::decode(CoreIPC::ArgumentDecoder* decoder, PlatformCertificateInfo& c) { - uint64_t length; - if (!decoder->decode(length)) + bool hasCertificateChain; + if (!decoder->decode(hasCertificateChain)) return false; - if (length == std::numeric_limits<uint64_t>::max()) { - // This is the no certificates case. + if (!hasCertificateChain) return true; - } - - RetainPtr<CFMutableArrayRef> array(AdoptCF, CFArrayCreateMutable(0, length, &kCFTypeArrayCallBacks)); - - for (size_t i = 0; i < length; ++i) { - Vector<uint8_t> bytes; - if (!decoder->decodeBytes(bytes)) - return false; - RetainPtr<CFDataRef> data(AdoptCF, CFDataCreateWithBytesNoCopy(0, bytes.data(), bytes.size(), kCFAllocatorNull)); - RetainPtr<SecCertificateRef> certificate(AdoptCF, SecCertificateCreateWithData(0, data.get())); - CFArrayAppendValue(array.get(), certificate.get()); - } + if (!CoreIPC::decode(decoder, c.m_certificateChain)) + return false; - c.m_certificateChain = array; return true; } |