File indexing completed on 2024-04-21 04:00:08
0001 /* 0002 SPDX-FileCopyrightText: 2012-2013 Jan Grulich <jgrulich@redhat.com> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #include "wirelesssecuritysetting.h" 0008 #include "wirelesssecuritysetting_p.h" 0009 0010 #include <QDebug> 0011 0012 #if !NM_CHECK_VERSION(1, 10, 0) 0013 #define NM_SETTING_WIRELESS_SECURITY_PMF "pmf" 0014 #endif 0015 0016 NetworkManager::WirelessSecuritySettingPrivate::WirelessSecuritySettingPrivate() 0017 : name(NM_SETTING_WIRELESS_SECURITY_SETTING_NAME) 0018 , keyMgmt(NetworkManager::WirelessSecuritySetting::Unknown) 0019 , wepTxKeyidx(0) 0020 , authAlg(NetworkManager::WirelessSecuritySetting::None) 0021 , wepKeyFlags(NetworkManager::Setting::None) 0022 , wepKeyType(NetworkManager::WirelessSecuritySetting::NotSpecified) 0023 , pskFlags(NetworkManager::Setting::None) 0024 , leapPasswordFlags(NetworkManager::Setting::None) 0025 , pmf(NetworkManager::WirelessSecuritySetting::DefaultPmf) 0026 { 0027 } 0028 0029 NetworkManager::WirelessSecuritySetting::WirelessSecuritySetting() 0030 : Setting(Setting::WirelessSecurity) 0031 , d_ptr(new WirelessSecuritySettingPrivate()) 0032 { 0033 } 0034 0035 NetworkManager::WirelessSecuritySetting::WirelessSecuritySetting(const Ptr &other) 0036 : Setting(other) 0037 , d_ptr(new WirelessSecuritySettingPrivate()) 0038 { 0039 setKeyMgmt(other->keyMgmt()); 0040 setWepTxKeyindex(other->wepTxKeyindex()); 0041 setAuthAlg(other->authAlg()); 0042 setProto(other->proto()); 0043 setPairwise(other->pairwise()); 0044 setGroup(other->group()); 0045 setWepKey0(other->wepKey0()); 0046 setWepKey1(other->wepKey1()); 0047 setWepKey2(other->wepKey2()); 0048 setWepKey3(other->wepKey3()); 0049 setWepKeyFlags(other->wepKeyFlags()); 0050 setWepKeyType(other->wepKeyType()); 0051 setPsk(other->psk()); 0052 setPskFlags(other->pskFlags()); 0053 setLeapPassword(other->leapPassword()); 0054 setLeapPasswordFlags(other->leapPasswordFlags()); 0055 setPmf(other->pmf()); 0056 } 0057 0058 NetworkManager::WirelessSecuritySetting::~WirelessSecuritySetting() 0059 { 0060 delete d_ptr; 0061 } 0062 0063 QString NetworkManager::WirelessSecuritySetting::name() const 0064 { 0065 Q_D(const WirelessSecuritySetting); 0066 0067 return d->name; 0068 } 0069 0070 void NetworkManager::WirelessSecuritySetting::setKeyMgmt(NetworkManager::WirelessSecuritySetting::KeyMgmt mgmt) 0071 { 0072 Q_D(WirelessSecuritySetting); 0073 0074 d->keyMgmt = mgmt; 0075 } 0076 0077 NetworkManager::WirelessSecuritySetting::KeyMgmt NetworkManager::WirelessSecuritySetting::keyMgmt() const 0078 { 0079 Q_D(const WirelessSecuritySetting); 0080 0081 return d->keyMgmt; 0082 } 0083 0084 void NetworkManager::WirelessSecuritySetting::setWepTxKeyindex(quint32 index) 0085 { 0086 Q_D(WirelessSecuritySetting); 0087 0088 d->wepTxKeyidx = index; 0089 } 0090 0091 quint32 NetworkManager::WirelessSecuritySetting::wepTxKeyindex() const 0092 { 0093 Q_D(const WirelessSecuritySetting); 0094 0095 return d->wepTxKeyidx; 0096 } 0097 0098 void NetworkManager::WirelessSecuritySetting::setAuthAlg(NetworkManager::WirelessSecuritySetting::AuthAlg alg) 0099 { 0100 Q_D(WirelessSecuritySetting); 0101 0102 d->authAlg = alg; 0103 } 0104 0105 NetworkManager::WirelessSecuritySetting::AuthAlg NetworkManager::WirelessSecuritySetting::authAlg() const 0106 { 0107 Q_D(const WirelessSecuritySetting); 0108 0109 return d->authAlg; 0110 } 0111 0112 void NetworkManager::WirelessSecuritySetting::setProto(const QList<NetworkManager::WirelessSecuritySetting::WpaProtocolVersion> &list) 0113 { 0114 Q_D(WirelessSecuritySetting); 0115 0116 d->proto = list; 0117 } 0118 0119 QList<NetworkManager::WirelessSecuritySetting::WpaProtocolVersion> NetworkManager::WirelessSecuritySetting::proto() const 0120 { 0121 Q_D(const WirelessSecuritySetting); 0122 0123 return d->proto; 0124 } 0125 0126 void NetworkManager::WirelessSecuritySetting::setPairwise(const QList<NetworkManager::WirelessSecuritySetting::WpaEncryptionCapabilities> &list) 0127 { 0128 Q_D(WirelessSecuritySetting); 0129 0130 d->pairwise = list; 0131 } 0132 0133 QList<NetworkManager::WirelessSecuritySetting::WpaEncryptionCapabilities> NetworkManager::WirelessSecuritySetting::pairwise() const 0134 { 0135 Q_D(const WirelessSecuritySetting); 0136 0137 return d->pairwise; 0138 } 0139 0140 void NetworkManager::WirelessSecuritySetting::setGroup(const QList<NetworkManager::WirelessSecuritySetting::WpaEncryptionCapabilities> &list) 0141 { 0142 Q_D(WirelessSecuritySetting); 0143 0144 d->group = list; 0145 } 0146 0147 QList<NetworkManager::WirelessSecuritySetting::WpaEncryptionCapabilities> NetworkManager::WirelessSecuritySetting::group() const 0148 { 0149 Q_D(const WirelessSecuritySetting); 0150 0151 return d->group; 0152 } 0153 0154 void NetworkManager::WirelessSecuritySetting::setLeapUsername(const QString &username) 0155 { 0156 Q_D(WirelessSecuritySetting); 0157 0158 d->leapUsername = username; 0159 } 0160 0161 QString NetworkManager::WirelessSecuritySetting::leapUsername() const 0162 { 0163 Q_D(const WirelessSecuritySetting); 0164 0165 return d->leapUsername; 0166 } 0167 0168 void NetworkManager::WirelessSecuritySetting::setWepKey0(const QString key) 0169 { 0170 Q_D(WirelessSecuritySetting); 0171 0172 d->wepKey0 = key; 0173 } 0174 0175 QString NetworkManager::WirelessSecuritySetting::wepKey0() const 0176 { 0177 Q_D(const WirelessSecuritySetting); 0178 0179 return d->wepKey0; 0180 } 0181 0182 void NetworkManager::WirelessSecuritySetting::setWepKey1(const QString key) 0183 { 0184 Q_D(WirelessSecuritySetting); 0185 0186 d->wepKey1 = key; 0187 } 0188 0189 QString NetworkManager::WirelessSecuritySetting::wepKey1() const 0190 { 0191 Q_D(const WirelessSecuritySetting); 0192 0193 return d->wepKey1; 0194 } 0195 0196 void NetworkManager::WirelessSecuritySetting::setWepKey2(const QString key) 0197 { 0198 Q_D(WirelessSecuritySetting); 0199 0200 d->wepKey2 = key; 0201 } 0202 0203 QString NetworkManager::WirelessSecuritySetting::wepKey2() const 0204 { 0205 Q_D(const WirelessSecuritySetting); 0206 0207 return d->wepKey2; 0208 } 0209 0210 void NetworkManager::WirelessSecuritySetting::setWepKey3(const QString key) 0211 { 0212 Q_D(WirelessSecuritySetting); 0213 0214 d->wepKey3 = key; 0215 } 0216 0217 QString NetworkManager::WirelessSecuritySetting::wepKey3() const 0218 { 0219 Q_D(const WirelessSecuritySetting); 0220 0221 return d->wepKey3; 0222 } 0223 0224 void NetworkManager::WirelessSecuritySetting::setWepKeyFlags(NetworkManager::Setting::SecretFlags type) 0225 { 0226 Q_D(WirelessSecuritySetting); 0227 0228 d->wepKeyFlags = type; 0229 } 0230 0231 NetworkManager::Setting::SecretFlags NetworkManager::WirelessSecuritySetting::wepKeyFlags() const 0232 { 0233 Q_D(const WirelessSecuritySetting); 0234 0235 return d->wepKeyFlags; 0236 } 0237 0238 void NetworkManager::WirelessSecuritySetting::setWepKeyType(NetworkManager::WirelessSecuritySetting::WepKeyType type) 0239 { 0240 Q_D(WirelessSecuritySetting); 0241 0242 d->wepKeyType = type; 0243 } 0244 0245 NetworkManager::WirelessSecuritySetting::WepKeyType NetworkManager::WirelessSecuritySetting::wepKeyType() const 0246 { 0247 Q_D(const WirelessSecuritySetting); 0248 0249 return d->wepKeyType; 0250 } 0251 0252 void NetworkManager::WirelessSecuritySetting::setPsk(const QString &key) 0253 { 0254 Q_D(WirelessSecuritySetting); 0255 0256 d->psk = key; 0257 } 0258 0259 QString NetworkManager::WirelessSecuritySetting::psk() const 0260 { 0261 Q_D(const WirelessSecuritySetting); 0262 0263 return d->psk; 0264 } 0265 0266 void NetworkManager::WirelessSecuritySetting::setPskFlags(NetworkManager::Setting::SecretFlags type) 0267 { 0268 Q_D(WirelessSecuritySetting); 0269 0270 d->pskFlags = type; 0271 } 0272 0273 NetworkManager::Setting::SecretFlags NetworkManager::WirelessSecuritySetting::pskFlags() const 0274 { 0275 Q_D(const WirelessSecuritySetting); 0276 0277 return d->pskFlags; 0278 } 0279 0280 void NetworkManager::WirelessSecuritySetting::setLeapPassword(const QString &password) 0281 { 0282 Q_D(WirelessSecuritySetting); 0283 0284 d->leapPassword = password; 0285 } 0286 0287 QString NetworkManager::WirelessSecuritySetting::leapPassword() const 0288 { 0289 Q_D(const WirelessSecuritySetting); 0290 0291 return d->leapPassword; 0292 } 0293 0294 void NetworkManager::WirelessSecuritySetting::setLeapPasswordFlags(NetworkManager::Setting::SecretFlags type) 0295 { 0296 Q_D(WirelessSecuritySetting); 0297 0298 d->leapPasswordFlags = type; 0299 } 0300 0301 NetworkManager::Setting::SecretFlags NetworkManager::WirelessSecuritySetting::leapPasswordFlags() const 0302 { 0303 Q_D(const WirelessSecuritySetting); 0304 0305 return d->leapPasswordFlags; 0306 } 0307 0308 void NetworkManager::WirelessSecuritySetting::setPmf(NetworkManager::WirelessSecuritySetting::Pmf pmf) 0309 { 0310 Q_D(WirelessSecuritySetting); 0311 0312 d->pmf = pmf; 0313 } 0314 0315 NetworkManager::WirelessSecuritySetting::Pmf NetworkManager::WirelessSecuritySetting::pmf() const 0316 { 0317 Q_D(const WirelessSecuritySetting); 0318 0319 return d->pmf; 0320 } 0321 0322 void NetworkManager::WirelessSecuritySetting::secretsFromMap(const QVariantMap &secrets) 0323 { 0324 if (secrets.contains(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY0))) { 0325 setWepKey0(secrets.value(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY0)).toString()); 0326 } 0327 0328 if (secrets.contains(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY1))) { 0329 setWepKey1(secrets.value(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY1)).toString()); 0330 } 0331 0332 if (secrets.contains(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY2))) { 0333 setWepKey2(secrets.value(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY2)).toString()); 0334 } 0335 0336 if (secrets.contains(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY3))) { 0337 setWepKey3(secrets.value(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY3)).toString()); 0338 } 0339 0340 if (secrets.contains(QLatin1String(NM_SETTING_WIRELESS_SECURITY_PSK))) { 0341 setPsk(secrets.value(QLatin1String(NM_SETTING_WIRELESS_SECURITY_PSK)).toString()); 0342 } 0343 0344 if (secrets.contains(QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD))) { 0345 setLeapPassword(secrets.value(QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD)).toString()); 0346 } 0347 } 0348 0349 QVariantMap NetworkManager::WirelessSecuritySetting::secretsToMap() const 0350 { 0351 QVariantMap secrets; 0352 0353 if (!wepKey0().isEmpty()) { 0354 secrets.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY0), wepKey0()); 0355 } 0356 0357 if (!wepKey1().isEmpty()) { 0358 secrets.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY1), wepKey1()); 0359 } 0360 0361 if (!wepKey2().isEmpty()) { 0362 secrets.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY2), wepKey2()); 0363 } 0364 0365 if (!wepKey3().isEmpty()) { 0366 secrets.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY3), wepKey3()); 0367 } 0368 0369 if (!psk().isEmpty()) { 0370 secrets.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_PSK), psk()); 0371 } 0372 0373 if (!leapPassword().isEmpty()) { 0374 secrets.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD), leapPassword()); 0375 } 0376 0377 return secrets; 0378 } 0379 0380 QStringList NetworkManager::WirelessSecuritySetting::needSecrets(bool requestNew) const 0381 { 0382 QStringList secrets; 0383 0384 if (keyMgmt() == Wep) { 0385 if (!wepKeyFlags().testFlag(Setting::NotRequired)) { 0386 switch (wepTxKeyindex()) { 0387 case 0: 0388 if (wepKey0().isEmpty() || requestNew) { 0389 secrets << QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY0); 0390 return secrets; 0391 } 0392 break; 0393 case 1: 0394 if (wepKey1().isEmpty() || requestNew) { 0395 secrets << QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY1); 0396 return secrets; 0397 } 0398 break; 0399 case 2: 0400 if (wepKey2().isEmpty() || requestNew) { 0401 secrets << QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY2); 0402 return secrets; 0403 } 0404 break; 0405 case 3: 0406 if (wepKey3().isEmpty() || requestNew) { 0407 secrets << QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY3); 0408 return secrets; 0409 } 0410 break; 0411 } 0412 } 0413 } 0414 0415 if (keyMgmt() == WpaNone || keyMgmt() == WpaPsk || keyMgmt() == SAE) { 0416 if (!pskFlags().testFlag(Setting::NotRequired)) { 0417 if (psk().isEmpty() || requestNew) { 0418 secrets << QLatin1String(NM_SETTING_WIRELESS_SECURITY_PSK); 0419 return secrets; 0420 } 0421 } 0422 } 0423 0424 if (authAlg() == Leap && keyMgmt() == Ieee8021x) { 0425 if (!leapPasswordFlags().testFlag(Setting::NotRequired)) { 0426 if (leapPassword().isEmpty() || requestNew) { 0427 secrets << QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD); 0428 return secrets; 0429 } 0430 } 0431 } 0432 0433 return secrets; 0434 } 0435 0436 void NetworkManager::WirelessSecuritySetting::fromMap(const QVariantMap &map) 0437 { 0438 if (map.contains(QLatin1String(NM_SETTING_WIRELESS_SECURITY_KEY_MGMT))) { 0439 const QString key = map.value(QLatin1String(NM_SETTING_WIRELESS_SECURITY_KEY_MGMT)).toString(); 0440 if (key == "none") { 0441 setKeyMgmt(Wep); 0442 } else if (key == "ieee8021x") { 0443 setKeyMgmt(Ieee8021x); 0444 } else if (key == "wpa-none") { 0445 setKeyMgmt(WpaNone); 0446 } else if (key == "wpa-psk") { 0447 setKeyMgmt(WpaPsk); 0448 } else if (key == "wpa-eap") { 0449 setKeyMgmt(WpaEap); 0450 } else if (key == "sae") { 0451 setKeyMgmt(SAE); 0452 } else if (key == "wpa-eap-suite-b-192") { 0453 setKeyMgmt(WpaEapSuiteB192); 0454 } 0455 } 0456 0457 if (map.contains(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX))) { 0458 setWepTxKeyindex(map.value(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX)).toUInt()); 0459 } 0460 0461 if (map.contains(QLatin1String(NM_SETTING_WIRELESS_SECURITY_AUTH_ALG))) { 0462 const QString alg = map.value(QLatin1String(NM_SETTING_WIRELESS_SECURITY_AUTH_ALG)).toString(); 0463 if (alg == "open") { 0464 setAuthAlg(Open); 0465 } else if (alg == "shared") { 0466 setAuthAlg(Shared); 0467 } else if (alg == "leap") { 0468 setAuthAlg(Leap); 0469 } 0470 } 0471 0472 if (map.contains(QLatin1String(NM_SETTING_WIRELESS_SECURITY_PROTO))) { 0473 const QStringList strList = map.value(QLatin1String(NM_SETTING_WIRELESS_SECURITY_PROTO)).toStringList(); 0474 QList<WpaProtocolVersion> list; 0475 for (const QString &str : strList) { 0476 if (str == "wpa") { 0477 list.push_back(Wpa); 0478 } else if (str == "rsn") { 0479 list.push_back(Rsn); 0480 } 0481 } 0482 setProto(list); 0483 } 0484 0485 if (map.contains(QLatin1String(NM_SETTING_WIRELESS_SECURITY_PAIRWISE))) { 0486 const QStringList strList = map.value(QLatin1String(NM_SETTING_WIRELESS_SECURITY_PAIRWISE)).toStringList(); 0487 QList<WpaEncryptionCapabilities> list; 0488 for (const QString &str : strList) { 0489 if (str == "wep40") { 0490 list.push_back(Wep40); 0491 } else if (str == "wep104") { 0492 list.push_back(Wep104); 0493 } else if (str == "tkip") { 0494 list.push_back(Tkip); 0495 } else if (str == "ccmp") { 0496 list.push_back(Ccmp); 0497 } 0498 } 0499 setPairwise(list); 0500 } 0501 0502 if (map.contains(QLatin1String(NM_SETTING_WIRELESS_SECURITY_GROUP))) { 0503 const QStringList strList = map.value(QLatin1String(NM_SETTING_WIRELESS_SECURITY_GROUP)).toStringList(); 0504 QList<WpaEncryptionCapabilities> list; 0505 for (const QString &str : strList) { 0506 if (str == "wep40") { 0507 list.push_back(Wep40); 0508 } else if (str == "wep104") { 0509 list.push_back(Wep104); 0510 } else if (str == "tkip") { 0511 list.push_back(Tkip); 0512 } else if (str == "ccmp") { 0513 list.push_back(Ccmp); 0514 } 0515 } 0516 setGroup(list); 0517 } 0518 0519 if (map.contains(QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME))) { 0520 setLeapUsername(map.value(QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME)).toString()); 0521 } 0522 0523 // Secrets 0524 if (map.contains(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY0))) { 0525 setWepKey0(map.value(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY0)).toString()); 0526 } 0527 0528 // Secrets 0529 if (map.contains(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY1))) { 0530 setWepKey1(map.value(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY1)).toString()); 0531 } 0532 0533 // Secrets 0534 if (map.contains(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY2))) { 0535 setWepKey2(map.value(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY2)).toString()); 0536 } 0537 0538 // Secrets 0539 if (map.contains(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY3))) { 0540 setWepKey3(map.value(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY3)).toString()); 0541 } 0542 0543 if (map.contains(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY_FLAGS))) { 0544 setWepKeyFlags((SecretFlags)map.value(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY_FLAGS)).toInt()); 0545 } 0546 0547 if (map.contains(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE))) { 0548 setWepKeyType((WepKeyType)map.value(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE)).toUInt()); 0549 } 0550 0551 // Secrets 0552 if (map.contains(QLatin1String(NM_SETTING_WIRELESS_SECURITY_PSK))) { 0553 setPsk(map.value(QLatin1String(NM_SETTING_WIRELESS_SECURITY_PSK)).toString()); 0554 } 0555 0556 if (map.contains(QLatin1String(NM_SETTING_WIRELESS_SECURITY_PSK_FLAGS))) { 0557 setPskFlags((SecretFlags)map.value(QLatin1String(NM_SETTING_WIRELESS_SECURITY_PSK_FLAGS)).toInt()); 0558 } 0559 0560 // Secrets 0561 if (map.contains(QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD))) { 0562 setLeapPassword(map.value(QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD)).toString()); 0563 } 0564 0565 if (map.contains(QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD_FLAGS))) { 0566 setLeapPasswordFlags((SecretFlags)map.value(QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD_FLAGS)).toInt()); 0567 } 0568 0569 if (map.contains(QLatin1String(NM_SETTING_WIRELESS_SECURITY_PMF))) { 0570 setPmf((Pmf)map.value(QLatin1String(NM_SETTING_WIRELESS_SECURITY_PMF)).toInt()); 0571 } 0572 } 0573 0574 QVariantMap NetworkManager::WirelessSecuritySetting::toMap() const 0575 { 0576 QVariantMap setting; 0577 0578 if (keyMgmt() == Wep) { 0579 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_KEY_MGMT), "none"); 0580 } else if (keyMgmt() == Ieee8021x) { 0581 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_KEY_MGMT), "ieee8021x"); 0582 } else if (keyMgmt() == WpaNone) { 0583 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_KEY_MGMT), "wpa-none"); 0584 } else if (keyMgmt() == WpaPsk) { 0585 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_KEY_MGMT), "wpa-psk"); 0586 } else if (keyMgmt() == WpaEap) { 0587 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_KEY_MGMT), "wpa-eap"); 0588 } else if (keyMgmt() == SAE) { 0589 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_KEY_MGMT), "sae"); 0590 } else if (keyMgmt() == WpaEapSuiteB192) { 0591 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_KEY_MGMT), "wpa-eap-suite-b-192"); 0592 } 0593 0594 if (wepTxKeyindex()) { 0595 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX), wepTxKeyindex()); 0596 } 0597 0598 if (authAlg() != None) { 0599 if (authAlg() == Open) { 0600 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_AUTH_ALG), "open"); 0601 } else if (authAlg() == Shared) { 0602 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_AUTH_ALG), "shared"); 0603 } else if (authAlg() == Leap) { 0604 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_AUTH_ALG), "leap"); 0605 } 0606 } 0607 0608 if (!proto().isEmpty()) { 0609 QStringList strList; 0610 const auto protoList = proto(); 0611 for (const WpaProtocolVersion &version : protoList) { 0612 if (version == Wpa) { 0613 strList << "wpa"; 0614 } else if (version == Rsn) { 0615 strList << "rsn"; 0616 } 0617 } 0618 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_PROTO), strList); 0619 } 0620 0621 if (!pairwise().isEmpty()) { 0622 QStringList strList; 0623 const auto encryptions = pairwise(); 0624 for (const WpaEncryptionCapabilities &capability : encryptions) { 0625 if (capability == Wep40) { 0626 strList << "wep40"; 0627 } else if (capability == Wep104) { 0628 strList << "wep104"; 0629 } else if (capability == Tkip) { 0630 strList << "tkip"; 0631 } else if (capability == Ccmp) { 0632 strList << "ccmp"; 0633 } 0634 } 0635 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_PAIRWISE), strList); 0636 } 0637 0638 if (!group().isEmpty()) { 0639 QStringList strList; 0640 const auto encryptions = group(); 0641 for (const WpaEncryptionCapabilities &capability : encryptions) { 0642 if (capability == Wep40) { 0643 strList << "wep40"; 0644 } else if (capability == Wep104) { 0645 strList << "wep104"; 0646 } else if (capability == Tkip) { 0647 strList << "tkip"; 0648 } else if (capability == Ccmp) { 0649 strList << "ccmp"; 0650 } 0651 } 0652 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_GROUP), strList); 0653 } 0654 0655 if (!leapUsername().isEmpty()) { 0656 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME), leapUsername()); 0657 } 0658 0659 // Secrets 0660 if (!wepKey0().isEmpty()) { 0661 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY0), wepKey0()); 0662 } 0663 0664 // Secrets 0665 if (!wepKey1().isEmpty()) { 0666 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY1), wepKey1()); 0667 } 0668 0669 // Secrets 0670 if (!wepKey2().isEmpty()) { 0671 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY2), wepKey2()); 0672 } 0673 0674 // Secrets 0675 if (!wepKey3().isEmpty()) { 0676 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY3), wepKey3()); 0677 } 0678 0679 if (wepKeyFlags()) { 0680 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY_FLAGS), (int)wepKeyFlags()); 0681 } 0682 0683 if (wepKeyType()) { 0684 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE), wepKeyType()); 0685 } 0686 0687 // Secrets 0688 if (!psk().isEmpty()) { 0689 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_PSK), psk()); 0690 } 0691 0692 if (pskFlags()) { 0693 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_PSK_FLAGS), (int)pskFlags()); 0694 } 0695 0696 // Secrets 0697 if (!leapPassword().isEmpty()) { 0698 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD), leapPassword()); 0699 } 0700 0701 if (leapPasswordFlags()) { 0702 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD_FLAGS), (int)leapPasswordFlags()); 0703 } 0704 0705 if (pmf()) { 0706 setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_PMF), (int)pmf()); 0707 } 0708 0709 return setting; 0710 } 0711 0712 QDebug NetworkManager::operator<<(QDebug dbg, const NetworkManager::WirelessSecuritySetting &setting) 0713 { 0714 dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n'; 0715 dbg.nospace() << "initialized: " << !setting.isNull() << '\n'; 0716 0717 dbg.nospace() << NM_SETTING_WIRELESS_SECURITY_KEY_MGMT << ": " << setting.keyMgmt() << '\n'; 0718 dbg.nospace() << NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX << ": " << setting.wepTxKeyindex() << '\n'; 0719 dbg.nospace() << NM_SETTING_WIRELESS_SECURITY_AUTH_ALG << ": " << setting.authAlg() << '\n'; 0720 dbg.nospace() << NM_SETTING_WIRELESS_SECURITY_PROTO << ": " << setting.proto() << '\n'; 0721 dbg.nospace() << NM_SETTING_WIRELESS_SECURITY_PAIRWISE << ": " << setting.pairwise() << '\n'; 0722 dbg.nospace() << NM_SETTING_WIRELESS_SECURITY_GROUP << ": " << setting.group() << '\n'; 0723 dbg.nospace() << NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME << ": " << setting.leapUsername() << '\n'; 0724 dbg.nospace() << NM_SETTING_WIRELESS_SECURITY_WEP_KEY0 << ": " << setting.wepKey0() << '\n'; 0725 dbg.nospace() << NM_SETTING_WIRELESS_SECURITY_WEP_KEY1 << ": " << setting.wepKey1() << '\n'; 0726 dbg.nospace() << NM_SETTING_WIRELESS_SECURITY_WEP_KEY2 << ": " << setting.wepKey2() << '\n'; 0727 dbg.nospace() << NM_SETTING_WIRELESS_SECURITY_WEP_KEY3 << ": " << setting.wepKey3() << '\n'; 0728 dbg.nospace() << NM_SETTING_WIRELESS_SECURITY_WEP_KEY_FLAGS << ": " << setting.wepKeyFlags() << '\n'; 0729 dbg.nospace() << NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE << ": " << setting.wepKeyType() << '\n'; 0730 dbg.nospace() << NM_SETTING_WIRELESS_SECURITY_PSK << ": " << setting.psk() << '\n'; 0731 dbg.nospace() << NM_SETTING_WIRELESS_SECURITY_PSK_FLAGS << ": " << setting.pskFlags() << '\n'; 0732 dbg.nospace() << NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD << ": " << setting.leapPassword() << '\n'; 0733 dbg.nospace() << NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD_FLAGS << ": " << setting.leapPasswordFlags() << '\n'; 0734 dbg.nospace() << NM_SETTING_WIRELESS_SECURITY_PMF << ": " << setting.pmf() << '\n'; 0735 0736 return dbg.maybeSpace(); 0737 }