summaryrefslogtreecommitdiffstats
path: root/application
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2017-04-25 23:03:11 +0200
committerPetr Mrázek <peterix@gmail.com>2017-04-25 23:03:11 +0200
commit6fe9258161d73535466af0ac19655563b57cada1 (patch)
tree4a434991094c84652bd7578642f493be47ae6331 /application
parent4fa3e2a7144c532af62520c9da53f423d6f002ca (diff)
downloadMultiMC-6fe9258161d73535466af0ac19655563b57cada1.tar
MultiMC-6fe9258161d73535466af0ac19655563b57cada1.tar.gz
MultiMC-6fe9258161d73535466af0ac19655563b57cada1.tar.lz
MultiMC-6fe9258161d73535466af0ac19655563b57cada1.tar.xz
MultiMC-6fe9258161d73535466af0ac19655563b57cada1.zip
NOISSUE remove macOS SSL workarounds
Should not be necessary anymore...
Diffstat (limited to 'application')
-rw-r--r--application/CMakeLists.txt10
-rw-r--r--application/CertWorkaround.cpp120
-rw-r--r--application/CertWorkaround.h3
-rw-r--r--application/MainWindow.cpp1
-rw-r--r--application/MultiMC.cpp13
-rw-r--r--application/resources/certs/Equifax_Secure_Certificate_Authority.pem19
-rw-r--r--application/resources/certs/certs.qrc7
7 files changed, 1 insertions, 172 deletions
diff --git a/application/CMakeLists.txt b/application/CMakeLists.txt
index f03225da..7722a091 100644
--- a/application/CMakeLists.txt
+++ b/application/CMakeLists.txt
@@ -313,18 +313,8 @@ set(MULTIMC_QRCS
resources/pe_blue/pe_blue.qrc
resources/OSX/OSX.qrc
resources/iOS/iOS.qrc
- resources/certs/certs.qrc
)
-set(MultiMC_OSX_source
- CertWorkaround.cpp
- CertWorkaround.h
-)
-
-if(APPLE)
- list(APPEND MULTIMC_SOURCES ${MultiMC_OSX_source})
-endif()
-
######## Windows resource files ########
if(WIN32)
set(MULTIMC_RCS resources/multimc.rc)
diff --git a/application/CertWorkaround.cpp b/application/CertWorkaround.cpp
deleted file mode 100644
index 3bd1b16e..00000000
--- a/application/CertWorkaround.cpp
+++ /dev/null
@@ -1,120 +0,0 @@
-#include <stdexcept>
-#include <iostream>
-
-#include <QByteArray>
-#include <QSslSocket>
-#include <QDebug>
-
-#include <Security/Security.h>
-
-// CFRelease will crash if passed NULL
-#define SafeCFRelease(ref) \
- if (ref) \
- CFRelease(ref);
-
-/*!
- * \brief LoadCertificatesFromKeyChain Load all certificates from the KeyChain path provided
- * and return them as
- * QSslCertificates.
- * \param keyChainPath The KeyChain path. Pass an empty string to use the
- * user's keychain.
- * \return A list of new QSslCertificates generated from the
- * KeyChain DER data.
- */
-static QList<QSslCertificate>
-LoadCertificatesFromKeyChain(const std::string &keyChainPath = std::string())
-{
- QList<QSslCertificate> qtCerts;
-
- SecKeychainRef certsKeyChain = NULL;
- SecKeychainSearchRef searchItem = NULL;
- SecKeychainItemRef itemRef = NULL;
- CSSM_DATA certData = {0, 0};
-
- try
- {
- OSStatus status = errSecSuccess;
-
- // if a keychain path was provided, obtain a pointer
- if (!keyChainPath.empty())
- {
- status = SecKeychainOpen(keyChainPath.c_str(), &certsKeyChain);
- if (status != errSecSuccess)
- {
- throw status;
- }
- }
-
- // build a search query reference for certificates
- status = SecKeychainSearchCreateFromAttributes(certsKeyChain, kSecCertificateItemClass,
- NULL, &searchItem);
- if (status != errSecSuccess)
- {
- throw status;
- }
-
- // loop through the certificates
- while (SecKeychainSearchCopyNext(searchItem, &itemRef) != errSecItemNotFound)
- {
- // copy the KeyChain item data into a CSSM_DATA struct - this will be the certs Der
- // data
- status = SecKeychainItemCopyContent(itemRef, NULL, NULL,
- reinterpret_cast<UInt32 *>(&certData.Length),
- reinterpret_cast<void **>(&certData.Data));
-
- if (status != errSecSuccess)
- {
- throw status;
- }
-
- // create a Qt byte array from the data - the data is NOT copied
- const QByteArray byteArray = QByteArray::fromRawData(
- reinterpret_cast<const char *>(certData.Data), certData.Length);
-
- // create a Qt certificate from the data and add it to the list
- QSslCertificate qtCert(byteArray, QSsl::Der);
- qDebug() << "COMMON NAME: "
- << qtCert.issuerInfo(QSslCertificate::CommonName).join('\n')
- << " ORG NAME: "
- << qtCert.issuerInfo(QSslCertificate::Organization).join('\n');
-
- qtCerts << qtCert;
- }
- }
- catch (OSStatus status)
- {
- CFStringRef errorMessage = SecCopyErrorMessageString(status, NULL);
- std::cerr << CFStringGetCStringPtr(errorMessage, kCFStringEncodingMacRoman)
- << std::endl;
- SafeCFRelease(errorMessage);
- }
-
- SecKeychainItemFreeContent(NULL, certData.Data);
- SafeCFRelease(itemRef);
- SafeCFRelease(searchItem);
- SafeCFRelease(certsKeyChain);
-
- return qtCerts;
-}
-
-void RebuildQtCertificates()
-{
- const QList<QSslCertificate> existingCerts = QSslSocket::defaultCaCertificates();
- QList<QSslCertificate> certs = LoadCertificatesFromKeyChain();
- certs += LoadCertificatesFromKeyChain(
- "/System/Library/Keychains/SystemRootCertificates.keychain");
-
- Q_FOREACH (const QSslCertificate qtCert, certs)
- {
- if (!existingCerts.contains(qtCert))
- {
- qDebug() << "cert not known to Qt - adding";
- qDebug() << "COMMON NAME: "
- << qtCert.issuerInfo(QSslCertificate::CommonName).join('\n')
- << " ORG NAME: "
- << qtCert.issuerInfo(QSslCertificate::Organization).join('\n');
-
- QSslSocket::addDefaultCaCertificate(qtCert);
- }
- }
-}
diff --git a/application/CertWorkaround.h b/application/CertWorkaround.h
deleted file mode 100644
index 64554698..00000000
--- a/application/CertWorkaround.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-void RebuildQtCertificates(); \ No newline at end of file
diff --git a/application/MainWindow.cpp b/application/MainWindow.cpp
index 8661c199..2ab37e54 100644
--- a/application/MainWindow.cpp
+++ b/application/MainWindow.cpp
@@ -1268,6 +1268,7 @@ void MainWindow::on_actionSettings_triggered()
{
SettingsUI::ShowPageDialog(MMC->globalSettingsPages(), this, "global-settings");
// FIXME: quick HACK to make this work. improve, optimize.
+ MMC->instances()->loadList(true);
proxymodel->invalidate();
proxymodel->sort(0);
updateToolsMenu();
diff --git a/application/MultiMC.cpp b/application/MultiMC.cpp
index 32a50309..c9245e69 100644
--- a/application/MultiMC.cpp
+++ b/application/MultiMC.cpp
@@ -501,10 +501,6 @@ void MultiMC::messageReceived(const QString& message)
}
}
-#ifdef Q_OS_MAC
-#include "CertWorkaround.h"
-#endif
-
void MultiMC::initNetwork()
{
// init the http meta cache
@@ -519,15 +515,6 @@ void MultiMC::initNetwork()
QString pass = settings()->get("ProxyPass").toString();
ENV.updateProxySettings(proxyTypeStr, addr, port, user, pass);
}
-
-#ifdef Q_OS_MAC
- Q_INIT_RESOURCE(certs);
- RebuildQtCertificates();
- QFile equifaxFile(":/certs/Equifax_Secure_Certificate_Authority.pem");
- equifaxFile.open(QIODevice::ReadOnly);
- QSslCertificate equifaxCert(equifaxFile.readAll(), QSsl::Pem);
- QSslSocket::addDefaultCaCertificate(equifaxCert);
-#endif
}
void MultiMC::initTranslations()
diff --git a/application/resources/certs/Equifax_Secure_Certificate_Authority.pem b/application/resources/certs/Equifax_Secure_Certificate_Authority.pem
deleted file mode 100644
index b5dd02fc..00000000
--- a/application/resources/certs/Equifax_Secure_Certificate_Authority.pem
+++ /dev/null
@@ -1,19 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV
-UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy
-dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1
-MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx
-dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B
-AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f
-BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A
-cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC
-AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ
-MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm
-aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw
-ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj
-IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF
-MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA
-A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y
-7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh
-1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4
------END CERTIFICATE----- \ No newline at end of file
diff --git a/application/resources/certs/certs.qrc b/application/resources/certs/certs.qrc
deleted file mode 100644
index 32739c33..00000000
--- a/application/resources/certs/certs.qrc
+++ /dev/null
@@ -1,7 +0,0 @@
-<!DOCTYPE RCC>
-<RCC version="1.0">
- <qresource prefix="/certs">
- <file>Equifax_Secure_Certificate_Authority.pem</file>
- </qresource>
-</RCC>
-