diff options
author | Peter Hartmann <peter.hartmann@nokia.com> | 2010-05-19 16:47:42 (GMT) |
---|---|---|
committer | Zeno Albisser <zeno.albisser@nokia.com> | 2010-06-11 13:12:01 (GMT) |
commit | 9a982779eabc4fafafe18dc9ad1b44fb2425563c (patch) | |
tree | f1212a9236e6dd17dbab18a31beba833852ec392 /src/network/ssl/qsslsocket_p.h | |
parent | 164f347aba7287407615223dc2219a016ebc8248 (diff) | |
download | Qt-9a982779eabc4fafafe18dc9ad1b44fb2425563c.zip Qt-9a982779eabc4fafafe18dc9ad1b44fb2425563c.tar.gz Qt-9a982779eabc4fafafe18dc9ad1b44fb2425563c.tar.bz2 |
make QSslSocket::systemCaCertificates() use system certs
before, we were shipping our own bundle of CA certificates.
Now we read the certificates from the system CA store.
Patch-by: Zeno Albisser and Peter Hartmann
Reviewed-by: Thiago
Task-number: QTBUG-8833
Task-number: QT-3361
Diffstat (limited to 'src/network/ssl/qsslsocket_p.h')
-rw-r--r-- | src/network/ssl/qsslsocket_p.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/network/ssl/qsslsocket_p.h b/src/network/ssl/qsslsocket_p.h index 8e22664..cf1786c 100644 --- a/src/network/ssl/qsslsocket_p.h +++ b/src/network/ssl/qsslsocket_p.h @@ -66,6 +66,20 @@ QT_BEGIN_NAMESPACE +#if defined(Q_OS_MAC) +#include <Security/SecCertificate.h> +#include <CoreFoundation/CFArray.h> + typedef OSStatus (*PtrSecCertificateGetData)(SecCertificateRef, CSSM_DATA_PTR); + typedef OSStatus (*PtrSecTrustSettingsCopyCertificates)(int, CFArrayRef*); + typedef OSStatus (*PtrSecTrustCopyAnchorCertificates)(CFArrayRef*); +#elif defined(Q_OS_WIN) + typedef HCERTSTORE (WINAPI *PtrCertOpenSystemStoreW)(HCRYPTPROV_LEGACY, LPCWSTR); + typedef PCCERT_CONTEXT (WINAPI *PtrCertFindCertificateInStore)(HCERTSTORE, DWORD, DWORD, DWORD, const void*, PCCERT_CONTEXT); + typedef BOOL (WINAPI *PtrCertCloseStore)(HCERTSTORE, DWORD); +#endif + + + class QSslSocketPrivate : public QTcpSocketPrivate { Q_DECLARE_PUBLIC(QSslSocket) @@ -106,6 +120,16 @@ public: static void addDefaultCaCertificate(const QSslCertificate &cert); static void addDefaultCaCertificates(const QList<QSslCertificate> &certs); +#if defined(Q_OS_MAC) + static PtrSecCertificateGetData ptrSecCertificateGetData; + static PtrSecTrustSettingsCopyCertificates ptrSecTrustSettingsCopyCertificates; + static PtrSecTrustCopyAnchorCertificates ptrSecTrustCopyAnchorCertificates; +#elif defined(Q_OS_WIN) + static PtrCertOpenSystemStoreW ptrCertOpenSystemStoreW; + static PtrCertFindCertificateInStore ptrCertFindCertificateInStore; + static PtrCertCloseStore ptrCertCloseStore; +#endif + // The socket itself, including private slots. QTcpSocket *plainSocket; void createPlainSocket(QIODevice::OpenMode openMode); |