7 #include "wirelesssecuritysetting.h"
8 #include "wirelesssecuritysetting_p.h"
12 #if !NM_CHECK_VERSION(1, 10, 0)
13 #define NM_SETTING_WIRELESS_SECURITY_PMF "pmf"
16 NetworkManager::WirelessSecuritySettingPrivate::WirelessSecuritySettingPrivate()
17 :
name(NM_SETTING_WIRELESS_SECURITY_SETTING_NAME)
22 , wepKeyType(
NetworkManager::WirelessSecuritySetting::NotSpecified)
29 NetworkManager::WirelessSecuritySetting::WirelessSecuritySetting()
30 : Setting(Setting::WirelessSecurity)
31 , d_ptr(new WirelessSecuritySettingPrivate())
35 NetworkManager::WirelessSecuritySetting::WirelessSecuritySetting(
const Ptr &other)
37 , d_ptr(new WirelessSecuritySettingPrivate())
39 setKeyMgmt(other->keyMgmt());
40 setWepTxKeyindex(other->wepTxKeyindex());
41 setAuthAlg(other->authAlg());
42 setProto(other->proto());
43 setPairwise(other->pairwise());
44 setGroup(other->group());
45 setWepKey0(other->wepKey0());
46 setWepKey1(other->wepKey1());
47 setWepKey2(other->wepKey2());
48 setWepKey3(other->wepKey3());
49 setWepKeyFlags(other->wepKeyFlags());
50 setWepKeyType(other->wepKeyType());
52 setPskFlags(other->pskFlags());
53 setLeapPassword(other->leapPassword());
54 setLeapPasswordFlags(other->leapPasswordFlags());
58 NetworkManager::WirelessSecuritySetting::~WirelessSecuritySetting()
70 void NetworkManager::WirelessSecuritySetting::setKeyMgmt(NetworkManager::WirelessSecuritySetting::KeyMgmt mgmt)
77 NetworkManager::WirelessSecuritySetting::KeyMgmt NetworkManager::WirelessSecuritySetting::keyMgmt()
const
79 Q_D(
const WirelessSecuritySetting);
84 void NetworkManager::WirelessSecuritySetting::setWepTxKeyindex(quint32 index)
86 Q_D(WirelessSecuritySetting);
88 d->wepTxKeyidx = index;
91 quint32 NetworkManager::WirelessSecuritySetting::wepTxKeyindex()
const
93 Q_D(
const WirelessSecuritySetting);
95 return d->wepTxKeyidx;
98 void NetworkManager::WirelessSecuritySetting::setAuthAlg(NetworkManager::WirelessSecuritySetting::AuthAlg alg)
100 Q_D(WirelessSecuritySetting);
105 NetworkManager::WirelessSecuritySetting::AuthAlg NetworkManager::WirelessSecuritySetting::authAlg()
const
107 Q_D(
const WirelessSecuritySetting);
114 Q_D(WirelessSecuritySetting);
121 Q_D(
const WirelessSecuritySetting);
128 Q_D(WirelessSecuritySetting);
135 Q_D(
const WirelessSecuritySetting);
142 Q_D(WirelessSecuritySetting);
149 Q_D(
const WirelessSecuritySetting);
154 void NetworkManager::WirelessSecuritySetting::setLeapUsername(
const QString &username)
156 Q_D(WirelessSecuritySetting);
158 d->leapUsername = username;
161 QString NetworkManager::WirelessSecuritySetting::leapUsername()
const
163 Q_D(
const WirelessSecuritySetting);
165 return d->leapUsername;
168 void NetworkManager::WirelessSecuritySetting::setWepKey0(
const QString key)
170 Q_D(WirelessSecuritySetting);
175 QString NetworkManager::WirelessSecuritySetting::wepKey0()
const
177 Q_D(
const WirelessSecuritySetting);
182 void NetworkManager::WirelessSecuritySetting::setWepKey1(
const QString key)
184 Q_D(WirelessSecuritySetting);
189 QString NetworkManager::WirelessSecuritySetting::wepKey1()
const
191 Q_D(
const WirelessSecuritySetting);
196 void NetworkManager::WirelessSecuritySetting::setWepKey2(
const QString key)
198 Q_D(WirelessSecuritySetting);
203 QString NetworkManager::WirelessSecuritySetting::wepKey2()
const
205 Q_D(
const WirelessSecuritySetting);
210 void NetworkManager::WirelessSecuritySetting::setWepKey3(
const QString key)
212 Q_D(WirelessSecuritySetting);
217 QString NetworkManager::WirelessSecuritySetting::wepKey3()
const
219 Q_D(
const WirelessSecuritySetting);
226 Q_D(WirelessSecuritySetting);
228 d->wepKeyFlags =
type;
233 Q_D(
const WirelessSecuritySetting);
235 return d->wepKeyFlags;
238 void NetworkManager::WirelessSecuritySetting::setWepKeyType(NetworkManager::WirelessSecuritySetting::WepKeyType type)
240 Q_D(WirelessSecuritySetting);
242 d->wepKeyType =
type;
245 NetworkManager::WirelessSecuritySetting::WepKeyType NetworkManager::WirelessSecuritySetting::wepKeyType()
const
247 Q_D(
const WirelessSecuritySetting);
249 return d->wepKeyType;
252 void NetworkManager::WirelessSecuritySetting::setPsk(
const QString &key)
254 Q_D(WirelessSecuritySetting);
259 QString NetworkManager::WirelessSecuritySetting::psk()
const
261 Q_D(
const WirelessSecuritySetting);
268 Q_D(WirelessSecuritySetting);
275 Q_D(
const WirelessSecuritySetting);
280 void NetworkManager::WirelessSecuritySetting::setLeapPassword(
const QString &password)
282 Q_D(WirelessSecuritySetting);
284 d->leapPassword = password;
287 QString NetworkManager::WirelessSecuritySetting::leapPassword()
const
289 Q_D(
const WirelessSecuritySetting);
291 return d->leapPassword;
296 Q_D(WirelessSecuritySetting);
298 d->leapPasswordFlags =
type;
303 Q_D(
const WirelessSecuritySetting);
305 return d->leapPasswordFlags;
308 void NetworkManager::WirelessSecuritySetting::setPmf(NetworkManager::WirelessSecuritySetting::Pmf pmf)
310 Q_D(WirelessSecuritySetting);
315 NetworkManager::WirelessSecuritySetting::Pmf NetworkManager::WirelessSecuritySetting::pmf()
const
317 Q_D(
const WirelessSecuritySetting);
322 void NetworkManager::WirelessSecuritySetting::secretsFromMap(
const QVariantMap &secrets)
324 if (secrets.contains(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY0))) {
328 if (secrets.contains(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY1))) {
332 if (secrets.contains(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY2))) {
336 if (secrets.contains(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY3))) {
340 if (secrets.contains(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_PSK))) {
344 if (secrets.contains(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD))) {
345 setLeapPassword(secrets.value(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD)).
toString());
349 QVariantMap NetworkManager::WirelessSecuritySetting::secretsToMap()
const
353 if (!wepKey0().isEmpty()) {
354 secrets.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY0), wepKey0());
357 if (!wepKey1().isEmpty()) {
358 secrets.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY1), wepKey1());
361 if (!wepKey2().isEmpty()) {
362 secrets.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY2), wepKey2());
365 if (!wepKey3().isEmpty()) {
366 secrets.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY3), wepKey3());
369 if (!psk().isEmpty()) {
370 secrets.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_PSK), psk());
373 if (!leapPassword().isEmpty()) {
374 secrets.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD), leapPassword());
380 QStringList NetworkManager::WirelessSecuritySetting::needSecrets(
bool requestNew)
const
384 if (keyMgmt() == Wep) {
385 if (!wepKeyFlags().testFlag(Setting::NotRequired)) {
386 switch (wepTxKeyindex()) {
388 if (wepKey0().isEmpty() || requestNew) {
389 secrets <<
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY0);
394 if (wepKey1().isEmpty() || requestNew) {
395 secrets <<
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY1);
400 if (wepKey2().isEmpty() || requestNew) {
401 secrets <<
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY2);
406 if (wepKey3().isEmpty() || requestNew) {
407 secrets <<
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY3);
415 if (keyMgmt() == WpaNone || keyMgmt() == WpaPsk || keyMgmt() == SAE) {
416 if (!pskFlags().testFlag(Setting::NotRequired)) {
417 if (psk().isEmpty() || requestNew) {
424 if (authAlg() == Leap && keyMgmt() == Ieee8021x) {
425 if (!leapPasswordFlags().testFlag(Setting::NotRequired)) {
426 if (leapPassword().isEmpty() || requestNew) {
427 secrets <<
QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD);
438 if (map.contains(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_KEY_MGMT))) {
442 }
else if (key ==
"ieee8021x") {
443 setKeyMgmt(Ieee8021x);
444 }
else if (key ==
"wpa-none") {
446 }
else if (key ==
"wpa-psk") {
448 }
else if (key ==
"wpa-eap") {
450 }
else if (key ==
"sae") {
452 }
else if (key ==
"wpa-eap-suite-b-192") {
453 setKeyMgmt(WpaEapSuiteB192);
457 if (map.contains(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX))) {
458 setWepTxKeyindex(map.value(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX)).toUInt());
461 if (map.contains(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_AUTH_ALG))) {
465 }
else if (alg ==
"shared") {
467 }
else if (alg ==
"leap") {
472 if (map.contains(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_PROTO))) {
475 for (
const QString &str : strList) {
478 }
else if (str ==
"rsn") {
485 if (map.contains(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_PAIRWISE))) {
488 for (
const QString &str : strList) {
489 if (str ==
"wep40") {
491 }
else if (str ==
"wep104") {
493 }
else if (str ==
"tkip") {
495 }
else if (str ==
"ccmp") {
502 if (map.contains(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_GROUP))) {
505 for (
const QString &str : strList) {
506 if (str ==
"wep40") {
508 }
else if (str ==
"wep104") {
510 }
else if (str ==
"tkip") {
512 }
else if (str ==
"ccmp") {
519 if (map.contains(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME))) {
520 setLeapUsername(map.value(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME)).toString());
524 if (map.contains(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY0))) {
525 setWepKey0(map.value(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY0)).toString());
529 if (map.contains(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY1))) {
530 setWepKey1(map.value(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY1)).toString());
534 if (map.contains(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY2))) {
535 setWepKey2(map.value(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY2)).toString());
539 if (map.contains(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY3))) {
540 setWepKey3(map.value(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY3)).toString());
543 if (map.contains(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY_FLAGS))) {
547 if (map.contains(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE))) {
548 setWepKeyType((WepKeyType)map.value(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE)).toUInt());
552 if (map.contains(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_PSK))) {
553 setPsk(map.value(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_PSK)).toString());
556 if (map.contains(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_PSK_FLAGS))) {
561 if (map.contains(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD))) {
562 setLeapPassword(map.value(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD)).toString());
565 if (map.contains(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD_FLAGS))) {
566 setLeapPasswordFlags((
SecretFlags)map.value(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD_FLAGS)).toInt());
569 if (map.contains(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_PMF))) {
570 setPmf((Pmf)map.value(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_PMF)).toInt());
578 if (keyMgmt() == Wep) {
579 setting.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_KEY_MGMT),
"none");
580 }
else if (keyMgmt() == Ieee8021x) {
581 setting.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_KEY_MGMT),
"ieee8021x");
582 }
else if (keyMgmt() == WpaNone) {
583 setting.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_KEY_MGMT),
"wpa-none");
584 }
else if (keyMgmt() == WpaPsk) {
585 setting.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_KEY_MGMT),
"wpa-psk");
586 }
else if (keyMgmt() == WpaEap) {
587 setting.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_KEY_MGMT),
"wpa-eap");
588 }
else if (keyMgmt() == SAE) {
589 setting.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_KEY_MGMT),
"sae");
590 }
else if (keyMgmt() == WpaEapSuiteB192) {
591 setting.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_KEY_MGMT),
"wpa-eap-suite-b-192");
594 if (wepTxKeyindex()) {
595 setting.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX), wepTxKeyindex());
598 if (authAlg() != None) {
599 if (authAlg() == Open) {
600 setting.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_AUTH_ALG),
"open");
601 }
else if (authAlg() == Shared) {
602 setting.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_AUTH_ALG),
"shared");
603 }
else if (authAlg() == Leap) {
604 setting.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_AUTH_ALG),
"leap");
608 if (!proto().isEmpty()) {
610 const auto protoList = proto();
611 for (
const WpaProtocolVersion &
version : protoList) {
621 if (!pairwise().isEmpty()) {
623 const auto encryptions = pairwise();
624 for (
const WpaEncryptionCapabilities &capability : encryptions) {
625 if (capability == Wep40) {
627 }
else if (capability == Wep104) {
629 }
else if (capability == Tkip) {
631 }
else if (capability == Ccmp) {
638 if (!group().isEmpty()) {
640 const auto encryptions = group();
641 for (
const WpaEncryptionCapabilities &capability : encryptions) {
642 if (capability == Wep40) {
644 }
else if (capability == Wep104) {
646 }
else if (capability == Tkip) {
648 }
else if (capability == Ccmp) {
655 if (!leapUsername().isEmpty()) {
656 setting.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME), leapUsername());
660 if (!wepKey0().isEmpty()) {
661 setting.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY0), wepKey0());
665 if (!wepKey1().isEmpty()) {
666 setting.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY1), wepKey1());
670 if (!wepKey2().isEmpty()) {
671 setting.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY2), wepKey2());
675 if (!wepKey3().isEmpty()) {
676 setting.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY3), wepKey3());
680 setting.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY_FLAGS), (
int)wepKeyFlags());
684 setting.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE), wepKeyType());
688 if (!psk().isEmpty()) {
689 setting.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_PSK), psk());
693 setting.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_PSK_FLAGS), (
int)pskFlags());
697 if (!leapPassword().isEmpty()) {
698 setting.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD), leapPassword());
701 if (leapPasswordFlags()) {
702 setting.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD_FLAGS), (
int)leapPasswordFlags());
706 setting.insert(
QLatin1String(NM_SETTING_WIRELESS_SECURITY_PMF), (
int)pmf());
714 dbg.
nospace() <<
"type: " << setting.typeAsString(setting.type()) <<
'\n';
715 dbg.
nospace() <<
"initialized: " << !setting.isNull() <<
'\n';
717 dbg.
nospace() << NM_SETTING_WIRELESS_SECURITY_KEY_MGMT <<
": " << setting.keyMgmt() <<
'\n';
718 dbg.
nospace() << NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX <<
": " << setting.wepTxKeyindex() <<
'\n';
719 dbg.
nospace() << NM_SETTING_WIRELESS_SECURITY_AUTH_ALG <<
": " << setting.authAlg() <<
'\n';
720 dbg.
nospace() << NM_SETTING_WIRELESS_SECURITY_PROTO <<
": " << setting.proto() <<
'\n';
721 dbg.
nospace() << NM_SETTING_WIRELESS_SECURITY_PAIRWISE <<
": " << setting.pairwise() <<
'\n';
722 dbg.
nospace() << NM_SETTING_WIRELESS_SECURITY_GROUP <<
": " << setting.group() <<
'\n';
723 dbg.
nospace() << NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME <<
": " << setting.leapUsername() <<
'\n';
724 dbg.
nospace() << NM_SETTING_WIRELESS_SECURITY_WEP_KEY0 <<
": " << setting.wepKey0() <<
'\n';
725 dbg.
nospace() << NM_SETTING_WIRELESS_SECURITY_WEP_KEY1 <<
": " << setting.wepKey1() <<
'\n';
726 dbg.
nospace() << NM_SETTING_WIRELESS_SECURITY_WEP_KEY2 <<
": " << setting.wepKey2() <<
'\n';
727 dbg.
nospace() << NM_SETTING_WIRELESS_SECURITY_WEP_KEY3 <<
": " << setting.wepKey3() <<
'\n';
728 dbg.
nospace() << NM_SETTING_WIRELESS_SECURITY_WEP_KEY_FLAGS <<
": " << setting.wepKeyFlags() <<
'\n';
729 dbg.
nospace() << NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE <<
": " << setting.wepKeyType() <<
'\n';
730 dbg.
nospace() << NM_SETTING_WIRELESS_SECURITY_PSK <<
": " << setting.psk() <<
'\n';
731 dbg.
nospace() << NM_SETTING_WIRELESS_SECURITY_PSK_FLAGS <<
": " << setting.pskFlags() <<
'\n';
732 dbg.
nospace() << NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD <<
": " << setting.leapPassword() <<
'\n';
733 dbg.
nospace() << NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD_FLAGS <<
": " << setting.leapPasswordFlags() <<
'\n';
734 dbg.
nospace() << NM_SETTING_WIRELESS_SECURITY_PMF <<
": " << setting.pmf() <<
'\n';