diff options
author | Kevin Smith <git@kismith.co.uk> | 2012-02-22 13:31:39 (GMT) |
---|---|---|
committer | Kevin Smith <git@kismith.co.uk> | 2012-02-22 14:16:18 (GMT) |
commit | fa705718be1f98185557a09cf155ed66cbc740e2 (patch) | |
tree | b73c65981c6e879df40c40c4b5436a4d4386e5a4 /Swift/QtUI/QtLoginWindow.cpp | |
parent | 110eb87e848b85dd74a6f19413c775520a75ea35 (diff) | |
download | swift-contrib-fa705718be1f98185557a09cf155ed66cbc740e2.zip swift-contrib-fa705718be1f98185557a09cf155ed66cbc740e2.tar.bz2 |
Fix up for previous CAPI patch
Now connects successfully with or without TLS(with cert)
Diffstat (limited to 'Swift/QtUI/QtLoginWindow.cpp')
-rw-r--r-- | Swift/QtUI/QtLoginWindow.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/Swift/QtUI/QtLoginWindow.cpp b/Swift/QtUI/QtLoginWindow.cpp index 6b9d389..a3b7837 100644 --- a/Swift/QtUI/QtLoginWindow.cpp +++ b/Swift/QtUI/QtLoginWindow.cpp @@ -43,7 +43,9 @@ #ifdef HAVE_SCHANNEL #include "CAPICertificateSelector.h" +#include <Swiften/TLS/CAPICertificate.h> #endif +#include <Swiften/TLS/PKCS12Certificate.h> namespace Swift{ @@ -345,7 +347,19 @@ void QtLoginWindow::loginClicked() { return; } } - onLoginRequest(Q2PSTRING(username_->currentText()), Q2PSTRING(password_->text()), Q2PSTRING(certificateFile_), remember_->isChecked(), loginAutomatically_->isChecked()); + CertificateWithKey::ref certificate; + std::string certificateString = Q2PSTRING(certificateFile_); +#if defined(HAVE_SCHANNEL) + if (isCAPIURI(certificateString)) { + certificate = boost::make_shared<CAPICertificate>(certificateString); + } else { + certificate = boost::make_shared<PKCS12Certificate>(certificateString, createSafeByteArray(Q2PSTRING(password_->text()))); + } +#else + certificate = boost::make_shared<PKCS12Certificate>(certificateString, createSafeByteArray(Q2PSTRING(password_->text()))); +#endif + + onLoginRequest(Q2PSTRING(username_->currentText()), Q2PSTRING(password_->text()), certificateString, certificate, remember_->isChecked(), loginAutomatically_->isChecked()); if (settings_->getSetting(SettingConstants::FORGET_PASSWORDS)) { /* Mustn't remember logins */ username_->clearEditText(); password_->setText(""); @@ -362,7 +376,7 @@ void QtLoginWindow::setLoginAutomatically(bool loginAutomatically) { void QtLoginWindow::handleCertficateChecked(bool checked) { if (checked) { #ifdef HAVE_SCHANNEL - certificateFile_ = selectCAPICertificate(); + certificateFile_ = P2QSTRING(selectCAPICertificate()); if (certificateFile_.isEmpty()) { certificateButton_->setChecked(false); } |