diff options
author | Liang Qi <liang.qi@digia.com> | 2013-08-02 09:38:24 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-08-06 08:10:27 +0200 |
commit | c207724c9bb8e205e756086950063cc91656e401 (patch) | |
tree | 3fa32a65de9653f1a4ec49a864b3ea9a583ce502 /src/network/ssl/qsslsocket_openssl.cpp | |
parent | 55e22cfe0e5ff9e57a1c4eb27f55115b8914648f (diff) |
OSX: Make QSslSocket compile on 10.9
CSSM_DATA_PTR was deprecated in 10.7. Replace SecCertificateGetData
with SecCertificateCopyData.
Task-number: QTBUG-32715
Change-Id: I762687370689b5b5c032567240667631b1ffde98
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Diffstat (limited to 'src/network/ssl/qsslsocket_openssl.cpp')
-rw-r--r-- | src/network/ssl/qsslsocket_openssl.cpp | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp index e378faae68..69181f40b4 100644 --- a/src/network/ssl/qsslsocket_openssl.cpp +++ b/src/network/ssl/qsslsocket_openssl.cpp @@ -80,7 +80,7 @@ QT_BEGIN_NAMESPACE #if defined(Q_OS_MACX) #define kSecTrustSettingsDomainSystem 2 // so we do not need to include the header file - PtrSecCertificateGetData QSslSocketPrivate::ptrSecCertificateGetData = 0; + PtrSecCertificateCopyData QSslSocketPrivate::ptrSecCertificateCopyData = 0; PtrSecTrustSettingsCopyCertificates QSslSocketPrivate::ptrSecTrustSettingsCopyCertificates = 0; PtrSecTrustCopyAnchorCertificates QSslSocketPrivate::ptrSecTrustCopyAnchorCertificates = 0; #elif defined(Q_OS_WIN) @@ -492,8 +492,8 @@ void QSslSocketPrivate::ensureCiphersAndCertsLoaded() #if defined(Q_OS_MACX) QLibrary securityLib("/System/Library/Frameworks/Security.framework/Versions/Current/Security"); if (securityLib.load()) { - ptrSecCertificateGetData = (PtrSecCertificateGetData) securityLib.resolve("SecCertificateGetData"); - if (!ptrSecCertificateGetData) + ptrSecCertificateCopyData = (PtrSecCertificateCopyData) securityLib.resolve("SecCertificateCopyData"); + if (!ptrSecCertificateCopyData) qWarning("could not resolve symbols in security library"); // should never happen ptrSecTrustSettingsCopyCertificates = (PtrSecTrustSettingsCopyCertificates) securityLib.resolve("SecTrustSettingsCopyCertificates"); @@ -627,12 +627,11 @@ QList<QSslCertificate> QSslSocketPrivate::systemCaCertificates() CFArrayRef cfCerts; OSStatus status = 1; - OSStatus SecCertificateGetData ( - SecCertificateRef certificate, - CSSM_DATA_PTR data + CFDataRef SecCertificateCopyData ( + SecCertificateRef certificate ); - if (ptrSecCertificateGetData) { + if (ptrSecCertificateCopyData) { if (ptrSecTrustSettingsCopyCertificates) status = ptrSecTrustSettingsCopyCertificates(kSecTrustSettingsDomainSystem, &cfCerts); else if (ptrSecTrustCopyAnchorCertificates) @@ -641,15 +640,16 @@ QList<QSslCertificate> QSslSocketPrivate::systemCaCertificates() CFIndex size = CFArrayGetCount(cfCerts); for (CFIndex i = 0; i < size; ++i) { SecCertificateRef cfCert = (SecCertificateRef)CFArrayGetValueAtIndex(cfCerts, i); - CSSM_DATA data; - CSSM_DATA_PTR dataPtr = &data; - if (ptrSecCertificateGetData(cfCert, dataPtr)) { + CFDataRef data; + + data = ptrSecCertificateCopyData(cfCert); + + if (data == NULL) { qWarning("error retrieving a CA certificate from the system store"); } else { - int len = data.Length; - char *rawData = reinterpret_cast<char *>(data.Data); - QByteArray rawCert(rawData, len); + QByteArray rawCert = QByteArray::fromRawData((const char *)CFDataGetBytePtr(data), CFDataGetLength(data)); systemCerts.append(QSslCertificate::fromData(rawCert, QSsl::Der)); + CFRelease(data); } } CFRelease(cfCerts); |