41
enum Certs {ClientCert = 0, CACert, PrivateKey};
40
44
TlsWidget::TlsWidget(bool isInnerMethod, Knm::Connection* connection, QWidget * parent)
41
45
: EapMethod(*new TlsWidgetPrivate(isInnerMethod), connection, parent)
48
connect(chkUseSystemCaCerts,SIGNAL(toggled(bool)),this,SLOT(toggleSystemCa(bool)));
50
connect(clientCertLoad,SIGNAL(clicked()),this,SLOT(loadCert()));
51
connect(caCertLoad,SIGNAL(clicked()),this,SLOT(loadCert()));
52
connect(privateKeyLoad,SIGNAL(clicked()),this,SLOT(loadCert()));
53
clientCertLoad->setIcon(KIcon("document-open"));
54
caCertLoad->setIcon(KIcon("document-open"));
55
privateKeyLoad->setIcon(KIcon("document-open"));
46
58
TlsWidget::~TlsWidget()
61
73
if (d->setting->useSystemCaCerts()) {
62
74
chkUseSystemCaCerts->setChecked(true);
63
kurCaCert->setEnabled(false);
64
kurClientCert->clear();
75
caCertLoad->setEnabled(false);
68
value = d->setting->phase2capath();
77
if (!d->setting->cacert().isEmpty()) {
78
setText(d->CACert,true);
70
value = d->setting->capath();
80
setText(d->CACert,false);
73
kurCaCert->setUrl(value);
77
value = d->setting->phase2clientcertpath();
79
value = d->setting->clientcertpath();
82
kurClientCert->setUrl(value);
85
value = d->setting->phase2privatekeypath();
87
value = d->setting->privatekeypath();
90
kurPrivateKey->setUrl(value);
84
if (!d->setting->clientcert().isEmpty()) {
85
setText(d->ClientCert,true);
87
setText(d->ClientCert,false);
90
if (!d->setting->privatekey().isEmpty()) {
91
setText(d->PrivateKey,true);
93
setText(d->PrivateKey,false);
93
97
void TlsWidget::writeConfig()
98
102
d->setting->setEapFlags(Knm::Security8021xSetting::tls);
103
d->setting->addToCertToDelete(Knm::Security8021xSetting::Phase2CACert);
104
d->setting->addToCertToDelete(Knm::Security8021xSetting::Phase2ClientCert);
105
d->setting->addToCertToDelete(Knm::Security8021xSetting::Phase2PrivateKey);
106
d->setting->setPhase2cacerttoimport("");
107
d->setting->setPhase2clientcerttoimport("");
108
d->setting->setPhase2privatekeytoimport("");
110
d->setting->addToCertToDelete(Knm::Security8021xSetting::CACert);
111
d->setting->addToCertToDelete(Knm::Security8021xSetting::ClientCert);
112
d->setting->addToCertToDelete(Knm::Security8021xSetting::PrivateKey);
113
d->setting->setCacerttoimport("");
114
d->setting->setClientcerttoimport("");
115
d->setting->setPrivatekeytoimport("");
106
123
if (chkUseSystemCaCerts->isChecked()) {
107
124
d->setting->setUseSystemCaCerts(true);
108
d->setting->setPhase2capath("");
109
d->setting->setCapath("");
111
url = kurCaCert->url();
112
if (!url.directory().isEmpty() && !url.fileName().isEmpty()) {
113
QString path = url.directory() + '/' + url.fileName();
115
d->setting->setPhase2capath(path);
117
d->setting->setCapath(path);
122
url = kurClientCert->url();
123
if (!url.directory().isEmpty() && !url.fileName().isEmpty()) {
124
QString path = url.directory() + '/' + url.fileName();
126
d->setting->setPhase2clientcertpath(path);
128
d->setting->setClientcertpath(path);
132
url = kurPrivateKey->url();
133
if (!url.directory().isEmpty() && !url.fileName().isEmpty()) {
134
QString path = url.directory() + '/' + url.fileName();
136
d->setting->setPhase2privatekeypath(path);
138
d->setting->setPrivatekeypath(path);
142
d->setting->setPhase2privatekeypassword(lePrivateKeyPassword->text());
144
d->setting->setPrivatekeypassword(lePrivateKeyPassword->text());
125
d->setting->addToCertToDelete(Knm::Security8021xSetting::CACert);
126
d->setting->addToCertToDelete(Knm::Security8021xSetting::Phase2CACert);
128
d->setting->setUseSystemCaCerts(false);
160
144
lePrivateKeyPassword->setPasswordMode(!on);
147
void TlsWidget::loadCert()
150
QString objectname = sender()->objectName();
152
if (objectname == QLatin1String("clientCertLoad")) {
153
QString newcert = KFileDialog::getOpenFileName(KUser().homeDir(),"",this,i18nc("File chooser dialog title for certificate loading","Load Certificate"));
154
if (!newcert.isEmpty()) {
155
d->setting->setPhase2clientcerttoimport(newcert);
156
setText(d->ClientCert,true);
158
} else if (objectname == QLatin1String("caCertLoad")) {
159
QString newcert = KFileDialog::getOpenFileName(KUser().homeDir(),"",this,i18nc("File chooser dialog title for certificate loading","Load Certificate"));
160
if (!newcert.isEmpty()) {
161
d->setting->setPhase2cacerttoimport(newcert);
162
setText(d->CACert,true);
164
} else if (objectname == QLatin1String("privateKeyLoad")) {
165
QString newcert = KFileDialog::getOpenFileName(KUser().homeDir(),"",this,i18nc("File chooser dialog title for certificate loading","Load Certificate"));
166
if (!newcert.isEmpty()) {
167
d->setting->setPhase2privatekeytoimport(newcert);
168
setText(d->PrivateKey,true);
172
if (objectname == QLatin1String("clientCertLoad")) {
173
QString newcert = KFileDialog::getOpenFileName(KUser().homeDir(),"",this,i18nc("File chooser dialog title for certificate loading","Load Certificate"));
174
if (!newcert.isEmpty()) {
175
d->setting->setClientcerttoimport(newcert);
176
setText(d->ClientCert,true);
178
} else if (objectname == QLatin1String("caCertLoad")) {
179
QString newcert = KFileDialog::getOpenFileName(KUser().homeDir(),"",this,i18nc("File chooser dialog title for certificate loading","Load Certificate"));
180
if (!newcert.isEmpty()) {
181
d->setting->setCacerttoimport(newcert);
182
setText(d->CACert,true);
184
} else if (objectname == QLatin1String("privateKeyLoad")) {
185
QString newcert = KFileDialog::getOpenFileName(KUser().homeDir(),"",this,i18nc("File chooser dialog title for certificate loading","Load Certificate"));
186
if (!newcert.isEmpty()) {
187
d->setting->setPrivatekeytoimport(newcert);
188
setText(d->PrivateKey,true);
194
void TlsWidget::toggleSystemCa(bool toggled)
198
setText(TlsWidgetPrivate::CACert,false);
199
else if (d->inner && !d->setting->phase2cacert().isEmpty())
200
setText(TlsWidgetPrivate::CACert,true);
201
else if (!d->setting->cacert().isEmpty())
202
setText(TlsWidgetPrivate::CACert,true);
205
void TlsWidget::setText(int cert, bool loaded)
212
case TlsWidgetPrivate::ClientCert:
213
button = clientCertLoad;
214
label = clientCertLoadedLabel;
217
case TlsWidgetPrivate::CACert:
219
label = caCertLoadedLabel;
222
case TlsWidgetPrivate::PrivateKey:
224
button = privateKeyLoad;
225
label = privateKeyLoadedLabel;
230
button->setText(i18nc("Text to display on certificate button a certificate is already loaded","Load new"));
231
label->setText(i18nc("Text to display on CA certificate LED label when certificate is already loaded","Loaded"));
232
led->setState(KLed::On);
234
button->setText(i18nc("Text to display on CA certificate button when no certificate is loaded yet","Load"));
236
led->setState(KLed::Off);
163
240
// vim: sw=4 sts=4 et tw=100